diff --git a/.github/workflows/coreth-ci.yml b/.github/workflows/coreth-ci.yml index be48bea5682f..a64077c3e2f4 100644 --- a/.github/workflows/coreth-ci.yml +++ b/.github/workflows/coreth-ci.yml @@ -17,6 +17,10 @@ jobs: steps: - uses: actions/checkout@v4 - uses: ./.github/actions/setup-go-for-project + - name: Set up solc + uses: ARR4N/setup-solc@v0.2.0 + with: + versions: "0.8.30" - name: Run all lint checks run: ./scripts/run_task.sh lint-all-ci - name: Check go.mod and go.sum are up-to-date diff --git a/graft/coreth/Taskfile.yml b/graft/coreth/Taskfile.yml index dee5c4f28dcd..990317049fd8 100644 --- a/graft/coreth/Taskfile.yml +++ b/graft/coreth/Taskfile.yml @@ -40,6 +40,12 @@ tasks: - task: generate-rlp - task: check-clean-branch + check-generate-bindings: + desc: Checks that generated Go bindings from all Solidity contracts are up-to-date (requires a clean git working tree) + cmds: + - task: generate-bindings + - task: check-clean-branch + check-go-mod-tidy: desc: Checks that all go.mod and go.sum files are up-to-date (requires a clean git working tree) cmds: @@ -68,6 +74,12 @@ tasks: - cmd: grep -lr -E '^// Code generated by rlpgen\. DO NOT EDIT.\.$' . | xargs -r rm - cmd: go generate -run rlpgen ./... + generate-bindings: + desc: Generates Go bindings from Solidity contracts (searches for all compile.go files) + cmds: + - cmd: find . -type f \( -name '*.abi' -o -name '*.bin' \) ! -path '*/artifacts/*' ! -path '*/setup-solc_downloads/*' ! -path '*/contracts/*' | xargs -r rm + - cmd: find . -type f -name 'compile.go' -execdir go generate {} \; + lint: desc: Run golangci-lint and check for allowed Ethereum imports in Go code cmd: ../evm/scripts/lint.sh @@ -80,6 +92,7 @@ tasks: - check-generate-codec - check-generate-mocks - check-generate-rlp + - check-generate-bindings lint-all-ci: desc: Runs all lint checks one-by-one @@ -89,6 +102,7 @@ tasks: - task: check-generate-codec - task: check-generate-mocks - task: check-generate-rlp + - task: check-generate-bindings lint-fix: desc: Run golangci-lint with auto-fix where possible diff --git a/graft/coreth/plugin/evm/ExampleWarp.bin b/graft/coreth/plugin/evm/ExampleWarp.bin index c5963ac7ea64..d47503645dcc 100644 --- a/graft/coreth/plugin/evm/ExampleWarp.bin +++ b/graft/coreth/plugin/evm/ExampleWarp.bin @@ -1 +1 @@ -60806040527302000000000000000000000000000000000000055f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015610062575f80fd5b50610d15806100705f395ff3fe608060405234801561000f575f80fd5b5060043610610060575f3560e01c806315f0c959146100645780635bd05f061461008057806377ca84db1461009c578063e519286f146100b8578063ee5b48eb146100d4578063f25ec06a146100f0575b5f80fd5b61007e60048036038101906100799190610658565b61010c565b005b61009a60048036038101906100959190610777565b6101a5565b005b6100b660048036038101906100b191906107fb565b6102cd565b005b6100d260048036038101906100cd9190610826565b61039a565b005b6100ee60048036038101906100e99190610876565b610464565b005b61010a600480360381019061010591906107fb565b6104ef565b005b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610174573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061019891906108d5565b81146101a2575f80fd5b50565b5f805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f825350886040518263ffffffff1660e01b81526004016101ff919061090f565b5f60405180830381865afa158015610219573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906102419190610b48565b915091508061024e575f80fd5b85825f01511461025c575f80fd5b8473ffffffffffffffffffffffffffffffffffffffff16826020015173ffffffffffffffffffffffffffffffffffffffff1614610297575f80fd5b83836040516102a7929190610bde565b6040518091039020826040015180519060200120146102c4575f80fd5b50505050505050565b5f805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ce7f5929846040518263ffffffff1660e01b8152600401610327919061090f565b606060405180830381865afa158015610342573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103669190610c43565b915091508015610374575f80fd5b5f801b825f015114610384575f80fd5b5f801b826020015114610395575f80fd5b505050565b5f805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ce7f5929866040518263ffffffff1660e01b81526004016103f4919061090f565b606060405180830381865afa15801561040f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104339190610c43565b9150915080610440575f80fd5b83825f01511461044e575f80fd5b8282602001511461045d575f80fd5b5050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee5b48eb83836040518363ffffffff1660e01b81526004016104be929190610cbd565b5f604051808303815f87803b1580156104d5575f80fd5b505af11580156104e7573d5f803e3d5ffd5b505050505050565b5f805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f825350846040518263ffffffff1660e01b8152600401610549919061090f565b5f60405180830381865afa158015610563573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061058b9190610b48565b915091508015610599575f80fd5b5f801b825f0151146105a9575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff16826020015173ffffffffffffffffffffffffffffffffffffffff16146105e4575f80fd5b60405180602001604052805f815250805190602001208260400151805190602001201461060f575f80fd5b505050565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b61063781610625565b8114610641575f80fd5b50565b5f813590506106528161062e565b92915050565b5f6020828403121561066d5761066c61061d565b5b5f61067a84828501610644565b91505092915050565b5f63ffffffff82169050919050565b61069b81610683565b81146106a5575f80fd5b50565b5f813590506106b681610692565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106e5826106bc565b9050919050565b6106f5816106db565b81146106ff575f80fd5b50565b5f81359050610710816106ec565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261073757610736610716565b5b8235905067ffffffffffffffff8111156107545761075361071a565b5b6020830191508360018202830111156107705761076f61071e565b5b9250929050565b5f805f805f608086880312156107905761078f61061d565b5b5f61079d888289016106a8565b95505060206107ae88828901610644565b94505060406107bf88828901610702565b935050606086013567ffffffffffffffff8111156107e0576107df610621565b5b6107ec88828901610722565b92509250509295509295909350565b5f602082840312156108105761080f61061d565b5b5f61081d848285016106a8565b91505092915050565b5f805f6060848603121561083d5761083c61061d565b5b5f61084a868287016106a8565b935050602061085b86828701610644565b925050604061086c86828701610644565b9150509250925092565b5f806020838503121561088c5761088b61061d565b5b5f83013567ffffffffffffffff8111156108a9576108a8610621565b5b6108b585828601610722565b92509250509250929050565b5f815190506108cf8161062e565b92915050565b5f602082840312156108ea576108e961061d565b5b5f6108f7848285016108c1565b91505092915050565b61090981610683565b82525050565b5f6020820190506109225f830184610900565b92915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6109728261092c565b810181811067ffffffffffffffff821117156109915761099061093c565b5b80604052505050565b5f6109a3610614565b90506109af8282610969565b919050565b5f80fd5b5f815190506109c6816106ec565b92915050565b5f80fd5b5f67ffffffffffffffff8211156109ea576109e961093c565b5b6109f38261092c565b9050602081019050919050565b5f5b83811015610a1d578082015181840152602081019050610a02565b5f8484015250505050565b5f610a3a610a35846109d0565b61099a565b905082815260208101848484011115610a5657610a556109cc565b5b610a61848285610a00565b509392505050565b5f82601f830112610a7d57610a7c610716565b5b8151610a8d848260208601610a28565b91505092915050565b5f60608284031215610aab57610aaa610928565b5b610ab5606061099a565b90505f610ac4848285016108c1565b5f830152506020610ad7848285016109b8565b602083015250604082015167ffffffffffffffff811115610afb57610afa6109b4565b5b610b0784828501610a69565b60408301525092915050565b5f8115159050919050565b610b2781610b13565b8114610b31575f80fd5b50565b5f81519050610b4281610b1e565b92915050565b5f8060408385031215610b5e57610b5d61061d565b5b5f83015167ffffffffffffffff811115610b7b57610b7a610621565b5b610b8785828601610a96565b9250506020610b9885828601610b34565b9150509250929050565b5f81905092915050565b828183375f83830152505050565b5f610bc58385610ba2565b9350610bd2838584610bac565b82840190509392505050565b5f610bea828486610bba565b91508190509392505050565b5f60408284031215610c0b57610c0a610928565b5b610c15604061099a565b90505f610c24848285016108c1565b5f830152506020610c37848285016108c1565b60208301525092915050565b5f8060608385031215610c5957610c5861061d565b5b5f610c6685828601610bf6565b9250506040610c7785828601610b34565b9150509250929050565b5f82825260208201905092915050565b5f610c9c8385610c81565b9350610ca9838584610bac565b610cb28361092c565b840190509392505050565b5f6020820190508181035f830152610cd6818486610c91565b9050939250505056fea2646970667358221220d2f09e48f2e77361389456025f7337767127dc73767d50ff2f46bc5273493cec64736f6c63430008150033 \ No newline at end of file +60806040527302000000000000000000000000000000000000055f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156061575f5ffd5b50610d2f8061006f5f395ff3fe608060405234801561000f575f5ffd5b5060043610610060575f3560e01c806315f0c959146100645780635bd05f061461008057806377ca84db1461009c578063e519286f146100b8578063ee5b48eb146100d4578063f25ec06a146100f0575b5f5ffd5b61007e60048036038101906100799190610672565b61010c565b005b61009a60048036038101906100959190610791565b6101a6565b005b6100b660048036038101906100b19190610815565b6102cf565b005b6100d260048036038101906100cd9190610840565b61039d565b005b6100ee60048036038101906100e99190610890565b610468565b005b61010a60048036038101906101059190610815565b610508565b005b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610175573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061019991906108ef565b81146101a3575f5ffd5b50565b5f5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f825350886040518263ffffffff1660e01b81526004016102019190610929565b5f60405180830381865afa15801561021b573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906102439190610b62565b9150915080610250575f5ffd5b85825f01511461025e575f5ffd5b8473ffffffffffffffffffffffffffffffffffffffff16826020015173ffffffffffffffffffffffffffffffffffffffff1614610299575f5ffd5b83836040516102a9929190610bf8565b6040518091039020826040015180519060200120146102c6575f5ffd5b50505050505050565b5f5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ce7f5929846040518263ffffffff1660e01b815260040161032a9190610929565b606060405180830381865afa158015610345573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103699190610c5d565b915091508015610377575f5ffd5b5f5f1b825f015114610387575f5ffd5b5f5f1b826020015114610398575f5ffd5b505050565b5f5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ce7f5929866040518263ffffffff1660e01b81526004016103f89190610929565b606060405180830381865afa158015610413573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104379190610c5d565b9150915080610444575f5ffd5b83825f015114610452575f5ffd5b82826020015114610461575f5ffd5b5050505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee5b48eb83836040518363ffffffff1660e01b81526004016104c3929190610cd7565b6020604051808303815f875af11580156104df573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061050391906108ef565b505050565b5f5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f825350846040518263ffffffff1660e01b81526004016105639190610929565b5f60405180830381865afa15801561057d573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906105a59190610b62565b9150915080156105b3575f5ffd5b5f5f1b825f0151146105c3575f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff16826020015173ffffffffffffffffffffffffffffffffffffffff16146105fe575f5ffd5b60405180602001604052805f8152508051906020012082604001518051906020012014610629575f5ffd5b505050565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b6106518161063f565b811461065b575f5ffd5b50565b5f8135905061066c81610648565b92915050565b5f6020828403121561068757610686610637565b5b5f6106948482850161065e565b91505092915050565b5f63ffffffff82169050919050565b6106b58161069d565b81146106bf575f5ffd5b50565b5f813590506106d0816106ac565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106ff826106d6565b9050919050565b61070f816106f5565b8114610719575f5ffd5b50565b5f8135905061072a81610706565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261075157610750610730565b5b8235905067ffffffffffffffff81111561076e5761076d610734565b5b60208301915083600182028301111561078a57610789610738565b5b9250929050565b5f5f5f5f5f608086880312156107aa576107a9610637565b5b5f6107b7888289016106c2565b95505060206107c88882890161065e565b94505060406107d98882890161071c565b935050606086013567ffffffffffffffff8111156107fa576107f961063b565b5b6108068882890161073c565b92509250509295509295909350565b5f6020828403121561082a57610829610637565b5b5f610837848285016106c2565b91505092915050565b5f5f5f6060848603121561085757610856610637565b5b5f610864868287016106c2565b93505060206108758682870161065e565b92505060406108868682870161065e565b9150509250925092565b5f5f602083850312156108a6576108a5610637565b5b5f83013567ffffffffffffffff8111156108c3576108c261063b565b5b6108cf8582860161073c565b92509250509250929050565b5f815190506108e981610648565b92915050565b5f6020828403121561090457610903610637565b5b5f610911848285016108db565b91505092915050565b6109238161069d565b82525050565b5f60208201905061093c5f83018461091a565b92915050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61098c82610946565b810181811067ffffffffffffffff821117156109ab576109aa610956565b5b80604052505050565b5f6109bd61062e565b90506109c98282610983565b919050565b5f5ffd5b5f815190506109e081610706565b92915050565b5f5ffd5b5f67ffffffffffffffff821115610a0457610a03610956565b5b610a0d82610946565b9050602081019050919050565b5f5b83811015610a37578082015181840152602081019050610a1c565b5f8484015250505050565b5f610a54610a4f846109ea565b6109b4565b905082815260208101848484011115610a7057610a6f6109e6565b5b610a7b848285610a1a565b509392505050565b5f82601f830112610a9757610a96610730565b5b8151610aa7848260208601610a42565b91505092915050565b5f60608284031215610ac557610ac4610942565b5b610acf60606109b4565b90505f610ade848285016108db565b5f830152506020610af1848285016109d2565b602083015250604082015167ffffffffffffffff811115610b1557610b146109ce565b5b610b2184828501610a83565b60408301525092915050565b5f8115159050919050565b610b4181610b2d565b8114610b4b575f5ffd5b50565b5f81519050610b5c81610b38565b92915050565b5f5f60408385031215610b7857610b77610637565b5b5f83015167ffffffffffffffff811115610b9557610b9461063b565b5b610ba185828601610ab0565b9250506020610bb285828601610b4e565b9150509250929050565b5f81905092915050565b828183375f83830152505050565b5f610bdf8385610bbc565b9350610bec838584610bc6565b82840190509392505050565b5f610c04828486610bd4565b91508190509392505050565b5f60408284031215610c2557610c24610942565b5b610c2f60406109b4565b90505f610c3e848285016108db565b5f830152506020610c51848285016108db565b60208301525092915050565b5f5f60608385031215610c7357610c72610637565b5b5f610c8085828601610c10565b9250506040610c9185828601610b4e565b9150509250929050565b5f82825260208201905092915050565b5f610cb68385610c9b565b9350610cc3838584610bc6565b610ccc83610946565b840190509392505050565b5f6020820190508181035f830152610cf0818486610cab565b9050939250505056fea264697066735822122089902eb753a370500b6bf6e032c13aa5646707c14ca32531e0a81efea19a265164736f6c634300081e0033 \ No newline at end of file diff --git a/graft/coreth/contracts/contracts/ExampleWarp.sol b/graft/coreth/plugin/evm/ExampleWarp.sol similarity index 96% rename from graft/coreth/contracts/contracts/ExampleWarp.sol rename to graft/coreth/plugin/evm/ExampleWarp.sol index b6247058ef34..2f99f5721bc7 100644 --- a/graft/coreth/contracts/contracts/ExampleWarp.sol +++ b/graft/coreth/plugin/evm/ExampleWarp.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.0; pragma experimental ABIEncoderV2; -import "./interfaces/IWarpMessenger.sol"; +import "../../precompile/contracts/warp/warpbindings/IWarpMessenger.sol"; contract ExampleWarp { address constant WARP_ADDRESS = 0x0200000000000000000000000000000000000005; diff --git a/graft/coreth/plugin/evm/compile.go b/graft/coreth/plugin/evm/compile.go new file mode 100644 index 000000000000..d4866cf5e903 --- /dev/null +++ b/graft/coreth/plugin/evm/compile.go @@ -0,0 +1,7 @@ +// Copyright (C) 2019-2026, Ava Labs, Inc. All rights reserved. +// See the file LICENSE for licensing terms. + +package evm + +// Step 1: Compile ExampleWarp contract to generate ABI and bin files +//go:generate sh -c "solc-v0.8.30 -o . --overwrite --abi --bin --pretty-json --base-path ../.. --evm-version shanghai ExampleWarp.sol && rm -f IWarpMessenger.abi IWarpMessenger.bin" diff --git a/graft/coreth/precompile/contracts/warp/contract.abi b/graft/coreth/precompile/contracts/warp/IWarpMessenger.abi similarity index 99% rename from graft/coreth/precompile/contracts/warp/contract.abi rename to graft/coreth/precompile/contracts/warp/IWarpMessenger.abi index 771103ecbc63..0bc05c499d8b 100644 --- a/graft/coreth/precompile/contracts/warp/contract.abi +++ b/graft/coreth/precompile/contracts/warp/IWarpMessenger.abi @@ -133,4 +133,4 @@ "stateMutability": "nonpayable", "type": "function" } -] +] \ No newline at end of file diff --git a/graft/coreth/precompile/contracts/warp/contract.go b/graft/coreth/precompile/contracts/warp/contract.go index 30b6a89111f0..6c82cafa8755 100644 --- a/graft/coreth/precompile/contracts/warp/contract.go +++ b/graft/coreth/precompile/contracts/warp/contract.go @@ -86,7 +86,7 @@ var ( // Singleton StatefulPrecompiledContract and signatures. var ( // WarpRawABI contains the raw ABI of Warp contract. - //go:embed contract.abi + //go:embed IWarpMessenger.abi WarpRawABI string WarpABI = contract.ParseABI(WarpRawABI) diff --git a/graft/coreth/contracts/contracts/interfaces/IWarpMessenger.sol b/graft/coreth/precompile/contracts/warp/warpbindings/IWarpMessenger.sol similarity index 100% rename from graft/coreth/contracts/contracts/interfaces/IWarpMessenger.sol rename to graft/coreth/precompile/contracts/warp/warpbindings/IWarpMessenger.sol diff --git a/graft/coreth/precompile/contracts/warp/warpbindings/compile.go b/graft/coreth/precompile/contracts/warp/warpbindings/compile.go new file mode 100644 index 000000000000..69889cfb8451 --- /dev/null +++ b/graft/coreth/precompile/contracts/warp/warpbindings/compile.go @@ -0,0 +1,7 @@ +// Copyright (C) 2019-2026, Ava Labs, Inc. All rights reserved. +// See the file LICENSE for licensing terms. + +package warpbindings + +// Step 1: Compile IWarpMessenger interface to generate ABI at parent level +//go:generate solc-v0.8.30 -o .. --overwrite --abi --pretty-json --evm-version cancun IWarpMessenger.sol diff --git a/graft/subnet-evm/Taskfile.yml b/graft/subnet-evm/Taskfile.yml index d393a50b4ccc..3f06178ab7c5 100644 --- a/graft/subnet-evm/Taskfile.yml +++ b/graft/subnet-evm/Taskfile.yml @@ -57,7 +57,7 @@ tasks: - task: check-clean-branch check-generate-bindings: - desc: Checks that generated Go bindings from Solidity contracts in precompile are up-to-date (requires a clean git working tree) + desc: Checks that generated Go bindings from all Solidity contracts are up-to-date (requires a clean git working tree) cmds: - task: generate-bindings - task: check-clean-branch @@ -91,11 +91,11 @@ tasks: - cmd: go generate -run rlpgen ./... generate-bindings: - desc: Generates Go bindings from Solidity contracts in precompile + desc: Generates Go bindings from Solidity contracts (searches for all compile.go files) cmds: - - cmd: find ./precompile -type f -name 'gen_*binding.go' -exec grep -l '^// Code generated - DO NOT EDIT\.$' {} \; | xargs -r rm - - cmd: find ./precompile -type f -name '*.abi' | xargs -r rm - - cmd: go generate ./precompile/... + - cmd: find . -type f -name 'gen_*binding.go' -exec grep -l '^// Code generated - DO NOT EDIT\.$' {} \; | xargs -r rm + - cmd: find . -type f \( -name '*.abi' -o -name '*.bin' \) ! -path '*/artifacts/*' ! -path '*/setup-solc_downloads/*' | xargs -r rm + - cmd: find . -type f -name 'compile.go' -execdir go generate {} \; lint: desc: Run golangci-lint and check for allowed Ethereum imports in Go code diff --git a/graft/subnet-evm/core/TrieStressTest.abi b/graft/subnet-evm/core/TrieStressTest.abi index 2914db458475..4372eaec5716 100644 --- a/graft/subnet-evm/core/TrieStressTest.abi +++ b/graft/subnet-evm/core/TrieStressTest.abi @@ -1 +1,47 @@ -[{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getData","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"writeValues","outputs":[],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file +[ + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getData", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getLength", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "writeValues", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/graft/subnet-evm/core/TrieStressTest.bin b/graft/subnet-evm/core/TrieStressTest.bin index b8c143c38f8d..8660dd6a1614 100644 --- a/graft/subnet-evm/core/TrieStressTest.bin +++ b/graft/subnet-evm/core/TrieStressTest.bin @@ -1 +1 @@ -608060405234801561000f575f80fd5b506103938061001d5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c80630178fe3f14610043578063514a19d614610073578063be1c766b1461008f575b5f80fd5b61005d600480360381019061005891906101c0565b6100ad565b60405161006a9190610203565b60405180910390f35b61008d600480360381019061008891906101c0565b610117565b005b61009761017e565b6040516100a4919061022b565b60405180910390f35b5f808054905082106100f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100eb9061029e565b60405180910390fd5b5f8281548110610107576101066102bc565b5b905f5260205f2001549050919050565b5f60603373ffffffffffffffffffffffffffffffffffffffff16901b5f1b90505f5b82811015610179575f82908060018154018082558091505060019003905f5260205f20015f9091909190915055808061017190610316565b915050610139565b505050565b5f8080549050905090565b5f80fd5b5f819050919050565b61019f8161018d565b81146101a9575f80fd5b50565b5f813590506101ba81610196565b92915050565b5f602082840312156101d5576101d4610189565b5b5f6101e2848285016101ac565b91505092915050565b5f819050919050565b6101fd816101eb565b82525050565b5f6020820190506102165f8301846101f4565b92915050565b6102258161018d565b82525050565b5f60208201905061023e5f83018461021c565b92915050565b5f82825260208201905092915050565b7f496e646578206f7574206f6620626f756e6400000000000000000000000000005f82015250565b5f610288601283610244565b915061029382610254565b602082019050919050565b5f6020820190508181035f8301526102b58161027c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6103208261018d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610352576103516102e9565b5b60018201905091905056fea26469706673582212206a77a7e1e9aaf41a68d7c07cec79019e175a15c152db425e1c143d7cfd7da65e64736f6c63430008150033 \ No newline at end of file +6080604052348015600e575f5ffd5b5061031c8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c80630178fe3f14610043578063514a19d614610073578063be1c766b1461008f575b5f5ffd5b61005d600480360381019061005891906101bd565b6100ad565b60405161006a9190610200565b60405180910390f35b61008d600480360381019061008891906101bd565b610117565b005b61009761017b565b6040516100a49190610228565b60405180910390f35b5f5f8054905082106100f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100eb9061029b565b60405180910390fd5b5f8281548110610107576101066102b9565b5b905f5260205f2001549050919050565b5f60603373ffffffffffffffffffffffffffffffffffffffff16901b5f1b90505f5f90505b82811015610176575f82908060018154018082558091505060019003905f5260205f20015f9091909190915055808060010191505061013c565b505050565b5f5f80549050905090565b5f5ffd5b5f819050919050565b61019c8161018a565b81146101a6575f5ffd5b50565b5f813590506101b781610193565b92915050565b5f602082840312156101d2576101d1610186565b5b5f6101df848285016101a9565b91505092915050565b5f819050919050565b6101fa816101e8565b82525050565b5f6020820190506102135f8301846101f1565b92915050565b6102228161018a565b82525050565b5f60208201905061023b5f830184610219565b92915050565b5f82825260208201905092915050565b7f496e646578206f7574206f6620626f756e6400000000000000000000000000005f82015250565b5f610285601283610241565b915061029082610251565b602082019050919050565b5f6020820190508181035f8301526102b281610279565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea264697066735822122014151b7a0e66219942267fc1f7cf9dde7a1ce4ba720aa3aa5acc60dea8284b7f64736f6c634300081e0033 \ No newline at end of file diff --git a/graft/subnet-evm/core/compile.go b/graft/subnet-evm/core/compile.go new file mode 100644 index 000000000000..cbacbc2de7e8 --- /dev/null +++ b/graft/subnet-evm/core/compile.go @@ -0,0 +1,7 @@ +// Copyright (C) 2019-2026, Ava Labs, Inc. All rights reserved. +// See the file LICENSE for licensing terms. + +package core + +// Step 1: Compile TrieStressTest contract to generate ABI and bin files +//go:generate solc-v0.8.30 -o . --overwrite --abi --bin --pretty-json --evm-version cancun TrieStressTest.sol diff --git a/graft/subnet-evm/plugin/evm/ExampleWarp.bin b/graft/subnet-evm/plugin/evm/ExampleWarp.bin index c5963ac7ea64..47798361e73d 100644 --- a/graft/subnet-evm/plugin/evm/ExampleWarp.bin +++ b/graft/subnet-evm/plugin/evm/ExampleWarp.bin @@ -1 +1 @@ -60806040527302000000000000000000000000000000000000055f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015610062575f80fd5b50610d15806100705f395ff3fe608060405234801561000f575f80fd5b5060043610610060575f3560e01c806315f0c959146100645780635bd05f061461008057806377ca84db1461009c578063e519286f146100b8578063ee5b48eb146100d4578063f25ec06a146100f0575b5f80fd5b61007e60048036038101906100799190610658565b61010c565b005b61009a60048036038101906100959190610777565b6101a5565b005b6100b660048036038101906100b191906107fb565b6102cd565b005b6100d260048036038101906100cd9190610826565b61039a565b005b6100ee60048036038101906100e99190610876565b610464565b005b61010a600480360381019061010591906107fb565b6104ef565b005b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610174573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061019891906108d5565b81146101a2575f80fd5b50565b5f805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f825350886040518263ffffffff1660e01b81526004016101ff919061090f565b5f60405180830381865afa158015610219573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906102419190610b48565b915091508061024e575f80fd5b85825f01511461025c575f80fd5b8473ffffffffffffffffffffffffffffffffffffffff16826020015173ffffffffffffffffffffffffffffffffffffffff1614610297575f80fd5b83836040516102a7929190610bde565b6040518091039020826040015180519060200120146102c4575f80fd5b50505050505050565b5f805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ce7f5929846040518263ffffffff1660e01b8152600401610327919061090f565b606060405180830381865afa158015610342573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103669190610c43565b915091508015610374575f80fd5b5f801b825f015114610384575f80fd5b5f801b826020015114610395575f80fd5b505050565b5f805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ce7f5929866040518263ffffffff1660e01b81526004016103f4919061090f565b606060405180830381865afa15801561040f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104339190610c43565b9150915080610440575f80fd5b83825f01511461044e575f80fd5b8282602001511461045d575f80fd5b5050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee5b48eb83836040518363ffffffff1660e01b81526004016104be929190610cbd565b5f604051808303815f87803b1580156104d5575f80fd5b505af11580156104e7573d5f803e3d5ffd5b505050505050565b5f805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f825350846040518263ffffffff1660e01b8152600401610549919061090f565b5f60405180830381865afa158015610563573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061058b9190610b48565b915091508015610599575f80fd5b5f801b825f0151146105a9575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff16826020015173ffffffffffffffffffffffffffffffffffffffff16146105e4575f80fd5b60405180602001604052805f815250805190602001208260400151805190602001201461060f575f80fd5b505050565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b61063781610625565b8114610641575f80fd5b50565b5f813590506106528161062e565b92915050565b5f6020828403121561066d5761066c61061d565b5b5f61067a84828501610644565b91505092915050565b5f63ffffffff82169050919050565b61069b81610683565b81146106a5575f80fd5b50565b5f813590506106b681610692565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106e5826106bc565b9050919050565b6106f5816106db565b81146106ff575f80fd5b50565b5f81359050610710816106ec565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261073757610736610716565b5b8235905067ffffffffffffffff8111156107545761075361071a565b5b6020830191508360018202830111156107705761076f61071e565b5b9250929050565b5f805f805f608086880312156107905761078f61061d565b5b5f61079d888289016106a8565b95505060206107ae88828901610644565b94505060406107bf88828901610702565b935050606086013567ffffffffffffffff8111156107e0576107df610621565b5b6107ec88828901610722565b92509250509295509295909350565b5f602082840312156108105761080f61061d565b5b5f61081d848285016106a8565b91505092915050565b5f805f6060848603121561083d5761083c61061d565b5b5f61084a868287016106a8565b935050602061085b86828701610644565b925050604061086c86828701610644565b9150509250925092565b5f806020838503121561088c5761088b61061d565b5b5f83013567ffffffffffffffff8111156108a9576108a8610621565b5b6108b585828601610722565b92509250509250929050565b5f815190506108cf8161062e565b92915050565b5f602082840312156108ea576108e961061d565b5b5f6108f7848285016108c1565b91505092915050565b61090981610683565b82525050565b5f6020820190506109225f830184610900565b92915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6109728261092c565b810181811067ffffffffffffffff821117156109915761099061093c565b5b80604052505050565b5f6109a3610614565b90506109af8282610969565b919050565b5f80fd5b5f815190506109c6816106ec565b92915050565b5f80fd5b5f67ffffffffffffffff8211156109ea576109e961093c565b5b6109f38261092c565b9050602081019050919050565b5f5b83811015610a1d578082015181840152602081019050610a02565b5f8484015250505050565b5f610a3a610a35846109d0565b61099a565b905082815260208101848484011115610a5657610a556109cc565b5b610a61848285610a00565b509392505050565b5f82601f830112610a7d57610a7c610716565b5b8151610a8d848260208601610a28565b91505092915050565b5f60608284031215610aab57610aaa610928565b5b610ab5606061099a565b90505f610ac4848285016108c1565b5f830152506020610ad7848285016109b8565b602083015250604082015167ffffffffffffffff811115610afb57610afa6109b4565b5b610b0784828501610a69565b60408301525092915050565b5f8115159050919050565b610b2781610b13565b8114610b31575f80fd5b50565b5f81519050610b4281610b1e565b92915050565b5f8060408385031215610b5e57610b5d61061d565b5b5f83015167ffffffffffffffff811115610b7b57610b7a610621565b5b610b8785828601610a96565b9250506020610b9885828601610b34565b9150509250929050565b5f81905092915050565b828183375f83830152505050565b5f610bc58385610ba2565b9350610bd2838584610bac565b82840190509392505050565b5f610bea828486610bba565b91508190509392505050565b5f60408284031215610c0b57610c0a610928565b5b610c15604061099a565b90505f610c24848285016108c1565b5f830152506020610c37848285016108c1565b60208301525092915050565b5f8060608385031215610c5957610c5861061d565b5b5f610c6685828601610bf6565b9250506040610c7785828601610b34565b9150509250929050565b5f82825260208201905092915050565b5f610c9c8385610c81565b9350610ca9838584610bac565b610cb28361092c565b840190509392505050565b5f6020820190508181035f830152610cd6818486610c91565b9050939250505056fea2646970667358221220d2f09e48f2e77361389456025f7337767127dc73767d50ff2f46bc5273493cec64736f6c63430008150033 \ No newline at end of file +60806040527302000000000000000000000000000000000000055f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156061575f5ffd5b50610d158061006f5f395ff3fe608060405234801561000f575f5ffd5b5060043610610060575f3560e01c806315f0c959146100645780635bd05f061461008057806377ca84db1461009c578063e519286f146100b8578063ee5b48eb146100d4578063f25ec06a146100f0575b5f5ffd5b61007e60048036038101906100799190610672565b61010c565b005b61009a60048036038101906100959190610791565b6101a6565b005b6100b660048036038101906100b19190610815565b6102cf565b005b6100d260048036038101906100cd9190610840565b61039d565b005b6100ee60048036038101906100e99190610890565b610468565b005b61010a60048036038101906101059190610815565b610508565b005b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610175573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061019991906108ef565b81146101a3575f5ffd5b50565b5f5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f825350886040518263ffffffff1660e01b81526004016102019190610929565b5f60405180830381865afa15801561021b573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906102439190610b48565b9150915080610250575f5ffd5b85825f01511461025e575f5ffd5b8473ffffffffffffffffffffffffffffffffffffffff16826020015173ffffffffffffffffffffffffffffffffffffffff1614610299575f5ffd5b83836040516102a9929190610bde565b6040518091039020826040015180519060200120146102c6575f5ffd5b50505050505050565b5f5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ce7f5929846040518263ffffffff1660e01b815260040161032a9190610929565b606060405180830381865afa158015610345573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103699190610c43565b915091508015610377575f5ffd5b5f5f1b825f015114610387575f5ffd5b5f5f1b826020015114610398575f5ffd5b505050565b5f5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ce7f5929866040518263ffffffff1660e01b81526004016103f89190610929565b606060405180830381865afa158015610413573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104379190610c43565b9150915080610444575f5ffd5b83825f015114610452575f5ffd5b82826020015114610461575f5ffd5b5050505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee5b48eb83836040518363ffffffff1660e01b81526004016104c3929190610cbd565b6020604051808303815f875af11580156104df573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061050391906108ef565b505050565b5f5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f825350846040518263ffffffff1660e01b81526004016105639190610929565b5f60405180830381865afa15801561057d573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906105a59190610b48565b9150915080156105b3575f5ffd5b5f5f1b825f0151146105c3575f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff16826020015173ffffffffffffffffffffffffffffffffffffffff16146105fe575f5ffd5b60405180602001604052805f8152508051906020012082604001518051906020012014610629575f5ffd5b505050565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b6106518161063f565b811461065b575f5ffd5b50565b5f8135905061066c81610648565b92915050565b5f6020828403121561068757610686610637565b5b5f6106948482850161065e565b91505092915050565b5f63ffffffff82169050919050565b6106b58161069d565b81146106bf575f5ffd5b50565b5f813590506106d0816106ac565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106ff826106d6565b9050919050565b61070f816106f5565b8114610719575f5ffd5b50565b5f8135905061072a81610706565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261075157610750610730565b5b8235905067ffffffffffffffff81111561076e5761076d610734565b5b60208301915083600182028301111561078a57610789610738565b5b9250929050565b5f5f5f5f5f608086880312156107aa576107a9610637565b5b5f6107b7888289016106c2565b95505060206107c88882890161065e565b94505060406107d98882890161071c565b935050606086013567ffffffffffffffff8111156107fa576107f961063b565b5b6108068882890161073c565b92509250509295509295909350565b5f6020828403121561082a57610829610637565b5b5f610837848285016106c2565b91505092915050565b5f5f5f6060848603121561085757610856610637565b5b5f610864868287016106c2565b93505060206108758682870161065e565b92505060406108868682870161065e565b9150509250925092565b5f5f602083850312156108a6576108a5610637565b5b5f83013567ffffffffffffffff8111156108c3576108c261063b565b5b6108cf8582860161073c565b92509250509250929050565b5f815190506108e981610648565b92915050565b5f6020828403121561090457610903610637565b5b5f610911848285016108db565b91505092915050565b6109238161069d565b82525050565b5f60208201905061093c5f83018461091a565b92915050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61098c82610946565b810181811067ffffffffffffffff821117156109ab576109aa610956565b5b80604052505050565b5f6109bd61062e565b90506109c98282610983565b919050565b5f5ffd5b5f815190506109e081610706565b92915050565b5f5ffd5b5f67ffffffffffffffff821115610a0457610a03610956565b5b610a0d82610946565b9050602081019050919050565b8281835e5f83830152505050565b5f610a3a610a35846109ea565b6109b4565b905082815260208101848484011115610a5657610a556109e6565b5b610a61848285610a1a565b509392505050565b5f82601f830112610a7d57610a7c610730565b5b8151610a8d848260208601610a28565b91505092915050565b5f60608284031215610aab57610aaa610942565b5b610ab560606109b4565b90505f610ac4848285016108db565b5f830152506020610ad7848285016109d2565b602083015250604082015167ffffffffffffffff811115610afb57610afa6109ce565b5b610b0784828501610a69565b60408301525092915050565b5f8115159050919050565b610b2781610b13565b8114610b31575f5ffd5b50565b5f81519050610b4281610b1e565b92915050565b5f5f60408385031215610b5e57610b5d610637565b5b5f83015167ffffffffffffffff811115610b7b57610b7a61063b565b5b610b8785828601610a96565b9250506020610b9885828601610b34565b9150509250929050565b5f81905092915050565b828183375f83830152505050565b5f610bc58385610ba2565b9350610bd2838584610bac565b82840190509392505050565b5f610bea828486610bba565b91508190509392505050565b5f60408284031215610c0b57610c0a610942565b5b610c1560406109b4565b90505f610c24848285016108db565b5f830152506020610c37848285016108db565b60208301525092915050565b5f5f60608385031215610c5957610c58610637565b5b5f610c6685828601610bf6565b9250506040610c7785828601610b34565b9150509250929050565b5f82825260208201905092915050565b5f610c9c8385610c81565b9350610ca9838584610bac565b610cb283610946565b840190509392505050565b5f6020820190508181035f830152610cd6818486610c91565b9050939250505056fea2646970667358221220cc545c5aaef0f0a84ad5ff2ecf3dfff99c841a7702eddfa848a8c4e46cd0343964736f6c634300081e0033 \ No newline at end of file diff --git a/graft/subnet-evm/plugin/evm/ExampleWarp.sol b/graft/subnet-evm/plugin/evm/ExampleWarp.sol index b826adc3e14b..6428d1a1f83b 100644 --- a/graft/subnet-evm/plugin/evm/ExampleWarp.sol +++ b/graft/subnet-evm/plugin/evm/ExampleWarp.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.24; pragma experimental ABIEncoderV2; -import "precompile/contracts/warp/warpbindings/IWarpMessenger.sol"; +import "../../precompile/contracts/warp/warpbindings/IWarpMessenger.sol"; contract ExampleWarp { address constant WARP_ADDRESS = 0x0200000000000000000000000000000000000005; diff --git a/graft/subnet-evm/plugin/evm/compile.go b/graft/subnet-evm/plugin/evm/compile.go new file mode 100644 index 000000000000..904cea5d11f2 --- /dev/null +++ b/graft/subnet-evm/plugin/evm/compile.go @@ -0,0 +1,7 @@ +// Copyright (C) 2019-2026, Ava Labs, Inc. All rights reserved. +// See the file LICENSE for licensing terms. + +package evm + +// Step 1: Compile ExampleWarp contract to generate ABI and bin files +//go:generate sh -c "solc-v0.8.30 -o . --overwrite --abi --bin --pretty-json --base-path ../.. --evm-version cancun ExampleWarp.sol && rm -f IWarpMessenger.abi IWarpMessenger.bin" diff --git a/graft/subnet-evm/scripts/upstream_files.txt b/graft/subnet-evm/scripts/upstream_files.txt index f192a9682626..4518dff17b0c 100644 --- a/graft/subnet-evm/scripts/upstream_files.txt +++ b/graft/subnet-evm/scripts/upstream_files.txt @@ -38,6 +38,7 @@ triedb/* !core/blockchain_ext_test.go !core/blockchain_log_test.go !core/bounded_buffer.go +!core/compile.go !core/coretest/* !core/extstate/* !core/fifo_cache.go