terraform-polygon-supernets
terraform-polygon-supernets copied to clipboard
This deployment script should prioritize deploying to mumbai rather than geth.
This deployment script should prioritize deploying to mumbai rather than geth.
Description
This repo is definitely a time saver, we should however prioritize a real use case rather than a sandbox environment.
We are aiming towards an actual deployment on mumbai testnet and polygon mainnet of the v1.0.0 of the polygon-edge client.
I was able to do more than half of the the required changes, but certain use cases may require more than that and I need to figure it out step by step, instead it would be awesome to simply tweak some settings and have it running.
For instance, the --test
flag deploys contracts that would ideally already exist or would be manually deployed to mumbai.
I would also suggest that the docs themselves talk more about the steps to take and everything we should have in mind to get this deployment working OOB on a testnet without deploying the geth server.
Code samples
I'll leave this bootstrap script here for some insights on the changes done:
#!/bin/bash -x
main() {
if [[ -d "/var/lib/bootstrap" ]]; then
echo "It appears this network has already been boot strapped"
exit
fi
mkdir /var/lib/bootstrap
pushd /var/lib/bootstrap
{% for item in hostvars %}
{% if (hostvars[item].tags.Role == "fullnode" or hostvars[item].tags.Role == "validator") %}
polygon-edge polybft-secrets --data-dir {{ hostvars[item].tags["Name"] }} \
--json \
--insecure > {{ hostvars[item].tags["Name"] }}.json
{% endif %}
{% endfor %}
polygon-edge genesis \
--consensus polybft \
{% for item in hostvars %}{% if (hostvars[item].tags.Role == "fullnode" or hostvars[item].tags.Role == "validator") %} --bootnode /dns4/{{ hostvars[item].tags["Name"] }}/tcp/{{ edge_p2p_port }}/p2p/$(cat {{ hostvars[item].tags["Name"] }}.json | jq -r '.[0].node_id') {% endif %}{% endfor %} \
{% for item in hostvars %}{% if (hostvars[item].tags.Role == "fullnode" or hostvars[item].tags.Role == "validator") %} --premine $(cat {{ hostvars[item].tags["Name"] }}.json | jq -r '.[0].address'):1000000000000000000000000 {% endif %}{% endfor %} \
{% for item in hostvars %}
{% if (hostvars[item].tags.Hostname == "validator-001") %}
--reward-wallet $(cat {{ hostvars[item].tags["Name"] }}.json | jq -r '.[0].address'):1000000000000000000000000000 \
{% endif %}
{% endfor %}
--premine {{ loadtest_account }}:1000000000000000000000000000 \
--premine {{ bridge_account }}:1000000000000000000000000000 \
--block-gas-limit {{ block_gas_limit }} --block-time {{ block_time }}s \
{% for item in hostvars %}{% if (hostvars[item].tags.Role == "validator") %} --validators /dns4/{{ hostvars[item].tags["Name"] }}/tcp/{{ edge_p2p_port }}/p2p/$(cat {{ hostvars[item].tags["Name"] }}.json | jq -r '.[0].node_id'):$(cat {{ hostvars[item].tags["Name"] }}.json | jq -r '.[0].address' | sed 's/^0x//'):$(cat {{ hostvars[item].tags["Name"] }}.json | jq -r '.[0].bls_pubkey') {% endif %}{% endfor %} \
--epoch-size 10 \
--transactions-allow-list-admin {{ loadtest_account }},$(cat validator-*.json | jq -r ".[].address" | tr "\n" ",") \
--transactions-allow-list-enabled {{ loadtest_account }},{{ bridge_account }},$(cat validator-*.json | jq -r ".[].address" | tr "\n" ",") \
--contract-deployer-allow-list-admin {{ loadtest_account }},$(cat validator-*.json | jq -r ".[].address" | tr "\n" ",") \
--contract-deployer-allow-list-enabled {{ loadtest_account }},{{ bridge_account }},$(cat validator-*.json | jq -r ".[].address" | tr "\n" ",") \
--native-token-config "My Token:MTK:8:true" \
--chain-id 2007
{% for item in hostvars %}
{% if (hostvars[item].tags.Role == "validator") %}
cast send --rpc-url {{ rootchain_json_rpc }} --from {{ loadtest_account }} --private-key {{ deployer_key }} --value 0.02ether $(cat {{ hostvars[item].tags["Name"] }}.json | jq -r '.[0].address')
{% endif %}
{% endfor %}
polygon-edge polybft stake-manager-deploy \
--jsonrpc {{ rootchain_json_rpc }} \
--private-key {{ deployer_key }} \
--genesis ./genesis.json \
--stake-token 0x0e698696674eabb217457ecebce36c2a8777f531
polygon-edge rootchain deploy \
--deployer-key {{ deployer_key }} \
--json-rpc {{ rootchain_json_rpc }} \
--genesis ./genesis.json \
--stake-manager $(cat genesis.json | jq -r '.params.engine.polybft.bridge.stakeManagerAddr') \
--stake-token $(cat genesis.json | jq -r '.params.engine.polybft.bridge.stakeTokenAddr')
polygon-edge polybft whitelist-validators \
--private-key {{ deployer_key }} \
--addresses $(cat validator-*.json | jq -r ".[].address" | tr "\n" ",") \
--supernet-manager $(cat genesis.json | jq -r '.params.engine.polybft.bridge.customSupernetManagerAddr') \
--json-rpc {{ rootchain_json_rpc }}
{% for item in hostvars %}
{% if (hostvars[item].tags.Role == "validator") %}
polygon-edge polybft register-validator --data-dir {{ hostvars[item].tags["Name"] }} \
--supernet-manager $(cat genesis.json | jq -r '.params.engine.polybft.bridge.customSupernetManagerAddr') \
--json-rpc {{ rootchain_json_rpc }}
{% endif %}
{% endfor %}
{% for item in hostvars %}
{% if (hostvars[item].tags.Role == "validator") %}
polygon-edge polybft stake --data-dir {{ hostvars[item].tags["Name"] }} \
--chain-id $(cat genesis.json | jq -r '.params.engine.polybft.bridge.supernetID') \
--amount 10 \
--stake-manager $(cat genesis.json | jq -r '.params.engine.polybft.bridge.stakeManagerAddr') \
--stake-token $(cat genesis.json | jq -r '.params.engine.polybft.bridge.stakeTokenAddr') \
--jsonrpc {{ rootchain_json_rpc }}
{% endif %}
{% endfor %}
polygon-edge polybft supernet --private-key {{ deployer_key }} \
--supernet-manager $(cat genesis.json | jq -r '.params.engine.polybft.bridge.customSupernetManagerAddr') \
--stake-manager $(cat genesis.json | jq -r '.params.engine.polybft.bridge.stakeManagerAddr') \
--finalize-genesis-set --enable-staking \
--jsonrpc {{ rootchain_json_rpc }}
tar czf {{ base_dn }}.tar.gz *.json *.private genesis.json
popd
}
main