diff --git a/precompile/.gitignore b/precompile/.gitignore index c75d83d135..496ffc0dc6 100644 --- a/precompile/.gitignore +++ b/precompile/.gitignore @@ -1,3 +1,6 @@ **/artifacts/ **/artifacts/*.abi **/artifacts/*.bin + +# IAllowList.abi gets generated as a side effect when compiling interfaces that inherit from it +contracts/*/IAllowList.abi diff --git a/precompile/allowlist/allowlist.abi b/precompile/allowlist/allowlist.abi index 4e1c4f1fcb..3b55a1b3d4 100644 --- a/precompile/allowlist/allowlist.abi +++ b/precompile/allowlist/allowlist.abi @@ -101,4 +101,4 @@ "stateMutability": "nonpayable", "type": "function" } -] +] \ No newline at end of file diff --git a/precompile/allowlist/allowlisttest/bindings/compile.go b/precompile/allowlist/allowlisttest/bindings/compile.go index 5f61ec354a..5789cd2750 100644 --- a/precompile/allowlist/allowlisttest/bindings/compile.go +++ b/precompile/allowlist/allowlisttest/bindings/compile.go @@ -3,11 +3,13 @@ package bindings -// Step 1: Compile Solidity contracts to generate ABI and bin files -//go:generate solc-v0.8.30 -o artifacts --overwrite --abi --bin --base-path . precompile/=../../../ --evm-version cancun AllowListTest.sol -// Step 2: Generate Go bindings from the compiled artifacts -//go:generate go run github.com/ava-labs/libevm/cmd/abigen --pkg bindings --type IAllowList --abi artifacts/IAllowList.abi --bin artifacts/IAllowList.bin --out gen_allowlist_binding.go +// Step 1: Compile interface to generate ABI at top level +//go:generate sh -c "solc-v0.8.30 -o ../.. --overwrite --abi --pretty-json --evm-version cancun ../../IAllowList.sol && mv ../../IAllowList.abi ../../allowlist.abi" +// Step 2: Compile test contracts to generate ABI and bin files +//go:generate solc-v0.8.30 -o artifacts --overwrite --abi --bin --base-path . --metadata-hash none precompile/=../../../ --evm-version cancun AllowListTest.sol +// Step 3: Generate Go bindings from the compiled artifacts +//go:generate go run github.com/ava-labs/libevm/cmd/abigen --pkg bindings --type IAllowList --abi ../../allowlist.abi --bin artifacts/IAllowList.bin --out gen_allowlist_binding.go //go:generate go run github.com/ava-labs/libevm/cmd/abigen --pkg bindings --type AllowListTest --abi artifacts/AllowListTest.abi --bin artifacts/AllowListTest.bin --out gen_allowlisttest_binding.go -// Step 3: Replace import paths in generated binding to use subnet-evm instead of libevm +// Step 4: Replace import paths in generated binding to use subnet-evm instead of libevm // This is necessary because the libevm bindings package is not compatible with the subnet-evm simulated backend, which is used for testing. //go:generate sh -c "sed -i.bak -e 's|github.com/ava-labs/libevm/accounts/abi|github.com/ava-labs/subnet-evm/accounts/abi|g' -e 's|github.com/ava-labs/libevm/accounts/abi/bind|github.com/ava-labs/subnet-evm/accounts/abi/bind|g' gen_allowlist_binding.go gen_allowlisttest_binding.go && rm -f gen_allowlist_binding.go.bak gen_allowlisttest_binding.go.bak" diff --git a/precompile/allowlist/allowlisttest/bindings/gen_allowlisttest_binding.go b/precompile/allowlist/allowlisttest/bindings/gen_allowlisttest_binding.go index 03db18e3d4..c71b412983 100644 --- a/precompile/allowlist/allowlisttest/bindings/gen_allowlisttest_binding.go +++ b/precompile/allowlist/allowlisttest/bindings/gen_allowlisttest_binding.go @@ -32,7 +32,7 @@ var ( // AllowListTestMetaData contains all meta data concerning the AllowListTest contract. var AllowListTestMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"precompileAddr\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"deployContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"isAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"isEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"isManager\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"readAllowList\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"revoke\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setNone\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f5ffd5b50604051610b4b380380610b4b833981810160405281019061003191906100d4565b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506100ff565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100a38261007a565b9050919050565b6100b381610099565b81146100bd575f5ffd5b50565b5f815190506100ce816100aa565b92915050565b5f602082840312156100e9576100e8610076565b5b5f6100f6848285016100c0565b91505092915050565b610a3f8061010c5f395ff3fe608060405234801561000f575f5ffd5b506004361061009c575f3560e01c80638c6bfb3b116100645780638c6bfb3b1461012e5780639015d3711461014a578063d0ebdbe71461017a578063eb54dae114610196578063f3ae2415146101c65761009c565b80630aaf7043146100a057806324d7806c146100bc5780636cd5c39b146100ec578063704b6c02146100f657806374a8f10314610112575b5f5ffd5b6100ba60048036038101906100b5919061082d565b6101f6565b005b6100d660048036038101906100d1919061082d565b61027f565b6040516100e39190610872565b60405180910390f35b6100f4610322565b005b610110600480360381019061010b919061082d565b61034b565b005b61012c6004803603810190610127919061082d565b6103d4565b005b6101486004803603810190610143919061082d565b6104cb565b005b610164600480360381019061015f919061082d565b610554565b6040516101719190610872565b60405180910390f35b610194600480360381019061018f919061082d565b6105f7565b005b6101b060048036038101906101ab919061082d565b610680565b6040516101bd91906108a3565b60405180910390f35b6101e060048036038101906101db919061082d565b610720565b6040516101ed9190610872565b60405180910390f35b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630aaf7043826040518263ffffffff1660e01b815260040161024f91906108cb565b5f604051808303815f87803b158015610266575f5ffd5b505af1158015610278573d5f5f3e3d5ffd5b5050505050565b5f60025f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eb54dae1846040518263ffffffff1660e01b81526004016102db91906108cb565b602060405180830381865afa1580156102f6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031a919061090e565b149050919050565b60405161032e906107c3565b604051809103905ff080158015610347573d5f5f3e3d5ffd5b5050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663704b6c02826040518263ffffffff1660e01b81526004016103a491906108cb565b5f604051808303815f87803b1580156103bb575f5ffd5b505af11580156103cd573d5f5f3e3d5ffd5b5050505050565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043990610993565b60405180910390fd5b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c6bfb3b826040518263ffffffff1660e01b815260040161049b91906108cb565b5f604051808303815f87803b1580156104b2575f5ffd5b505af11580156104c4573d5f5f3e3d5ffd5b5050505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c6bfb3b826040518263ffffffff1660e01b815260040161052491906108cb565b5f604051808303815f87803b15801561053b575f5ffd5b505af115801561054d573d5f5f3e3d5ffd5b5050505050565b5f5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eb54dae1846040518263ffffffff1660e01b81526004016105af91906108cb565b602060405180830381865afa1580156105ca573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105ee919061090e565b14159050919050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0ebdbe7826040518263ffffffff1660e01b815260040161065091906108cb565b5f604051808303815f87803b158015610667575f5ffd5b505af1158015610679573d5f5f3e3d5ffd5b5050505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eb54dae1836040518263ffffffff1660e01b81526004016106da91906108cb565b602060405180830381865afa1580156106f5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610719919061090e565b9050919050565b5f60035f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eb54dae1846040518263ffffffff1660e01b815260040161077c91906108cb565b602060405180830381865afa158015610797573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bb919061090e565b149050919050565b6058806109b283390190565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6107fc826107d3565b9050919050565b61080c816107f2565b8114610816575f5ffd5b50565b5f8135905061082781610803565b92915050565b5f60208284031215610842576108416107cf565b5b5f61084f84828501610819565b91505092915050565b5f8115159050919050565b61086c81610858565b82525050565b5f6020820190506108855f830184610863565b92915050565b5f819050919050565b61089d8161088b565b82525050565b5f6020820190506108b65f830184610894565b92915050565b6108c5816107f2565b82525050565b5f6020820190506108de5f8301846108bc565b92915050565b6108ed8161088b565b81146108f7575f5ffd5b50565b5f81519050610908816108e4565b92915050565b5f60208284031215610923576109226107cf565b5b5f610930848285016108fa565b91505092915050565b5f82825260208201905092915050565b7f63616e6e6f74207265766f6b65206f776e20726f6c65000000000000000000005f82015250565b5f61097d601683610939565b915061098882610949565b602082019050919050565b5f6020820190508181035f8301526109aa81610971565b905091905056fe6080604052348015600e575f5ffd5b50603e80601a5f395ff3fe60806040525f5ffdfea2646970667358221220280b0c51a337cdf98d746d9c8ed316db6c18a84f720063878220cb6fa9d5ea6464736f6c634300081e0033a26469706673582212200dc8fedd92f2304306aa259642e205efcace5bb5b9cc8e715dd3ad698b81b89d64736f6c634300081e0033", + Bin: "0x608060405234801561000f575f5ffd5b50604051610af9380380610af9833981810160405281019061003191906100d4565b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506100ff565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100a38261007a565b9050919050565b6100b381610099565b81146100bd575f5ffd5b50565b5f815190506100ce816100aa565b92915050565b5f602082840312156100e9576100e8610076565b5b5f6100f6848285016100c0565b91505092915050565b6109ed8061010c5f395ff3fe608060405234801561000f575f5ffd5b506004361061009c575f3560e01c80638c6bfb3b116100645780638c6bfb3b1461012e5780639015d3711461014a578063d0ebdbe71461017a578063eb54dae114610196578063f3ae2415146101c65761009c565b80630aaf7043146100a057806324d7806c146100bc5780636cd5c39b146100ec578063704b6c02146100f657806374a8f10314610112575b5f5ffd5b6100ba60048036038101906100b5919061082d565b6101f6565b005b6100d660048036038101906100d1919061082d565b61027f565b6040516100e39190610872565b60405180910390f35b6100f4610322565b005b610110600480360381019061010b919061082d565b61034b565b005b61012c6004803603810190610127919061082d565b6103d4565b005b6101486004803603810190610143919061082d565b6104cb565b005b610164600480360381019061015f919061082d565b610554565b6040516101719190610872565b60405180910390f35b610194600480360381019061018f919061082d565b6105f7565b005b6101b060048036038101906101ab919061082d565b610680565b6040516101bd91906108a3565b60405180910390f35b6101e060048036038101906101db919061082d565b610720565b6040516101ed9190610872565b60405180910390f35b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630aaf7043826040518263ffffffff1660e01b815260040161024f91906108cb565b5f604051808303815f87803b158015610266575f5ffd5b505af1158015610278573d5f5f3e3d5ffd5b5050505050565b5f60025f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eb54dae1846040518263ffffffff1660e01b81526004016102db91906108cb565b602060405180830381865afa1580156102f6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031a919061090e565b149050919050565b60405161032e906107c3565b604051809103905ff080158015610347573d5f5f3e3d5ffd5b5050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663704b6c02826040518263ffffffff1660e01b81526004016103a491906108cb565b5f604051808303815f87803b1580156103bb575f5ffd5b505af11580156103cd573d5f5f3e3d5ffd5b5050505050565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043990610993565b60405180910390fd5b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c6bfb3b826040518263ffffffff1660e01b815260040161049b91906108cb565b5f604051808303815f87803b1580156104b2575f5ffd5b505af11580156104c4573d5f5f3e3d5ffd5b5050505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c6bfb3b826040518263ffffffff1660e01b815260040161052491906108cb565b5f604051808303815f87803b15801561053b575f5ffd5b505af115801561054d573d5f5f3e3d5ffd5b5050505050565b5f5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eb54dae1846040518263ffffffff1660e01b81526004016105af91906108cb565b602060405180830381865afa1580156105ca573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105ee919061090e565b14159050919050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0ebdbe7826040518263ffffffff1660e01b815260040161065091906108cb565b5f604051808303815f87803b158015610667575f5ffd5b505af1158015610679573d5f5f3e3d5ffd5b5050505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eb54dae1836040518263ffffffff1660e01b81526004016106da91906108cb565b602060405180830381865afa1580156106f5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610719919061090e565b9050919050565b5f60035f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eb54dae1846040518263ffffffff1660e01b815260040161077c91906108cb565b602060405180830381865afa158015610797573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bb919061090e565b149050919050565b602f806109b283390190565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6107fc826107d3565b9050919050565b61080c816107f2565b8114610816575f5ffd5b50565b5f8135905061082781610803565b92915050565b5f60208284031215610842576108416107cf565b5b5f61084f84828501610819565b91505092915050565b5f8115159050919050565b61086c81610858565b82525050565b5f6020820190506108855f830184610863565b92915050565b5f819050919050565b61089d8161088b565b82525050565b5f6020820190506108b65f830184610894565b92915050565b6108c5816107f2565b82525050565b5f6020820190506108de5f8301846108bc565b92915050565b6108ed8161088b565b81146108f7575f5ffd5b50565b5f81519050610908816108e4565b92915050565b5f60208284031215610923576109226107cf565b5b5f610930848285016108fa565b91505092915050565b5f82825260208201905092915050565b7f63616e6e6f74207265766f6b65206f776e20726f6c65000000000000000000005f82015250565b5f61097d601683610939565b915061098882610949565b602082019050919050565b5f6020820190508181035f8301526109aa81610971565b905091905056fe6080604052348015600e575f5ffd5b50601580601a5f395ff3fe60806040525f5ffdfea164736f6c634300081e000aa164736f6c634300081e000a", } // AllowListTestABI is the input ABI used to generate the binding from. diff --git a/precompile/contracts/feemanager/contract.abi b/precompile/contracts/feemanager/contract.abi index 0e49755fbf..24460671b1 100644 --- a/precompile/contracts/feemanager/contract.abi +++ b/precompile/contracts/feemanager/contract.abi @@ -108,6 +108,37 @@ "name": "FeeConfigChanged", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "role", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "oldRole", + "type": "uint256" + } + ], + "name": "RoleSet", + "type": "event" + }, { "inputs": [], "name": "getFeeConfig", @@ -288,4 +319,4 @@ "stateMutability": "nonpayable", "type": "function" } -] +] \ No newline at end of file diff --git a/precompile/contracts/feemanager/feemanagertest/bindings/compile.go b/precompile/contracts/feemanager/feemanagertest/bindings/compile.go index 28d9e6d29c..906afa44ea 100644 --- a/precompile/contracts/feemanager/feemanagertest/bindings/compile.go +++ b/precompile/contracts/feemanager/feemanagertest/bindings/compile.go @@ -3,11 +3,13 @@ package bindings -// Step 1: Compile Solidity contracts to generate ABI and bin files -//go:generate solc-v0.8.30 -o artifacts --overwrite --abi --bin --base-path ../../../../.. precompile/=precompile/ --evm-version cancun FeeManagerTest.sol -// Step 2: Generate Go bindings from the compiled artifacts -//go:generate go run github.com/ava-labs/libevm/cmd/abigen --pkg bindings --type IFeeManager --abi artifacts/IFeeManager.abi --bin artifacts/IFeeManager.bin --out gen_ifeemanager_binding.go +// Step 1: Compile interface to generate ABI at top level +//go:generate sh -c "solc-v0.8.30 -o ../.. --overwrite --abi --base-path ../../../../.. --pretty-json --evm-version cancun ../../IFeeManager.sol && mv ../../IFeeManager.abi ../../contract.abi" +// Step 2: Compile test contracts to generate ABI and bin files +//go:generate solc-v0.8.30 -o artifacts --overwrite --abi --bin --base-path ../../../../.. --metadata-hash none --evm-version cancun FeeManagerTest.sol +// Step 3: Generate Go bindings from the compiled artifacts +//go:generate go run github.com/ava-labs/libevm/cmd/abigen --pkg bindings --type IFeeManager --abi ../../contract.abi --bin artifacts/IFeeManager.bin --out gen_ifeemanager_binding.go //go:generate go run github.com/ava-labs/libevm/cmd/abigen --pkg bindings --type FeeManagerTest --abi artifacts/FeeManagerTest.abi --bin artifacts/FeeManagerTest.bin --out gen_feemanagertest_binding.go -// Step 3: Replace import paths in generated binding to use subnet-evm instead of libevm +// Step 4: Replace import paths in generated binding to use subnet-evm instead of libevm // This is necessary because the libevm bindings package is not compatible with the subnet-evm simulated backend, which is used for testing. //go:generate sh -c "sed -i.bak -e 's|github.com/ava-labs/libevm/accounts/abi|github.com/ava-labs/subnet-evm/accounts/abi|g' -e 's|github.com/ava-labs/libevm/accounts/abi/bind|github.com/ava-labs/subnet-evm/accounts/abi/bind|g' gen_ifeemanager_binding.go gen_feemanagertest_binding.go && rm -f gen_ifeemanager_binding.go.bak gen_feemanagertest_binding.go.bak" diff --git a/precompile/contracts/feemanager/feemanagertest/bindings/gen_feemanagertest_binding.go b/precompile/contracts/feemanager/feemanagertest/bindings/gen_feemanagertest_binding.go index 26819e00ca..a3f2b8a545 100644 --- a/precompile/contracts/feemanager/feemanagertest/bindings/gen_feemanagertest_binding.go +++ b/precompile/contracts/feemanager/feemanagertest/bindings/gen_feemanagertest_binding.go @@ -32,7 +32,7 @@ var ( // FeeManagerTestMetaData contains all meta data concerning the FeeManagerTest contract. var FeeManagerTestMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeManagerPrecompile\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"getFeeConfig\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"targetBlockRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minBaseFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"targetGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseFeeChangeDenominator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minBlockGasCost\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxBlockGasCost\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockGasCostStep\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFeeConfigLastChangedAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"targetBlockRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minBaseFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"targetGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseFeeChangeDenominator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minBlockGasCost\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxBlockGasCost\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockGasCostStep\",\"type\":\"uint256\"}],\"name\":\"setFeeConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f5ffd5b50604051610641380380610641833981810160405281019061003191906100d4565b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506100ff565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100a38261007a565b9050919050565b6100b381610099565b81146100bd575f5ffd5b50565b5f815190506100ce816100aa565b92915050565b5f602082840312156100e9576100e8610076565b5b5f6100f6848285016100c0565b91505092915050565b6105358061010c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c80635fbbc0d2146100435780638f10b586146100685780639e05549a14610084575b5f5ffd5b61004b6100a2565b60405161005f98979695949392919061029b565b60405180910390f35b610082600480360381019061007d9190610345565b610152565b005b61008c6101f0565b60405161009991906103f6565b60405180910390f35b5f5f5f5f5f5f5f5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635fbbc0d26040518163ffffffff1660e01b815260040161010060405180830381865afa158015610114573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101389190610423565b975097509750975097509750975097509091929394959697565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638f10b58689898989898989896040518963ffffffff1660e01b81526004016101b998979695949392919061029b565b5f604051808303815f87803b1580156101d0575f5ffd5b505af11580156101e2573d5f5f3e3d5ffd5b505050505050505050505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e05549a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561025a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061027e91906104d4565b905090565b5f819050919050565b61029581610283565b82525050565b5f610100820190506102af5f83018b61028c565b6102bc602083018a61028c565b6102c9604083018961028c565b6102d6606083018861028c565b6102e3608083018761028c565b6102f060a083018661028c565b6102fd60c083018561028c565b61030a60e083018461028c565b9998505050505050505050565b5f5ffd5b61032481610283565b811461032e575f5ffd5b50565b5f8135905061033f8161031b565b92915050565b5f5f5f5f5f5f5f5f610100898b03121561036257610361610317565b5b5f61036f8b828c01610331565b98505060206103808b828c01610331565b97505060406103918b828c01610331565b96505060606103a28b828c01610331565b95505060806103b38b828c01610331565b94505060a06103c48b828c01610331565b93505060c06103d58b828c01610331565b92505060e06103e68b828c01610331565b9150509295985092959890939650565b5f6020820190506104095f83018461028c565b92915050565b5f8151905061041d8161031b565b92915050565b5f5f5f5f5f5f5f5f610100898b0312156104405761043f610317565b5b5f61044d8b828c0161040f565b985050602061045e8b828c0161040f565b975050604061046f8b828c0161040f565b96505060606104808b828c0161040f565b95505060806104918b828c0161040f565b94505060a06104a28b828c0161040f565b93505060c06104b38b828c0161040f565b92505060e06104c48b828c0161040f565b9150509295985092959890939650565b5f602082840312156104e9576104e8610317565b5b5f6104f68482850161040f565b9150509291505056fea2646970667358221220a0d30c6a71cc81448b07e31dbe50504462c614e508e6503e50177269ac96bf8664736f6c634300081e0033", + Bin: "0x608060405234801561000f575f5ffd5b50604051610618380380610618833981810160405281019061003191906100d4565b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506100ff565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100a38261007a565b9050919050565b6100b381610099565b81146100bd575f5ffd5b50565b5f815190506100ce816100aa565b92915050565b5f602082840312156100e9576100e8610076565b5b5f6100f6848285016100c0565b91505092915050565b61050c8061010c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c80635fbbc0d2146100435780638f10b586146100685780639e05549a14610084575b5f5ffd5b61004b6100a2565b60405161005f98979695949392919061029b565b60405180910390f35b610082600480360381019061007d9190610345565b610152565b005b61008c6101f0565b60405161009991906103f6565b60405180910390f35b5f5f5f5f5f5f5f5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635fbbc0d26040518163ffffffff1660e01b815260040161010060405180830381865afa158015610114573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101389190610423565b975097509750975097509750975097509091929394959697565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638f10b58689898989898989896040518963ffffffff1660e01b81526004016101b998979695949392919061029b565b5f604051808303815f87803b1580156101d0575f5ffd5b505af11580156101e2573d5f5f3e3d5ffd5b505050505050505050505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e05549a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561025a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061027e91906104d4565b905090565b5f819050919050565b61029581610283565b82525050565b5f610100820190506102af5f83018b61028c565b6102bc602083018a61028c565b6102c9604083018961028c565b6102d6606083018861028c565b6102e3608083018761028c565b6102f060a083018661028c565b6102fd60c083018561028c565b61030a60e083018461028c565b9998505050505050505050565b5f5ffd5b61032481610283565b811461032e575f5ffd5b50565b5f8135905061033f8161031b565b92915050565b5f5f5f5f5f5f5f5f610100898b03121561036257610361610317565b5b5f61036f8b828c01610331565b98505060206103808b828c01610331565b97505060406103918b828c01610331565b96505060606103a28b828c01610331565b95505060806103b38b828c01610331565b94505060a06103c48b828c01610331565b93505060c06103d58b828c01610331565b92505060e06103e68b828c01610331565b9150509295985092959890939650565b5f6020820190506104095f83018461028c565b92915050565b5f8151905061041d8161031b565b92915050565b5f5f5f5f5f5f5f5f610100898b0312156104405761043f610317565b5b5f61044d8b828c0161040f565b985050602061045e8b828c0161040f565b975050604061046f8b828c0161040f565b96505060606104808b828c0161040f565b95505060806104918b828c0161040f565b94505060a06104a28b828c0161040f565b93505060c06104b38b828c0161040f565b92505060e06104c48b828c0161040f565b9150509295985092959890939650565b5f602082840312156104e9576104e8610317565b5b5f6104f68482850161040f565b9150509291505056fea164736f6c634300081e000a", } // FeeManagerTestABI is the input ABI used to generate the binding from. diff --git a/precompile/contracts/nativeminter/contract.abi b/precompile/contracts/nativeminter/contract.abi index 49655d790a..a13d1e864c 100644 --- a/precompile/contracts/nativeminter/contract.abi +++ b/precompile/contracts/nativeminter/contract.abi @@ -24,6 +24,37 @@ "name": "NativeCoinMinted", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "role", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "oldRole", + "type": "uint256" + } + ], + "name": "RoleSet", + "type": "event" + }, { "inputs": [ { @@ -113,4 +144,4 @@ "stateMutability": "nonpayable", "type": "function" } -] +] \ No newline at end of file diff --git a/precompile/contracts/nativeminter/nativemintertest/bindings/compile.go b/precompile/contracts/nativeminter/nativemintertest/bindings/compile.go index e04c069262..21c1110995 100644 --- a/precompile/contracts/nativeminter/nativemintertest/bindings/compile.go +++ b/precompile/contracts/nativeminter/nativemintertest/bindings/compile.go @@ -3,11 +3,13 @@ package bindings -// Step 1: Compile Solidity contracts to generate ABI and bin files -//go:generate solc-v0.8.30 -o artifacts --overwrite --abi --bin --base-path ../../../../.. precompile/=precompile/ --evm-version cancun NativeMinterTest.sol -// Step 2: Generate Go bindings from the compiled artifacts -//go:generate go run github.com/ava-labs/libevm/cmd/abigen --pkg bindings --type INativeMinter --abi artifacts/INativeMinter.abi --bin artifacts/INativeMinter.bin --out gen_inativeminter_binding.go +// Step 1: Compile interface to generate ABI at top level +//go:generate sh -c "solc-v0.8.30 -o ../.. --overwrite --abi --base-path ../../../../.. --pretty-json --evm-version cancun ../../INativeMinter.sol && mv ../../INativeMinter.abi ../../contract.abi" +// Step 2: Compile test contracts to generate ABI and bin files +//go:generate solc-v0.8.30 -o artifacts --overwrite --abi --bin --base-path ../../../../.. --metadata-hash none --evm-version cancun NativeMinterTest.sol +// Step 3: Generate Go bindings from the compiled artifacts +//go:generate go run github.com/ava-labs/libevm/cmd/abigen --pkg bindings --type INativeMinter --abi ../../contract.abi --bin artifacts/INativeMinter.bin --out gen_inativeminter_binding.go //go:generate go run github.com/ava-labs/libevm/cmd/abigen --pkg bindings --type NativeMinterTest --abi artifacts/NativeMinterTest.abi --bin artifacts/NativeMinterTest.bin --out gen_nativemintertest_binding.go -// Step 3: Replace import paths in generated binding to use subnet-evm instead of libevm +// Step 4: Replace import paths in generated binding to use subnet-evm instead of libevm // This is necessary because the libevm bindings package is not compatible with the subnet-evm simulated backend, which is used for testing. //go:generate sh -c "sed -i.bak -e 's|github.com/ava-labs/libevm/accounts/abi|github.com/ava-labs/subnet-evm/accounts/abi|g' -e 's|github.com/ava-labs/libevm/accounts/abi/bind|github.com/ava-labs/subnet-evm/accounts/abi/bind|g' gen_inativeminter_binding.go gen_nativemintertest_binding.go && rm -f gen_inativeminter_binding.go.bak gen_nativemintertest_binding.go.bak" diff --git a/precompile/contracts/nativeminter/nativemintertest/bindings/gen_nativemintertest_binding.go b/precompile/contracts/nativeminter/nativemintertest/bindings/gen_nativemintertest_binding.go index db0d4fbec2..40d1d31927 100644 --- a/precompile/contracts/nativeminter/nativemintertest/bindings/gen_nativemintertest_binding.go +++ b/precompile/contracts/nativeminter/nativemintertest/bindings/gen_nativemintertest_binding.go @@ -32,7 +32,7 @@ var ( // NativeMinterTestMetaData contains all meta data concerning the NativeMinterTest contract. var NativeMinterTestMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nativeMinterPrecompile\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintNativeCoin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x608060405234801561000f575f5ffd5b50604051610336380380610336833981810160405281019061003191906100d4565b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506100ff565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100a38261007a565b9050919050565b6100b381610099565b81146100bd575f5ffd5b50565b5f815190506100ce816100aa565b92915050565b5f602082840312156100e9576100e8610076565b5b5f6100f6848285016100c0565b91505092915050565b61022a8061010c5f395ff3fe608060405260043610610021575f3560e01c80634f5aaaba1461002c57610028565b3661002857005b5f5ffd5b348015610037575f5ffd5b50610052600480360381019061004d9190610171565b610054565b005b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634f5aaaba83836040518363ffffffff1660e01b81526004016100af9291906101cd565b5f604051808303815f87803b1580156100c6575f5ffd5b505af11580156100d8573d5f5f3e3d5ffd5b505050505050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61010d826100e4565b9050919050565b61011d81610103565b8114610127575f5ffd5b50565b5f8135905061013881610114565b92915050565b5f819050919050565b6101508161013e565b811461015a575f5ffd5b50565b5f8135905061016b81610147565b92915050565b5f5f60408385031215610187576101866100e0565b5b5f6101948582860161012a565b92505060206101a58582860161015d565b9150509250929050565b6101b881610103565b82525050565b6101c78161013e565b82525050565b5f6040820190506101e05f8301856101af565b6101ed60208301846101be565b939250505056fea2646970667358221220aaf5c98d65a5777337a287c8bf1b051ecdf968b03991ec36ce1e434d6a46297264736f6c634300081e0033", + Bin: "0x608060405234801561000f575f5ffd5b5060405161030d38038061030d833981810160405281019061003191906100d4565b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506100ff565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100a38261007a565b9050919050565b6100b381610099565b81146100bd575f5ffd5b50565b5f815190506100ce816100aa565b92915050565b5f602082840312156100e9576100e8610076565b5b5f6100f6848285016100c0565b91505092915050565b6102018061010c5f395ff3fe608060405260043610610021575f3560e01c80634f5aaaba1461002c57610028565b3661002857005b5f5ffd5b348015610037575f5ffd5b50610052600480360381019061004d9190610171565b610054565b005b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634f5aaaba83836040518363ffffffff1660e01b81526004016100af9291906101cd565b5f604051808303815f87803b1580156100c6575f5ffd5b505af11580156100d8573d5f5f3e3d5ffd5b505050505050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61010d826100e4565b9050919050565b61011d81610103565b8114610127575f5ffd5b50565b5f8135905061013881610114565b92915050565b5f819050919050565b6101508161013e565b811461015a575f5ffd5b50565b5f8135905061016b81610147565b92915050565b5f5f60408385031215610187576101866100e0565b5b5f6101948582860161012a565b92505060206101a58582860161015d565b9150509250929050565b6101b881610103565b82525050565b6101c78161013e565b82525050565b5f6040820190506101e05f8301856101af565b6101ed60208301846101be565b939250505056fea164736f6c634300081e000a", } // NativeMinterTestABI is the input ABI used to generate the binding from. diff --git a/precompile/contracts/rewardmanager/contract.abi b/precompile/contracts/rewardmanager/contract.abi index 5b80821de3..1fdbc77a3e 100644 --- a/precompile/contracts/rewardmanager/contract.abi +++ b/precompile/contracts/rewardmanager/contract.abi @@ -50,6 +50,37 @@ "name": "RewardsDisabled", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "role", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "oldRole", + "type": "uint256" + } + ], + "name": "RoleSet", + "type": "event" + }, { "inputs": [], "name": "allowFeeRecipients", @@ -174,4 +205,4 @@ "stateMutability": "nonpayable", "type": "function" } -] +] \ No newline at end of file diff --git a/precompile/contracts/rewardmanager/rewardmanagertest/bindings/compile.go b/precompile/contracts/rewardmanager/rewardmanagertest/bindings/compile.go index d9f4ed0fbc..249ff1f49d 100644 --- a/precompile/contracts/rewardmanager/rewardmanagertest/bindings/compile.go +++ b/precompile/contracts/rewardmanager/rewardmanagertest/bindings/compile.go @@ -3,11 +3,13 @@ package bindings -// Step 1: Compile Solidity contracts to generate ABI and bin files -//go:generate solc-v0.8.30 -o artifacts --overwrite --abi --bin --base-path ../../../../.. precompile/=precompile/ --evm-version cancun RewardManagerTest.sol -// Step 2: Generate Go bindings from the compiled artifacts -//go:generate go run github.com/ava-labs/libevm/cmd/abigen --pkg bindings --type IRewardManager --abi artifacts/IRewardManager.abi --bin artifacts/IRewardManager.bin --out gen_irewardmanager_binding.go +// Step 1: Compile interface to generate ABI at top level +//go:generate sh -c "solc-v0.8.30 -o ../.. --overwrite --abi --base-path ../../../../.. --pretty-json --evm-version cancun ../../IRewardManager.sol && mv ../../IRewardManager.abi ../../contract.abi" +// Step 2: Compile test contracts to generate ABI and bin files +//go:generate solc-v0.8.30 -o artifacts --overwrite --abi --bin --base-path ../../../../.. --metadata-hash none --evm-version cancun RewardManagerTest.sol +// Step 3: Generate Go bindings from the compiled artifacts +//go:generate go run github.com/ava-labs/libevm/cmd/abigen --pkg bindings --type IRewardManager --abi ../../contract.abi --bin artifacts/IRewardManager.bin --out gen_irewardmanager_binding.go //go:generate go run github.com/ava-labs/libevm/cmd/abigen --pkg bindings --type RewardManagerTest --abi artifacts/RewardManagerTest.abi --bin artifacts/RewardManagerTest.bin --out gen_rewardmanagertest_binding.go -// Step 3: Replace import paths in generated binding to use subnet-evm instead of libevm +// Step 4: Replace import paths in generated binding to use subnet-evm instead of libevm // This is necessary because the libevm bindings package is not compatible with the subnet-evm simulated backend, which is used for testing. //go:generate sh -c "sed -i.bak -e 's|github.com/ava-labs/libevm/accounts/abi|github.com/ava-labs/subnet-evm/accounts/abi|g' -e 's|github.com/ava-labs/libevm/accounts/abi/bind|github.com/ava-labs/subnet-evm/accounts/abi/bind|g' gen_irewardmanager_binding.go gen_rewardmanagertest_binding.go && rm -f gen_irewardmanager_binding.go.bak gen_rewardmanagertest_binding.go.bak" diff --git a/precompile/contracts/rewardmanager/rewardmanagertest/bindings/gen_rewardmanagertest_binding.go b/precompile/contracts/rewardmanager/rewardmanagertest/bindings/gen_rewardmanagertest_binding.go index 082c32c9cf..8c5d4155bc 100644 --- a/precompile/contracts/rewardmanager/rewardmanagertest/bindings/gen_rewardmanagertest_binding.go +++ b/precompile/contracts/rewardmanager/rewardmanagertest/bindings/gen_rewardmanagertest_binding.go @@ -32,7 +32,7 @@ var ( // RewardManagerTestMetaData contains all meta data concerning the RewardManagerTest contract. var RewardManagerTestMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardManagerPrecompile\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"allowFeeRecipients\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"areFeeRecipientsAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentRewardAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setRewardAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x608060405234801561000f575f5ffd5b50604051610663380380610663833981810160405281019061003191906100d4565b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506100ff565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100a38261007a565b9050919050565b6100b381610099565b81146100bd575f5ffd5b50565b5f815190506100ce816100aa565b92915050565b5f602082840312156100e9576100e8610076565b5b5f6100f6848285016100c0565b91505092915050565b6105578061010c5f395ff3fe60806040526004361061004d575f3560e01c80630329099f146100585780635e00e6791461006e578063bc17862814610096578063e915608b146100ac578063f6542b2e146100d657610054565b3661005457005b5f5ffd5b348015610063575f5ffd5b5061006c610100565b005b348015610079575f5ffd5b50610094600480360381019061008f9190610407565b61017d565b005b3480156100a1575f5ffd5b506100aa610206565b005b3480156100b7575f5ffd5b506100c0610283565b6040516100cd9190610441565b60405180910390f35b3480156100e1575f5ffd5b506100ea610316565b6040516100f79190610474565b60405180910390f35b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630329099f6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610165575f5ffd5b505af1158015610177573d5f5f3e3d5ffd5b50505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635e00e679826040518263ffffffff1660e01b81526004016101d69190610441565b5f604051808303815f87803b1580156101ed575f5ffd5b505af11580156101ff573d5f5f3e3d5ffd5b5050505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bc1786286040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561026b575f5ffd5b505af115801561027d573d5f5f3e3d5ffd5b50505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e915608b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102ed573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031191906104a1565b905090565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f6542b2e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610380573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103a491906104f6565b905090565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6103d6826103ad565b9050919050565b6103e6816103cc565b81146103f0575f5ffd5b50565b5f81359050610401816103dd565b92915050565b5f6020828403121561041c5761041b6103a9565b5b5f610429848285016103f3565b91505092915050565b61043b816103cc565b82525050565b5f6020820190506104545f830184610432565b92915050565b5f8115159050919050565b61046e8161045a565b82525050565b5f6020820190506104875f830184610465565b92915050565b5f8151905061049b816103dd565b92915050565b5f602082840312156104b6576104b56103a9565b5b5f6104c38482850161048d565b91505092915050565b6104d58161045a565b81146104df575f5ffd5b50565b5f815190506104f0816104cc565b92915050565b5f6020828403121561050b5761050a6103a9565b5b5f610518848285016104e2565b9150509291505056fea2646970667358221220c0805c3839e4cdda5cf3bb28b27dd8b8b54acb556f1d2c0bbb1fab193e30792e64736f6c634300081e0033", + Bin: "0x608060405234801561000f575f5ffd5b5060405161063a38038061063a833981810160405281019061003191906100d4565b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506100ff565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100a38261007a565b9050919050565b6100b381610099565b81146100bd575f5ffd5b50565b5f815190506100ce816100aa565b92915050565b5f602082840312156100e9576100e8610076565b5b5f6100f6848285016100c0565b91505092915050565b61052e8061010c5f395ff3fe60806040526004361061004d575f3560e01c80630329099f146100585780635e00e6791461006e578063bc17862814610096578063e915608b146100ac578063f6542b2e146100d657610054565b3661005457005b5f5ffd5b348015610063575f5ffd5b5061006c610100565b005b348015610079575f5ffd5b50610094600480360381019061008f9190610407565b61017d565b005b3480156100a1575f5ffd5b506100aa610206565b005b3480156100b7575f5ffd5b506100c0610283565b6040516100cd9190610441565b60405180910390f35b3480156100e1575f5ffd5b506100ea610316565b6040516100f79190610474565b60405180910390f35b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630329099f6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610165575f5ffd5b505af1158015610177573d5f5f3e3d5ffd5b50505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635e00e679826040518263ffffffff1660e01b81526004016101d69190610441565b5f604051808303815f87803b1580156101ed575f5ffd5b505af11580156101ff573d5f5f3e3d5ffd5b5050505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bc1786286040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561026b575f5ffd5b505af115801561027d573d5f5f3e3d5ffd5b50505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e915608b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102ed573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031191906104a1565b905090565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f6542b2e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610380573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103a491906104f6565b905090565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6103d6826103ad565b9050919050565b6103e6816103cc565b81146103f0575f5ffd5b50565b5f81359050610401816103dd565b92915050565b5f6020828403121561041c5761041b6103a9565b5b5f610429848285016103f3565b91505092915050565b61043b816103cc565b82525050565b5f6020820190506104545f830184610432565b92915050565b5f8115159050919050565b61046e8161045a565b82525050565b5f6020820190506104875f830184610465565b92915050565b5f8151905061049b816103dd565b92915050565b5f602082840312156104b6576104b56103a9565b5b5f6104c38482850161048d565b91505092915050565b6104d58161045a565b81146104df575f5ffd5b50565b5f815190506104f0816104cc565b92915050565b5f6020828403121561050b5761050a6103a9565b5b5f610518848285016104e2565b9150509291505056fea164736f6c634300081e000a", } // RewardManagerTestABI is the input ABI used to generate the binding from. diff --git a/precompile/contracts/warp/contract.abi b/precompile/contracts/warp/contract.abi index 771103ecbc..0bc05c499d 100644 --- a/precompile/contracts/warp/contract.abi +++ b/precompile/contracts/warp/contract.abi @@ -133,4 +133,4 @@ "stateMutability": "nonpayable", "type": "function" } -] +] \ No newline at end of file diff --git a/precompile/contracts/warp/warpbindings/compile.go b/precompile/contracts/warp/warpbindings/compile.go index 62cbdd5931..63f326619b 100644 --- a/precompile/contracts/warp/warpbindings/compile.go +++ b/precompile/contracts/warp/warpbindings/compile.go @@ -3,10 +3,12 @@ package warpbindings -// Step 1: Compile Solidity contract to generate ABI and bin files +// Step 1: Compile interface to generate ABI at top level +//go:generate sh -c "solc-v0.8.30 -o .. --overwrite --abi --pretty-json --evm-version cancun IWarpMessenger.sol && mv ../IWarpMessenger.abi ../contract.abi" +// Step 2: Compile to generate bin files in artifacts //go:generate solc-v0.8.30 -o artifacts --overwrite --abi --bin --evm-version cancun IWarpMessenger.sol -// Step 2: Generate Go bindings from the compiled artifacts -//go:generate go run github.com/ava-labs/libevm/cmd/abigen --pkg warpbindings --type IWarpMessenger --abi artifacts/IWarpMessenger.abi --bin artifacts/IWarpMessenger.bin --out gen_iwarpmessenger_binding.go -// Step 3: Replace import paths in generated binding to use subnet-evm instead of libevm +// Step 3: Generate Go bindings from the compiled artifacts +//go:generate go run github.com/ava-labs/libevm/cmd/abigen --pkg warpbindings --type IWarpMessenger --abi ../contract.abi --bin artifacts/IWarpMessenger.bin --out gen_iwarpmessenger_binding.go +// Step 4: Replace import paths in generated binding to use subnet-evm instead of libevm // This is necessary because the libevm bindings package is not compatible with the subnet-evm simulated backend, which is used for testing. //go:generate sh -c "sed -i.bak -e 's|github.com/ava-labs/libevm/accounts/abi|github.com/ava-labs/subnet-evm/accounts/abi|g' -e 's|github.com/ava-labs/libevm/accounts/abi/bind|github.com/ava-labs/subnet-evm/accounts/abi/bind|g' gen_iwarpmessenger_binding.go && rm -f gen_iwarpmessenger_binding.go.bak" diff --git a/precompile/contracts/warp/warptest/bindings/compile.go b/precompile/contracts/warp/warptest/bindings/compile.go index a97b8c5a14..3437a48d23 100644 --- a/precompile/contracts/warp/warptest/bindings/compile.go +++ b/precompile/contracts/warp/warptest/bindings/compile.go @@ -5,7 +5,7 @@ package bindings // Step 1: Compile Solidity contract to generate ABI and bin files // Uses base-path to resolve imports from the repo root -//go:generate solc-v0.8.30 -o artifacts --overwrite --abi --bin --base-path ../../../../.. precompile/=precompile/ --evm-version cancun WarpTest.sol +//go:generate solc-v0.8.30 -o artifacts --overwrite --abi --bin --base-path ../../../../.. --evm-version cancun WarpTest.sol // Step 2: Generate Go bindings from the compiled artifacts // WarpTest binding includes WarpMessage and WarpBlockHash struct definitions. // For event filtering, use the IWarpMessenger binding from the warpbindings package. diff --git a/precompile/contracts/warp/warptest/bindings/gen_warptest_binding.go b/precompile/contracts/warp/warptest/bindings/gen_warptest_binding.go index e73a86f4c7..128d5fe53c 100644 --- a/precompile/contracts/warp/warptest/bindings/gen_warptest_binding.go +++ b/precompile/contracts/warp/warptest/bindings/gen_warptest_binding.go @@ -45,7 +45,7 @@ type WarpMessage struct { // WarpTestMetaData contains all meta data concerning the WarpTest contract. var WarpTestMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"warpPrecompile\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"getBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpBlockHash\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"internalType\":\"structWarpBlockHash\",\"name\":\"warpBlockHash\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getVerifiedWarpMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"internalType\":\"structWarpMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"sendWarpMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f5ffd5b50604051610bd5380380610bd5833981810160405281019061003191906100d4565b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506100ff565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100a38261007a565b9050919050565b6100b381610099565b81146100bd575f5ffd5b50565b5f815190506100ce816100aa565b92915050565b5f602082840312156100e9576100e8610076565b5b5f6100f6848285016100c0565b91505092915050565b610ac98061010c5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c80634213cf781461004e5780636f8253501461006c578063ce7f59291461009d578063ee5b48eb146100ce575b5f5ffd5b6100566100fe565b60405161006391906103f1565b60405180910390f35b61008660048036038101906100819190610454565b610191565b6040516100949291906105a4565b60405180910390f35b6100b760048036038101906100b29190610454565b61023e565b6040516100c59291906105ff565b60405180910390f35b6100e860048036038101906100e39190610687565b6102e8565b6040516100f591906103f1565b60405180910390f35b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610168573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061018c91906106fc565b905090565b61019961038c565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f825350846040518263ffffffff1660e01b81526004016101f39190610736565b5f60405180830381865afa15801561020d573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906102359190610942565b91509150915091565b6102466103c1565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ce7f5929846040518263ffffffff1660e01b81526004016102a09190610736565b606060405180830381865afa1580156102bb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102df91906109e9565b91509150915091565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee5b48eb84846040518363ffffffff1660e01b8152600401610344929190610a71565b6020604051808303815f875af1158015610360573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061038491906106fc565b905092915050565b60405180606001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b60405180604001604052805f81526020015f81525090565b5f819050919050565b6103eb816103d9565b82525050565b5f6020820190506104045f8301846103e2565b92915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f63ffffffff82169050919050565b6104338161041b565b811461043d575f5ffd5b50565b5f8135905061044e8161042a565b92915050565b5f6020828403121561046957610468610413565b5b5f61047684828501610440565b91505092915050565b610488816103d9565b82525050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6104b78261048e565b9050919050565b6104c7816104ad565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61050f826104cd565b61051981856104d7565b93506105298185602086016104e7565b610532816104f5565b840191505092915050565b5f606083015f8301516105525f86018261047f565b50602083015161056560208601826104be565b506040830151848203604086015261057d8282610505565b9150508091505092915050565b5f8115159050919050565b61059e8161058a565b82525050565b5f6040820190508181035f8301526105bc818561053d565b90506105cb6020830184610595565b9392505050565b604082015f8201516105e65f85018261047f565b5060208201516105f9602085018261047f565b50505050565b5f6060820190506106125f8301856105d2565b61061f6040830184610595565b9392505050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261064757610646610626565b5b8235905067ffffffffffffffff8111156106645761066361062a565b5b6020830191508360018202830111156106805761067f61062e565b5b9250929050565b5f5f6020838503121561069d5761069c610413565b5b5f83013567ffffffffffffffff8111156106ba576106b9610417565b5b6106c685828601610632565b92509250509250929050565b6106db816103d9565b81146106e5575f5ffd5b50565b5f815190506106f6816106d2565b92915050565b5f6020828403121561071157610710610413565b5b5f61071e848285016106e8565b91505092915050565b6107308161041b565b82525050565b5f6020820190506107495f830184610727565b92915050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610789826104f5565b810181811067ffffffffffffffff821117156107a8576107a7610753565b5b80604052505050565b5f6107ba61040a565b90506107c68282610780565b919050565b5f5ffd5b6107d8816104ad565b81146107e2575f5ffd5b50565b5f815190506107f3816107cf565b92915050565b5f5ffd5b5f67ffffffffffffffff82111561081757610816610753565b5b610820826104f5565b9050602081019050919050565b5f61083f61083a846107fd565b6107b1565b90508281526020810184848401111561085b5761085a6107f9565b5b6108668482856104e7565b509392505050565b5f82601f83011261088257610881610626565b5b815161089284826020860161082d565b91505092915050565b5f606082840312156108b0576108af61074f565b5b6108ba60606107b1565b90505f6108c9848285016106e8565b5f8301525060206108dc848285016107e5565b602083015250604082015167ffffffffffffffff811115610900576108ff6107cb565b5b61090c8482850161086e565b60408301525092915050565b6109218161058a565b811461092b575f5ffd5b50565b5f8151905061093c81610918565b92915050565b5f5f6040838503121561095857610957610413565b5b5f83015167ffffffffffffffff81111561097557610974610417565b5b6109818582860161089b565b92505060206109928582860161092e565b9150509250929050565b5f604082840312156109b1576109b061074f565b5b6109bb60406107b1565b90505f6109ca848285016106e8565b5f8301525060206109dd848285016106e8565b60208301525092915050565b5f5f606083850312156109ff576109fe610413565b5b5f610a0c8582860161099c565b9250506040610a1d8582860161092e565b9150509250929050565b5f82825260208201905092915050565b828183375f83830152505050565b5f610a508385610a27565b9350610a5d838584610a37565b610a66836104f5565b840190509392505050565b5f6020820190508181035f830152610a8a818486610a45565b9050939250505056fea2646970667358221220fd090376a271210f41cb9aea97a1eb5a35544888114fab174f0cb3734b55ec7a64736f6c634300081e0033", + Bin: "0x608060405234801561000f575f5ffd5b50604051610bd5380380610bd5833981810160405281019061003191906100d4565b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506100ff565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100a38261007a565b9050919050565b6100b381610099565b81146100bd575f5ffd5b50565b5f815190506100ce816100aa565b92915050565b5f602082840312156100e9576100e8610076565b5b5f6100f6848285016100c0565b91505092915050565b610ac98061010c5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c80634213cf781461004e5780636f8253501461006c578063ce7f59291461009d578063ee5b48eb146100ce575b5f5ffd5b6100566100fe565b60405161006391906103f1565b60405180910390f35b61008660048036038101906100819190610454565b610191565b6040516100949291906105a4565b60405180910390f35b6100b760048036038101906100b29190610454565b61023e565b6040516100c59291906105ff565b60405180910390f35b6100e860048036038101906100e39190610687565b6102e8565b6040516100f591906103f1565b60405180910390f35b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610168573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061018c91906106fc565b905090565b61019961038c565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f825350846040518263ffffffff1660e01b81526004016101f39190610736565b5f60405180830381865afa15801561020d573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906102359190610942565b91509150915091565b6102466103c1565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ce7f5929846040518263ffffffff1660e01b81526004016102a09190610736565b606060405180830381865afa1580156102bb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102df91906109e9565b91509150915091565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee5b48eb84846040518363ffffffff1660e01b8152600401610344929190610a71565b6020604051808303815f875af1158015610360573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061038491906106fc565b905092915050565b60405180606001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b60405180604001604052805f81526020015f81525090565b5f819050919050565b6103eb816103d9565b82525050565b5f6020820190506104045f8301846103e2565b92915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f63ffffffff82169050919050565b6104338161041b565b811461043d575f5ffd5b50565b5f8135905061044e8161042a565b92915050565b5f6020828403121561046957610468610413565b5b5f61047684828501610440565b91505092915050565b610488816103d9565b82525050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6104b78261048e565b9050919050565b6104c7816104ad565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61050f826104cd565b61051981856104d7565b93506105298185602086016104e7565b610532816104f5565b840191505092915050565b5f606083015f8301516105525f86018261047f565b50602083015161056560208601826104be565b506040830151848203604086015261057d8282610505565b9150508091505092915050565b5f8115159050919050565b61059e8161058a565b82525050565b5f6040820190508181035f8301526105bc818561053d565b90506105cb6020830184610595565b9392505050565b604082015f8201516105e65f85018261047f565b5060208201516105f9602085018261047f565b50505050565b5f6060820190506106125f8301856105d2565b61061f6040830184610595565b9392505050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261064757610646610626565b5b8235905067ffffffffffffffff8111156106645761066361062a565b5b6020830191508360018202830111156106805761067f61062e565b5b9250929050565b5f5f6020838503121561069d5761069c610413565b5b5f83013567ffffffffffffffff8111156106ba576106b9610417565b5b6106c685828601610632565b92509250509250929050565b6106db816103d9565b81146106e5575f5ffd5b50565b5f815190506106f6816106d2565b92915050565b5f6020828403121561071157610710610413565b5b5f61071e848285016106e8565b91505092915050565b6107308161041b565b82525050565b5f6020820190506107495f830184610727565b92915050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610789826104f5565b810181811067ffffffffffffffff821117156107a8576107a7610753565b5b80604052505050565b5f6107ba61040a565b90506107c68282610780565b919050565b5f5ffd5b6107d8816104ad565b81146107e2575f5ffd5b50565b5f815190506107f3816107cf565b92915050565b5f5ffd5b5f67ffffffffffffffff82111561081757610816610753565b5b610820826104f5565b9050602081019050919050565b5f61083f61083a846107fd565b6107b1565b90508281526020810184848401111561085b5761085a6107f9565b5b6108668482856104e7565b509392505050565b5f82601f83011261088257610881610626565b5b815161089284826020860161082d565b91505092915050565b5f606082840312156108b0576108af61074f565b5b6108ba60606107b1565b90505f6108c9848285016106e8565b5f8301525060206108dc848285016107e5565b602083015250604082015167ffffffffffffffff811115610900576108ff6107cb565b5b61090c8482850161086e565b60408301525092915050565b6109218161058a565b811461092b575f5ffd5b50565b5f8151905061093c81610918565b92915050565b5f5f6040838503121561095857610957610413565b5b5f83015167ffffffffffffffff81111561097557610974610417565b5b6109818582860161089b565b92505060206109928582860161092e565b9150509250929050565b5f604082840312156109b1576109b061074f565b5b6109bb60406107b1565b90505f6109ca848285016106e8565b5f8301525060206109dd848285016106e8565b60208301525092915050565b5f5f606083850312156109ff576109fe610413565b5b5f610a0c8582860161099c565b9250506040610a1d8582860161092e565b9150509250929050565b5f82825260208201905092915050565b828183375f83830152505050565b5f610a508385610a27565b9350610a5d838584610a37565b610a66836104f5565b840190509392505050565b5f6020820190508181035f830152610a8a818486610a45565b9050939250505056fea2646970667358221220ba4ff905c1f42278a964bd105c2e98d6285165dbc92b6ed31176981c626f971a64736f6c634300081e0033", } // WarpTestABI is the input ABI used to generate the binding from.