1) Generate private keys for the following using MetaMask or MyEtherWallet. Save as json keystore file + password. Note the json location, wallet address, and password for each account.
DEPLOYMENT_ACCOUNT
FOREIGN_BRIDGE_OWNER
FOREIGN_VALIDATORS_OWNER
FOREIGN_UPGRADEABLE_ADMIN
HOME_BRIDGE_OWNER
HOME_VALIDATORS_OWNER
HOME_UPGRADEABLE_ADMIN
VALIDATOR
This data can not be recovered through an account after creation, so be sure to store accurately and safely.
You will need tokens for deployment on both sides of the bridge. This means the DEPLOYMENT_ACCOUNT and VALIDATOR accounts will require tokens. The DEPLOYMENT_ACCOUNT will deploy bridge contracts and initialize the bridge, and VALIDATOR accounts use tokens to pay for txs with bridge operations.
Replace all variables templated with tags (<>) with actual values. Learn more about variables here ​
BRIDGE_MODE=ARBITRARY_MESSAGE# The private key without 0x part.DEPLOYMENT_ACCOUNT_PRIVATE_KEY=<DEPLOYMENT_ACCOUNT_PRIVATE_KEY>DEPLOYMENT_GAS_LIMIT_EXTRAA=0.2HOME_DEPLOYMENT_GAS_PRICE=5000000000FOREIGN_DEPLOYMENT_GAS_PRICE=5000000000GET_RECEIPT_INTERVAL_IN_MILLISECONDS=3000​HOME_RPC_URL=https://<url.to.homenet>HOME_BRIDGE_OWNER=<HOME_BRIDGE_OWNER>HOME_VALIDATORS_OWNER=<HOME_VALIDATORS_OWNER>HOME_UPGRADEABLE_ADMIN=<HOME_UPGRADEABLE_ADMIN>​# The maximum value of gas for one call to be allowed for relaying.HOME_MAX_AMOUNT_PER_TX=2000000HOME_REQUIRED_BLOCK_CONFIRMATIONS=1HOME_GAS_PRICE=5000000000​FOREIGN_RPC_URL=https://<url.to.foreignnet>FOREIGN_BRIDGE_OWNER=<FOREIGN_BRIDGE_OWNER>FOREIGN_VALIDATORS_OWNER=<FOREIGN_VALIDATORS_OWNER>FOREIGN_UPGRADEABLE_ADMIN=<FOREIGN_UPGRADEABLE_ADMIN>​# The maximum value of estimated gas for one transaction in Wei.FOREIGN_MAX_AMOUNT_PER_TX=2000000FOREIGN_REQUIRED_BLOCK_CONFIRMATIONS=1FOREIGN_GAS_PRICE=10000000000​REQUIRED_NUMBER_OF_VALIDATORS=1# If several validators are used, list them separated by space without quotes# E.g. VALIDATORS=0x 0x 0xVALIDATORS=<address of validator>
Optional: If you plan to use Etherscan or BlockScout for exploring your chain, find information on the correct parameters to include in the .env file here: https://docs.tokenbridge.net/about-tokenbridge/features/contracts-verification-in-explorers​
Deployment of contracts with usage of the docker image is very straightforward:
docker run -it --env-file amb.config poanetwork/tokenbridge-contracts deploy.sh
After successful deployment the following information about the bridge contracts is displayed:
{"homeBridge": {"address": "0xaA19D8ECfB824951AF06fEb5aDeC2423e2eFa608","deployedBlockNumber": 12794100},"foreignBridge": {"address": "0x5FE5d72992b1c0F4C9a8628E82c960733D2cd85f","deployedBlockNumber": 16159665}}