|
| 1 | +#!/bin/bash |
| 2 | + |
| 3 | +set -euo pipefail |
| 4 | + |
| 5 | +export FM_NETWORK=test |
| 6 | + |
| 7 | +# Clean up old network files |
| 8 | +rm -rf test-network |
| 9 | +mkdir test-network |
| 10 | + |
| 11 | +## Setup data directory and copy default app config |
| 12 | +rm -rf "$HOME/.fendermint" |
| 13 | +mkdir -p "$HOME/.fendermint/data" |
| 14 | +cp -r ./fendermint/app/config "$HOME/.fendermint/config" |
| 15 | + |
| 16 | +# Init CometBFT |
| 17 | +rm -rf "$HOME/.cometbft" |
| 18 | +cometbft init |
| 19 | + |
| 20 | +# Build actors |
| 21 | +if [[ -z ${SKIP_BUILD+x} || "$SKIP_BUILD" == "" || "$SKIP_BUILD" == "false" ]]; then |
| 22 | + (cd builtin-actors && make bundle-mainnet) |
| 23 | + mkdir -p fendermint/builtin-actors/output |
| 24 | + cp builtin-actors/output/builtin-actors-mainnet.car fendermint/builtin-actors/output/bundle.car |
| 25 | + # These need to be built for release |
| 26 | + cargo build --release -p fendermint_actors |
| 27 | +fi |
| 28 | +cp fendermint/builtin-actors/output/bundle.car "$HOME/.fendermint/bundle.car" |
| 29 | +cp fendermint/actors/output/custom_actors_bundle.car "$HOME/.fendermint/custom_actors_bundle.car" |
| 30 | + |
| 31 | +## Copy IPC contracts |
| 32 | +mkdir -p "$HOME/.fendermint/contracts" |
| 33 | +cp -r ./contracts/out/* "$HOME/.fendermint/contracts" |
| 34 | + |
| 35 | +# Create a new Genesis file |
| 36 | +fendermint genesis --genesis-file test-network/genesis.json new --chain-name test --base-fee 1000 --timestamp 1680101412 --power-scale 3 |
| 37 | + |
| 38 | +# Create some keys |
| 39 | +mkdir test-network/keys |
| 40 | +for NAME in bob charlie dave; do |
| 41 | + fendermint key gen --out-dir test-network/keys --name $NAME; |
| 42 | +done |
| 43 | + |
| 44 | +## Use fixed address for alice to make dev w/ ADM cli less painful |
| 45 | +## Private key hex: 1c323d494d1d069fe4c891350a1ec691c4216c17418a0cb3c7533b143bd2b812 |
| 46 | +echo "HDI9SU0dBp/kyJE1Ch7GkcQhbBdBigyzx1M7FDvSuBI=" | tr -d '\n' > test-network/keys/alice.sk |
| 47 | +echo "Ayh506Z/KRZnDgtarffTZQympqQ8A4hfwse1gK9t0NJi" | tr -d '\n' > test-network/keys/alice.pk |
| 48 | + |
| 49 | +# Add accounts to the Genesis file |
| 50 | +## A stand-alone account |
| 51 | +fendermint genesis --genesis-file test-network/genesis.json add-account --public-key test-network/keys/alice.pk --balance 1000 --kind ethereum |
| 52 | +## A multi-sig account |
| 53 | +fendermint genesis --genesis-file test-network/genesis.json add-multisig --public-key test-network/keys/bob.pk --public-key test-network/keys/charlie.pk --public-key test-network/keys/dave.pk --threshold 2 --vesting-start 0 --vesting-duration 1000000 --balance 30 |
| 54 | + |
| 55 | +# Add validators to the Genesis file |
| 56 | +fendermint genesis --genesis-file test-network/genesis.json add-validator --public-key test-network/keys/bob.pk --power 1 |
| 57 | + |
| 58 | +# Add ipc to the Genesis file |
| 59 | +fendermint genesis --genesis-file test-network/genesis.json ipc gateway --subnet-id /r31415926 --bottom-up-check-period 10 --msg-fee 1 --majority-percentage 65 |
| 60 | + |
| 61 | +# Seal Genesis file |
| 62 | +fendermint genesis --genesis-file test-network/genesis.json ipc seal-genesis --builtin-actors-path "$HOME/.fendermint/bundle.car" --custom-actors-path "$HOME/.fendermint/custom_actors_bundle.car" --artifacts-path "$HOME/.fendermint/contracts" --output-path test-network/sealed_genesis.car |
| 63 | + |
| 64 | +## Convert the Genesis file |
| 65 | +mv "$HOME/.cometbft/config/genesis.json" "$HOME/.cometbft/config/genesis.json.orig" |
| 66 | +fendermint genesis --genesis-file test-network/genesis.json into-tendermint --app-state test-network/sealed_genesis.car --out "$HOME/.cometbft/config/genesis.json" |
| 67 | +## Convert the private key |
| 68 | +mv "$HOME/.cometbft/config/priv_validator_key.json" "$HOME/.cometbft/config/priv_validator_key.json.orig" |
| 69 | +fendermint key into-tendermint --secret-key test-network/keys/bob.sk --out "$HOME/.cometbft/config/priv_validator_key.json" |
| 70 | + |
| 71 | +## Generate a network key for the IPLD resolver |
| 72 | +mkdir -p "$HOME/.fendermint/keys" |
| 73 | +fendermint key gen --out-dir "$HOME/.fendermint/keys" --name network |
| 74 | + |
| 75 | +## Copy validator keys |
| 76 | +cp test-network/keys/bob.pk "$HOME/.fendermint/keys/validator.pk" |
| 77 | +cp test-network/keys/bob.sk "$HOME/.fendermint/keys/validator.sk" |
0 commit comments