diff --git a/install.sh b/install.sh index b79b08f..3219392 100644 --- a/install.sh +++ b/install.sh @@ -5,19 +5,22 @@ branch='master' verbose='false' +evm= # kitabu | bloxberg print_usage() { printf "CIC Staff Installer Options: -b Name of the branch you want use to install + -e Name of the EVM you want to install (kitabu, bloxberg) -v Verbose -h Print this help message " } -while getopts 'hb:v' flag; do +while getopts 'e:hb:v' flag; do case "${flag}" in b) branch="${OPTARG}" ;; + e) evm="${OPTARG}" ;; v) verbose='true' ;; h) print_usage exit 0 ;; @@ -25,7 +28,7 @@ while getopts 'hb:v' flag; do exit 1 ;; esac done - +export INSTALL_EVM=${evm} temp_dir=`mktemp -d` git clone -b $branch https://git.grassecon.net/grassrootseconomics/cic-staff-installer.git $temp_dir cd $temp_dir diff --git a/setup.sh b/setup.sh index 3f8cbf8..b0bd82e 100644 --- a/setup.sh +++ b/setup.sh @@ -168,7 +168,7 @@ set +a . setup_systemd.sh if [ ! -z $INSTALL_EVM ]; then - . setup_${INSTALL_EVM}.sh + . setup_evm.sh fi diff --git a/setup_bloxberg.sh b/setup_bloxberg.sh deleted file mode 100644 index d5d151e..0000000 --- a/setup_bloxberg.sh +++ /dev/null @@ -1,48 +0,0 @@ -. aux/bdbg/bdbg.sh -. setup_path.sh - -GIT_OPENETHEREUM=${GIT_OPENETHEREUM:-https://github.com/openethereum/openethereum} -OPENETHEREUM_PATH=${OPENETHEREUM_PATH:-$HOME/.local/bin/parity} -openethereum_dir=`realpath $(dirname $OPENETHEREUM_PATH)` -default_openethereum_run=$HOME/.local/share/io.parity.ethereum/bloxberg -default_openethereum_config=$HOME/.config/io.parity.ethereum/bloxberg -export OPENETHEREUM_RUN=${OPENETHEREUM_RUN:-$default_openethereum_run} -export OPENETHEREUM_CONFIG=${OPENETHEREUM_CONFIG:-$default_openethereum_config} - -install_env= -if [ ! -f $OPENETHEREUM_PATH ]; then - dbg $dbg_debug "downloading bloxberg node" - t=`mktemp -d` - pushd $t - install_env=1 - git clone $GIT_OPENETHEREUM - cd openethereum - git checkout 2662d1925ec794f3ad7c5759b2412ff5128d259b - rustup install 1.47.0 - cargo build --release --features final - cp -v $t/target/release/parity $HOME/.local/bin/ - export OPENETHEREUM_PATH=$HOME/.local/bin/parity -else - dbg $dbg_info "found bloxberg node executable in $OPENETHEREUM_PATH" -fi - -#OPENETHEREUM_RUN=$HOME/.local/share/bloxberg -if [ ! -d $OPENETHEREUM_RUN ]; then - mkdir -vp $OPENETHEREUM_RUN/bootnode - mkdir -vp $OPENETHEREUM_CONFIG - touch $OPENETHEREUM_CONFIG/bootnode.pwd - dd status=xfer if=/dev/urandom bs=32 count=1 2> /dev/null | hexdump -v -n 32 -e '1/1 "%02x"' > $OPENETHEREUM_CONFIG/bootnode.pwd - chmod -v 400 $OPENETHEREUM_CONFIG/bootnode.pwd - ./aux/bash-templater/templater.sh var/bloxberg/bootnode.toml > $OPENETHEREUM_CONFIG/bootnode.toml - cp -v var/bloxberg/bloxberg.json $OPENETHEREUM_CONFIG/ - cp -v var/bloxberg/bootnodes.txt $OPENETHEREUM_CONFIG/ - cp -v systemd/bloxberg.service $HOME/.config/systemd/user/ - ./aux/bash-templater/templater.sh systemd/env/01-bloxberg.conf > $HOME/.config/environment.d/01-bloxberg.conf - systemctl --user daemon-reload -fi - -update_path $openethereum_dir - -if [ ! -z "$install_env" ]; then - popd -fi diff --git a/setup_evm.sh b/setup_evm.sh new file mode 100644 index 0000000..9be6c6b --- /dev/null +++ b/setup_evm.sh @@ -0,0 +1,80 @@ +. aux/bdbg/bdbg.sh +. setup_path.sh +# set -o xtrace +GIT_OPENETHEREUM=${GIT_OPENETHEREUM:-https://github.com/openethereum/openethereum} + +default_openethereum_chain="kitabu" # bloxberg | kitabu +export OPENETHEREUM_CHAIN=${INSTALL_EVM:-$default_openethereum_chain} + +OPENETHEREUM_PATH=${OPENETHEREUM_PATH:-$HOME/.local/bin/parity} +openethereum_dir=`realpath $(dirname $OPENETHEREUM_PATH)` + +default_openethereum_run=$HOME/.local/share/io.parity.ethereum/$OPENETHEREUM_CHAIN +default_openethereum_config=$HOME/.config/io.parity.ethereum/$OPENETHEREUM_CHAIN + +export OPENETHEREUM_RUN=${OPENETHEREUM_RUN:-$default_openethereum_run} +export OPENETHEREUM_CONFIG=${OPENETHEREUM_CONFIG:-$default_openethereum_config} +default_openethereum_type="binary" # source | binary +export OPENETHEREUM_TYPE=${OPENETHEREUM_TYPE:-$default_openethereum_type} + +download_openethereum() { + openethereum_version="3.3.3" + if [ ! -f "$PWD/openethereum-linux-v$openethereum_version.zip" ]; then + wget https://github.com/openethereum/openethereum/releases/download/v$openethereum_version/openethereum-linux-v$openethereum_version.zip + fi + unzip openethereum-linux-v$openethereum_version.zip + rm openethereum-linux-v$openethereum_version.zip + ./openethereum --version + mv ./openethereum $openethereum_dir/parity + export OPENETHEREUM_PATH=$openethereum_dir/parity +} +build_openethereum() { + dbg $dbg_debug "downloading bloxberg node" + t=`mktemp -d` + pushd $t + install_env=1 + git clone $GIT_OPENETHEREUM + cd openethereum + git checkout 2662d1925ec794f3ad7c5759b2412ff5128d259b + rustup install 1.47.0 + cargo build --release --features final + cp -v $t/target/release/parity $openethereum_dir + export OPENETHEREUM_PATH=$openethereum_dir/parity +} +install_env= +if [ ! -f $OPENETHEREUM_PATH ]; then +# Download and Build parity from git $GIT_OPENETHEREUM + if [ "$OPENETHEREUM_TYPE" = "source" ]; then + build_openethereum + else + download_openethereum + fi +else + dbg $dbg_info "found bloxberg node executable in $OPENETHEREUM_PATH" +fi + +#OPENETHEREUM_RUN=~/.local/share/io.parity.ethereum/$OPENETHEREUM_CHAIN +if [ ! -d $OPENETHEREUM_RUN ]; then + mkdir -vp $OPENETHEREUM_RUN/bootnode + mkdir -vp $OPENETHEREUM_CONFIG + touch $OPENETHEREUM_CONFIG/bootnode.pwd + dd status=xfer if=/dev/urandom bs=32 count=1 2> /dev/null | hexdump -v -n 32 -e '1/1 "%02x"' > $OPENETHEREUM_CONFIG/bootnode.pwd + chmod -v 400 $OPENETHEREUM_CONFIG/bootnode.pwd + ./aux/bash-templater/templater.sh var/$OPENETHEREUM_CHAIN/bootnode.toml > $OPENETHEREUM_CONFIG/bootnode.toml + cp -v var/$OPENETHEREUM_CHAIN/$OPENETHEREUM_CHAIN.json $OPENETHEREUM_CONFIG/ + if [ -f var/$OPENETHEREUM_CHAIN/bootnodes.txt ] ; then + cp -v var/$OPENETHEREUM_CHAIN/bootnodes.txt $OPENETHEREUM_CONFIG/ + fi + ./aux/bash-templater/templater.sh systemd/node.service > $HOME/.config/systemd/user/$OPENETHEREUM_CHAIN.service + ./aux/bash-templater/templater.sh systemd/env/01-$OPENETHEREUM_CHAIN.conf > $HOME/.config/environment.d/01-$OPENETHEREUM_CHAIN.conf + systemctl --user daemon-reload +else + echo Found $OPENETHEREUM_RUN directory! Skipping +fi + + +update_path $openethereum_dir + +if [ ! -z "$install_env" ]; then + popd +fi diff --git a/setup_systemd.sh b/setup_systemd.sh index 7a13e8f..1ddccd8 100644 --- a/setup_systemd.sh +++ b/setup_systemd.sh @@ -7,7 +7,7 @@ _level=2 _debug=1 cp -v systemd/cic-cache-server.service $HOME/.config/systemd/user/ -cp -v systemd/bloxberg.service $HOME/.config/systemd/user/ + dbg $dbg_debug "writing rendered services file $p" export PYTHON_BIN_PATH=`. aux/pylocation/pylocation.sh 2> /dev/null` diff --git a/systemd/env/01-bloxberg.conf b/systemd/env/01-bloxberg.conf index a531617..afe1e7d 100644 --- a/systemd/env/01-bloxberg.conf +++ b/systemd/env/01-bloxberg.conf @@ -1,2 +1,3 @@ OPENETHEREUM_PATH={{OPENETHEREUM_PATH}} OPENETHEREUM_CONFIG={{OPENETHEREUM_CONFIG}} +OPENETHEREUM_CHAIN={{OPENETHEREUM_CHAIN}} diff --git a/systemd/env/01-kitabu.conf b/systemd/env/01-kitabu.conf new file mode 100644 index 0000000..afe1e7d --- /dev/null +++ b/systemd/env/01-kitabu.conf @@ -0,0 +1,3 @@ +OPENETHEREUM_PATH={{OPENETHEREUM_PATH}} +OPENETHEREUM_CONFIG={{OPENETHEREUM_CONFIG}} +OPENETHEREUM_CHAIN={{OPENETHEREUM_CHAIN}} diff --git a/systemd/bloxberg.service b/systemd/node.service similarity index 74% rename from systemd/bloxberg.service rename to systemd/node.service index f6e7d54..c067f6d 100644 --- a/systemd/bloxberg.service +++ b/systemd/node.service @@ -1,5 +1,5 @@ [Unit] -Description=Bloxberg openethereum node +Description="{{OPENETHEREUM_CHAIN}} openethereum node" After=network.target [Service] diff --git a/uninstall-evm.sh b/uninstall-evm.sh new file mode 100644 index 0000000..7e9c995 --- /dev/null +++ b/uninstall-evm.sh @@ -0,0 +1,32 @@ +red=`tput setaf 1` +reset=`tput sgr0` +echo -n " +${red}WARNING:${reset} The following will be DELETED if present: + Directories: + $HOME/.local/share/io.parity.ethereum + $HOME/.config/io.parity.ethereum + Files: + $HOME/.local/bin/openethereum + $HOME/.local/bin/parity + $HOME/.config/systemd/user/kitabu.service + $HOME/.config/systemd/user/bloxberg.service + $HOME/.config/environment.d/01-bloxberg.conf + $HOME/.config/environment.d/01-kitabu.conf + +Would you still like to continue? (y/n):" + read confirmed + if [ "$confirmed" == "y" ]; then + echo "Deleting..." + rm -rf $HOME/.local/share/io.parity.ethereum + rm -rf $HOME/.config/io.parity.ethereum + rm $HOME/.local/bin/openethereum + rm $HOME/.local/bin/parity + rm $HOME/.config/systemd/user/kitabu.service + rm $HOME/.config/systemd/user/bloxberg.service + rm $HOME/.config/environment.d/01-bloxberg.conf + rm $HOME/.config/environment.d/01-kitabu.conf + echo "Done" + else + echo "Aborting" + fi +exit 0 diff --git a/uninstall.sh b/uninstall.sh index 2d52a30..722c502 100644 --- a/uninstall.sh +++ b/uninstall.sh @@ -12,4 +12,4 @@ echo -n "${red}WARNING:${reset} This will delete all your keys and settings. Con else echo "Aborting" fi -exit 0 \ No newline at end of file +exit 0 diff --git a/var/kitabu/bootnode.toml b/var/kitabu/bootnode.toml new file mode 100644 index 0000000..acf7169 --- /dev/null +++ b/var/kitabu/bootnode.toml @@ -0,0 +1,45 @@ + +[parity] +chain = "kitabu.json" +base_path = "data" + +[network] +port = 30303 +#reserved_peers = "{{CONFIG_DIR}}/bootnodes.txt" +# reserved_only = true +max_peers = 10 +snapshot_peers = 25 +#nat = "extip:100.102.26.121" +nat = "extip:159.223.92.107" + +[rpc] +port = 8545 +apis = ["web3", "eth", "net", "personal", "parity", "parity_set", "traces", "rpc", "parity_accounts"] +interface = "all" +cors = ["*"] + +[websockets] +disable = false +port = 8546 +interface = "all" +origins = ["all"] + +[account] +password = ["kitabu.pwd"] + +[mining] +#CHANGE ENGINE SIGNER TO VALIDATOR ADDRESS +engine_signer = "0x4081020ac03e06391b6045ad14553e75edec9e67" +reseal_on_txs = "none" +force_sealing = true +min_gas_price = 1 +gas_floor_target = "1" + +[footprint] +tracing = "on" +pruning = "archive" +pruning_history = 256 +cache_size_db = 2000 + +[misc] +log_file = "kitabu.log" diff --git a/var/kitabu/kitabu.json b/var/kitabu/kitabu.json new file mode 100644 index 0000000..d6a23f8 --- /dev/null +++ b/var/kitabu/kitabu.json @@ -0,0 +1,934 @@ +{ + "name": "Kitabu Sarafu", + "dataDir": "kitabu_sarafu", + "engine": { + "clique": { + "params": { + "period": 2, + "epoch": 30000, + "validators": [ + "0x4081020ac03e06391b6045ad14553e75edec9e67" + ] + } + } + }, + "params": { + "accountStartNonce": "0x0", + "chainID": "0x1a0a", + "eip140Transition": "0x0", + "eip145Transition": "0x0", + "eip150Transition": "0x0", + "eip155Transition": "0x0", + "eip160Transition": "0x0", + "eip161abcTransition": "0x0", + "eip161dTransition": "0x0", + "eip211Transition": "0x0", + "eip214Transition": "0x0", + "eip658Transition": "0x0", + "eip1014Transition": "0x0", + "eip1052Transition": "0x0", + "eip1283Transition": "0x0", + "eip1283DisableTransition": "0x0", + "eip1283ReenableTransition": "0x0", + "eip1344Transition": "0x0", + "eip1706Transition": "0x0", + "eip1884Transition": "0x0", + "eip2028Transition": "0x0", + "eip1559Transition": "0x1", + "eip1559BaseFeeMaxChangeDenominator": "0x8", + "eip1559ElasticityMultiplier": "0x2", + "gasLimitBoundDivisor": "0x400", + "maxCodeSize": "0x6000", + "maxCodeSizeTransition": "0x0", + "maximumExtraDataSize": "0xffff", + "minGasLimit": "0x1", + "networkID": "0x1a0a" + }, + "genesis": { + "author": "0x0000000000000000000000000000000000000000", + "difficulty": "0x1", + "extraData": "0x536172616675204b61726962752053616e6100000000000000000000000000005C5aB0D602EEF41f82B6fc087A24e61383589C398c6f7b75d90c3b32bdc9b4fcfbb4ad43c853446a2c0c9d3a9590a3349c8e45ce50446bd276cbb99c1f38132cd7e520d6be0ccba78acc59ab50a82f711ff7cb9d00", + "gasLimit": "0xb00000", + "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "seal": { + "ethereum": { + "nonce": "0x0000000000000000", + "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + }, + "timestamp": "0x5c51a607" + }, + "accounts": { + "0x0000000000000000000000000000000000000000": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000001": { + "balance": "0x1", + "builtin": { + "name": "ecrecover", + "pricing": { + "linear": { + "base": 3000, + "word": 0 + } + } + } + }, + "0x0000000000000000000000000000000000000002": { + "balance": "0x1", + "builtin": { + "name": "sha256", + "pricing": { + "linear": { + "base": 60, + "word": 12 + } + } + } + }, + "0x0000000000000000000000000000000000000003": { + "balance": "0x1", + "builtin": { + "name": "ripemd160", + "pricing": { + "linear": { + "base": 600, + "word": 120 + } + } + } + }, + "0x0000000000000000000000000000000000000004": { + "balance": "0x1", + "builtin": { + "name": "identity", + "pricing": { + "linear": { + "base": 15, + "word": 3 + } + } + } + }, + "0x0000000000000000000000000000000000000005": { + "balance": "0x1", + "builtin": { + "name": "modexp", + "pricing": { + "0x0": { + "info": "EIP-198: Big integer modular exponentiation. Byzantium hardfork", + "price": { + "modexp": { + "divisor": 20 + } + } + }, + "0x441064": { + "info": "EIP-2565: ModExp Gas Cost. Berlin hardfork (4_460_644)", + "price": { + "modexp2565": {} + } + } + } + } + }, + "0x0000000000000000000000000000000000000006": { + "balance": "0x1", + "builtin": { + "name": "alt_bn128_add", + "pricing": { + "0": { + "price": { "alt_bn128_const_operations": { "price": 500 } } + }, + "0x17d433": { + "info": "EIP 1108 transition at block 1_561_651 (0x17d433)", + "price": { "alt_bn128_const_operations": { "price": 150 } } + } + } + } + }, + "0x0000000000000000000000000000000000000007": { + "balance": "0x1", + "builtin": { + "name": "alt_bn128_mul", + "pricing": { + "0": { + "price": { "alt_bn128_const_operations": { "price": 40000 } } + }, + "0x17d433": { + "info": "EIP 1108 transition at block 1_561_651 (0x17d433)", + "price": { "alt_bn128_const_operations": { "price": 6000 } } + } + } + } + }, + "0x0000000000000000000000000000000000000008": { + "balance": "0x1", + "builtin": { + "name": "alt_bn128_pairing", + "pricing": { + "0": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 } } + }, + "0x17d433": { + "info": "EIP 1108 transition at block 1_561_651 (0x17d433)", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 } } + } + } + } + }, + "0x0000000000000000000000000000000000000009": { + "balance": "0x1", + "builtin": { + "name": "blake2_f", + "activate_at": "0x17d433", + "pricing": { + "blake2_f": { + "gas_per_round": 1 + } + } + } + }, + "0x000000000000000000000000000000000000000a": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000000b": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000000c": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000000d": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000000e": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000000f": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000010": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000011": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000012": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000013": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000014": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000015": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000016": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000017": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000018": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000019": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000001a": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000001b": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000001c": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000001d": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000001e": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000001f": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000020": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000021": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000022": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000023": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000024": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000025": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000026": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000027": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000028": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000029": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000002a": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000002b": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000002c": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000002d": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000002e": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000002f": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000030": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000031": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000032": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000033": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000034": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000035": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000036": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000037": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000038": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000039": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000003a": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000003b": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000003c": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000003d": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000003e": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000003f": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000040": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000041": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000042": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000043": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000044": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000045": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000046": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000047": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000048": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000049": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000004a": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000004b": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000004c": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000004d": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000004e": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000004f": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000050": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000051": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000052": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000053": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000054": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000055": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000056": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000057": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000058": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000059": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000005a": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000005b": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000005c": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000005d": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000005e": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000005f": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000060": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000061": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000062": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000063": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000064": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000065": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000066": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000067": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000068": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000069": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000006a": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000006b": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000006c": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000006d": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000006e": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000006f": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000070": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000071": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000072": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000073": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000074": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000075": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000076": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000077": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000078": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000079": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000007a": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000007b": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000007c": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000007d": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000007e": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000007f": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000080": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000081": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000082": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000083": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000084": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000085": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000086": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000087": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000088": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000089": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000008a": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000008b": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000008c": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000008d": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000008e": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000008f": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000090": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000091": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000092": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000093": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000094": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000095": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000096": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000097": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000098": { + "balance": "0x1" + }, + "0x0000000000000000000000000000000000000099": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000009a": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000009b": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000009c": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000009d": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000009e": { + "balance": "0x1" + }, + "0x000000000000000000000000000000000000009f": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000a0": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000a1": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000a2": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000a3": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000a4": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000a5": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000a6": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000a7": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000a8": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000a9": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000aa": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000ab": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000ac": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000ad": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000ae": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000af": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000b0": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000b1": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000b2": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000b3": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000b4": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000b5": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000b6": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000b7": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000b8": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000b9": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000ba": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000bb": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000bc": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000bd": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000be": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000bf": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000c0": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000c1": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000c2": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000c3": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000c4": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000c5": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000c6": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000c7": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000c8": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000c9": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000ca": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000cb": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000cc": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000cd": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000ce": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000cf": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000d0": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000d1": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000d2": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000d3": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000d4": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000d5": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000d6": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000d7": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000d8": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000d9": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000da": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000db": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000dc": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000dd": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000de": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000df": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000e0": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000e1": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000e2": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000e3": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000e4": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000e5": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000e6": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000e7": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000e8": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000e9": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000ea": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000eb": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000ec": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000ed": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000ee": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000ef": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000f0": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000f1": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000f2": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000f3": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000f4": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000f5": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000f6": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000f7": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000f8": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000f9": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000fa": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000fb": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000fc": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000fd": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000fe": { + "balance": "0x1" + }, + "0x00000000000000000000000000000000000000ff": { + "balance": "0x1" + }, + "0x4081020ac03e06391b6045ad14553e75edec9e67": { + "balance": "0x152d02c7e14af6800000" + } + } +}