什么是 Injective 上的 Precompiles?
在 Injective 上,precompiles 是直接嵌入我们 EVM(Ethereum Virtual Machine)层协议级别的特殊、高度优化的智能合约。与用户部署的标准 Solidity 智能合约不同,precompiles 是链核心逻辑的一部分。它们用 Go 而不是 Solidity 编写,并以固定地址暴露给 EVM,使它们可以像任何其他智能合约一样从你的 Solidity 智能合约中调用。 可以将它们视为 Injective 链的原生功能,被赋予了 Ethereum 风格的接口。为什么它们是必要的?(桥接 EVM 和原生模块)
Injective EVM 不是孤立运行的。它与 Injective 强大的原生 Cosmos SDK 模块深度集成,如 Bank 模块(用于 token 管理)、Exchange 模块(用于链上订单簿)、Staking 模块等。 Precompiles 作为 EVM 世界(你的 Solidity 合约所在的地方)和这些原生 Injective 功能之间的关键桥梁。没有 precompiles,你的 EVM 智能合约将被隔离,无法利用更广泛的 Injective 生态系统的丰富功能和流动性。 例如,我们的 MultiVM Token Standard (MTS) 模型,确保原生和 EVM 环境之间统一的 token 余额,严重依赖于 Bank Precompile。对开发者的好处
- 访问原生功能: 直接与 Injective 的独特模块交互,如链上订单簿、原生 staking、governance 和用于 MTS 的 bank 模块。
- 增强的性能: 通过 precompiles 执行的操作可以比纯粹在 Solidity 中复制复杂原生逻辑更快、更节省 gas,因为它们作为优化的原生代码运行。
- 无缝互操作性: 构建真正集成的应用,利用 EVM 和 Injective 的 Cosmos 原生能力的优势。
- 简化开发: 通过熟悉的 Solidity 接口与复杂的原生功能交互,抽象掉大部分底层 Cosmos 复杂性。
- Bank.sol – precompile 接口
- BankERC20.sol – 由 Bank precompile 支持的抽象 ERC20 实现
- FixedSupplyBankERC20.sol – 固定供应量的去中心化 ERC20(无所有者,无铸造或销毁)
- MintBurnBankERC20.sol – 具有授权铸造和销毁 token 的所有者的 ERC20
入门演示
我们准备了一些演示,展示如何使用 Bank、Exchange 和 Staking precompiles 构建合约。这些示例还演示了如何使用最常见的 Ethereum 开发框架 Foundry 与 Injective EVM 交互。 通过利用 Foundry 的cast 工具,你可以轻松地直接从终端部署合约并与 Injective 链交互。这使构建者能够快速实验、测试和部署利用 Injective 原生模块的强大应用。
探索以下演示以了解:
- 如何编写调用 precompiles 进行 token 管理、交易和 staking 的 Solidity 合约。
- 如何使用 Foundry 脚本和
cast命令在 Injective EVM 上部署和与这些合约交互。 - 桥接 EVM 逻辑与 Injective 原生功能的最佳实践。
