预编译合约是把一些在 EVM 中执行较慢、消耗较多 GAS、实现困难的计算(大部分是密码学相关)放在 EVM 外部执行,然后再将计算结果传回 EVM 中。
EVM 指令执行慢、花费多的一个因素是它内部的字宽是 256 位的,而不是典型的 64 位,在一些算术指令运行不及 64位机器上来的快。
而预编译合约是计算密集型函数,这些函数已经有了高度优化的底层实现,甚至可能使用现代 CPU 的高级功能,例如矢量指令(一次执行许多计算),而这完全无法与 EVM 的指令集一起使用。
目前定义了 9 中预编译合约, 合约地址对应为 0x01-0x08 和 0x0d:
- Recovery of ECDSA signature