nimbus-eth1/tests/test_op_custom.nim

306 lines
9.3 KiB
Nim

import
macro_assembler, unittest2, macros, strutils,
stew/byteutils, eth/common, ../nimbus/db/state_db,
../nimbus/db/db_chain, stew/ranges
proc opCustomMain*() =
suite "Custom Opcodes Test":
setup:
let (blockNumber, chainDB) = initDatabase()
assembler: # CALLDATASIZE OP
title: "CALLDATASIZE_1"
data:
"0x00000000000000000000000000000000000000000000000000000000000000A1"
"0x00000000000000000000000000000000000000000000000000000000000000B1"
code:
CallDataSize
stack: "0x0000000000000000000000000000000000000000000000000000000000000040"
assembler: # CALLDATALOAD OP
title: "CALLDATALOAD_1"
data:
"0x00000000000000000000000000000000000000000000000000000000000000A1"
"0x00000000000000000000000000000000000000000000000000000000000000B1"
code:
Push1 "0x00"
CallDataLoad
stack: "0x00000000000000000000000000000000000000000000000000000000000000A1"
assembler: # CALLDATALOAD OP
title: "CALLDATALOAD_2"
data:
"0x00000000000000000000000000000000000000000000000000000000000000A1"
"0x00000000000000000000000000000000000000000000000000000000000000B1"
code:
Push1 "0x02"
CallDataLoad
stack: "0x0000000000000000000000000000000000000000000000000000000000A10000"
assembler: # CALLDATALOAD OP
title: "CALLDATALOAD_3"
data:
"0x00000000000000000000000000000000000000000000000000000000000000A1"
"0x00000000000000000000000000000000000000000000000000000000000000B1"
code:
Push1 "0x20"
CallDataLoad
stack: "0x00000000000000000000000000000000000000000000000000000000000000B1"
assembler: # CALLDATALOAD OP
title: "CALLDATALOAD_4"
data:
"0x00000000000000000000000000000000000000000000000000000000000000A1"
"0x00000000000000000000000000000000000000000000000000000000000000B1"
code:
Push1 "0x23"
CallDataLoad
stack: "0x00000000000000000000000000000000000000000000000000000000B1000000"
assembler: # CALLDATALOAD OP
title: "CALLDATALOAD_5"
data:
"0x00000000000000000000000000000000000000000000000000000000000000A1"
"0x00000000000000000000000000000000000000000000000000000000000000B1"
code:
Push1 "0x3F"
CallDataLoad
stack: "0xB100000000000000000000000000000000000000000000000000000000000000"
assembler: # CALLDATALOAD OP mal
title: "CALLDATALOAD_6"
code:
CallDataLoad
success: false
assembler: # CALLDATALOAD OP
title: "CALLDATALOAD_7"
data:
"0x00000000000000000000000000000000000000000000000000000000000000A1"
"0x00000000000000000000000000000000000000000000000000000000000000B1"
code:
Push1 "0x40"
CallDataLoad
stack: "0x00"
assembler: # CALLDATACOPY OP
title: "CALLDATACOPY_1"
data:
"0x00000000000000000000000000000000000000000000000000000000000000A1"
"0x00000000000000000000000000000000000000000000000000000000000000B1"
code:
Push1 "0x20"
Push1 "0x00"
Push1 "0x00"
CallDataCopy
memory: "0x00000000000000000000000000000000000000000000000000000000000000A1"
assembler: # CALLDATACOPY OP
title: "CALLDATACOPY_2"
data:
"0x00000000000000000000000000000000000000000000000000000000000000A1"
"0x00000000000000000000000000000000000000000000000000000000000000B1"
code:
Push1 "0x40"
Push1 "0x00"
Push1 "0x00"
CallDataCopy
memory:
"0x00000000000000000000000000000000000000000000000000000000000000A1"
"0x00000000000000000000000000000000000000000000000000000000000000B1"
assembler: # CALLDATACOPY OP
title: "CALLDATACOPY_3"
data:
"0x00000000000000000000000000000000000000000000000000000000000000A1"
"0x00000000000000000000000000000000000000000000000000000000000000B1"
code:
Push1 "0x40"
Push1 "0x04"
Push1 "0x00"
CallDataCopy
memory:
"0x000000000000000000000000000000000000000000000000000000A100000000"
"0x000000000000000000000000000000000000000000000000000000B100000000"
assembler: # CALLDATACOPY OP
title: "CALLDATACOPY_4"
data:
"0x00000000000000000000000000000000000000000000000000000000000000A1"
"0x00000000000000000000000000000000000000000000000000000000000000B1"
code:
Push1 "0x40"
Push1 "0x00"
Push1 "0x04"
CallDataCopy
memory:
"0x0000000000000000000000000000000000000000000000000000000000000000"
"0x000000A100000000000000000000000000000000000000000000000000000000"
"0x000000B100000000000000000000000000000000000000000000000000000000"
assembler: # CALLDATACOPY OP
title: "CALLDATACOPY_5"
data:
"0x00000000000000000000000000000000000000000000000000000000000000A1"
"0x00000000000000000000000000000000000000000000000000000000000000B1"
code:
Push1 "0x40"
Push1 "0x00"
Push1 "0x04"
CallDataCopy
memory:
"0x0000000000000000000000000000000000000000000000000000000000000000"
"0x000000A100000000000000000000000000000000000000000000000000000000"
"0x000000B100000000000000000000000000000000000000000000000000000000"
assembler: # CALLDATACOPY OP mal
title: "CALLDATACOPY_6"
data:
"0x00000000000000000000000000000000000000000000000000000000000000A1"
"0x00000000000000000000000000000000000000000000000000000000000000B1"
code:
Push1 "0x40"
Push1 "0x00"
CallDataCopy
success: false
stack:
"0x40"
"0x00"
assembler: # CALLDATACOPY OP mal
title: "CALLDATACOPY_7"
data:
"0x00000000000000000000000000000000000000000000000000000000000000A1"
"0x00000000000000000000000000000000000000000000000000000000000000B1"
code: "0x6020600073CC0929EB16730E7C14FEFC63006AC2D794C5795637"
success: false
assembler: # ADDRESS OP
title: "ADDRESS_1"
code:
Address
stack: "0x000000000000000000000000c669eaad75042be84daaf9b461b0e868b9ac1871"
assembler: # BALANCE OP
title: "BALANCE_1"
code:
Address
Balance
stack: "0x000000000000000000000000000000000000000000000000cff56a1b273a8000"
assembler: # ORIGIN OP
title: "ORIGIN_1"
code:
Origin
stack: "0x000000000000000000000000fbe0afcd7658ba86be41922059dd879c192d4c73"
assembler: # CALLER OP
title: "CALLER_1"
code:
Caller
stack: "0x000000000000000000000000fbe0afcd7658ba86be41922059dd879c192d4c73"
assembler: # CALLVALUE OP
title: "CALLVALUE_1"
code:
CallValue
stack: "0xcff56a1b273a8000"
assembler: # SHA3 OP
title: "SHA3_1"
code:
Push1 "0x01"
Push1 "0x00"
Mstore8
Push1 "0x01"
Push1 "0x00"
Sha3
stack: "0x5FE7F977E71DBA2EA1A68E21057BEEBB9BE2AC30C6410AA38D4F3FBE41DCFFD2"
memory: "0x0100000000000000000000000000000000000000000000000000000000000000"
assembler: # SHA3 OP
title: "SHA3_2"
code:
Push2 "0x0201"
Push1 "0x00"
Mstore
Push1 "0x02"
Push1 "0x1E"
Sha3
stack: "0x114A3FE82A0219FCC31ABD15617966A125F12B0FD3409105FC83B487A9D82DE4"
memory: "0x0000000000000000000000000000000000000000000000000000000000000201"
assembler: # SHA3 OP mal
title: "SHA3_3"
code:
Push2 "0x0201"
Push1 "0x00"
Mstore
Push1 "0x02"
Sha3
success: false
stack: "0x02"
memory: "0x0000000000000000000000000000000000000000000000000000000000000201"
assembler: # BLOCKHASH OP
title: "BLOCKHASH_1"
code:
Push2 "0xb864" # 47204, parent header number
Blockhash
stack: "0xa85842a20755232169db76c5bd4ad4672c1551fca4b07d0bd139cd0e6fef684d"
# current block coinbase/miner
assembler: # COINBASE OP
title: "COINBASE_1"
code:
Coinbase
stack: "0x000000000000000000000000bb7b8287f3f0a933474a79eae42cbca977791171"
# current block timestamp
assembler: # TIMESTAMP OP
title: "TIMESTAMP_1"
code:
TimeStamp
stack: "0x0000000000000000000000000000000000000000000000000000000055c46bba"
# current block number
assembler: # NUMBER OP
title: "NUMBER_1"
code:
Number
stack: "0x000000000000000000000000000000000000000000000000000000000000b865"
# current difficulty
assembler: # DIFFICULTY OP
title: "DIFFICULTY_1"
code:
Difficulty
stack: "0x000000000000000000000000000000000000000000000000000001547c73822d"
# ??
assembler: # GASPRICE OP
title: "GASPRICE_1"
code:
GasPrice
stack: "0x000000000000000000000000000000000000000000000000000000746a528800"
# ??
assembler: # GAS OP
title: "GAS_1"
code:
Gas
stack: "0x000000000000000000000000000000000000000000000000000000001dcd64fe"
# ??
assembler: # GASLIMIT OP
title: "GASLIMIT_1"
code:
GasLimit
stack: "0x000000000000000000000000000000000000000000000000000000000000a298"
assembler: # INVALID OP
title: "INVALID_1"
code: "0x60012F6002"
stack: "0x0000000000000000000000000000000000000000000000000000000000000001"
success: false