一文快速了解以太坊原生预编译合约

原文作者:PaperMoon团队

以太坊原生预编译合约(Ethereum-native precompiles)是在运行时层(runtime level)实现的特殊合约,用于提供关键的密码学能力与通用工具函数。这些预编译合约部署在预定义地址上,对一些在纯合约代码中实现成本极高或几乎不可行的操作,提供了高度优化的原生实现。

在 Polkadot Hub 的 Revive pallet 中,这些预编译合约保持了与以太坊标准地址的完全兼容性,使熟悉以太坊的开发者可以无缝迁移现有智能合约,同时享受 PVM 运行时带来的性能优化。

如何使用预编译合约

在智能合约中使用预编译合约的方式,与调用普通合约完全一致:
直接调用对应的预编译地址即可。

每个预编译合约都有一个固定地址(见下表),并且对输入数据格式有明确要求。调用后,预编译逻辑会在运行时原生执行,并将执行结果直接返回给合约。

例如,若要使用 ECRecover 预编译合约来验证签名,只需调用地址:

0x0000000000000000000000000000000000000001

并传入符合格式要求的签名数据即可。预编译合约会高效地完成复杂的密码学计算,并返回恢复得到的公钥。

你可以在 precompiles-hardhat 项目中找到每个预编译合约对应的示例合约。

Polkadot Hub 中支持的标准预编译合约

Revive 实现了以太坊标准定义的一整套预编译合约:

合约名称

地址(最后一个字节)

描述

ECRecover

0x01

从签名中恢复对应的公钥

Sha256

0x02

实现 SHA-256 哈希函数

Ripemd160

0x03

实现 RIPEMD-160 哈希函数

Identity

0x04

数据拷贝函数(输入即输出)

Modexp

0x05

模幂运算(Modular Exponentiation)

Bn128Add

0x06

alt_bn128 曲线上的加法

Bn128Mul

0x07

alt_bn128 曲线上的乘法

Bn128Pairing

0x08

alt_bn128 曲线上的配对检查

Blake2F

0x09

Blake2 哈希函数的压缩函数 F

以太坊原生预编译合约为 Polkadot Hub 上的智能合约开发提供了高性能、可靠的基础能力,涵盖了关键的密码学操作和通用工具函数。

通过保持与以太坊预编译合约地址和接口的完全一致性,Revive 让开发者能够继续使用熟悉的知识体系与开发工具,同时获得 运行时原生执行所带来的性能提升。

原文链接:https://docs.polkadot.com/smart-contracts/precompiles/eth-native/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值