
Polkadot 在 2.0 里面引入了新的 PolkaVM 来支持智能合约的运行,并且使用Revive Pallet 兼容 EVM。通过 Resolc 的编译,solidity 代码可以在 PolkaVM 上更加高效的运行。
在一般的 EVM 执行环境下,precompile 都是一个不可缺少的部分,能够提供一些通用的功能,例如 ecrecover 方法。比如在 Moonbeam中,precompile 的合约可以参考这个文档:Canonical Contract Addresses on Moonbeam(🔗: https://docs.moonbeam.network/builders/ethereum/canonical-contracts/#ethereum-mainnet-precompiles)。Revive Pallet 同样提供了一些 precompile 的合约给开发者使用。
01
代码分析
我们在 polkadot sdk 的代码库中,打开 precompiles(🔗: https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/revive/src/pure_precompiles) 这个目录中,我们可以看的一些 precompile 合约的源代码。以 sha256 作为参考,它的代码实现非常简单,需要实现 Precompile 这个 trait。二个参数分别是对使用过的 gas 存贮的对象和一个 u8 类型的数组。它只需要通过调用 sp_io 里面的函数,然后返回就可以了。

最低0.47元/天 解锁文章
1161

被折叠的 条评论
为什么被折叠?



