From 1f555748b049895e29ddc9770bf5e437769ac992 Mon Sep 17 00:00:00 2001 From: Louis Holbrook Date: Mon, 6 Sep 2021 10:06:58 +0000 Subject: [PATCH] Sanitize contract migration configs --- apps/contract-migration/config.sh | 43 ++++ apps/contract-migration/config/config.ini | 23 ++ apps/contract-migration/requirements.txt | 1 + apps/contract-migration/reset.sh | 247 ++++++++-------------- apps/contract-migration/run_job.sh | 8 + apps/contract-migration/seed_cic_eth.sh | 73 ++----- docker-compose.yml | 22 +- 7 files changed, 192 insertions(+), 225 deletions(-) create mode 100644 apps/contract-migration/config.sh create mode 100644 apps/contract-migration/config/config.ini diff --git a/apps/contract-migration/config.sh b/apps/contract-migration/config.sh new file mode 100644 index 00000000..3831ce7e --- /dev/null +++ b/apps/contract-migration/config.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +set -a + +if [ -z $DEV_DATA_DIR ]; then + export DEV_DATA_DIR=`mktemp -d` +else + mkdir -p $DEV_DATA_DIR +fi + +if [ -z $DEV_CONFIG_RESET ]; then + if [ -f ${DEV_DATA_DIR}/env_reset ]; then + >&2 echo "importing existing configuration values from ${DEV_DATA_DIR}/env_reset" + . ${DEV_DATA_DIR}/env_reset + fi +fi + +# Handle wallet +export WALLET_KEY_FILE=${WALLET_KEY_FILE:-`realpath ./keystore/UTC--2021-01-08T17-18-44.521011372Z--eb3907ecad74a0013c259d5874ae7f22dcbcc95c`} +if [ ! -f $WALLET_KEY_FILE ]; then + >&2 echo "wallet path '$WALLET_KEY_FILE' does not point to a file" + exit 1 +fi +export DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER=`eth-checksum $(cat $WALLET_KEY_FILE | jq -r .address)` + +# Wallet dependent variable defaults +export DEV_ETH_ACCOUNT_RESERVE_MINTER=${DEV_ETH_ACCOUNT_RESERVE_MINTER:-$DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER} +export DEV_ETH_ACCOUNT_ACCOUNTS_INDEX_WRITER=${DEV_ETH_ACCOUNT_RESERVE_MINTER:-$DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER} +export CIC_TRUST_ADDRESS=${CIC_TRUST_ADDRESS:-$DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER} +export CIC_DEFAULT_TOKEN_SYMBOL=$TOKEN_SYMBOL +export TOKEN_SINK_ADDRESS=${TOKEN_SINK_ADDRESS:-$DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER} + + +# Legacy variable defaults + + +# Migration variable processing + +confini-dump --schema-module chainlib.eth.data.config --schema-module cic_eth.data.config --schema-dir ./config --prefix export > ${DEV_DATA_DIR}/env_reset + +cat ${DEV_DATA_DIR}/env_reset + +set +a diff --git a/apps/contract-migration/config/config.ini b/apps/contract-migration/config/config.ini new file mode 100644 index 00000000..4bce6a78 --- /dev/null +++ b/apps/contract-migration/config/config.ini @@ -0,0 +1,23 @@ +[token] +name = Giftable Token +symbol = GFT +type = giftable_erc20_token +demurrage_level = 196454828847045000000000000000000 +redistribution_period = +supply_limit = +sink_address = + + +[dev] +eth_account_contract_deployer = +eth_account_reserve_minter = +eth_account_accounts_index_writer = +reserve_amount = 10000000000000000000000000000000000 +faucet_amount = 0 +gas_amount = 100000000000000000000000 +token_amount = 100000000000000000000000 +eth_gas_price = +data_dir = +pip_extra_index_url = +eth_provider_host = +eth_provider_port = diff --git a/apps/contract-migration/requirements.txt b/apps/contract-migration/requirements.txt index 17ffb576..37bd17c6 100644 --- a/apps/contract-migration/requirements.txt +++ b/apps/contract-migration/requirements.txt @@ -8,3 +8,4 @@ cic-eth-registry>=0.6.1a2,<0.7.0 erc20-transfer-authorization>=0.3.5a2,<0.4.0 erc20-faucet>=0.3.2a2,<0.4.0 sarafu-faucet>=0.0.7a2,<0.1.0 +confini>=0.4.2rc3,<1.0.0 diff --git a/apps/contract-migration/reset.sh b/apps/contract-migration/reset.sh index d6bb04ce..1c221021 100755 --- a/apps/contract-migration/reset.sh +++ b/apps/contract-migration/reset.sh @@ -2,179 +2,112 @@ set -a -default_token=giftable_erc20_token -TOKEN_SYMBOL=${CIC_DEFAULT_TOKEN_SYMBOL} -TOKEN_NAME=${TOKEN_NAME} -TOKEN_TYPE=${TOKEN_TYPE:-$default_token} -cat <&2 echo using static gas price $DEV_ETH_GAS_PRICE fi -echo "environment:" -printenv -echo \n - -echo "using wallet address '$DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER' from keystore file $DEV_ETH_KEYSTORE_FILE" - -# This is a grassroots team convention for building the Bancor contracts using the bancor protocol repository truffle setup -# Running this in docker-internal dev container (built from Docker folder in this repo) will write a -# source-able env file to CIC_DATA_DIR. Services dependent on these contracts can mount this file OR -# define these parameters at runtime -# pushd /usr/src - -if [ -z $CIC_DATA_DIR ]; then - CIC_DATA_DIR=`mktemp -d` -fi ->&2 echo using data dir $CIC_DATA_DIR - -init_level_file=${CIC_DATA_DIR}/.init -if [ ! -f ${CIC_DATA_DIR}/.init ]; then - echo "Creating .init file..." - mkdir -p $CIC_DATA_DIR - touch $CIC_DATA_DIR/.init -# touch $init_level_file -fi -echo -n 1 > $init_level_file - -# Abort on any error (including if wait-for-it fails). - # Wait for the backend to be up, if we know where it is. -if [[ -n "${ETH_PROVIDER}" ]]; then - - export CONFINI_DIR=$_CONFINI_DIR - unset CONFINI_DIR - - if [ ! -z "$DEV_USE_DOCKER_WAIT_SCRIPT" ]; then - echo "waiting for ${ETH_PROVIDER}..." - ./wait-for-it.sh "${ETH_PROVIDER_HOST}:${ETH_PROVIDER_PORT}" - fi - - if [ "$TOKEN_TYPE" == "$default_token" ]; then - if [ -z "$TOKEN_SYMBOL" ]; then - >&2 echo token symbol not set, setting defaults for type $TOKEN_TYPE - TOKEN_SYMBOL="GFT" - TOKEN_NAME="Giftable Token" - elif [ -z "$TOKEN_NAME" ]; then - >&2 echo token name not set, setting same as symbol for type $TOKEN_TYPE - TOKEN_NAME=$TOKEN_SYMBOL - fi - >&2 echo deploying default token $TOKEN_TYPE - echo giftable-token-deploy $fee_price_arg -p $ETH_PROVIDER -y $DEV_ETH_KEYSTORE_FILE -i $CIC_CHAIN_SPEC -vv -s -ww --name "$TOKEN_NAME" --symbol $TOKEN_SYMBOL --decimals 6 -vv - DEV_RESERVE_ADDRESS=`giftable-token-deploy $fee_price_arg -p $ETH_PROVIDER -y $DEV_ETH_KEYSTORE_FILE -i $CIC_CHAIN_SPEC -vv -s -ww --name "$TOKEN_NAME" --symbol $TOKEN_SYMBOL --decimals 6 -vv` - elif [ "$TOKEN_TYPE" == "erc20_demurrage_token" ]; then - if [ -z "$TOKEN_SYMBOL" ]; then - >&2 echo token symbol not set, setting defaults for type $TOKEN_TYPE - TOKEN_SYMBOL="SARAFU" - TOKEN_NAME="Sarafu Token" - elif [ -z "$TOKEN_NAME" ]; then - >&2 echo token name not set, setting same as symbol for type $TOKEN_TYPE - TOKEN_NAME=$TOKEN_SYMBOL - fi - >&2 echo deploying token $TOKEN_TYPE - if [ -z $TOKEN_SINK_ADDRESS ]; then - if [ ! -z $TOKEN_REDISTRIBUTION_PERIOD ]; then - >&2 echo -e "\033[;93mtoken sink address not set, so redistribution will be BURNED\033[;39m" - fi - fi - DEV_RESERVE_ADDRESS=`erc20-demurrage-token-deploy $fee_price_arg -p $ETH_PROVIDER -y $DEV_ETH_KEYSTORE_FILE -i $CIC_CHAIN_SPEC --name "$TOKEN_NAME" --symbol $TOKEN_SYMBOL -vv -ww -s` - else - >&2 echo unknown token type $TOKEN_TYPE - exit 1 - fi - - echo "giftable-token-gift $fee_price_arg -p $ETH_PROVIDER -y $DEV_ETH_KEYSTORE_FILE -i $CIC_CHAIN_SPEC -vv -w -e $DEV_RESERVE_ADDRESS $DEV_RESERVE_AMOUNT" - giftable-token-gift $fee_price_arg -p $ETH_PROVIDER -y $DEV_ETH_KEYSTORE_FILE -i $CIC_CHAIN_SPEC -u -vv -s -w -e $DEV_RESERVE_ADDRESS $DEV_RESERVE_AMOUNT - - >&2 echo "deploy account index contract" - DEV_ACCOUNT_INDEX_ADDRESS=`eth-accounts-index-deploy $fee_price_arg -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -y $DEV_ETH_KEYSTORE_FILE -vv -s -u -w` - >&2 echo "add deployer address as account index writer" - eth-accounts-index-writer $fee_price_arg -s -u -y $DEV_ETH_KEYSTORE_FILE -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -e $DEV_ACCOUNT_INDEX_ADDRESS -ww -vv $debug $DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER - - >&2 echo "deploy contract registry contract" - CIC_REGISTRY_ADDRESS=`eth-contract-registry-deploy $fee_price_arg -i $CIC_CHAIN_SPEC -y $DEV_ETH_KEYSTORE_FILE --identifier AccountRegistry --identifier TokenRegistry --identifier AddressDeclarator --identifier Faucet --identifier TransferAuthorization --identifier ContractRegistry -p $ETH_PROVIDER -vv -s -u -w` - eth-contract-registry-set $fee_price_arg -s -u -w -y $DEV_ETH_KEYSTORE_FILE -e $CIC_REGISTRY_ADDRESS -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -vv --identifier ContractRegistry $CIC_REGISTRY_ADDRESS - eth-contract-registry-set $fee_price_arg -s -u -w -y $DEV_ETH_KEYSTORE_FILE -e $CIC_REGISTRY_ADDRESS -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -vv --identifier AccountRegistry $DEV_ACCOUNT_INDEX_ADDRESS - - # Deploy address declarator registry - >&2 echo "deploy address declarator contract" - declarator_description=0x546869732069732074686520434943206e6574776f726b000000000000000000 - DEV_DECLARATOR_ADDRESS=`eth-address-declarator-deploy -s -u -y $DEV_ETH_KEYSTORE_FILE -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -w -vv $declarator_description` - eth-contract-registry-set $fee_price_arg -s -u -w -y $DEV_ETH_KEYSTORE_FILE -e $CIC_REGISTRY_ADDRESS -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -vv --identifier AddressDeclarator $DEV_DECLARATOR_ADDRESS - - # Deploy transfer authorization contact - >&2 echo "deploy transfer auth contract" - DEV_TRANSFER_AUTHORIZATION_ADDRESS=`erc20-transfer-auth-deploy $gas_price_arg -y $DEV_ETH_KEYSTORE_FILE -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -w -vv` - eth-contract-registry-set $fee_price_arg -s -u -w -y $DEV_ETH_KEYSTORE_FILE -e $CIC_REGISTRY_ADDRESS -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -vv --identifier TransferAuthorization $DEV_TRANSFER_AUTHORIZATION_ADDRESS - - # Deploy token index contract - >&2 echo "deploy token index contract" - DEV_TOKEN_INDEX_ADDRESS=`eth-token-index-deploy -s -u $fee_price_arg -y $DEV_ETH_KEYSTORE_FILE -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -w -vv` - eth-contract-registry-set $fee_price_arg -s -u -w -y $DEV_ETH_KEYSTORE_FILE -e $CIC_REGISTRY_ADDRESS -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -vv --identifier TokenRegistry $DEV_TOKEN_INDEX_ADDRESS - >&2 echo "add reserve token to token index" - eth-token-index-add $fee_price_arg -s -u -w -y $DEV_ETH_KEYSTORE_FILE -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -vv -e $DEV_TOKEN_INDEX_ADDRESS $DEV_RESERVE_ADDRESS - - # Sarafu faucet contract - >&2 echo "deploy token faucet contract" - DEV_FAUCET_ADDRESS=`sarafu-faucet-deploy $fee_price_arg -y $DEV_ETH_KEYSTORE_FILE -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -w -vv --account-index-address $DEV_ACCOUNT_INDEX_ADDRESS $DEV_RESERVE_ADDRESS -s` - - >&2 echo "set token faucet amount" - sarafu-faucet-set $fee_price_arg -y $DEV_ETH_KEYSTORE_FILE -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -e $DEV_FAUCET_ADDRESS -vv -s --fee-limit 100000 $DEV_FAUCET_AMOUNT - - >&2 echo "register faucet in registry" - eth-contract-registry-set -s -u $fee_price_arg -w -y $DEV_ETH_KEYSTORE_FILE -e $CIC_REGISTRY_ADDRESS -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -vv --identifier Faucet $DEV_FAUCET_ADDRESS - - >&2 echo "set faucet as token minter" - giftable-token-minter -s -u $fee_price_arg -w -y $DEV_ETH_KEYSTORE_FILE -e $DEV_RESERVE_ADDRESS -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -vv $DEV_FAUCET_ADDRESS - - export CONFINI_DIR=$_CONFINI_DIR -else - echo "\$ETH_PROVIDER not set!" +if [ -z "${RPC_PROVIDER}" ]; then + echo "\$RPC_PROVIDER not set!" exit 1 fi -mkdir -p $CIC_DATA_DIR ->&2 echo using data dir $CIC_DATA_DIR for environment variable dump +unset CONFINI_DIR -# this is consumed in downstream services to set environment variables -cat << EOF > $CIC_DATA_DIR/.env -export CIC_REGISTRY_ADDRESS=$CIC_REGISTRY_ADDRESS -export CIC_TRUST_ADDRESS=$DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER -export CIC_DECLARATOR_ADDRESS=$CIC_DECLARATOR_ADDRESS -EOF +if [ ! -z "$DEV_USE_DOCKER_WAIT_SCRIPT" ]; then + IFS=: read -a p <<< "$RPC_PROVIDER" + read -i "/" rpc_provider_port <<< "${p[2]}" + rpc_provider_host=${p[1]:2} + echo "waiting for provider host $rpc_provider_host port $rpc_provider_port..." + ./wait-for-it.sh "$rpc_provider_host:$rpc_provider_port" +fi -cat ./envlist | bash from_env.sh > $CIC_DATA_DIR/.env_all -cat ./envlist -# popd +if [ "$TOKEN_TYPE" == "giftable_erc20_token" ]; then + if [ -z "$TOKEN_SYMBOL" ]; then + >&2 echo token symbol not set, setting defaults for type $TOKEN_TYPE + TOKEN_SYMBOL="GFT" + TOKEN_NAME="Giftable Token" + elif [ -z "$TOKEN_NAME" ]; then + >&2 echo token name not set, setting same as symbol for type $TOKEN_TYPE + TOKEN_NAME=$TOKEN_SYMBOL + fi + >&2 echo deploying default token $TOKEN_TYPE + echo giftable-token-deploy $fee_price_arg -p $RPC_PROVIDER -y $WALLET_KEY_FILE -i $CIC_CHAIN_SPEC -vv -s -ww --name "$TOKEN_NAME" --symbol $TOKEN_SYMBOL --decimals 6 -vv + DEV_RESERVE_ADDRESS=`giftable-token-deploy $fee_price_arg -p $RPC_PROVIDER -y $WALLET_KEY_FILE -i $CIC_CHAIN_SPEC -vv -s -ww --name "$TOKEN_NAME" --symbol $TOKEN_SYMBOL --decimals 6 -vv` +elif [ "$TOKEN_TYPE" == "erc20_demurrage_token" ]; then + if [ -z "$TOKEN_SYMBOL" ]; then + >&2 echo token symbol not set, setting defaults for type $TOKEN_TYPE + TOKEN_SYMBOL="DET" + TOKEN_NAME="Demurrage Token" + elif [ -z "$TOKEN_NAME" ]; then + >&2 echo token name not set, setting same as symbol for type $TOKEN_TYPE + TOKEN_NAME=$TOKEN_SYMBOL + fi + >&2 echo deploying token $TOKEN_TYPE + if [ -z $TOKEN_SINK_ADDRESS ]; then + if [ ! -z $TOKEN_REDISTRIBUTION_PERIOD ]; then + >&2 echo -e "\033[;93mtoken sink address not set, so redistribution will be BURNED\033[;39m" + fi + fi + DEV_RESERVE_ADDRESS=`erc20-demurrage-token-deploy $fee_price_arg -p $RPC_PROVIDER -y $WALLET_KEY_FILE -i $CIC_CHAIN_SPEC --name "$TOKEN_NAME" --symbol $TOKEN_SYMBOL -vv -ww -s` +else + >&2 echo unknown token type $TOKEN_TYPE + exit 1 +fi + +echo "giftable-token-gift $fee_price_arg -p $RPC_PROVIDER -y $WALLET_KEY_FILE -i $CIC_CHAIN_SPEC -vv -w -e $DEV_RESERVE_ADDRESS $DEV_RESERVE_AMOUNT" +giftable-token-gift $fee_price_arg -p $RPC_PROVIDER -y $WALLET_KEY_FILE -i $CIC_CHAIN_SPEC -u -vv -s -w -e $DEV_RESERVE_ADDRESS $DEV_RESERVE_AMOUNT + +>&2 echo "deploy account index contract" +DEV_ACCOUNT_INDEX_ADDRESS=`eth-accounts-index-deploy $fee_price_arg -i $CIC_CHAIN_SPEC -p $RPC_PROVIDER -y $WALLET_KEY_FILE -vv -s -u -w` +>&2 echo "add deployer address as account index writer" +eth-accounts-index-writer $fee_price_arg -s -u -y $WALLET_KEY_FILE -i $CIC_CHAIN_SPEC -p $RPC_PROVIDER -e $DEV_ACCOUNT_INDEX_ADDRESS -ww -vv $debug $DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER + +>&2 echo "deploy contract registry contract" +CIC_REGISTRY_ADDRESS=`eth-contract-registry-deploy $fee_price_arg -i $CIC_CHAIN_SPEC -y $WALLET_KEY_FILE --identifier AccountRegistry --identifier TokenRegistry --identifier AddressDeclarator --identifier Faucet --identifier TransferAuthorization --identifier ContractRegistry -p $RPC_PROVIDER -vv -s -u -w` +eth-contract-registry-set $fee_price_arg -s -u -w -y $WALLET_KEY_FILE -e $CIC_REGISTRY_ADDRESS -i $CIC_CHAIN_SPEC -p $RPC_PROVIDER -vv --identifier ContractRegistry $CIC_REGISTRY_ADDRESS +eth-contract-registry-set $fee_price_arg -s -u -w -y $WALLET_KEY_FILE -e $CIC_REGISTRY_ADDRESS -i $CIC_CHAIN_SPEC -p $RPC_PROVIDER -vv --identifier AccountRegistry $DEV_ACCOUNT_INDEX_ADDRESS + +# Deploy address declarator registry +>&2 echo "deploy address declarator contract" +declarator_description=0x546869732069732074686520434943206e6574776f726b000000000000000000 +DEV_DECLARATOR_ADDRESS=`eth-address-declarator-deploy -s -u -y $WALLET_KEY_FILE -i $CIC_CHAIN_SPEC -p $RPC_PROVIDER -w -vv $declarator_description` +eth-contract-registry-set $fee_price_arg -s -u -w -y $WALLET_KEY_FILE -e $CIC_REGISTRY_ADDRESS -i $CIC_CHAIN_SPEC -p $RPC_PROVIDER -vv --identifier AddressDeclarator $DEV_DECLARATOR_ADDRESS + +# Deploy transfer authorization contact +>&2 echo "deploy transfer auth contract" +DEV_TRANSFER_AUTHORIZATION_ADDRESS=`erc20-transfer-auth-deploy $gas_price_arg -y $WALLET_KEY_FILE -i $CIC_CHAIN_SPEC -p $RPC_PROVIDER -w -vv` +eth-contract-registry-set $fee_price_arg -s -u -w -y $WALLET_KEY_FILE -e $CIC_REGISTRY_ADDRESS -i $CIC_CHAIN_SPEC -p $RPC_PROVIDER -vv --identifier TransferAuthorization $DEV_TRANSFER_AUTHORIZATION_ADDRESS + +# Deploy token index contract +>&2 echo "deploy token index contract" +DEV_TOKEN_INDEX_ADDRESS=`eth-token-index-deploy -s -u $fee_price_arg -y $WALLET_KEY_FILE -i $CIC_CHAIN_SPEC -p $RPC_PROVIDER -w -vv` +eth-contract-registry-set $fee_price_arg -s -u -w -y $WALLET_KEY_FILE -e $CIC_REGISTRY_ADDRESS -i $CIC_CHAIN_SPEC -p $RPC_PROVIDER -vv --identifier TokenRegistry $DEV_TOKEN_INDEX_ADDRESS +>&2 echo "add reserve token to token index" +eth-token-index-add $fee_price_arg -s -u -w -y $WALLET_KEY_FILE -i $CIC_CHAIN_SPEC -p $RPC_PROVIDER -vv -e $DEV_TOKEN_INDEX_ADDRESS $DEV_RESERVE_ADDRESS + +# Sarafu faucet contract +>&2 echo "deploy token faucet contract" +DEV_FAUCET_ADDRESS=`sarafu-faucet-deploy $fee_price_arg -y $WALLET_KEY_FILE -i $CIC_CHAIN_SPEC -p $RPC_PROVIDER -w -vv --account-index-address $DEV_ACCOUNT_INDEX_ADDRESS $DEV_RESERVE_ADDRESS -s` + +>&2 echo "set token faucet amount" +sarafu-faucet-set $fee_price_arg -y $WALLET_KEY_FILE -i $CIC_CHAIN_SPEC -p $RPC_PROVIDER -e $DEV_FAUCET_ADDRESS -vv -s --fee-limit 100000 $DEV_FAUCET_AMOUNT + +>&2 echo "register faucet in registry" +eth-contract-registry-set -s -u $fee_price_arg -w -y $WALLET_KEY_FILE -e $CIC_REGISTRY_ADDRESS -i $CIC_CHAIN_SPEC -p $RPC_PROVIDER -vv --identifier Faucet $DEV_FAUCET_ADDRESS + +>&2 echo "set faucet as token minter" +giftable-token-minter -s -u $fee_price_arg -w -y $WALLET_KEY_FILE -e $DEV_RESERVE_ADDRESS -i $CIC_CHAIN_SPEC -p $RPC_PROVIDER -vv $DEV_FAUCET_ADDRESS + + +confini-dump --schema-module chainlib.eth.data.config --schema-module cic_eth.data.config --schema-dir ./config --prefix export > ${DEV_DATA_DIR}/env_reset set +a set +e -echo -n 2 > $init_level_file - exec "$@" diff --git a/apps/contract-migration/run_job.sh b/apps/contract-migration/run_job.sh index 5edb2b00..fcb62d7e 100644 --- a/apps/contract-migration/run_job.sh +++ b/apps/contract-migration/run_job.sh @@ -1,5 +1,13 @@ #! /bin/bash +>&2 echo -e "\033[;96mRUNNING\033[;39m configurations" +. ./config.sh +if [ $? -ne "0" ]; then + >&2 echo -e "\033[;31mFAILED\033[;39m configurations" + exit 1; +fi +>&2 echo -e "\033[;32mSUCCEEDED\033[;39m configurations" + if [[ $((RUN_MASK & 1)) -eq 1 ]] then >&2 echo -e "\033[;96mRUNNING\033[;39m RUN_MASK 1 - contract deployment" diff --git a/apps/contract-migration/seed_cic_eth.sh b/apps/contract-migration/seed_cic_eth.sh index aefae1c1..36731720 100755 --- a/apps/contract-migration/seed_cic_eth.sh +++ b/apps/contract-migration/seed_cic_eth.sh @@ -1,68 +1,40 @@ #!/bin/bash # defaults -#initlevel=`cat ${CIC_DATA_DIR}/.init` -#echo $inilevel -#if [ $initlevel -lt 2 ]; then -# >&2 echo "initlevel too low $initlevel" -# exit 1 -#fi -source ${CIC_DATA_DIR}/.env -source ${CIC_DATA_DIR}/.env_all -DEV_PIP_EXTRA_INDEX_URL=${DEV_PIP_EXTRA_INDEX_URL:-https://pip.grassrootseconomics.net:8433} -DEV_DATABASE_NAME_CIC_ETH=${DEV_DATABASE_NAME_CIC_ETH:-"cic-eth"} -CIC_DATA_DIR=${CIC_DATA_DIR:-/tmp/cic} -ETH_PASSPHRASE='' -CIC_DEFAULT_TOKEN_SYMBOL=${CIC_DEFAULT_TOKEN_SYMBOL:-GFT} -TOKEN_SYMBOL=$CIC_DEFAULT_TOKEN_SYMBOL - -CHAIN_SPEC=${CHAIN_SPEC:-$CIC_CHAIN_SPEC} -RPC_HTTP_PROVIDER=${RPC_HTTP_PROVIDER:-$ETH_PROVIDER} +source ${DEV_DATA_DIR}/env_reset +cat ${DEV_DATA_DIR}/env_reset # Debug flag -DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER=0xEb3907eCad74a0013c259D5874AE7f22DcBcC95C -keystore_file=./keystore/UTC--2021-01-08T17-18-44.521011372Z--eb3907ecad74a0013c259d5874ae7f22dcbcc95c debug='-vv' -gas_amount=100000000000000000000000 -token_amount=${gas_amount} -env_out_file=${CIC_DATA_DIR}/.env_seed -init_level_file=${CIC_DATA_DIR}/.init empty_config_dir=$CONFINI_DIR/empty -truncate $env_out_file -s 0 set -e set -a -#pip install --extra-index-url $DEV_PIP_EXTRA_INDEX_URL eth-address-index==0.1.1a7 - -export CONFINI_DIR=$_CONFINI_DIR unset CONFINI_DIR # get required addresses from registries -DEV_TOKEN_INDEX_ADDRESS=`eth-contract-registry-list -u -i $CHAIN_SPEC -p $ETH_PROVIDER -e $CIC_REGISTRY_ADDRESS -vv --raw TokenRegistry` -DEV_ACCOUNT_INDEX_ADDRESS=`eth-contract-registry-list -u -i $CHAIN_SPEC -p $ETH_PROVIDER -e $CIC_REGISTRY_ADDRESS -vv --raw AccountRegistry` -DEV_RESERVE_ADDRESS=`eth-token-index-list -i $CHAIN_SPEC -u -p $ETH_PROVIDER -e $DEV_TOKEN_INDEX_ADDRESS -vv --raw $CIC_DEFAULT_TOKEN_SYMBOL` -cat <&2 echo "Token registry: $token_index_address" +>&2 echo "Account registry: $account_index_address" +>&2 echo "Reserve address: $reserve_address ($TOKEN_SYMBOL)" >&2 echo "create account for gas gifter" old_gas_provider=$DEV_ETH_ACCOUNT_GAS_PROVIDER -DEV_ETH_ACCOUNT_GAS_GIFTER=`CONFINI_DIR=$empty_config_dir cic-eth-create --redis-timeout 120 $debug --redis-host $REDIS_HOST --redis-host-callback=$REDIS_HOST --redis-port-callback=$REDIS_PORT --no-register` -echo DEV_ETH_ACCOUNT_GAS_GIFTER=$DEV_ETH_ACCOUNT_GAS_GIFTER >> $env_out_file +#DEV_ETH_ACCOUNT_GAS_GIFTER=`CONFINI_DIR=$empty_config_dir cic-eth-create --redis-timeout 120 $debug --redis-host $REDIS_HOST --redis-host-callback=$REDIS_HOST --redis-port-callback=$REDIS_PORT --no-register` +DEV_ETH_ACCOUNT_GAS_GIFTER=`cic-eth-create --redis-timeout 120 $debug --redis-host $REDIS_HOST --redis-host-callback=$REDIS_HOST --redis-port-callback=$REDIS_PORT --no-register` cic-eth-tag -i $CHAIN_SPEC GAS_GIFTER $DEV_ETH_ACCOUNT_GAS_GIFTER >&2 echo "create account for sarafu gifter" DEV_ETH_ACCOUNT_SARAFU_GIFTER=`CONFINI_DIR=$empty_config_dir cic-eth-create $debug --redis-host $REDIS_HOST --redis-host-callback=$REDIS_HOST --redis-port-callback=$REDIS_PORT --no-register` -echo DEV_ETH_ACCOUNT_SARAFU_GIFTER=$DEV_ETH_ACCOUNT_SARAFU_GIFTER >> $env_out_file cic-eth-tag -i $CHAIN_SPEC SARAFU_GIFTER $DEV_ETH_ACCOUNT_SARAFU_GIFTER >&2 echo "create account for approval escrow owner" DEV_ETH_ACCOUNT_TRANSFER_AUTHORIZATION_OWNER=`CONFINI_DIR=$empty_config_dir cic-eth-create $debug --redis-host $REDIS_HOST --redis-host-callback=$REDIS_HOST --redis-port-callback=$REDIS_PORT --no-register` -echo DEV_ETH_ACCOUNT_TRANSFER_AUTHORIZATION_OWNER=$DEV_ETH_ACCOUNT_TRANSFER_AUTHORIZATION_OWNER >> $env_out_file cic-eth-tag -i $CHAIN_SPEC TRANSFER_AUTHORIZATION_OWNER $DEV_ETH_ACCOUNT_TRANSFER_AUTHORIZATION_OWNER #>&2 echo "create account for faucet owner" @@ -72,50 +44,43 @@ cic-eth-tag -i $CHAIN_SPEC TRANSFER_AUTHORIZATION_OWNER $DEV_ETH_ACCOUNT_TRANSFE >&2 echo "create account for accounts index writer" DEV_ETH_ACCOUNT_ACCOUNT_REGISTRY_WRITER=`CONFINI_DIR=$empty_config_dir cic-eth-create $debug --redis-host $REDIS_HOST --redis-host-callback=$REDIS_HOST --redis-port-callback=$REDIS_PORT --no-register` -echo DEV_ETH_ACCOUNT_ACCOUNT_REGISTRY_WRITER=$DEV_ETH_ACCOUNT_ACCOUNT_REGISTRY_WRITER >> $env_out_file cic-eth-tag -i $CHAIN_SPEC ACCOUNT_REGISTRY_WRITER $DEV_ETH_ACCOUNT_ACCOUNT_REGISTRY_WRITER >&2 echo "add acccounts index writer account as writer on contract" -eth-accounts-index-writer -s -u -y $keystore_file -i $CHAIN_SPEC -p $ETH_PROVIDER -e $DEV_ACCOUNT_INDEX_ADDRESS -ww $debug $DEV_ETH_ACCOUNT_ACCOUNT_REGISTRY_WRITER +eth-accounts-index-writer -s -u -y $WALLET_KEY_FILE -i $CHAIN_SPEC -p $RPC_PROVIDER -e $account_index_address -ww $debug $DEV_ETH_ACCOUNT_ACCOUNT_REGISTRY_WRITER # Transfer gas to custodial gas provider adddress _CONFINI_DIR=$CONFINI_DIR unset CONFINI_DIR >&2 echo gift gas to gas gifter ->&2 eth-gas -s -u -y $keystore_file -i $CHAIN_SPEC -p $ETH_PROVIDER -w $debug -a $DEV_ETH_ACCOUNT_GAS_GIFTER $gas_amount +>&2 eth-gas -s -u -y $WALLET_KEY_FILE -i $CHAIN_SPEC -p $RPC_PROVIDER -w $debug -a $DEV_ETH_ACCOUNT_GAS_GIFTER $DEV_GAS_AMOUNT >&2 echo gift gas to sarafu token owner ->&2 eth-gas -s -u -y $keystore_file -i $CHAIN_SPEC -p $ETH_PROVIDER -w $debug -a $DEV_ETH_ACCOUNT_SARAFU_GIFTER $gas_amount +>&2 eth-gas -s -u -y $WALLET_KEY_FILE -i $CHAIN_SPEC -p $RPC_PROVIDER -w $debug -a $DEV_ETH_ACCOUNT_SARAFU_GIFTER $DEV_GAS_AMOUNT >&2 echo gift gas to account index owner ->&2 eth-gas -s -u -y $keystore_file -i $CHAIN_SPEC -p $ETH_PROVIDER -w $debug -a $DEV_ETH_ACCOUNT_ACCOUNT_REGISTRY_WRITER $gas_amount +>&2 eth-gas -s -u -y $WALLET_KEY_FILE -i $CHAIN_SPEC -p $RPC_PROVIDER -w $debug -a $DEV_ETH_ACCOUNT_ACCOUNT_REGISTRY_WRITER $DEV_GAS_AMOUNT # Send token to token creator >&2 echo "gift tokens to sarafu owner" -echo "giftable-token-gift -s -u -y $keystore_file -i $CHAIN_SPEC -p $ETH_PROVIDER -e $DEV_RESERVE_ADDRESS -a $DEV_ETH_ACCOUNT_SARAFU_GIFTER -w $debug $token_amount" ->&2 giftable-token-gift -s -u -y $keystore_file -i $CHAIN_SPEC -p $ETH_PROVIDER -e $DEV_RESERVE_ADDRESS -a $DEV_ETH_ACCOUNT_SARAFU_GIFTER -w $debug $token_amount +echo "giftable-token-gift -s -u -y $WALLET_KEY_FILE -i $CHAIN_SPEC -p $RPC_PROVIDER -e $reserve_address -a $DEV_ETH_ACCOUNT_SARAFU_GIFTER -w $debug $DEV_TOKEN_AMOUNT" +>&2 giftable-token-gift -s -u -y $WALLET_KEY_FILE -i $CHAIN_SPEC -p $RPC_PROVIDER -e $reserve_address -a $DEV_ETH_ACCOUNT_SARAFU_GIFTER -w $debug $DEV_TOKEN_AMOUNT # Send token to token gifter >&2 echo "gift tokens to keystore address" ->&2 giftable-token-gift -s -u -y $keystore_file -i $CHAIN_SPEC -p $ETH_PROVIDER -e $DEV_RESERVE_ADDRESS -a $DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER -w $debug $token_amount +>&2 giftable-token-gift -s -u -y $WALLET_KEY_FILE -i $CHAIN_SPEC -p $RPC_PROVIDER -e $reserve_address -a $DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER -w $debug $DEV_TOKEN_AMOUNT >&2 echo "set sarafu token to reserve token (temporarily while bancor contracts are not connected)" -echo DEV_ETH_SARAFU_TOKEN_ADDRESS=$DEV_ETH_RESERVE_ADDRESS >> $env_out_file export DEV_ETH_SARAFU_TOKEN_ADDRESS=$DEV_ETH_RESERVE_ADDRESS # Transfer tokens to gifter address >&2 echo "transfer tokens to token gifter address" ->&2 erc20-transfer -s -u -y $keystore_file -i $CHAIN_SPEC -p $ETH_PROVIDER --fee-limit 100000 -e $DEV_RESERVE_ADDRESS -w $debug -a $DEV_ETH_ACCOUNT_SARAFU_GIFTER ${token_amount:0:-1} +>&2 erc20-transfer -s -u -y $WALLET_KEY_FILE -i $CHAIN_SPEC -p $RPC_PROVIDER --fee-limit 100000 -e $reserve_address -w $debug -a $DEV_ETH_ACCOUNT_SARAFU_GIFTER ${DEV_TOKEN_AMOUNT:0:-1} -#echo -n 0 > $init_level_file - -#CONFINI_DIR=$_CONFINI_DIR # Remove the SEND (8), QUEUE (16) and INIT (2) locks (or'ed), set by default at migration cic-eth-ctl -i $CHAIN_SPEC unlock INIT cic-eth-ctl -i $CHAIN_SPEC unlock SEND cic-eth-ctl -i $CHAIN_SPEC unlock QUEUE -export CONFINI_DIR=$_CONFINI_DIR - set +a set +e diff --git a/docker-compose.yml b/docker-compose.yml index d61cab55..47880a32 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -72,16 +72,12 @@ services: EXTRA_PIP_ARGS: $EXTRA_PIP_ARGS # image: registry.gitlab.com/grassrootseconomics/cic-internal-integration/contract-migration:latest environment: - CIC_REGISTRY_ADDRESS: $CIC_REGISTRY_ADDRESS - ETH_PROVIDER: ${CIC_HTTP_PROVIDER:-http://eth:8545} - RPC_HTTP_PROVIDER: ${CIC_HTTP_PROVIDER:-http://eth:8545} - # And these two are for wait-for-it (could parse this) + RPC_PROVIDER: ${RPC_PROVIDER:-http://eth:8545} DEV_USE_DOCKER_WAIT_SCRIPT: 1 - ETH_PROVIDER_HOST: eth - ETH_PROVIDER_PORT: 8545 CHAIN_SPEC: ${CHAIN_SPEC:-evm:bloxberg:8996} CIC_CHAIN_SPEC: ${CHAIN_SPEC:-evm:bloxberg:8996} - CIC_DATA_DIR: ${CIC_DATA_DIR:-/tmp/cic/config} + DEV_DATA_DIR: ${DEV_DATA_DIR:-/tmp/cic/config} + DEV_CONFIG_RESET: $DEV_CONFIG_RESET DATABASE_HOST: ${DATABASE_HOST:-postgres} DATABASE_PORT: ${DATABASE_PORT:-5432} DATABASE_NAME: ${DEV_DATABASE_NAME_CIC_ETH:-cic_eth} @@ -96,17 +92,15 @@ services: DEV_PIP_EXTRA_INDEX_URL: ${DEV_PIP_EXTRA_INDEX_URL:-https://pip.grassrootseconomics.net:8433} RUN_MASK: ${RUN_MASK:-0} # bit flags; 1: contract migrations 2: seed data DEV_FAUCET_AMOUNT: ${DEV_FAUCET_AMOUNT:-0} - #DEV_SARAFU_DEMURRAGE_LEVEL: ${DEV_SARAFU_DEMURRAGE_LEVEL:-196454828847045000000000000000000} - DEV_ETH_GAS_PRICE: ${DEV_ETH_GAS_PRICE:-1} - CIC_DEFAULT_TOKEN_SYMBOL: $CIC_DEFAULT_TOKEN_SYMBOL - TOKEN_NAME: $TOKEN_NAME + DEV_ETH_GAS_PRICE: $DEV_ETH_GAS_PRICE + CIC_DEFAULT_TOKEN_SYMBOL: ${CIC_DEFAULT_TOKEN_SYMBOL:-SARAFU} + TOKEN_NAME: ${TOKEN_NAME:-Sarafu Token} TOKEN_DECIMALS: $TOKEN_DECIMALS - TOKEN_REDISTRIBUTION_PERIOD: $TOKEN_REDISTRIBUTION_PERIOD + TOKEN_REDISTRIBUTION_PERIOD: $TOKEN_DEMURRAGE_REDISTRIBUTION_PERIOD TOKEN_SUPPLY_LIMIT: $TOKEN_SUPPLY_LIMIT - TOKEN_DEMURRAGE_LEVEL: ${TOKEN_DEMURRAGE_LEVEL:-196454828847045000000000000000000} + TOKEN_DEMURRAGE_LEVEL: $TOKEN_DEMURRAGE_LEVEL TOKEN_SINK_ADDRESS: $TOKEN_SINK_ADDRESS TOKEN_TYPE: $TOKEN_TYPE - #CONFINI_DIR: ${CONFINI_DIR:-/tmp/cic/config} command: ["./run_job.sh"] #command: ["./reset.sh"] depends_on: