Skip to content

Commit

Permalink
Merge pull request #4852 from NomicFoundation/test-new-opcodes
Browse files Browse the repository at this point in the history
Test new opcodes
  • Loading branch information
schaable committed Feb 13, 2024
2 parents 6ff0b20 + 731bdff commit 45b8290
Show file tree
Hide file tree
Showing 3 changed files with 1,123 additions and 150 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -548,6 +548,8 @@ export const SELFDESTRUCT_CONTRACT = {
pragma solidity ^0.8.0;
contract SelfDestruct {
uint public x = 1;
constructor() payable {}
function sd(address payable to) public {
Expand All @@ -558,12 +560,17 @@ contract SelfDestruct {
bytecode: {
linkReferences: {},
object:
"6080604052610118806100136000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80632a89f35c14602d575b600080fd5b60436004803603810190603f919060ba565b6045565b005b8073ffffffffffffffffffffffffffffffffffffffff16ff5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000608c826063565b9050919050565b609a816083565b811460a457600080fd5b50565b60008135905060b4816093565b92915050565b60006020828403121560cd5760cc605e565b5b600060d98482850160a7565b9150509291505056fea2646970667358221220a236a2dc4f9b1a8a1452246a46321de452c82ffd55b9bc1a43a979607da709be64736f6c63430008090033",
"608060405260015f55610180806100155f395ff3fe608060405234801561000f575f80fd5b5060043610610034575f3560e01c80630c55699c146100385780632a89f35c14610056575b5f80fd5b610040610072565b60405161004d91906100a8565b60405180910390f35b610070600480360381019061006b919061011f565b610077565b005b5f5481565b8073ffffffffffffffffffffffffffffffffffffffff16ff5b5f819050919050565b6100a281610090565b82525050565b5f6020820190506100bb5f830184610099565b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100ee826100c5565b9050919050565b6100fe816100e4565b8114610108575f80fd5b50565b5f81359050610119816100f5565b92915050565b5f60208284031215610134576101336100c1565b5b5f6101418482850161010b565b9150509291505056fea2646970667358221220b7b14aedb779482ea200b0fe9a63232aa5e952c4e0996df1322f885904a99b3d64736f6c63430008180033",
opcodes:
"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH2 0x118 DUP1 PUSH2 0x13 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2A89F35C EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x43 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH1 0x3F SWAP2 SWAP1 PUSH1 0xBA JUMP JUMPDEST PUSH1 0x45 JUMP JUMPDEST STOP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SELFDESTRUCT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8C DUP3 PUSH1 0x63 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x9A DUP2 PUSH1 0x83 JUMP JUMPDEST DUP2 EQ PUSH1 0xA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH1 0xB4 DUP2 PUSH1 0x93 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0xCD JUMPI PUSH1 0xCC PUSH1 0x5E JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH1 0xD9 DUP5 DUP3 DUP6 ADD PUSH1 0xA7 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG2 CALLDATASIZE LOG2 0xDC 0x4F SWAP12 BYTE DUP11 EQ MSTORE 0x24 PUSH11 0x46321DE452C82FFD55B9BC BYTE NUMBER 0xA9 PUSH26 0x607DA709BE64736F6C6343000809003300000000000000000000 ",
sourceMap: "57:122:0:-:0;;;;;;;;;",
"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH0 SSTORE PUSH2 0x180 DUP1 PUSH2 0x15 PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x34 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC55699C EQ PUSH2 0x38 JUMPI DUP1 PUSH4 0x2A89F35C EQ PUSH2 0x56 JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x40 PUSH2 0x72 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4D SWAP2 SWAP1 PUSH2 0xA8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x70 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6B SWAP2 SWAP1 PUSH2 0x11F JUMP JUMPDEST PUSH2 0x77 JUMP JUMPDEST STOP JUMPDEST PUSH0 SLOAD DUP2 JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SELFDESTRUCT JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xA2 DUP2 PUSH2 0x90 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xBB PUSH0 DUP4 ADD DUP5 PUSH2 0x99 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0xEE DUP3 PUSH2 0xC5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xFE DUP2 PUSH2 0xE4 JUMP JUMPDEST DUP2 EQ PUSH2 0x108 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x119 DUP2 PUSH2 0xF5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x134 JUMPI PUSH2 0x133 PUSH2 0xC1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x141 DUP5 DUP3 DUP6 ADD PUSH2 0x10B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB7 0xB1 BLOBBASEFEE 0xED 0xB7 PUSH26 0x482EA200B0FE9A63232AA5E952C4E0996DF1322F885904A99B3D PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ",
sourceMap: "57:156:2:-:0;;;101:1;85:17;;57:156;;;;;;",
},
abi: [
{
inputs: [],
stateMutability: "payable",
type: "constructor",
},
{
inputs: [
{
Expand All @@ -577,6 +584,13 @@ contract SelfDestruct {
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "x",
outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
stateMutability: "view",
type: "function",
},
],
selectors: {
sd: "0x2a89f35c",
Expand Down Expand Up @@ -717,6 +731,52 @@ contract CallSelfDestruct {
topics: {},
};

export const SELFDESTRUCT_DEPLOY_CONTRACT = {
sourceCode: `
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract SelfDestruct {
uint public x = 1;
constructor(address payable to) payable {
selfdestruct(to);
}
}
`,
bytecode: {
linkReferences: {},
object:
"608060405260015f556040516100cc3803806100cc833981810160405281019061002991906100a0565b8073ffffffffffffffffffffffffffffffffffffffff16ff5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61006f82610046565b9050919050565b61007f81610065565b8114610089575f80fd5b50565b5f8151905061009a81610076565b92915050565b5f602082840312156100b5576100b4610042565b5b5f6100c28482850161008c565b9150509291505056fe",
opcodes:
"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH0 SSTORE PUSH1 0x40 MLOAD PUSH2 0xCC CODESIZE SUB DUP1 PUSH2 0xCC DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH2 0x29 SWAP2 SWAP1 PUSH2 0xA0 JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SELFDESTRUCT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x6F DUP3 PUSH2 0x46 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x7F DUP2 PUSH2 0x65 JUMP JUMPDEST DUP2 EQ PUSH2 0x89 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x9A DUP2 PUSH2 0x76 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB5 JUMPI PUSH2 0xB4 PUSH2 0x42 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xC2 DUP5 DUP3 DUP6 ADD PUSH2 0x8C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID ",
sourceMap:
"57:127:2:-:0;;;101:1;85:17;;109:73;;;;;;;;;;;;;;;;;;;;;:::i;:::-;172:2;159:16;;;88:117:3;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:104::-;511:7;540:24;558:5;540:24;:::i;:::-;529:35;;466:104;;;:::o;576:138::-;657:32;683:5;657:32;:::i;:::-;650:5;647:43;637:71;;704:1;701;694:12;637:71;576:138;:::o;720:159::-;785:5;816:6;810:13;801:22;;832:41;867:5;832:41;:::i;:::-;720:159;;;;:::o;885:367::-;963:6;1012:2;1000:9;991:7;987:23;983:32;980:119;;;1018:79;;:::i;:::-;980:119;1138:1;1163:72;1227:7;1218:6;1207:9;1203:22;1163:72;:::i;:::-;1153:82;;1109:136;885:367;;;;:::o",
},
abi: [
{
inputs: [
{
internalType: "address payable",
name: "to",
type: "address",
},
],
stateMutability: "payable",
type: "constructor",
},
{
inputs: [],
name: "x",
outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
stateMutability: "view",
type: "function",
},
],
selectors: {},
topics: {},
};

export const EXAMPLE_TOUCH_ADDRESS_CONTRACT = {
sourceCode: `pragma solidity 0.8.17;
Expand Down
Loading

0 comments on commit 45b8290

Please sign in to comment.