celo-bootstrap/boot.sh

76 lines
3.7 KiB
Bash

RPC_PROVIDER=${RPC_PROVIDER:-http://localhost:8545}
CHAIN_SPEC=${CHAIN_SPEC:-evm:celo:1337:celo}
KEY_FILE=${KEY_FILE:-keyfile.json}
RPC_DIALECT=${RPC_DIALECT:-chainlib_eth_celo}
# 30 * 20000000010 * 100000
GAS_FAUCET_AMOUNT=${GAS_FAUCET_AMOUNT:-60000000030000000}
# 5 * 20000000010 * 100000
GAS_FAUCET_THRESHOLD=${GAS_FAUCET_THRESHOLD:-10000000005000000}
# 24 hrs
GAS_FAUCET_PERIOD=${GAS_FAUCET_PERIOD:-86400}
log='-v'
set +e
t=$(mktemp -d)
# get the writer keyfile address
publisher=$(eth-keyfile -d $KEY_FILE)
if [ -z "$publisher" ]; then
exit 1
fi
writer=${WRITER_ADDRESS:-$publisher}
writer=$(eth-checksum $writer)
>&2 echo publisher: $publisher
>&2 echo writer: $writer
>&2 echo datadir: $t
# account registry
accounts=$(eth-accounts-index-publish -y $KEY_FILE --fee-limit 2000000 -s -w $log | tee $t/accounts.txt)
# token index
index=$(eth-token-index-publish -y $KEY_FILE --fee-limit 2000000 -s -w $log | tee $t/index.txt)
# eth faucet
gasfaucet=$(eth-faucet-publish -y $KEY_FILE --fee-limit 2000000 -s -w $log | tee $t/gasfaucet.txt)
# create the faucet period checker
hsh=$(eth-gas -y $KEY_FILE --data <(eth-faucet-gen period) --fee-limit 2000000 -s -w $log 0)
period=$(eth-get $hsh --raw -o contract | tee $t/period.txt)
eth-encode -y $KEY_FILE --mode tx --signature setPoker a:$gasfaucet -e $(eth-checksum $period) --fee-limit 100000 -s -w $log
# set parameters for faucet and period checker backend
eth-encode -y $KEY_FILE --mode tx --signature setAmount u:$GAS_FAUCET_AMOUNT -e $(eth-checksum $gasfaucet) --fee-limit 100000 -s -w $log
eth-encode -y $KEY_FILE --mode tx --signature setRegistry a:$accounts -e $(eth-checksum $gasfaucet) --fee-limit 100000 -s -w $log
eth-encode -y $KEY_FILE --mode tx --signature setPeriodChecker a:$period -e $(eth-checksum $gasfaucet) --fee-limit 100000 -s -w $log
eth-encode -y $KEY_FILE --mode tx --signature setPoker a:$gasfaucet -e $(eth-checksum $period) --fee-limit 100000 -s -w $log
if [ ! -z "$GAS_FAUCET_THRESHOLD" ]; then
eth-encode -y $KEY_FILE --mode tx --signature setBalanceThreshold u:$GAS_FAUCET_THRESHOLD -e $(eth-checksum $period) --fee-limit 100000 -s -w $log
fi
if [ ! -z "$GAS_FAUCET_PERIOD" ]; then
eth-encode -y $KEY_FILE --mode tx --signature setPeriod u:$GAS_FAUCET_PERIOD -e $(eth-checksum $period) --fee-limit 100000 -s -w $log
fi
eth-encode -y $KEY_FILE --mode tx --signature addWriter a:$writer -e $(eth-checksum $accounts) --fee-limit 100000 -s -w $log
eth-encode -y $KEY_FILE --mode tx --signature addWriter a:$writer -e $(eth-checksum $index) --fee-limit 100000 -s -w $log
# publish custodial registration proxy
proxy=$(ge-custodial-registration-proxy-publish -y $KEY_FILE --fee-limit 2000000 -s -w $log --eth-faucet-address $gasfaucet --account-index-address $accounts --system-account-address $publisher | tee $t/proxy.txt)
# publish contract registry
contracts=$(eth-contract-registry-publish -y $KEY_FILE --fee-limit 2000000 -s -w $log --identifier PeriodBackend --identifier AccountIndex --identifier TokenIndex --identifier GasFaucet --identifier CustodialRegistrationProxy | tee $t/contracts.txt)
contracts=$(eth-checksum $contracts)
eth-contract-registry-set -y $KEY_FILE --fee-limit 100000 -s -w $log -e $contracts -a $(eth-checksum $accounts) AccountIndex
eth-contract-registry-set -y $KEY_FILE --fee-limit 100000 -s -w $log -e $contracts -a $(eth-checksum $index) TokenIndex
eth-contract-registry-set -y $KEY_FILE --fee-limit 100000 -s -w $log -e $contracts -a $(eth-checksum $gasfaucet) GasFaucet
eth-contract-registry-set -y $KEY_FILE --fee-limit 100000 -s -w $log -e $contracts -a $(eth-checksum $period) PeriodBackend
eth-contract-registry-set -y $KEY_FILE --fee-limit 100000 -s -w $log -e $contracts -a $(eth-checksum $proxy) CustodialRegistrationProxy
set -e
echo $contracts