From 41249cd7bfc3a874d8b2af1c9ff462634560df30 Mon Sep 17 00:00:00 2001 From: oba Date: Mon, 8 Jan 2024 11:11:27 +0100 Subject: [PATCH] fix: rename difficulty to prevrandao --- src/HyVM.huff | 4 ++-- src/Jump-table.huff | 2 +- test/HyVM/Opcodes.t.sol | 10 ++++++++++ test/HyVM/opcodes/prevrandao | 8 ++++++++ 4 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 test/HyVM/opcodes/prevrandao diff --git a/src/HyVM.huff b/src/HyVM.huff index 7e91aca..e6a9634 100644 --- a/src/HyVM.huff +++ b/src/HyVM.huff @@ -304,8 +304,8 @@ number CONTINUE() - op_difficulty: - difficulty + op_prevrandao: + prevrandao CONTINUE() op_gaslimit: diff --git a/src/Jump-table.huff b/src/Jump-table.huff index 2730002..c5594e6 100644 --- a/src/Jump-table.huff +++ b/src/Jump-table.huff @@ -19,7 +19,7 @@ op_lt op_gt op_slt op_sgt op_eq op_iszero op_and op_or op_xor op_not op_byte op_shl op_shr op_sar unused unused op_sha3 unused unused unused unused unused unused unused unused unused unused unused unused unused unused unused op_address op_balance op_origin op_caller op_callvalue op_calldataload op_calldatasize op_calldatacopy op_codesize op_codecopy op_gasprice op_extcodesize op_extcodecopy op_returndatasize op_returndatacopy op_extcodehash - op_blockhash op_coinbase op_timestamp op_number op_difficulty op_gaslimit op_chainid op_selfbalance op_basefee unused unused unused unused unused unused unused + op_blockhash op_coinbase op_timestamp op_number op_prevrandao op_gaslimit op_chainid op_selfbalance op_basefee unused unused unused unused unused unused unused op_pop op_mload op_mstore op_mstore8 op_sload op_sstore op_jump op_jumpi op_pc op_msize op_gas op_jumpdest unused unused unused op_push0 op_push1 op_push2 op_push3 op_push4 op_push5 op_push6 op_push7 op_push8 op_push9 op_push10 op_push11 op_push12 op_push13 op_push14 op_push15 op_push16 op_push17 op_push18 op_push19 op_push20 op_push21 op_push22 op_push23 op_push24 op_push25 op_push26 op_push27 op_push28 op_push29 op_push30 op_push31 op_push32 diff --git a/test/HyVM/Opcodes.t.sol b/test/HyVM/Opcodes.t.sol index 091f4a3..0f41ba8 100644 --- a/test/HyVM/Opcodes.t.sol +++ b/test/HyVM/Opcodes.t.sol @@ -1147,4 +1147,14 @@ contract OpcodesTest is Test { ); assertTrue(success, "expectRevert: call did not revert"); } + + function testPrevrandao(uint256 prevrandao) public { + // bytecode generated using: easm test/opcodes/prevrandao + // EVM-Assembler does not implement it, so it is added manually + vm.prevrandao(bytes32(prevrandao)); + (bool success, bytes memory data) = hyvm.delegatecall(hex"4460005260206000f3"); + assertEq(success, true); + (uint256 result) = abi.decode(data, (uint256)); + assertEq(result, prevrandao); + } } diff --git a/test/HyVM/opcodes/prevrandao b/test/HyVM/opcodes/prevrandao new file mode 100644 index 0000000..1b94dee --- /dev/null +++ b/test/HyVM/opcodes/prevrandao @@ -0,0 +1,8 @@ +PREVRANDAO + +# return result +PUSH1 0x0 +MSTORE +PUSH1 0x20 +PUSH1 0x00 +RETURN \ No newline at end of file