Saved searches

Use saved searches to filter your results more quickly

Cancel Create saved search Sign up Reseting focus

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

The genesis contracts of BNB Smart Chain.

License

Notifications You must be signed in to change notification settings

bnb-chain/bsc-genesis-contract

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Go to file

Folders and files

Last commit message Last commit date

Latest commit

History

View all files

Repository files navigation

bsc-genesis-contracts

This repo hold all the genesis contracts on BNB Smart chain. More details in doc-site.

Prepare

Install node.js dependency:
npm install
Install foundry:
curl -L https://foundry.paradigm.xyz | bash foundryup forge install --no-git --no-commit foundry-rs/forge-std@v1.7.3
Install poetry:
curl -sSL https://install.python-poetry.org | python3 - poetry install
Tips: You can manage multi version of Node:
## 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.3

Unit test

Add 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=$
You can get a free archive node endpoint from https://nodereal.io/. Run forge test:
forge test

Flatten all system contracts

bash scripts/flatten.sh
All system contracts will be flattened and output into $/contracts/flattened/ .

How to generate genesis file

  1. Edit init_holders.js file to alloc the initial BNB holder.
  2. Edit validators.js file to alloc the initial validator set.
  3. Edit system contracts setting as needed.
  4. Run node scripts/generate-genesis.js will generate genesis.json

How to generate mainnet/testnet/dev genesis file

poetry run python -m scripts.generate $

Check the genesis.json file, and you can get the exact compiled bytecode for different network. ( poetry run python -m scripts.generate --help for more details)

You can refer to generate:dev in package.json for more details about how to custom params for local dev-net.

How to update contract interface for test

// get metadata forge build // generate interface cast interface $ /out/.sol/$ .json -p ^0.8.0 -n $ > $ /test/utils/interface/I$ .sol

BEP-171 unlock bot

npm install ts-node -g cp .env.example .env # set UNLOCK_RECEIVER, OPERATOR_PRIVATE_KEY to .env ts-node scripts/bep171-unlock-bot.ts

License

The library is licensed under the Apache License, Version 2.0, also included in our repository in the LICENSE file.