Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bnb-chain/bsc-genesis-contract
The genesis contracts of BNB Smart Chain.
https://github.com/bnb-chain/bsc-genesis-contract
bnb bsc smart-contracts
Last synced: 3 months ago
JSON representation
The genesis contracts of BNB Smart Chain.
- Host: GitHub
- URL: https://github.com/bnb-chain/bsc-genesis-contract
- Owner: bnb-chain
- License: other
- Created: 2020-05-20T05:46:30.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-07-24T07:15:53.000Z (3 months ago)
- Last Synced: 2024-07-25T08:18:25.828Z (3 months ago)
- Topics: bnb, bsc, smart-contracts
- Language: Solidity
- Homepage:
- Size: 3.55 MB
- Stars: 639
- Watchers: 39
- Forks: 718
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
- best-of-crypto - GitHub - 21% open · ⏱️ 03.06.2024): (Exchange-based Tokens)
README
# bsc-genesis-contracts
This repo hold all the genesis contracts on BNB Smart chain. More details in [doc-site](https://docs.bnbchain.org/docs/learn/system-contract).
## Prepare
Install node.js dependency:
```shell script
npm install
```Install foundry:
```shell script
curl -L https://foundry.paradigm.xyz | bash
foundryup
forge install --no-git --no-commit foundry-rs/[email protected]
```Install poetry:
```shell script
curl -sSL https://install.python-poetry.org | python3 -
poetry install
```Tips: You can manage multi version of Node:
```Shell
## 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:
```text
RPC_BSC=${archive_node}
```You can get a free archive node endpoint from https://nodereal.io/.
Run forge test:
```shell script
forge test
```## Flatten all system contracts
```shell script
bash scripts/flatten.sh
```All system contracts will be flattened and output into `${workspace}/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
```shell
poetry run python -m scripts.generate ${network}
```
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
```shell script
// get metadata
forge build// generate interface
cast interface ${workspace}/out/{contract_name}.sol/${contract_name}.json -p ^0.8.0 -n ${contract_name} > ${workspace}/test/utils/interface/I${contract_name}.sol
```## BEP-171 unlock bot
```shell script
npm install ts-node -gcp .env.example .env
# set UNLOCK_RECEIVER, OPERATOR_PRIVATE_KEY to .envts-node scripts/bep171-unlock-bot.ts
```## License
The library is licensed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0),
also included in our repository in the [LICENSE](LICENSE) file.