From 886924910eedda0ea4c55c0e6847272680f62888 Mon Sep 17 00:00:00 2001 From: 0xKoiner Date: Mon, 6 Apr 2026 21:02:12 +0200 Subject: [PATCH] (del) Verify Json path --- src/data/contracts/registry.rs | 8 ---- src/helpers/pre_conditions.rs | 1 - src/types/config.rs | 1 - src/types/errors.rs | 2 - src/utils/verifier.rs | 88 ++++------------------------------ 5 files changed, 8 insertions(+), 92 deletions(-) diff --git a/src/data/contracts/registry.rs b/src/data/contracts/registry.rs index 1d004cd..922a1b9 100644 --- a/src/data/contracts/registry.rs +++ b/src/data/contracts/registry.rs @@ -19,7 +19,6 @@ pub const CONTRACTS: &[ContractSpec] = &[ creation_bytecode: Some(&hex!( "608060405234801561000f575f5ffd5b506040518060400160405280600981526020017f45524332304d6f636b00000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4532304d00000000000000000000000000000000000000000000000000000000815250816003908161008b91906102f1565b50806004908161009b91906102f1565b5050506103c0565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061011e57607f821691505b602082108103610131576101306100da565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026101937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610158565b61019d8683610158565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6101e16101dc6101d7846101b5565b6101be565b6101b5565b9050919050565b5f819050919050565b6101fa836101c7565b61020e610206826101e8565b848454610164565b825550505050565b5f5f905090565b610225610216565b6102308184846101f1565b505050565b5f5b828110156102565761024b5f82840161021d565b600181019050610237565b505050565b601f8211156102a957828211156102a85761027581610137565b61027e83610149565b61028785610149565b6020861015610294575f90505b8083016102a382840382610235565b505050505b5b505050565b5f82821c905092915050565b5f6102c95f19846008026102ae565b1980831691505092915050565b5f6102e183836102ba565b9150826002028217905092915050565b6102fa826100a3565b67ffffffffffffffff811115610313576103126100ad565b5b61031d8254610107565b61032882828561025b565b5f60209050601f831160018114610359575f8415610347578287015190505b61035185826102d6565b8655506103b8565b601f19841661036786610137565b5f5b8281101561038e57848901518255600182019150602085019450602081019050610369565b868310156103ab57848901516103a7601f8916826102ba565b8355505b6001600288020188555050505b505050505050565b610f14806103cd5f395ff3fe608060405234801561000f575f5ffd5b50600436106100a7575f3560e01c806340c10f191161006f57806340c10f191461016557806370a082311461018157806395d89b41146101b15780639dc29fac146101cf578063a9059cbb146101eb578063dd62ed3e1461021b576100a7565b806306fdde03146100ab578063095ea7b3146100c957806318160ddd146100f957806323b872dd14610117578063313ce56714610147575b5f5ffd5b6100b361024b565b6040516100c09190610bc3565b60405180910390f35b6100e360048036038101906100de9190610c74565b6102db565b6040516100f09190610ccc565b60405180910390f35b6101016102fd565b60405161010e9190610cf4565b60405180910390f35b610131600480360381019061012c9190610d0d565b610306565b60405161013e9190610ccc565b60405180910390f35b61014f610334565b60405161015c9190610d78565b60405180910390f35b61017f600480360381019061017a9190610c74565b61033c565b005b61019b60048036038101906101969190610d91565b61034a565b6040516101a89190610cf4565b60405180910390f35b6101b961038f565b6040516101c69190610bc3565b60405180910390f35b6101e960048036038101906101e49190610c74565b61041f565b005b61020560048036038101906102009190610c74565b61042d565b6040516102129190610ccc565b60405180910390f35b61023560048036038101906102309190610dbc565b61044f565b6040516102429190610cf4565b60405180910390f35b60606003805461025a90610e27565b80601f016020809104026020016040519081016040528092919081815260200182805461028690610e27565b80156102d15780601f106102a8576101008083540402835291602001916102d1565b820191905f5260205f20905b8154815290600101906020018083116102b457829003601f168201915b5050505050905090565b5f5f6102e56104d1565b90506102f28185856104d8565b600191505092915050565b5f600254905090565b5f5f6103106104d1565b905061031d8582856104ea565b61032885858561057d565b60019150509392505050565b5f6012905090565b610346828261066d565b5050565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60606004805461039e90610e27565b80601f01602080910402602001604051908101604052809291908181526020018280546103ca90610e27565b80156104155780601f106103ec57610100808354040283529160200191610415565b820191905f5260205f20905b8154815290600101906020018083116103f857829003601f168201915b5050505050905090565b61042982826106ec565b5050565b5f5f6104376104d1565b905061044481858561057d565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b6104e5838383600161076b565b505050565b5f6104f5848461044f565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156105775781811015610568578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161055f93929190610e66565b60405180910390fd5b61057684848484035f61076b565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036105ed575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016105e49190610e9b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361065d575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016106549190610e9b565b60405180910390fd5b61066883838361093a565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036106dd575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016106d49190610e9b565b60405180910390fd5b6106e85f838361093a565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361075c575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016107539190610e9b565b60405180910390fd5b610767825f8361093a565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036107db575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016107d29190610e9b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361084b575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016108429190610e9b565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610934578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161092b9190610cf4565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361098a578060025f82825461097e9190610ee1565b92505081905550610a58565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610a13578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610a0a93929190610e66565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a9f578060025f8282540392505081905550610ae9565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b469190610cf4565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610b9582610b53565b610b9f8185610b5d565b9350610baf818560208601610b6d565b610bb881610b7b565b840191505092915050565b5f6020820190508181035f830152610bdb8184610b8b565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610c1082610be7565b9050919050565b610c2081610c06565b8114610c2a575f5ffd5b50565b5f81359050610c3b81610c17565b92915050565b5f819050919050565b610c5381610c41565b8114610c5d575f5ffd5b50565b5f81359050610c6e81610c4a565b92915050565b5f5f60408385031215610c8a57610c89610be3565b5b5f610c9785828601610c2d565b9250506020610ca885828601610c60565b9150509250929050565b5f8115159050919050565b610cc681610cb2565b82525050565b5f602082019050610cdf5f830184610cbd565b92915050565b610cee81610c41565b82525050565b5f602082019050610d075f830184610ce5565b92915050565b5f5f5f60608486031215610d2457610d23610be3565b5b5f610d3186828701610c2d565b9350506020610d4286828701610c2d565b9250506040610d5386828701610c60565b9150509250925092565b5f60ff82169050919050565b610d7281610d5d565b82525050565b5f602082019050610d8b5f830184610d69565b92915050565b5f60208284031215610da657610da5610be3565b5b5f610db384828501610c2d565b91505092915050565b5f5f60408385031215610dd257610dd1610be3565b5b5f610ddf85828601610c2d565b9250506020610df085828601610c2d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610e3e57607f821691505b602082108103610e5157610e50610dfa565b5b50919050565b610e6081610c06565b82525050565b5f606082019050610e795f830186610e57565b610e866020830185610ce5565b610e936040830184610ce5565b949350505050565b5f602082019050610eae5f830184610e57565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610eeb82610c41565b9150610ef683610c41565b9250828201905080821115610f0e57610f0d610eb4565b5b9291505056" )), - verify_json_path: None, }, ContractSpec { name: "ERC20Reentrant", @@ -33,7 +32,6 @@ pub const CONTRACTS: &[ContractSpec] = &[ creation_bytecode: Some(&hex!( "608060405234801561000f575f5ffd5b506040518060400160405280600481526020017f54455354000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f5453540000000000000000000000000000000000000000000000000000000000815250816003908161008b91906102f1565b50806004908161009b91906102f1565b5050506103c0565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061011e57607f821691505b602082108103610131576101306100da565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026101937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610158565b61019d8683610158565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6101e16101dc6101d7846101b5565b6101be565b6101b5565b9050919050565b5f819050919050565b6101fa836101c7565b61020e610206826101e8565b848454610164565b825550505050565b5f5f905090565b610225610216565b6102308184846101f1565b505050565b5f5b828110156102565761024b5f82840161021d565b600181019050610237565b505050565b601f8211156102a957828211156102a85761027581610137565b61027e83610149565b61028785610149565b6020861015610294575f90505b8083016102a382840382610235565b505050505b5b505050565b5f82821c905092915050565b5f6102c95f19846008026102ae565b1980831691505092915050565b5f6102e183836102ba565b9150826002028217905092915050565b6102fa826100a3565b67ffffffffffffffff811115610313576103126100ad565b5b61031d8254610107565b61032882828561025b565b5f60209050601f831160018114610359575f8415610347578287015190505b61035185826102d6565b8655506103b8565b601f19841661036786610137565b5f5b8281101561038e57848901518255600182019150602085019450602081019050610369565b868310156103ab57848901516103a7601f8916826102ba565b8355505b6001600288020188555050505b505050505050565b61184b806103cd5f395ff3fe608060405234801561000f575f5ffd5b50600436106100a7575f3560e01c806370a082311161006f57806370a082311461016557806395d89b4114610195578063a0b5ffb0146101b3578063a9059cbb146101e3578063cd594b6314610213578063dd62ed3e1461022f576100a7565b806306fdde03146100ab578063095ea7b3146100c957806318160ddd146100f957806323b872dd14610117578063313ce56714610147575b5f5ffd5b6100b361025f565b6040516100c09190610f28565b60405180910390f35b6100e360048036038101906100de9190610fe6565b6102ef565b6040516100f0919061103e565b60405180910390f35b610101610311565b60405161010e9190611066565b60405180910390f35b610131600480360381019061012c919061107f565b61031a565b60405161013e919061103e565b60405180910390f35b61014f610348565b60405161015c91906110ea565b60405180910390f35b61017f600480360381019061017a9190611103565b610350565b60405161018c9190611066565b60405180910390f35b61019d610395565b6040516101aa9190610f28565b60405180910390f35b6101cd60048036038101906101c8919061125a565b610425565b6040516101da9190611306565b60405180910390f35b6101fd60048036038101906101f89190610fe6565b610439565b60405161020a919061103e565b60405180910390f35b61022d600480360381019061022891906113a6565b61045b565b005b61024960048036038101906102449190611417565b6104dd565b6040516102569190611066565b60405180910390f35b60606003805461026e90611482565b80601f016020809104026020016040519081016040528092919081815260200182805461029a90611482565b80156102e55780601f106102bc576101008083540402835291602001916102e5565b820191905f5260205f20905b8154815290600101906020018083116102c857829003601f168201915b5050505050905090565b5f5f6102f961055f565b9050610306818585610566565b600191505092915050565b5f600254905090565b5f5f61032461055f565b9050610331858285610578565b61033c85858561060b565b60019150509392505050565b5f6012905090565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6060600480546103a490611482565b80601f01602080910402602001604051908101604052809291908181526020018280546103d090611482565b801561041b5780601f106103f25761010080835404028352916020019161041b565b820191905f5260205f20905b8154815290600101906020018083116103fe57829003601f168201915b5050505050905090565b606061043183836106fb565b905092915050565b5f5f61044361055f565b905061045081858561060b565b600191505092915050565b8360055f6101000a81548160ff0219169083600281111561047f5761047e6114b2565b5b021790555082600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508181600691826104d692919061169a565b5050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b6105738383836001610710565b505050565b5f61058384846104dd565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81101561060557818110156105f6578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016105ed93929190611776565b60405180910390fd5b61060484848484035f610710565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361067b575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161067291906117ab565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036106eb575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016106e291906117ab565b60405180910390fd5b6106f68383836108df565b505050565b606061070883835f610b20565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610780575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161077791906117ab565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107f0575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016107e791906117ab565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156108d9578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108d09190611066565b60405180910390a35b50505050565b600160028111156108f3576108f26114b2565b5b60055f9054906101000a900460ff166002811115610914576109136114b2565b5b036109f8575f60055f6101000a81548160ff0219169083600281111561093d5761093c6114b2565b5b02179055506109f6600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166006805461097590611482565b80601f01602080910402602001604051908101604052809291908181526020018280546109a190611482565b80156109ec5780601f106109c3576101008083540402835291602001916109ec565b820191905f5260205f20905b8154815290600101906020018083116109cf57829003601f168201915b5050505050610425565b505b610a03838383610c5a565b600280811115610a1657610a156114b2565b5b60055f9054906101000a900460ff166002811115610a3757610a366114b2565b5b03610b1b575f60055f6101000a81548160ff02191690836002811115610a6057610a5f6114b2565b5b0217905550610b19600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068054610a9890611482565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac490611482565b8015610b0f5780601f10610ae657610100808354040283529160200191610b0f565b820191905f5260205f20905b815481529060010190602001808311610af257829003601f168201915b5050505050610425565b505b505050565b606081471015610b695747826040517fcf479181000000000000000000000000000000000000000000000000000000008152600401610b609291906117c4565b60405180910390fd5b5f610b75858486610e73565b9050808015610bab57505f610b88610e89565b1180610baa57505f8573ffffffffffffffffffffffffffffffffffffffff163b115b5b15610bc057610bb8610e90565b915050610c53565b8015610c0357846040517f9996b315000000000000000000000000000000000000000000000000000000008152600401610bfa91906117ab565b60405180910390fd5b5f610c0c610e89565b1115610c1f57610c1a610ead565b610c51565b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b9392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610caa578060025f828254610c9e9190611818565b92505081905550610d78565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610d33578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610d2a93929190611776565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dbf578060025f8282540392505081905550610e09565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e669190611066565b60405180910390a3505050565b5f5f5f83516020850186885af190509392505050565b5f3d905090565b606060405190503d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610efa82610eb8565b610f048185610ec2565b9350610f14818560208601610ed2565b610f1d81610ee0565b840191505092915050565b5f6020820190508181035f830152610f408184610ef0565b905092915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610f8282610f59565b9050919050565b610f9281610f78565b8114610f9c575f5ffd5b50565b5f81359050610fad81610f89565b92915050565b5f819050919050565b610fc581610fb3565b8114610fcf575f5ffd5b50565b5f81359050610fe081610fbc565b92915050565b5f5f60408385031215610ffc57610ffb610f51565b5b5f61100985828601610f9f565b925050602061101a85828601610fd2565b9150509250929050565b5f8115159050919050565b61103881611024565b82525050565b5f6020820190506110515f83018461102f565b92915050565b61106081610fb3565b82525050565b5f6020820190506110795f830184611057565b92915050565b5f5f5f6060848603121561109657611095610f51565b5b5f6110a386828701610f9f565b93505060206110b486828701610f9f565b92505060406110c586828701610fd2565b9150509250925092565b5f60ff82169050919050565b6110e4816110cf565b82525050565b5f6020820190506110fd5f8301846110db565b92915050565b5f6020828403121561111857611117610f51565b5b5f61112584828501610f9f565b91505092915050565b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61116c82610ee0565b810181811067ffffffffffffffff8211171561118b5761118a611136565b5b80604052505050565b5f61119d610f48565b90506111a98282611163565b919050565b5f67ffffffffffffffff8211156111c8576111c7611136565b5b6111d182610ee0565b9050602081019050919050565b828183375f83830152505050565b5f6111fe6111f9846111ae565b611194565b90508281526020810184848401111561121a57611219611132565b5b6112258482856111de565b509392505050565b5f82601f8301126112415761124061112e565b5b81356112518482602086016111ec565b91505092915050565b5f5f604083850312156112705761126f610f51565b5b5f61127d85828601610f9f565b925050602083013567ffffffffffffffff81111561129e5761129d610f55565b5b6112aa8582860161122d565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f6112d8826112b4565b6112e281856112be565b93506112f2818560208601610ed2565b6112fb81610ee0565b840191505092915050565b5f6020820190508181035f83015261131e81846112ce565b905092915050565b60038110611332575f5ffd5b50565b5f8135905061134381611326565b92915050565b5f5ffd5b5f5ffd5b5f5f83601f8401126113665761136561112e565b5b8235905067ffffffffffffffff81111561138357611382611349565b5b60208301915083600182028301111561139f5761139e61134d565b5b9250929050565b5f5f5f5f606085870312156113be576113bd610f51565b5b5f6113cb87828801611335565b94505060206113dc87828801610f9f565b935050604085013567ffffffffffffffff8111156113fd576113fc610f55565b5b61140987828801611351565b925092505092959194509250565b5f5f6040838503121561142d5761142c610f51565b5b5f61143a85828601610f9f565b925050602061144b85828601610f9f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061149957607f821691505b6020821081036114ac576114ab611455565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f82905092915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026115457fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261150a565b61154f868361150a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61158a61158561158084610fb3565b611567565b610fb3565b9050919050565b5f819050919050565b6115a383611570565b6115b76115af82611591565b848454611516565b825550505050565b5f5f905090565b6115ce6115bf565b6115d981848461159a565b505050565b5f5b828110156115ff576115f45f8284016115c6565b6001810190506115e0565b505050565b601f82111561165257828211156116515761161e816114e9565b611627836114fb565b611630856114fb565b602086101561163d575f90505b80830161164c828403826115de565b505050505b5b505050565b5f82821c905092915050565b5f6116725f1984600802611657565b1980831691505092915050565b5f61168a8383611663565b9150826002028217905092915050565b6116a483836114df565b67ffffffffffffffff8111156116bd576116bc611136565b5b6116c78254611482565b6116d2828285611604565b5f601f8311600181146116ff575f84156116ed578287013590505b6116f7858261167f565b86555061175e565b601f19841661170d866114e9565b5f5b828110156117345784890135825560018201915060208501945060208101905061170f565b86831015611751578489013561174d601f891682611663565b8355505b6001600288020188555050505b50505050505050565b61177081610f78565b82525050565b5f6060820190506117895f830186611767565b6117966020830185611057565b6117a36040830184611057565b949350505050565b5f6020820190506117be5f830184611767565b92915050565b5f6040820190506117d75f830185611057565b6117e46020830184611057565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61182282610fb3565b915061182d83610fb3565b9250828201905080821115611845576118446117eb565b5b9291505056" )), - verify_json_path: None, }, ContractSpec { name: "ERC20GetterHelper", @@ -47,7 +45,6 @@ pub const CONTRACTS: &[ContractSpec] = &[ creation_bytecode: Some(&hex!( "6080604052348015600e575f5ffd5b50610b588061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610060575f3560e01c80630198489214610064578063927da10514610080578063a86e35761461009c578063d449a832146100b8578063e4dc2aa4146100d4578063f7888aec146100f0575b5f5ffd5b61007e6004803603810190610079919061059f565b61010c565b005b61009a6004803603810190610095919061062f565b6101b7565b005b6100b660048036038101906100b1919061059f565b610272565b005b6100d260048036038101906100cd919061059f565b61031d565b005b6100ee60048036038101906100e9919061067f565b6103c5565b005b61010a600480360381019061010591906106aa565b61046d565b005b7f0485ca5375889f98baa3c2b6f4c5017f42445d46a8ea34301831f4c0656aeaef818273ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa158015610176573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061019e9190610824565b6040516101ac929190610918565b60405180910390a150565b7fe09eed224b4f51d932c9802d15235a4e3d83e6e98746fbd17672bfa0c68cf2a58383838673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e87876040518363ffffffff1660e01b8152600401610216929190610955565b602060405180830381865afa158015610231573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061025591906109af565b6040516102659493929190610a09565b60405180910390a1505050565b7f26e04705bb26a7efc42c2fc229535a30faa3fff9a04cd15ed4a729c9bc4d35bf818273ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa1580156102dc573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906103049190610824565b604051610312929190610918565b60405180910390a150565b7f85bc872b16b9db2e4ada370573ffd396602bfdacec01f732f2b5ab6f42f24435818273ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610388573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103ac9190610a82565b6040516103ba929190610abc565b60405180910390a150565b7f6485fd49c668ab31aa6e76b818c9492f82e9a3727f8dbd1ded1f7a785b2c982e818273ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610430573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045491906109af565b604051610462929190610ae3565b60405180910390a150565b7ffa069972e8d8e0f3228defb44d5b7c9bc6c3f08ef98bc7d6a31a5ad2993a979582828473ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b81526004016104c99190610b0a565b602060405180830381865afa1580156104e4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061050891906109af565b60405161051793929190610b23565b60405180910390a15050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61055d82610534565b9050919050565b5f61056e82610553565b9050919050565b61057e81610564565b8114610588575f5ffd5b50565b5f8135905061059981610575565b92915050565b5f602082840312156105b4576105b361052c565b5b5f6105c18482850161058b565b91505092915050565b5f6105d482610553565b9050919050565b6105e4816105ca565b81146105ee575f5ffd5b50565b5f813590506105ff816105db565b92915050565b61060e81610553565b8114610618575f5ffd5b50565b5f8135905061062981610605565b92915050565b5f5f5f606084860312156106465761064561052c565b5b5f610653868287016105f1565b93505060206106648682870161061b565b92505060406106758682870161061b565b9150509250925092565b5f602082840312156106945761069361052c565b5b5f6106a1848285016105f1565b91505092915050565b5f5f604083850312156106c0576106bf61052c565b5b5f6106cd858286016105f1565b92505060206106de8582860161061b565b9150509250929050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610736826106f0565b810181811067ffffffffffffffff8211171561075557610754610700565b5b80604052505050565b5f610767610523565b9050610773828261072d565b919050565b5f67ffffffffffffffff82111561079257610791610700565b5b61079b826106f0565b9050602081019050919050565b8281835e5f83830152505050565b5f6107c86107c384610778565b61075e565b9050828152602081018484840111156107e4576107e36106ec565b5b6107ef8482856107a8565b509392505050565b5f82601f83011261080b5761080a6106e8565b5b815161081b8482602086016107b6565b91505092915050565b5f602082840312156108395761083861052c565b5b5f82015167ffffffffffffffff81111561085657610855610530565b5b610862848285016107f7565b91505092915050565b5f819050919050565b5f61088e61088961088484610534565b61086b565b610534565b9050919050565b5f61089f82610874565b9050919050565b5f6108b082610895565b9050919050565b6108c0816108a6565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f6108ea826108c6565b6108f481856108d0565b93506109048185602086016107a8565b61090d816106f0565b840191505092915050565b5f60408201905061092b5f8301856108b7565b818103602083015261093d81846108e0565b90509392505050565b61094f81610553565b82525050565b5f6040820190506109685f830185610946565b6109756020830184610946565b9392505050565b5f819050919050565b61098e8161097c565b8114610998575f5ffd5b50565b5f815190506109a981610985565b92915050565b5f602082840312156109c4576109c361052c565b5b5f6109d18482850161099b565b91505092915050565b5f6109e482610895565b9050919050565b6109f4816109da565b82525050565b610a038161097c565b82525050565b5f608082019050610a1c5f8301876109eb565b610a296020830186610946565b610a366040830185610946565b610a4360608301846109fa565b95945050505050565b5f60ff82169050919050565b610a6181610a4c565b8114610a6b575f5ffd5b50565b5f81519050610a7c81610a58565b92915050565b5f60208284031215610a9757610a9661052c565b5b5f610aa484828501610a6e565b91505092915050565b610ab681610a4c565b82525050565b5f604082019050610acf5f8301856108b7565b610adc6020830184610aad565b9392505050565b5f604082019050610af65f8301856109eb565b610b0360208301846109fa565b9392505050565b5f602082019050610b1d5f830184610946565b92915050565b5f606082019050610b365f8301866109eb565b610b436020830185610946565b610b5060408301846109fa565b94935050505056" )), - verify_json_path: None, }, ContractSpec { name: "ERC20ExcessDecimalsMock", @@ -61,7 +58,6 @@ pub const CONTRACTS: &[ContractSpec] = &[ creation_bytecode: Some(&hex!( "6080604052348015600e575f5ffd5b50609880601a5f395ff3fe6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063313ce56714602a575b5f5ffd5b60306044565b604051603b91906081565b60405180910390f35b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905090565b5f819050919050565b607b81606b565b82525050565b5f60208201905060925f8301846074565b9291505056" )), - verify_json_path: None, }, ContractSpec { name: "ERC1363ReceiverMock", @@ -75,7 +71,6 @@ pub const CONTRACTS: &[ContractSpec] = &[ creation_bytecode: Some(&hex!( "6080604052348015600e575f5ffd5b506388a7ca5c60e01b5f5f6101000a81548163ffffffff021916908360e01c02179055505f5f60046101000a81548160ff021916908360048111156053576052605c565b5b02179055506089565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6106c4806100965f395ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c8063793179851461003857806388a7ca5c14610054575b5f5ffd5b610052600480360381019061004d9190610326565b610084565b005b61006e60048036038101906100699190610452565b6100cd565b60405161007b91906104e5565b60405180910390f35b815f5f6101000a81548163ffffffff021916908360e01c0217905550805f60046101000a81548160ff021916908360048111156100c4576100c36104fe565b5b02179055505050565b5f600160048111156100e2576100e16104fe565b5b5f60049054906101000a900460ff166004811115610103576101026104fe565b5b0361010c575f5ffd5b600260048111156101205761011f6104fe565b5b5f60049054906101000a900460ff166004811115610141576101406104fe565b5b03610181576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161017890610585565b60405180910390fd5b60036004811115610195576101946104fe565b5b5f60049054906101000a900460ff1660048111156101b6576101b56104fe565b5b03610205575f5f9054906101000a900460e01b6040517f66435bc00000000000000000000000000000000000000000000000000000000081526004016101fc91906104e5565b60405180910390fd5b600480811115610218576102176104fe565b5b5f60049054906101000a900460ff166004811115610239576102386104fe565b5b0361024f575f5f5f61024b91906105d0565b9050505b7ed9411ae77b2bacabe5cbe62a2abdbeb78992a0182c6f3c83e0029c7615d6b68686868686604051610285959493929190610678565b60405180910390a15f5f9054906101000a900460e01b905095945050505050565b5f5ffd5b5f5ffd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6102e2816102ae565b81146102ec575f5ffd5b50565b5f813590506102fd816102d9565b92915050565b6005811061030f575f5ffd5b50565b5f8135905061032081610303565b92915050565b5f5f6040838503121561033c5761033b6102a6565b5b5f610349858286016102ef565b925050602061035a85828601610312565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61038d82610364565b9050919050565b61039d81610383565b81146103a7575f5ffd5b50565b5f813590506103b881610394565b92915050565b5f819050919050565b6103d0816103be565b81146103da575f5ffd5b50565b5f813590506103eb816103c7565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f840112610412576104116103f1565b5b8235905067ffffffffffffffff81111561042f5761042e6103f5565b5b60208301915083600182028301111561044b5761044a6103f9565b5b9250929050565b5f5f5f5f5f6080868803121561046b5761046a6102a6565b5b5f610478888289016103aa565b9550506020610489888289016103aa565b945050604061049a888289016103dd565b935050606086013567ffffffffffffffff8111156104bb576104ba6102aa565b5b6104c7888289016103fd565b92509250509295509295909350565b6104df816102ae565b82525050565b5f6020820190506104f85f8301846104d6565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f82825260208201905092915050565b7f4552433133363352656365697665724d6f636b3a20726576657274696e6700005f82015250565b5f61056f601e8361052b565b915061057a8261053b565b602082019050919050565b5f6020820190508181035f83015261059c81610563565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6105da826103be565b91506105e5836103be565b9250826105f5576105f46105a3565b5b828204905092915050565b61060981610383565b82525050565b610618816103be565b82525050565b5f82825260208201905092915050565b828183375f83830152505050565b5f601f19601f8301169050919050565b5f610657838561061e565b935061066483858461062e565b61066d8361063c565b840190509392505050565b5f60808201905061068b5f830188610600565b6106986020830187610600565b6106a5604083018661060f565b81810360608301526106b881848661064c565b9050969550505050505056" )), - verify_json_path: None, }, ContractSpec { name: "ApproveAndSwapKyberSwapHook", @@ -87,7 +82,6 @@ pub const CONTRACTS: &[ContractSpec] = &[ )), constructor_args: None, creation_bytecode: None, - verify_json_path: None, }, // Add more contracts here: // ContractSpec { @@ -98,7 +92,6 @@ pub const CONTRACTS: &[ContractSpec] = &[ // deployer_tx: &hex!("6080604052..."), // constructor_args: Some(&hex!("0000...")), // creation_bytecode: None, - // verify_json_path: Some("contracts/verify/1234...5678.json"), // }, ]; @@ -153,6 +146,5 @@ pub fn build_contract_spec_from_args( deployer_tx: None, constructor_args, creation_bytecode: Some(creation_bytecode), - verify_json_path: None, } } diff --git a/src/helpers/pre_conditions.rs b/src/helpers/pre_conditions.rs index 8efeacd..3882e2d 100644 --- a/src/helpers/pre_conditions.rs +++ b/src/helpers/pre_conditions.rs @@ -40,7 +40,6 @@ pub fn check_before(contract_to_deploy: Option<&ContractSpec>, args: &CliArgs) { info!("Resolved contract: {}", spec.name); info!("Address contract: {:?}", spec.address); info!("Path contract: {:?}", spec.path); - info!("verify_json_path contract: {:?}", spec.verify_json_path); info!("salt contract: {:?}", spec.salt); if spec.deployer_tx.is_some() { diff --git a/src/types/config.rs b/src/types/config.rs index 3edaa0f..6f80410 100644 --- a/src/types/config.rs +++ b/src/types/config.rs @@ -42,7 +42,6 @@ pub struct ContractSpec { pub deployer_tx: Option<&'static [u8]>, pub constructor_args: Option<&'static [u8]>, pub creation_bytecode: Option<&'static [u8]>, - pub verify_json_path: Option<&'static str>, } #[derive(Deserialize)] diff --git a/src/types/errors.rs b/src/types/errors.rs index ffb2f9c..2679b45 100644 --- a/src/types/errors.rs +++ b/src/types/errors.rs @@ -114,8 +114,6 @@ pub enum VerifierError { MissingAddress(&'static str), #[error("Missing contract source path for '{0}'")] MissingContractPath(&'static str), - #[error("Failed to read verify JSON for '{0}': {1}")] - ReadFailed(&'static str, String), #[error("Missing env var: {0}")] MissingEnvVar(&'static str), #[error("Unsupported chain for verification: {0}")] diff --git a/src/utils/verifier.rs b/src/utils/verifier.rs index 6dfacd6..64f0985 100644 --- a/src/utils/verifier.rs +++ b/src/utils/verifier.rs @@ -1,7 +1,6 @@ use serde_json::{Map, Value, from_str}; use std::borrow::Cow; use std::env::var; -use std::fs::read_to_string; use std::process::Command; use std::process::Output; use std::sync::Arc; @@ -301,86 +300,15 @@ pub async fn verify_contract( let api_key: String = var(Constants::ETHERSCAN_API_KEY_ENV) .map_err(|_| VerifierError::MissingEnvVar(Constants::ETHERSCAN_API_KEY_ENV))?; - if let Some(verify_path) = spec.verify_json_path { - verify_via_etherscan_api( - spec, - address, - contract_path, - chain, - chain_id, - &api_key, - verify_path, - ) - .await - } else { - let contract_id: String = format!("{contract_path}:{}", spec.name); - let name: &str = spec.name; - let cargs: Option<&[u8]> = spec.constructor_args; - - spawn_blocking(move || { - verify_via_forge_sync(name, address, &contract_id, chain_id, &api_key, cargs) - }) - .await - .map_err(|e| VerifierError::VerificationFailed(spec.name, e.to_string()))? - } -} - -async fn verify_via_etherscan_api( - spec: &ContractSpec, - address: Address, - contract_path: &str, - chain: &str, - chain_id: u64, - api_key: &str, - verify_path: &str, -) -> Result { - let compiler_version: String = var(Constants::SOLC_VERSION_ENV) - .map_err(|_| VerifierError::MissingEnvVar(Constants::SOLC_VERSION_ENV))?; - - let source_code: String = read_to_string(verify_path) - .map_err(|e| VerifierError::ReadFailed(spec.name, e.to_string()))?; - - let contract_name: String = format!("{contract_path}:{}", spec.name); - let constructor_args: String = spec.constructor_args.map(hex::encode).unwrap_or_default(); - - let client: Client = reqwest::Client::new(); - let submit_url: String = format!( - "{}?module=contract&action=verifysourcecode&chainid={chain_id}&apikey={api_key}", - Constants::ETHERSCAN_V2_URL - ); - - let addr_str: String = format!("{address}"); - let body: String = build_form_body(&[ - ("contractaddress", &addr_str), - ("sourceCode", &source_code), - ("codeformat", "solidity-standard-json-input"), - ("contractname", &contract_name), - ("compilerversion", &compiler_version), - ("constructorArguements", &constructor_args), - ]); - - let resp: EtherscanResponse = client - .post(&submit_url) - .header("Content-Type", "application/x-www-form-urlencoded") - .body(body) - .send() - .await - .map_err(|e| VerifierError::HttpError(spec.name, e.to_string()))? - .json() - .await - .map_err(|e| VerifierError::HttpError(spec.name, e.to_string()))?; - - if resp.status != "1" { - return Err(VerifierError::SubmissionFailed(spec.name, resp.result)); - } - - let guid: String = resp.result; - info!( - "Verification submitted for '{}' on {chain} (guid: {guid})", - spec.name - ); + let contract_id: String = format!("{contract_path}:{}", spec.name); + let name: &str = spec.name; + let cargs: Option<&[u8]> = spec.constructor_args; - poll_verification_status(&client, chain_id, api_key, &guid, spec.name).await + spawn_blocking(move || { + verify_via_forge_sync(name, address, &contract_id, chain_id, &api_key, cargs) + }) + .await + .map_err(|e| VerifierError::VerificationFailed(spec.name, e.to_string()))? } pub async fn run_verifications(