This repo hold all the genesis contracts on Binance Smart chain. More details in doc-site.
Install node.js dependency:
npm installInstall foundry:
curl -L https://foundry.paradigm.xyz | bash
foundryup
forge install --no-git --no-commit foundry-rs/[email protected]Please make sure your dependency version is as follows:
Node: v12.18.3
Truffle: v5.1.31
Solc: 0.6.4+commit.1dca32f3
Tips: You can manage multi version of Solc and Node:
## Install solc-select and solc
pip3 install solc-select
solc-select install 0.6.4 && solc-select use 0.6.4
## Install nvm and node
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
nvm install 12.18.3 && nvm use 12.18.3Add follow line to .env file in project dir, replace archive_node with a valid bsc mainnet node url which should be in archive mode:
RPC_BSC=${archive_node}
You can get a free archive node endpoint from https://nodereal.io/.
Run forge test:
forge testnpm run flattenAll system contracts will be flattened and output into ${workspace}/contracts/flattened/.
- Edit
init_holders.jsfile to alloc the initial BNB holder. - Edit
validators.jsfile to alloc the initial validator set. - Edit
generate-validatorset.jsfile to changefromChainIdandtoChainId, - Edit
generate-tokenhub.jsfile to changerefundRelayReward,minimumRelayFeeandmaxGasForCallingBEP20. - Edit
generate-tendermintlightclient.jsfile to changechainIDandinitConsensusStateBytes. - run
node generate-genesis.jswill generate genesis.json
npm run generate-mainnet
npm run generate-testnet
npm run generate-QACheck the genesis.json file and you can get the exact compiled bytecode for different network.
// get metadata
forge build
// generate interface
cast interface ${workspace}/out/{contract_name}.sol/${contract_name}.json -p ^0.8.10 -n ${contract_name} > ${workspace}/lib/interface/I${contract_name}.solThe library is licensed under the Apache License, Version 2.0, also included in our repository in the LICENSE file.