Giter VIP home page Giter VIP logo

bsc-genesis-contract's Introduction

bsc-genesis-contracts

This repo hold all the genesis contracts on Binance 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/[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.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=${archive_node}

You can get a free archive node endpoint from https://nodereal.io/.

Run forge test:

forge test

Flatten all system contracts

npm run flatten

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 generate-validatorset.js file to change fromChainId and toChainId,
  4. Edit generate-tokenhub.js file to change refundRelayReward, minimumRelayFee and maxGasForCallingBEP20.
  5. Edit generate-tendermintlightclient.js file to change chainID and initConsensusStateBytes.
  6. run node generate-genesis.js will generate genesis.json

How to generate mainnet/testnet/QA genesis file

npm run generate-mainnet
npm run generate-testnet
npm run generate-QA

Check the genesis.json file and you can get the exact compiled bytecode for different network.

How to update contract interface for test

// 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}.sol

License

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

bsc-genesis-contract's People

Contributors

unclezoro avatar pythonberg1997 avatar yutianwu avatar cosinlink avatar rumeelhussainbnb avatar dependabot[bot] avatar realuncle avatar cleanunicorn avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.