프리컴파일 컨트랙트
ECRECOVER
// contract address: 0x0000000000000000000000000000000000000001
function ecrecover(bytes32 data, bytes32 v, bytes32 r, bytes32 s) returns (address);SHA256
// contract address: 0x0000000000000000000000000000000000000002
function sha256(bytes data) returns (bytes32);RIPEMD160
// contract address: 0x0000000000000000000000000000000000000003
function ripemd160(bytes data) returns (bytes32);Identity
// contract address: 0x0000000000000000000000000000000000000004
contract Identity{
bytes public memoryStored;
function callDatacopy(bytes memory data) public returns (bytes memory) {
bytes memory result = new bytes(data.length);
assembly {
let len := mload(data)
if iszero(call(gas(), 0x04, 0, add(data, 0x20), len, add(result,0x20), len)) {
invalid()
}
}
memoryStored = result;
return result;
}
}Modular Exponentiation
BN128Add
BN128Mul
BN128Pairing
Blake2F
Last updated