179 lines
5.6 KiB
Bash
Executable File
179 lines
5.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Configuration variables
|
|
FORK_URL=http://localhost:8545
|
|
# 0xac097 is dev account #0 used for Deploy scripts
|
|
DEFAULT_KEY='0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80'
|
|
|
|
RESULT=0
|
|
|
|
if [ -z "$NOSUDO" ]; then
|
|
SUDO=sudo
|
|
else
|
|
SUDO=
|
|
fi
|
|
|
|
killAndWait() {
|
|
|
|
echo killing $1
|
|
$SUDO killall -0 $1 > /dev/null 2>&1 || {
|
|
echo "No $1 needed to be killed." && sleep 1 && return 1;
|
|
}
|
|
|
|
PIDS=$(pgrep $1)
|
|
echo "$PIDS" | while read -r PID; do
|
|
if $SUDO kill "$PID" > /dev/null 2>&1 ; then
|
|
echo "Killed $1 $PID."
|
|
else
|
|
echo "Failed to kill $1 $PID. Kill manually"
|
|
wait
|
|
exit 1
|
|
fi
|
|
wait
|
|
done
|
|
rm -rf ~/.foundry/anvil/
|
|
rm -rf ~/.foundry/cache/rpc/anvil-hardhat
|
|
}
|
|
|
|
end () {
|
|
echo exiting
|
|
kill $NODE_PID || echo anvil/hardhat was already dead
|
|
kill $DF_PID || echo dragonfly was already dead
|
|
wait
|
|
exit $RESULT
|
|
}
|
|
|
|
echo
|
|
killAndWait dragonfly
|
|
killAndWait anvil
|
|
killAndWait hardhat
|
|
echo
|
|
|
|
trap end INT TERM
|
|
|
|
err () {
|
|
echo ERROR "$@"
|
|
RESULT=1
|
|
end
|
|
}
|
|
|
|
rm -rf backend/ohlc
|
|
mkdir -p tmp
|
|
|
|
# build the contracts
|
|
cd contract || err cd contract
|
|
|
|
bin/build.sh --skip Test || err build error
|
|
|
|
# launch a node with a private fork
|
|
if [[ "${DEXORDER_USE_HARDHAT:-0}" != "0" ]]; then
|
|
npx hardhat node --fork https://arb-mainnet.g.alchemy.com/v2/L0eaUwWEoWzszCK9EhqHdl_p7VHStkaC 2>&1 | tee > ../tmp/hardhat.txt &
|
|
else
|
|
# changing the mining mode dynamically in anvil only works for disabling interval blocks, not re-enabling them
|
|
# so we must use only interval mining from the start
|
|
# anvil -f arbitrum_mock --chain-id 31337 --prune-history --block-time 5 &> ../tmp/anvil.txt &
|
|
# anvil -f arbitrum_mock --chain-id 31337 --block-time 5 &> ../tmp/anvil.txt &
|
|
anvil -f arbitrum_mock --chain-id 31337 &> ../tmp/anvil.txt &
|
|
fi
|
|
NODE_PID=$!
|
|
|
|
# deploy mock environment
|
|
sleep 1
|
|
# wrap some ETH into WETH for test account #9 (end user test account)
|
|
until cast send --private-key 0x2a871d0798f97d79848a013d4936a73bf4cc922c825d33c1cf7073dff6d409c6 --value 10ether 0x82aF49447D8a07e3bd95BD0d56f35241523fBab1 &> ../tmp/wrap_weth.txt
|
|
do
|
|
sleep 1 # wait for anvil/hardhat to come up
|
|
done
|
|
|
|
## this only works for hardhat for some reason. anvil must still use forking
|
|
#if [[ "${DEXORDER_USE_HARDHAT:-0}" != "0" ]]; then
|
|
# # deploy Uniswap contracts (forcibly) onto their correct addresses
|
|
# node ../deploy/hardhat-uniswap.mjs
|
|
#fi
|
|
|
|
echo running script/Deploy.sol
|
|
forge script script/Deploy.sol --skip Test --fork-url $FORK_URL --broadcast \
|
|
--private-key ${PRIVATE_KEY:-$DEFAULT_KEY} || err deploy
|
|
|
|
echo running script/DeployMock.sol
|
|
forge script script/DeployMock.sol --skip Test --fork-url $FORK_URL --broadcast \
|
|
--private-key ${PRIVATE_KEY:-$DEFAULT_KEY} || err deploymock
|
|
|
|
ls script/
|
|
echo running script/DeployMirror.sol
|
|
forge script script/DeployMirror.sol --skip Test --fork-url $FORK_URL --broadcast \
|
|
--private-key ${PRIVATE_KEY:-$DEFAULT_KEY} || err deploymirror
|
|
|
|
echo deploy scripts completed
|
|
|
|
if [[ "${DEXORDER_USE_HARDHAT:-0}" != "0" ]]; then
|
|
# switch Hardhat from automine mode to interval mining
|
|
cast rpc evm_setAutomine false
|
|
cast rpc evm_setIntervalMining 5000
|
|
fi
|
|
|
|
cd .. || err
|
|
. ./bin/shmockenv.sh # export env vars for init contracts
|
|
# write version file
|
|
VERSION="dev $(date -u '+%Y-%m-%d %H:%M')"
|
|
export VERSION
|
|
envsubst < version.mock.json > web/public/version.json || err version.json
|
|
# write metadata.json file
|
|
envsubst < metadata.mock.json > web/public/metadata.json || err metadata.json
|
|
|
|
cd backend || err
|
|
|
|
# reset database
|
|
PYTHONPATH=src venv/bin/python -m alembic downgrade base &> ../tmp/alembic.txt || err alembic down
|
|
PYTHONPATH=src venv/bin/python -m alembic upgrade head &>> ../tmp/alembic.txt || err alembic up
|
|
|
|
# start dragonfly
|
|
bin/df.sh &> ../tmp/df.txt &
|
|
DF_PID=$!
|
|
|
|
cd ..
|
|
|
|
echo NODE_PID ${NODE_PID}
|
|
echo DF_PID ${DF_PID}
|
|
echo
|
|
echo '.-----------------.'
|
|
echo '| Mockchain ready |'
|
|
echo "'-----------------'"
|
|
echo
|
|
echo "MockEnv $MOCKENV"
|
|
echo "MirrorEnv $MIRRORENV"
|
|
echo "MEH $MEH"
|
|
echo "USXD $USXD"
|
|
echo "Pool $POOL"
|
|
echo
|
|
|
|
wait # wait for all background processes to terminate
|
|
|
|
# Anvil dev accounts
|
|
# ==================
|
|
|
|
# (0) "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" (10000.000000000000000000 ETH)
|
|
# (1) "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" (10000.000000000000000000 ETH)
|
|
# (2) "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC" (10000.000000000000000000 ETH)
|
|
# (3) "0x90F79bf6EB2c4f870365E785982E1f101E93b906" (10000.000000000000000000 ETH)
|
|
# (4) "0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65" (10000.000000000000000000 ETH)
|
|
# (5) "0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc" (10000.000000000000000000 ETH)
|
|
# (6) "0x976EA74026E726554dB657fA54763abd0C3a0aa9" (10000.000000000000000000 ETH)
|
|
# (7) "0x14dC79964da2C08b23698B3D3cc7Ca32193d9955" (10000.000000000000000000 ETH)
|
|
# (8) "0x23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f" (10000.000000000000000000 ETH)
|
|
# (9) "0xa0Ee7A142d267C1f36714E4a8F75612F20a79720" (10000.000000000000000000 ETH)
|
|
|
|
# Private Keys
|
|
# ============
|
|
|
|
# (0) 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
|
|
# (1) 0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d
|
|
# (2) 0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a
|
|
# (3) 0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6
|
|
# (4) 0x47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a
|
|
# (5) 0x8b3a350cf5c34c9194ca85829a2df0ec3153be0318b5e2d3348e872092edffba
|
|
# (6) 0x92db14e403b83dfe3df233f83dfa3a0d7096f21ca9b0d6d6b8d88b2b4ec1564e
|
|
# (7) 0x4bbbf85ce3377467afe5d46f804f221813b2bb87f24d81f60f1fcdbf7cbf4356
|
|
# (8) 0xdbda1821b80551c9d65939329250298aa3472ba22feea921c0cf5d620ea67b97
|
|
# (9) 0x2a871d0798f97d79848a013d4936a73bf4cc922c825d33c1cf7073dff6d409c6
|