零基础入门bsc-genesis-contract:从环境搭建到合约部署的完整教程
【免费下载链接】bsc-genesis-contractThe genesis contracts of BNB Smart Chain.项目地址: https://gitcode.com/gh_mirrors/bs/bsc-genesis-contract
bsc-genesis-contract是BNB Smart Chain的核心 genesis 合约项目,包含了构建BNB智能链初始网络所需的所有系统合约。本教程将帮助零基础用户快速掌握从环境搭建到合约部署的完整流程,让你轻松开启BNB智能链合约开发之旅。
📋 准备工作:环境搭建全攻略
安装Node.js依赖
首先需要安装项目所需的Node.js依赖包,这是运行和编译合约的基础。打开终端,执行以下命令:
npm install部署Foundry开发环境
Foundry是一个功能强大的以太坊开发工具链,用于编译、测试和部署智能合约。安装步骤如下:
curl -L https://foundry.paradigm.xyz | bash foundryup forge install --no-git foundry-rs/forge-std@v1.7.3配置Python环境
项目中部分脚本使用Python编写,需要通过Poetry管理Python依赖:
curl -sSL https://install.python-poetry.org | python3 - poetry installNode版本管理技巧
如果你需要管理多个Node版本,可以使用nvm(Node Version Manager):
## 安装nvm和node curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash nvm install 18.17.0 && nvm use 18.17.0🔍 项目结构解析
bsc-genesis-contract项目结构清晰,主要包含以下关键目录:
- contracts/:存放所有智能合约源代码,包括BSCGovernor.sol、BSCValidatorSet.sol等核心系统合约
- scripts/:包含各类辅助脚本,如生成genesis文件的generate-genesis.js
- abi/:存储合约ABI文件,如bscgovernor.abi、bsctimelock.abi等
- test/:单元测试目录,包含各类合约的测试用例
✅ 运行单元测试
为确保合约功能正常,建议在开发前运行单元测试。你需要一个归档节点端点(可从https://nodereal.io/获取免费端点),然后执行:
forge test --fork-url ${archive_node_rpc}📦 合约扁平化处理
为方便部署和验证,可将所有系统合约扁平化为单个文件:
bash scripts/flatten.sh执行后,所有扁平化合约将输出到contracts/flattened/目录下。
🚀 生成Genesis文件
Genesis文件是区块链网络的初始状态配置,生成步骤如下:
- 编辑
init_holders.js文件配置初始BNB持有者 - 编辑
validators.js文件设置初始验证节点集合 - 根据需要修改系统合约设置
- 运行生成脚本:
node scripts/generate-genesis.js针对不同网络生成Genesis文件
项目支持为不同网络环境生成Genesis文件:
# 生成主网Genesis文件并清理 npm run generate:mainnet && poetry run python -m scripts.generate recover # 生成测试网Genesis文件并清理 npm run generate:testnet && poetry run python -m scripts.generate recover # 生成本地开发网Genesis文件并清理 npm run generate:dev && poetry run python -m scripts.generate recover生成的genesis.json文件包含了不同网络的精确编译字节码。你可以通过以下命令验证合约字节码(以StakeHub.sol为例):
solc-select use 0.8.17 solc --optimize --optimize-runs 200 --abi --metadata-hash none --bin-runtime ./contracts/StakeHub.sol --base-path . --include-path ./node_modules/ -o output🔄 更新ABI文件
当合约接口发生变化时,需要更新ABI文件:
forge inspect {{contract}} abi > abi/{{contract}}.abi📝 更新测试用的合约接口
为确保测试代码与合约同步,可按以下步骤更新测试用的合约接口:
// 获取元数据 forge build // 生成接口 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解锁机器人使用
项目提供了BEP-171解锁机器人脚本,使用方法如下:
npm install ts-node -g cp .env.example .env # 在.env文件中设置UNLOCK_RECEIVER和OPERATOR_PRIVATE_KEY ts-node scripts/bep171-unlock-bot.ts📄 许可证信息
本项目采用Apache License, Version 2.0许可证,详细信息可查看项目根目录下的LICENSE文件。
通过本教程,你已经掌握了bsc-genesis-contract项目的基本使用方法。如需深入了解更多细节,可以参考官方文档或查看项目源代码进行学习。祝你在BNB智能链开发之路上取得成功!
【免费下载链接】bsc-genesis-contractThe genesis contracts of BNB Smart Chain.项目地址: https://gitcode.com/gh_mirrors/bs/bsc-genesis-contract
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考