当前位置: 首页 > news >正文

BSC系统合约详解 - 若

什么是系统合约?
系统合约是BSC链上预部署的智能合约,它们在创世区块就已经存在,具有固定的地址和特定的功能。BSC的系统合约分为两大类:
  1. 预编译合约(Precompiled Contracts):直接编译在客户端中的原生函数
  1. 智能合约(Smart Contracts):部署在链上的合约代码
系统合约的路径和位置
在BSC源码中,系统合约的定义和实现分布在以下路径:
  1. 预编译合约
  • 核心实现:core/vm/contracts.go
  • 轻客户端相关:core/vm/contracts_lightclient.go
  • 测试文件:core/vm/contracts_test.go
  • 参数配置:params/protocol_params.go
  1. 智能合约
  • 合约地址定义:core/systemcontracts/const.go
  • 合约升级逻辑:core/systemcontracts/upgrade.go
  • 合约实现:core/systemcontracts/目录下的各个子目录
  • 创世配置:core/genesis.go中的DefaultBSCGenesisBlock函数
BSC系统合约分类
一、预编译合约(地址0x01-0x69)
  1. 标准以太坊预编译合约(0x01-0x0a)
  • 0x01 - ECRecover: 椭圆曲线签名恢复
  • 0x02 - SHA256: SHA256哈希计算
  • 0x03 - RIPEMD160: RIPEMD160哈希计算
  • 0x04 - Identity: 数据复制
  • 0x05 - BigModExp: 大数模幂运算
  • 0x06 - BN256Add: 椭圆曲线点加法
  • 0x07 - BN256ScalarMul: 椭圆曲线标量乘法
  • 0x08 - BN256Pairing: 椭圆曲线配对运算
  • 0x09 - Blake2F: Blake2b哈希函数
  • 0x0a - KZGPointEvaluation: EIP-4844点评估
  1. BLS12-381曲线运算(0x0b-0x11,Prague版本)
  • 0x0b - BLS12381G1Add: G1群点加法
  • 0x0c - BLS12381G1MultiExp: G1群多点指数运算
  • 0x0d - BLS12381G2Add: G2群点加法
  • 0x0e - BLS12381G2MultiExp: G2群多点指数运算
  • 0x0f - BLS12381Pairing: BLS12-381配对运算
  • 0x10 - BLS12381MapG1: 域元素到G1的映射
  • 0x11 - BLS12381MapG2: 域元素到G2的映射
  1. BSC特有预编译合约(0x64-0x69)
  • 0x64 - TendermintHeaderValidate: Tendermint共识状态验证
  • 0x65 - IAVLMerkleProofValidate: IAVL默克尔证明验证
  • 0x66 - BLSSignatureVerify: BLS签名验证
  • 0x67 - CometBFTLightBlockValidate: CometBFT轻客户端验证
  • 0x68 - VerifyDoubleSignEvidence: 双重签名证据验证
  • 0x69 - Secp256k1SignatureRecover: Secp256k1签名恢复
  1. 其他预编译合约
  • 0x0100 - P256Verify: Secp256r1签名验证
二、智能合约(地址0x1000-0x3000)
  1. 验证者相关合约
  • ValidatorContract (0x1000): 验证者管理合约
  • SlashContract (0x1001): 惩罚合约
  1. 跨链桥相关合约
  • TokenHubContract (0x1004): 代币跨链桥合约
  • RelayerHubContract (0x1006): 中继者管理合约
  • RelayerIncentivizeContract (0x1005): 中继者激励合约
  • CrossChainContract (0x2000): 跨链通信合约
  1. 治理相关合约
  • GovHubContract (0x1007): 治理中心合约
  • GovernorContract (0x2004): 治理者合约
  • GovTokenContract (0x2005): 治理代币合约
  • TimelockContract (0x2006): 时间锁合约
  1. 质押相关合约
  • StakingContract (0x2001): 质押合约
  • StakeHubContract (0x2002): 质押中心合约
  • StakeCreditContract (0x2003): 质押信用合约
  1. 系统功能合约
  • SystemRewardContract (0x1002): 系统奖励合约
  • LightClientContract (0x1003): 轻客户端合约
  • TokenManagerContract (0x1008): 代币管理合约
  • TokenRecoverPortalContract (0x3000): 代币恢复门户合约
系统合约的调用方式
一、预编译合约调用
  1. 直接调用
     
    // 调用BLS签名验证
    const result = await provider.call({
        to: "0x0000000000000000000000000000000000000066",
        data: encodedBLSData
    });
  1. 通过合约接口调用
     
     
二、智能合约调用
  1. 标准合约调用
     
  1. 跨链调用
     
系统合约的版本演进
预编译合约版本演进:
  • Istanbul: 引入0x64, 0x65(Tendermint验证)
  • Luban: 引入0x66(BLS签名验证)
  • Plato: 引入0x67(CometBFT验证)
  • Feynman: 引入0x68, 0x69(安全验证)
  • Cancun: 引入0x0a(KZG点评估)
  • Haber: 引入0x0100(P256验证)
  • Prague: 引入完整的BLS12-381曲线支持
智能合约版本演进:
  • Bohr版本:优化验证者管理
  • Pascal版本:全面升级所有系统合约
  • 后续版本:持续优化和功能增强
系统合约的权限管理
  1. 预编译合约权限
  • 大部分预编译合约无权限限制
  • 某些验证功能需要特定格式的输入
  1. 智能合约权限
  • 验证者权限:质押和奖励相关功能
  • 治理权限:提案和投票功能
  • 中继者权限:跨链消息处理
  • 系统权限:紧急操作和升级
系统合约的安全考虑
  1. 预编译合约安全
  • 输入验证:严格验证输入格式和长度
  • 错误处理:失败时返回revert
  • Gas限制:防止DoS攻击
  1. 智能合约安全
  • 权限控制:多重签名和权限验证
  • 审计机制:定期安全审计
  • 紧急机制:紧急暂停和快速响应
系统合约的应用场景
  1. 预编译合约应用
  • 跨链验证:Tendermint头部验证、IAVL证明验证
  • 签名验证:BLS聚合签名、Secp256k1签名恢复
  • 密码学运算:椭圆曲线运算、哈希计算
  1. 智能合约应用
  • 验证者管理:注册、退出、轮换
  • 跨链桥:代币跨链、消息传递
  • 治理:提案、投票、参数调整
  • 质押经济:用户质押、收益分配
总结
BSC系统合约体系包括预编译合约和智能合约两大类,共同构成了BSC生态系统的核心基础设施。预编译合约提供高性能的原生功能,智能合约提供复杂的业务逻辑。这种设计既保证了性能,又提供了灵活性,为BSC的稳定运行和持续发展提供了重要保障。
系统合约的设计体现了BSC作为以太坊兼容链的特点,既保持了与以太坊的兼容性,又针对BSC的特定需求进行了优化和扩展,特别是在跨链验证、共识机制和安全保障方面。
http://www.wuyegushi.com/news/991.html

相关文章:

  • 机器学习,深度学习,神经网络三者的联系和区别
  • 软考系统分析师每日学习卡 | [日期:2025-07-21] | [今日主题:成本效益分析]
  • B2007 A + B 问题
  • 虚拟内存(交换分区)
  • 【langchain】检索
  • win11无法自动休眠
  • RocketMq集群docker部署(2主2从+Dashboard)
  • 带团队后的日常思考(十七)
  • k8s里的taints 和 tolerations
  • 【 IEEE出版】第五届先进算法与神经网络国际学术会议(AANN 2025)
  • 统信 UOS 安装 svn 指南
  • 【IEEE出版】2025年能源技术与电气工程国际学术会议(ETEE 2025)
  • 近期理工类学术会议推荐|电气工程、制造系统、航天技术、人工智能、 数字经济、现金算法等EI会议合集
  • CAXA电子图板2025下载安装详细步骤快速开启电子设计
  • 【权威指南】外发文件加密传输怎么做?3分钟搞定传输安全难题
  • 斜率优化dp
  • 跨平台自动化框架的OCR点击操作实现详解与思考
  • 题解:UVA12172 Matchsticks
  • Linux文件管理mv命令 – 移动或改名文件
  • 配置Annaconda
  • 面向文本处理工具的用户权限隔离体系构建
  • E. Air Conditioners
  • 【圆方树】学习笔记
  • 百度地图插件在浏览器不显示
  • java 启动参数优化
  • 超声波数值模拟与声场传播的MATLAB实现
  • 直播回放:纷享销客专家揭秘化工企业如何借力CRM实现精益增长?
  • Java “ClassCastException”解决
  • 在Java中如何将基本数据类型转换为String
  • etcd备份(docker部署)