From 3d917f1df083c91e85d03f35d3af3564aca81c08 Mon Sep 17 00:00:00 2001 From: Erik Reppel Date: Fri, 26 Apr 2024 09:18:31 -0400 Subject: [PATCH] Deploy contract and test connecting bootnodes (#58) * Deploy contract and test connecting bootnodes * Update block number --- .../7777777/run-latest.json | 159 ++++++++++++++++++ .../DeployMintpoolTrustedNodeRegistry.sol | 31 ++-- src/chain.rs | 34 +++- src/premints/zora_premint_v2/rules.rs | 12 +- src/run.rs | 6 +- 5 files changed, 216 insertions(+), 26 deletions(-) create mode 100644 contracts/broadcast/DeployMintpoolTrustedNodeRegistry.sol/7777777/run-latest.json diff --git a/contracts/broadcast/DeployMintpoolTrustedNodeRegistry.sol/7777777/run-latest.json b/contracts/broadcast/DeployMintpoolTrustedNodeRegistry.sol/7777777/run-latest.json new file mode 100644 index 0000000..d59ecbc --- /dev/null +++ b/contracts/broadcast/DeployMintpoolTrustedNodeRegistry.sol/7777777/run-latest.json @@ -0,0 +1,159 @@ +{ + "transactions": [ + { + "hash": "0x4995776a9f75c51ca389fba3bc5635aa9b8c246476ae9ddfb020b63fba44be60", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x0000000000ffe8b47b3e2130213b802212439497", + "function": "safeCreate2(bytes32,bytes)", + "arguments": [ + "0x00000000000000000000000000000000000000007a58e80278dae600cc595960", + "0x608060405234801561001057600080fd5b5061091f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063de4d613c1161005b578063de4d613c14610117578063e5df2e311461012c578063f2fde38b1461013f578063f5e032571461015257600080fd5b8063714e78dc1461008d5780638da5cb5b146100b5578063a1ea8e8d146100e0578063a75cc25614610100575b600080fd5b6100a061009b366004610636565b610165565b60405190151581526020015b60405180910390f35b6000546100c8906001600160a01b031681565b6040516001600160a01b0390911681526020016100ac565b6100f36100ee366004610712565b61018e565b6040516100ac9190610747565b61010960025481565b6040519081526020016100ac565b61012a610125366004610636565b610241565b005b61012a61013a366004610636565b6102e6565b61012a61014d3660046107a9565b61031c565b61012a6101603660046107cb565b610391565b60006001600061017484610425565b815260208101919091526040016000205460ff1692915050565b60606000825167ffffffffffffffff8111156101ac576101ac61057f565b6040519080825280602002602001820160405280156101d5578160200160208202803683370190505b50905060005b835181101561023a576102068482815181106101f9576101f9610819565b6020026020010151610165565b82828151811061021857610218610819565b911515602092830291909101909101528061023281610845565b9150506101db565b5092915050565b6000546001600160a01b031633146102745760405162461bcd60e51b815260040161026b9061085e565b60405180910390fd5b600061027f82610425565b6000818152600160205260408120805460ff1916905560028054929350906102a683610884565b91905055507f20da8b688d4d950eb28321dbcb7f94be8dd4cc6a9a6540a032a25a8f4f68c5d0826040516102da919061089b565b60405180910390a15050565b6000546001600160a01b031633146103105760405162461bcd60e51b815260040161026b9061085e565b61031981610455565b50565b6000546001600160a01b031633146103465760405162461bcd60e51b815260040161026b9061085e565b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600254156103d75760405162461bcd60e51b81526020600482015260136024820152721053149150511657d253925512505312569151606a1b604482015260640161026b565b60005b8251811015610417576104058382815181106103f8576103f8610819565b6020026020010151610455565b8061040f81610845565b9150506103da565b5061042181610534565b5050565b600081604051602001610438919061089b565b604051602081830303815290604052805190602001209050919050565b600081604051602001610468919061089b565b60408051601f1981840301815291815281516020928301206000818152600190935291205490915060ff16156104d75760405162461bcd60e51b81526020600482015260146024820152731393d11157d053149150511657d5149554d5115160621b604482015260640161026b565b60008181526001602081905260408220805460ff19169091179055600280549161050083610845565b91905055507f8f95125be1a08fd393426193587ff719a43ca451452c07ce27ab36eb174f3ec6826040516102da919061089b565b600080546001600160a01b0319166001600160a01b03831690811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156105be576105be61057f565b604052919050565b600082601f8301126105d757600080fd5b813567ffffffffffffffff8111156105f1576105f161057f565b610604601f8201601f1916602001610595565b81815284602083860101111561061957600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561064857600080fd5b813567ffffffffffffffff81111561065f57600080fd5b61066b848285016105c6565b949350505050565b600082601f83011261068457600080fd5b8135602067ffffffffffffffff808311156106a1576106a161057f565b8260051b6106b0838201610595565b93845285810183019383810190888611156106ca57600080fd5b84880192505b85831015610706578235848111156106e85760008081fd5b6106f68a87838c01016105c6565b83525091840191908401906106d0565b98975050505050505050565b60006020828403121561072457600080fd5b813567ffffffffffffffff81111561073b57600080fd5b61066b84828501610673565b6020808252825182820181905260009190848201906040850190845b81811015610781578351151583529284019291840191600101610763565b50909695505050505050565b80356001600160a01b03811681146107a457600080fd5b919050565b6000602082840312156107bb57600080fd5b6107c48261078d565b9392505050565b600080604083850312156107de57600080fd5b823567ffffffffffffffff8111156107f557600080fd5b61080185828601610673565b9250506108106020840161078d565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016108575761085761082f565b5060010190565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b6000816108935761089361082f565b506000190190565b600060208083528351808285015260005b818110156108c8578581018301518582016040015282016108ac565b506000604082860101526040601f19601f830116850101925050509291505056fea26469706673582212206aba202ffd77161f9261c8c07acdd20d2329746e63ef1b087173dc7cdb4ca93a64736f6c63430008110033" + ], + "transaction": { + "from": "0x9bfa880f643b2d7c276b16e89850f1ec3afb2e1d", + "to": "0x0000000000ffe8b47b3e2130213b802212439497", + "gas": "0xc6a75", + "value": "0x0", + "input": "0x64e0308700000000000000000000000000000000000000007a58e80278dae600cc5959600000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000093f608060405234801561001057600080fd5b5061091f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063de4d613c1161005b578063de4d613c14610117578063e5df2e311461012c578063f2fde38b1461013f578063f5e032571461015257600080fd5b8063714e78dc1461008d5780638da5cb5b146100b5578063a1ea8e8d146100e0578063a75cc25614610100575b600080fd5b6100a061009b366004610636565b610165565b60405190151581526020015b60405180910390f35b6000546100c8906001600160a01b031681565b6040516001600160a01b0390911681526020016100ac565b6100f36100ee366004610712565b61018e565b6040516100ac9190610747565b61010960025481565b6040519081526020016100ac565b61012a610125366004610636565b610241565b005b61012a61013a366004610636565b6102e6565b61012a61014d3660046107a9565b61031c565b61012a6101603660046107cb565b610391565b60006001600061017484610425565b815260208101919091526040016000205460ff1692915050565b60606000825167ffffffffffffffff8111156101ac576101ac61057f565b6040519080825280602002602001820160405280156101d5578160200160208202803683370190505b50905060005b835181101561023a576102068482815181106101f9576101f9610819565b6020026020010151610165565b82828151811061021857610218610819565b911515602092830291909101909101528061023281610845565b9150506101db565b5092915050565b6000546001600160a01b031633146102745760405162461bcd60e51b815260040161026b9061085e565b60405180910390fd5b600061027f82610425565b6000818152600160205260408120805460ff1916905560028054929350906102a683610884565b91905055507f20da8b688d4d950eb28321dbcb7f94be8dd4cc6a9a6540a032a25a8f4f68c5d0826040516102da919061089b565b60405180910390a15050565b6000546001600160a01b031633146103105760405162461bcd60e51b815260040161026b9061085e565b61031981610455565b50565b6000546001600160a01b031633146103465760405162461bcd60e51b815260040161026b9061085e565b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600254156103d75760405162461bcd60e51b81526020600482015260136024820152721053149150511657d253925512505312569151606a1b604482015260640161026b565b60005b8251811015610417576104058382815181106103f8576103f8610819565b6020026020010151610455565b8061040f81610845565b9150506103da565b5061042181610534565b5050565b600081604051602001610438919061089b565b604051602081830303815290604052805190602001209050919050565b600081604051602001610468919061089b565b60408051601f1981840301815291815281516020928301206000818152600190935291205490915060ff16156104d75760405162461bcd60e51b81526020600482015260146024820152731393d11157d053149150511657d5149554d5115160621b604482015260640161026b565b60008181526001602081905260408220805460ff19169091179055600280549161050083610845565b91905055507f8f95125be1a08fd393426193587ff719a43ca451452c07ce27ab36eb174f3ec6826040516102da919061089b565b600080546001600160a01b0319166001600160a01b03831690811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156105be576105be61057f565b604052919050565b600082601f8301126105d757600080fd5b813567ffffffffffffffff8111156105f1576105f161057f565b610604601f8201601f1916602001610595565b81815284602083860101111561061957600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561064857600080fd5b813567ffffffffffffffff81111561065f57600080fd5b61066b848285016105c6565b949350505050565b600082601f83011261068457600080fd5b8135602067ffffffffffffffff808311156106a1576106a161057f565b8260051b6106b0838201610595565b93845285810183019383810190888611156106ca57600080fd5b84880192505b85831015610706578235848111156106e85760008081fd5b6106f68a87838c01016105c6565b83525091840191908401906106d0565b98975050505050505050565b60006020828403121561072457600080fd5b813567ffffffffffffffff81111561073b57600080fd5b61066b84828501610673565b6020808252825182820181905260009190848201906040850190845b81811015610781578351151583529284019291840191600101610763565b50909695505050505050565b80356001600160a01b03811681146107a457600080fd5b919050565b6000602082840312156107bb57600080fd5b6107c48261078d565b9392505050565b600080604083850312156107de57600080fd5b823567ffffffffffffffff8111156107f557600080fd5b61080185828601610673565b9250506108106020840161078d565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016108575761085761082f565b5060010190565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b6000816108935761089361082f565b506000190190565b600060208083528351808285015260005b818110156108c8578581018301518582016040015282016108ac565b506000604082860101526040601f19601f830116850101925050509291505056fea26469706673582212206aba202ffd77161f9261c8c07acdd20d2329746e63ef1b087173dc7cdb4ca93a64736f6c6343000811003300", + "nonce": "0x4", + "chainId": "0x76adf1", + "accessList": null, + "type": null + }, + "additionalContracts": [ + { + "transactionType": "CREATE2", + "address": "0x777777a1476296e9f7835c91e2b917ecbfaf83a1", + "initCode": "0x608060405234801561001057600080fd5b5061091f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063de4d613c1161005b578063de4d613c14610117578063e5df2e311461012c578063f2fde38b1461013f578063f5e032571461015257600080fd5b8063714e78dc1461008d5780638da5cb5b146100b5578063a1ea8e8d146100e0578063a75cc25614610100575b600080fd5b6100a061009b366004610636565b610165565b60405190151581526020015b60405180910390f35b6000546100c8906001600160a01b031681565b6040516001600160a01b0390911681526020016100ac565b6100f36100ee366004610712565b61018e565b6040516100ac9190610747565b61010960025481565b6040519081526020016100ac565b61012a610125366004610636565b610241565b005b61012a61013a366004610636565b6102e6565b61012a61014d3660046107a9565b61031c565b61012a6101603660046107cb565b610391565b60006001600061017484610425565b815260208101919091526040016000205460ff1692915050565b60606000825167ffffffffffffffff8111156101ac576101ac61057f565b6040519080825280602002602001820160405280156101d5578160200160208202803683370190505b50905060005b835181101561023a576102068482815181106101f9576101f9610819565b6020026020010151610165565b82828151811061021857610218610819565b911515602092830291909101909101528061023281610845565b9150506101db565b5092915050565b6000546001600160a01b031633146102745760405162461bcd60e51b815260040161026b9061085e565b60405180910390fd5b600061027f82610425565b6000818152600160205260408120805460ff1916905560028054929350906102a683610884565b91905055507f20da8b688d4d950eb28321dbcb7f94be8dd4cc6a9a6540a032a25a8f4f68c5d0826040516102da919061089b565b60405180910390a15050565b6000546001600160a01b031633146103105760405162461bcd60e51b815260040161026b9061085e565b61031981610455565b50565b6000546001600160a01b031633146103465760405162461bcd60e51b815260040161026b9061085e565b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600254156103d75760405162461bcd60e51b81526020600482015260136024820152721053149150511657d253925512505312569151606a1b604482015260640161026b565b60005b8251811015610417576104058382815181106103f8576103f8610819565b6020026020010151610455565b8061040f81610845565b9150506103da565b5061042181610534565b5050565b600081604051602001610438919061089b565b604051602081830303815290604052805190602001209050919050565b600081604051602001610468919061089b565b60408051601f1981840301815291815281516020928301206000818152600190935291205490915060ff16156104d75760405162461bcd60e51b81526020600482015260146024820152731393d11157d053149150511657d5149554d5115160621b604482015260640161026b565b60008181526001602081905260408220805460ff19169091179055600280549161050083610845565b91905055507f8f95125be1a08fd393426193587ff719a43ca451452c07ce27ab36eb174f3ec6826040516102da919061089b565b600080546001600160a01b0319166001600160a01b03831690811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156105be576105be61057f565b604052919050565b600082601f8301126105d757600080fd5b813567ffffffffffffffff8111156105f1576105f161057f565b610604601f8201601f1916602001610595565b81815284602083860101111561061957600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561064857600080fd5b813567ffffffffffffffff81111561065f57600080fd5b61066b848285016105c6565b949350505050565b600082601f83011261068457600080fd5b8135602067ffffffffffffffff808311156106a1576106a161057f565b8260051b6106b0838201610595565b93845285810183019383810190888611156106ca57600080fd5b84880192505b85831015610706578235848111156106e85760008081fd5b6106f68a87838c01016105c6565b83525091840191908401906106d0565b98975050505050505050565b60006020828403121561072457600080fd5b813567ffffffffffffffff81111561073b57600080fd5b61066b84828501610673565b6020808252825182820181905260009190848201906040850190845b81811015610781578351151583529284019291840191600101610763565b50909695505050505050565b80356001600160a01b03811681146107a457600080fd5b919050565b6000602082840312156107bb57600080fd5b6107c48261078d565b9392505050565b600080604083850312156107de57600080fd5b823567ffffffffffffffff8111156107f557600080fd5b61080185828601610673565b9250506108106020840161078d565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016108575761085761082f565b5060010190565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b6000816108935761089361082f565b506000190190565b600060208083528351808285015260005b818110156108c8578581018301518582016040015282016108ac565b506000604082860101526040601f19601f830116850101925050509291505056fea26469706673582212206aba202ffd77161f9261c8c07acdd20d2329746e63ef1b087173dc7cdb4ca93a64736f6c63430008110033" + } + ], + "isFixedGasLimit": false + }, + { + "hash": "0x84feac0a9051f8d4d12b7c64dc57de9b526cbc0fc59936fc6274b1b45112b535", + "transactionType": "CALL", + "contractName": "MintpoolTrustedNodeRegistry", + "contractAddress": "0x777777a1476296e9f7835c91e2b917ecbfaf83a1", + "function": "initialize(string[],address)", + "arguments": [ + "[\"/dnsaddr/mintpool-1.zora.co\", \"/dnsaddr/mintpool-2.zora.co\", \"/dnsaddr/mintpool-3.zora.co\"]", + "0xd1d1D4e36117aB794ec5d4c78cBD3a8904E691D0" + ], + "transaction": { + "from": "0x9bfa880f643b2d7c276b16e89850f1ec3afb2e1d", + "to": "0x777777a1476296e9f7835c91e2b917ecbfaf83a1", + "gas": "0x31954", + "value": "0x0", + "input": "0xf5e032570000000000000000000000000000000000000000000000000000000000000040000000000000000000000000d1d1d4e36117ab794ec5d4c78cbd3a8904e691d00000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000001b2f646e73616464722f6d696e74706f6f6c2d312e7a6f72612e636f0000000000000000000000000000000000000000000000000000000000000000000000001b2f646e73616464722f6d696e74706f6f6c2d322e7a6f72612e636f0000000000000000000000000000000000000000000000000000000000000000000000001b2f646e73616464722f6d696e74706f6f6c2d332e7a6f72612e636f0000000000", + "nonce": "0x5", + "chainId": "0x76adf1", + "accessList": null, + "type": null + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xb0e51", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x4995776a9f75c51ca389fba3bc5635aa9b8c246476ae9ddfb020b63fba44be60", + "transactionIndex": "0x2", + "blockHash": "0x198936a75dbaaa9a899aa3d459bfae315e6c14cfe936d3b40c52075ff393e882", + "blockNumber": "0xd1089e", + "gasUsed": "0x8fdba", + "effectiveGasPrice": "0x1879c", + "from": "0x9bfa880f643b2d7c276b16e89850f1ec3afb2e1d", + "to": "0x0000000000ffe8b47b3e2130213b802212439497", + "contractAddress": null, + "l1Fee": "0x48292e463c9", + "l1GasPrice": "0x177f7c59c", + "l1GasUsed": "0x998c" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xd4cad", + "logs": [ + { + "address": "0x777777a1476296e9f7835c91e2b917ecbfaf83a1", + "topics": [ + "0x8f95125be1a08fd393426193587ff719a43ca451452c07ce27ab36eb174f3ec6" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001b2f646e73616464722f6d696e74706f6f6c2d312e7a6f72612e636f0000000000", + "blockHash": "0x198936a75dbaaa9a899aa3d459bfae315e6c14cfe936d3b40c52075ff393e882", + "blockNumber": "0xd1089e", + "transactionHash": "0x84feac0a9051f8d4d12b7c64dc57de9b526cbc0fc59936fc6274b1b45112b535", + "transactionIndex": "0x3", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0x777777a1476296e9f7835c91e2b917ecbfaf83a1", + "topics": [ + "0x8f95125be1a08fd393426193587ff719a43ca451452c07ce27ab36eb174f3ec6" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001b2f646e73616464722f6d696e74706f6f6c2d322e7a6f72612e636f0000000000", + "blockHash": "0x198936a75dbaaa9a899aa3d459bfae315e6c14cfe936d3b40c52075ff393e882", + "blockNumber": "0xd1089e", + "transactionHash": "0x84feac0a9051f8d4d12b7c64dc57de9b526cbc0fc59936fc6274b1b45112b535", + "transactionIndex": "0x3", + "logIndex": "0x5", + "removed": false + }, + { + "address": "0x777777a1476296e9f7835c91e2b917ecbfaf83a1", + "topics": [ + "0x8f95125be1a08fd393426193587ff719a43ca451452c07ce27ab36eb174f3ec6" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001b2f646e73616464722f6d696e74706f6f6c2d332e7a6f72612e636f0000000000", + "blockHash": "0x198936a75dbaaa9a899aa3d459bfae315e6c14cfe936d3b40c52075ff393e882", + "blockNumber": "0xd1089e", + "transactionHash": "0x84feac0a9051f8d4d12b7c64dc57de9b526cbc0fc59936fc6274b1b45112b535", + "transactionIndex": "0x3", + "logIndex": "0x6", + "removed": false + }, + { + "address": "0x777777a1476296e9f7835c91e2b917ecbfaf83a1", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d1d1d4e36117ab794ec5d4c78cbd3a8904e691d0" + ], + "data": "0x", + "blockHash": "0x198936a75dbaaa9a899aa3d459bfae315e6c14cfe936d3b40c52075ff393e882", + "blockNumber": "0xd1089e", + "transactionHash": "0x84feac0a9051f8d4d12b7c64dc57de9b526cbc0fc59936fc6274b1b45112b535", + "transactionIndex": "0x3", + "logIndex": "0x7", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000200800000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000080000000000001000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000400000000000000000000000000020000000001000000000001000000000000000000000000000200000000000000000", + "type": "0x2", + "transactionHash": "0x84feac0a9051f8d4d12b7c64dc57de9b526cbc0fc59936fc6274b1b45112b535", + "transactionIndex": "0x3", + "blockHash": "0x198936a75dbaaa9a899aa3d459bfae315e6c14cfe936d3b40c52075ff393e882", + "blockNumber": "0xd1089e", + "gasUsed": "0x23e5c", + "effectiveGasPrice": "0x1879c", + "from": "0x9bfa880f643b2d7c276b16e89850f1ec3afb2e1d", + "to": "0x777777a1476296e9f7835c91e2b917ecbfaf83a1", + "contractAddress": null, + "l1Fee": "0x8afd9922f6", + "l1GasPrice": "0x177f7c59c", + "l1GasUsed": "0x127c" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1714092302, + "chain": 7777777, + "commit": "c4d05c8" +} \ No newline at end of file diff --git a/contracts/script/DeployMintpoolTrustedNodeRegistry.sol b/contracts/script/DeployMintpoolTrustedNodeRegistry.sol index dba0c21..4c90257 100644 --- a/contracts/script/DeployMintpoolTrustedNodeRegistry.sol +++ b/contracts/script/DeployMintpoolTrustedNodeRegistry.sol @@ -6,38 +6,39 @@ import {MintpoolTrustedNodeRegistry} from "../src/MintpoolTrustedNodeRegistry.so interface ImmutableCreate2Factory { function findCreate2Address(bytes32 salt, bytes memory initCode) - external - view - returns (address deploymentAddress); + external + view + returns (address deploymentAddress); function findCreate2AddressViaHash(bytes32 salt, bytes32 initCodeHash) - external - view - returns (address deploymentAddress); + external + view + returns (address deploymentAddress); function hasBeenDeployed(address deploymentAddress) external view returns (bool); function safeCreate2(bytes32 salt, bytes memory initializationCode) - external - payable - returns (address deploymentAddress); + external + payable + returns (address deploymentAddress); } contract DeployScript is Script { // Generated using https://github.com/iainnash/create2crunch/tree/use_prefix_matching_instead address zora = 0xd1d1D4e36117aB794ec5d4c78cBD3a8904E691D0; - bytes32 salt = 0x00000000000000000000000000000000000000008458466a1f4eac03a4d2ba6c; - address expectedAddress = 0x7777777748Bc44D8FD1DDB63d6C0A802d9c03588; + bytes32 salt = 0x00000000000000000000000000000000000000007a58e80278dae600cc595960; + address expectedAddress = 0x777777A1476296E9F7835C91e2B917ecbfAf83a1; ImmutableCreate2Factory constant IMMUTABLE_CREATE2_FACTORY = - ImmutableCreate2Factory(0x0000000000FFe8B47B3e2130213B802212439497); + ImmutableCreate2Factory(0x0000000000FFe8B47B3e2130213B802212439497); function setUp() public {} function run() public { - string[] memory trustedNodes = new string[](2); - trustedNodes[0] = "/connect/dns/mintpool.zora.co/tcp/7778"; - // TODO: Add nodes here once DNS is set up + string[] memory trustedNodes = new string[](3); + trustedNodes[0] = "/dnsaddr/mintpool-1.zora.co"; + trustedNodes[1] = "/dnsaddr/mintpool-2.zora.co"; + trustedNodes[2] = "/dnsaddr/mintpool-3.zora.co"; bytes memory creationCode = type(MintpoolTrustedNodeRegistry).creationCode; bytes32 creationCodeHash = keccak256(creationCode); diff --git a/src/chain.rs b/src/chain.rs index 959a8d2..a40e43b 100644 --- a/src/chain.rs +++ b/src/chain.rs @@ -13,14 +13,18 @@ use crate::premints::zora_premint_v2::types::PREMINT_FACTORY_ADDR; use crate::types::{InclusionClaim, Premint, PremintTypes}; /// Helper function for calling view functions for SolCall types -pub async fn contract_call(call: T, provider: &Arc) -> eyre::Result +pub async fn view_contract_call( + call: T, + provider: &Arc, + address: Address, +) -> eyre::Result where T: SolCall, { provider .call( &TransactionRequest { - to: Some(PREMINT_FACTORY_ADDR), + to: Some(address), input: TransactionInput::new(Bytes::from(call.abi_encode())), ..Default::default() }, @@ -151,8 +155,8 @@ sol! { "contracts/artifacts/abi.json" } -const BOOTNODES_CONTRACT_ADDRESS: Address = address!("7777777748Bc44D8FD1DDB63d6C0A802d9c03588"); -const BOOTNODES_CONTRACT_DEPLOY_BLOCK: u64 = 1_000_000; // TODO: get this after contract deployment +const BOOTNODES_CONTRACT_ADDRESS: Address = address!("777777A1476296E9F7835C91e2B917ecbfAf83a1"); +const BOOTNODES_CONTRACT_DEPLOY_BLOCK: u64 = 13_699_230; pub async fn get_contract_boot_nodes() -> eyre::Result> { let chain = CHAINS.get_rpc(7777777).await?; @@ -180,11 +184,12 @@ pub async fn get_contract_boot_nodes() -> eyre::Result> { .map(|event| event.node.to_string()) .collect::>(); - let result = contract_call( + let result = view_contract_call( MintpoolTrustedBootnodes::isTrustedNode_1Call { _nodes: nodes.clone(), }, &chain, + BOOTNODES_CONTRACT_ADDRESS, ) .await?; @@ -205,3 +210,22 @@ pub async fn get_contract_boot_nodes() -> eyre::Result> { Ok(valid_nodes) } + +#[cfg(test)] +mod test { + use crate::chain::get_contract_boot_nodes; + + #[tokio::test] + async fn test_get_bootnodes_from_chain() { + let nodes = get_contract_boot_nodes().await.unwrap(); + + assert_eq!( + nodes, + vec![ + "/dnsaddr/mintpool-1.zora.co".to_string(), + "/dnsaddr/mintpool-2.zora.co".to_string(), + "/dnsaddr/mintpool-3.zora.co".to_string() + ] + ); + } +} diff --git a/src/premints/zora_premint_v2/rules.rs b/src/premints/zora_premint_v2/rules.rs index 1fcb8ce..b584ec1 100644 --- a/src/premints/zora_premint_v2/rules.rs +++ b/src/premints/zora_premint_v2/rules.rs @@ -3,8 +3,10 @@ use std::str::FromStr; use alloy_primitives::Signature; use alloy_sol_types::SolStruct; -use crate::chain::contract_call; -use crate::premints::zora_premint_v2::types::{IZoraPremintV2, ZoraPremintV2}; +use crate::chain::view_contract_call; +use crate::premints::zora_premint_v2::types::{ + IZoraPremintV2, ZoraPremintV2, PREMINT_FACTORY_ADDR, +}; use crate::rules::Evaluation::Accept; use crate::rules::{Evaluation, Rule, RuleContext}; use crate::storage::Reader; @@ -28,7 +30,7 @@ pub async fn is_authorized_to_create_premint( premintContractConfigContractAdmin: premint.collection.contractAdmin, }; - let result = contract_call(call, rpc).await?; + let result = view_contract_call(call, rpc, PREMINT_FACTORY_ADDR).await?; match result.isAuthorized { true => Ok(Accept), @@ -50,7 +52,7 @@ pub async fn not_minted( uid: premint.premint.uid, }; - let result = contract_call(call, rpc).await?; + let result = view_contract_call(call, rpc, PREMINT_FACTORY_ADDR).await?; match result.contractCreated && !result.tokenIdForPremint.is_zero() { false => Ok(Accept), @@ -71,7 +73,7 @@ pub async fn premint_version_supported( contractAddress: premint.collection_address, }; - let result = contract_call(call, rpc).await?; + let result = view_contract_call(call, rpc, PREMINT_FACTORY_ADDR).await?; match result.versions.contains(&"2".to_string()) { true => Ok(Accept), diff --git a/src/run.rs b/src/run.rs index 323f0f8..ebeea7a 100644 --- a/src/run.rs +++ b/src/run.rs @@ -76,7 +76,11 @@ pub async fn start_p2p_services( tracing::info!("Fetching boot nodes from chain"); match get_contract_boot_nodes().await { Ok(boot_nodes) => { - connect_to_boot_nodes(&controller_interface, boot_nodes).await; + connect_to_boot_nodes(&controller_interface, boot_nodes.clone()).await; + tracing::info!( + nodes = serde_json::to_string(&boot_nodes).ok(), + "Connected to bootnodes!" + ) } Err(err) => { tracing::error!(error=err.to_string(), "Failed to get boot nodes from contract, falling back to No boot nodes. Add nodes via interactive mode or admin API.");