CALL 或 STATICCALL 像任何其他合约一样调用。
Monad 支持截至 Fusaka 分叉的所有以太坊预编译(0x01 到 0x11),
以及三个额外的预编译:
以太坊预编译
加密和哈希
算术和实用
椭圆曲线 alt_bn128
KZG 承诺
BLS12-381
这些预编译根据 EIP-2537 提供对 BLS12-381 曲线的操作。P256 签名验证
地址0x0100 根据 EIP-7951 验证 secp256r1(P256)椭圆曲线上的签名。
EIP-7951 取代了 RIP-7212。
如果您正在从使用
0x100 处的 RIP-7212 的链迁移,请注意地址和接口是相同的 —— 只是 EIP 名称发生了变化。输入和输出
预编译接受恰好 160 字节:
所有值都以大端序编码为 256 位无符号整数。
返回:
- 签名有效时返回
0x0000...0001(32 字节) - 签名无效或输入格式错误时返回空字节
Solidity 示例
质押预编译
地址0x1000 提供验证者委托、取消委托、领取奖励和质押查询的接口。Gas 成本因函数而异。
储备余额预编译
地址0x1001 公开了一个方法 dippedIntoReserve()(选择器 0x3a61584e,gas 成本 100),
该方法返回一个 bool,指示当前执行状态是否处于储备余额违规状态。
它在 MIP-4 中规定。
dippedIntoReserve() 必须通过 CALL 调用。通过 STATICCALL(或通过 DELEGATECALL 或 CALLCODE)调用它会回滚。
虽然它读取状态并返回值,但它有意不是 view 函数,以便 Solidity 调用点编译为 CALL 而不是 STATICCALL。
Gas 定价差异
一些预编译(0x01、0x06、0x07、0x08、0x09、0x0a)相对于以太坊被重新定价,
以反映其在 Monad 执行环境中的相对成本。上表中的 gas 值反映了 Monad 的定价。
参见 Opcode 定价 以进行对比。

