From cb562527dfdcc2ecc0b67ae867c9967802a5a73b Mon Sep 17 00:00:00 2001 From: oyyblin <4529189+oyyblin@users.noreply.github.com> Date: Thu, 31 Oct 2024 14:47:50 -0700 Subject: [PATCH] chore(contract): Add deployment info; update base script; use .env --- .gitignore | 6 +- contracts/.env.example | 29 +++++++ contracts/Makefile | 14 ++-- contracts/README.md | 14 ++++ .../13505/run-1730410831.json | 81 +++++++++++++++++++ .../DrandOracle.s.sol/13505/run-latest.json | 81 +++++++++++++++++++ contracts/foundry.toml | 8 +- contracts/script/deploy/DrandOracle.s.sol | 17 ++-- contracts/script/utils/Base.s.sol | 35 ++++++++ 9 files changed, 266 insertions(+), 19 deletions(-) create mode 100644 contracts/.env.example create mode 100644 contracts/broadcast/DrandOracle.s.sol/13505/run-1730410831.json create mode 100644 contracts/broadcast/DrandOracle.s.sol/13505/run-latest.json create mode 100644 contracts/script/utils/Base.s.sol diff --git a/.gitignore b/.gitignore index ce79d54..a5dabad 100644 --- a/.gitignore +++ b/.gitignore @@ -4,9 +4,9 @@ cache/ out/ # Ignores development broadcast logs -!/broadcast -/broadcast/*/31337/ -/broadcast/**/dry-run/ +!contracts/broadcast +contracts/broadcast/*/31337/ +contracts/broadcast/**/dry-run/ # Docs docs/ diff --git a/contracts/.env.example b/contracts/.env.example new file mode 100644 index 0000000..391627d --- /dev/null +++ b/contracts/.env.example @@ -0,0 +1,29 @@ +### Salt used to deploy the contract. Recommended to use the same salt across different chains. +CREATE2_SALT= + +### The owner of the DrandOracle contract. +OWNER= + +### The signer of the DrandOracle contract. +SIGNER= + +### The chain hash of the DrandOracle contract. +CHAIN_HASH= + +### The chain to deploy to, specified by chain name (e.g. CHAIN=gravity_sepolia) +CHAIN= + +### RPCs for each chain ID +RPC_GRAVITY=https://rpc.gravity.xyz +RPC_GRAVITY_SEPOLIA=https://rpc-sepolia.gravity.xyz + +# Etherscan API keys for each chain +ETHERSCAN_API_KEY_GRAVITY=123 +ETHERSCAN_API_KEY_GRAVITY_SEPOLIA=123 + +# Etherscan API URLs for each chain +ETHERSCAN_API_URL_GRAVITY=https://explorer.gravity.xyz/api +ETHERSCAN_API_URL_GRAVITY_SEPOLIA=https://explorer-sepolia.gravity.xyz/api + +## Contract Deployer Private Key +PRIVATE_KEY= diff --git a/contracts/Makefile b/contracts/Makefile index ad103b6..eaedba2 100644 --- a/contracts/Makefile +++ b/contracts/Makefile @@ -35,11 +35,9 @@ clean-go: # Deploy anvil using default anvil private key deploy-anvil: - export PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 \ - OWNER=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 \ - SIGNER=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 \ - CHAIN_HASH=0x8990e7a9aaed2ffed73dbd7092123d6f289930540d7651336225dc172e51b2ce && \ - forge script ./script/deploy/DrandOracle.s.sol:DrandOracleScript \ - --rpc-url 127.0.0.1:8545 \ - --broadcast \ - --verify + PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 \ + OWNER=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 \ + SIGNER=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 \ + CHAIN_HASH=0x8990e7a9aaed2ffed73dbd7092123d6f289930540d7651336225dc172e51b2ce \ + CHAIN=anvil \ + forge script ./script/deploy/DrandOracle.s.sol:DrandOracleScript --private-key $(PRIVATE_KEY) --broadcast diff --git a/contracts/README.md b/contracts/README.md index 5fd0be6..a5f827c 100644 --- a/contracts/README.md +++ b/contracts/README.md @@ -60,3 +60,17 @@ anvil forge build make deploy-anvil ``` + +### 🚀 Deploy + +Edit the `.env` file to set the correct environment variables for the chain you want to deploy to. Then run: + +```bash +FOUNDRY_PROFILE=deploy forge script ./script/deploy/DrandOracle.s.sol:DrandOracleScript --broadcast +``` + +Note that for some testnets, `--gas-estimate-multiplier x` is required to avoid out-of-gas errors. + +#### 🌍 Deployments + +- Gravity Alpha Testnet Sepolia - [0x576F30058e8f1bB8eF57C7e47Cc96F1bD91dD126](https://explorer-sepolia.gravity.xyz/address/0x576F30058e8f1bB8eF57C7e47Cc96F1bD91dD126) diff --git a/contracts/broadcast/DrandOracle.s.sol/13505/run-1730410831.json b/contracts/broadcast/DrandOracle.s.sol/13505/run-1730410831.json new file mode 100644 index 0000000..89d2742 --- /dev/null +++ b/contracts/broadcast/DrandOracle.s.sol/13505/run-1730410831.json @@ -0,0 +1,81 @@ +{ + "transactions": [ + { + "hash": "0xd574cc6db8a4ab34b988514d87ec48fecf43daee7f7f69f5e2517ad2cebd7d08", + "transactionType": "CREATE", + "contractName": "DrandOracle", + "contractAddress": "0x576f30058e8f1bb8ef57c7e47cc96f1bd91dd126", + "function": null, + "arguments": [ + "0xa272C14931E725D5cDB30f87Af77CF5Ce3d20B32", + "0xAa64FA67856f2C89d6456595bc21418237f78024", + "0x8990e7a9aaed2ffed73dbd7092123d6f289930540d7651336225dc172e51b2ce" + ], + "transaction": { + "from": "0xa272c14931e725d5cdb30f87af77cf5ce3d20b32", + "gas": "0x9e3df60", + "value": "0x0", + "input": "0x610180604052600680546001600160c01b0319166001600160801b0317905534801561002a57600080fd5b5060405161210c38038061210c83398101604081905261004991610343565b604080518082018252600b81526a4472616e644f7261636c6560a81b602080830191909152825180840190935260058352640312e302e360dc1b9083015290846001600160a01b0381166100b857604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6100c18161024a565b506001805460ff60a01b191690556100da826002610266565b610120526100e9816003610266565b61014052815160208084019190912060e052815190820120610100524660a05261017660e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526001600160a01b0382166101a65760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0383166101cd5760405163e6c4247b60e01b815260040160405180910390fd5b806101eb5760405163b4fa3fb360e01b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0384169081179091556101608290526040519081527f5553331329228fbd4123164423717a4a7539f6dfa1c3279a923b98fd681a6c739060200160405180910390a150505061054e565b600180546001600160a01b031916905561026381610299565b50565b60006020835110156102825761027b836102e9565b9050610293565b8161028d848261041e565b5060ff90505b92915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080829050601f81511115610314578260405163305a27a960e01b81526004016100af91906104dc565b805161031f8261052a565b179392505050565b80516001600160a01b038116811461033e57600080fd5b919050565b60008060006060848603121561035857600080fd5b61036184610327565b925061036f60208501610327565b9150604084015190509250925092565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806103a957607f821691505b6020821081036103c957634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561041957806000526020600020601f840160051c810160208510156103f65750805b601f840160051c820191505b818110156104165760008155600101610402565b50505b505050565b81516001600160401b038111156104375761043761037f565b61044b816104458454610395565b846103cf565b6020601f82116001811461047f57600083156104675750848201515b600019600385901b1c1916600184901b178455610416565b600084815260208120601f198516915b828110156104af578785015182556020948501946001909201910161048f565b50848210156104cd5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b602081526000825180602084015260005b8181101561050a57602081860181015160408684010152016104ed565b506000604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156103c95760001960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051611b596105b3600039600061024701526000610fff01526000610fcd0152600061127b01526000611253015260006111ae015260006111d8015260006112020152611b596000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806379ba5097116100ad578063bc3ac87511610071578063bc3ac87514610277578063deaf3ba61461029a578063e30c3978146102ad578063f2fde38b146102be578063fc4f57c5146102d157600080fd5b806379ba5097146102065780638456cb591461020e57806384b0196e146102165780638da5cb5b146102315780639acbc4ca1461024257600080fd5b80633f4ba83a116100f45780633f4ba83a1461019c5780635c975abb146101a4578063668a0f02146101c157806367eb66cb146101ed578063715018a6146101fe57600080fd5b806303c0737f14610126578063167ef5fb1461013b578063238ac933146101645780632e1f830914610189575b600080fd5b610139610134366004611570565b6102e4565b005b61014e6101493660046115d7565b61039a565b60405161015b9190611641565b60405180910390f35b6007546001600160a01b03165b6040516001600160a01b03909116815260200161015b565b61013961019736600461168c565b6106b2565b6101396109c6565b600154600160a01b900460ff16604051901515815260200161015b565b600654600160801b90046001600160401b03165b6040516001600160401b03909116815260200161015b565b6006546001600160401b03166101d5565b6101396109d8565b6101396109ea565b610139610a33565b61021e610a43565b60405161015b97969594939291906116c9565b6000546001600160a01b0316610171565b6102697f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200161015b565b61028a6102853660046115d7565b610a89565b60405161015b9493929190611761565b61028a6102a83660046115d7565b610b48565b6001546001600160a01b0316610171565b6101396102cc3660046117a2565b610b84565b61014e6102df3660046115d7565b610bf5565b6102ec610d4f565b6001600160a01b0383166103135760405163e6c4247b60e01b815260040160405180910390fd5b61032661031f84610d7a565b8383610de5565b61034357604051638baa579f60e01b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0385169081179091556040519081527f5553331329228fbd4123164423717a4a7539f6dfa1c3279a923b98fd681a6c73906020015b60405180910390a1505050565b60408051608081018252600080825260208201819052918101919091526060808201526001600160401b03821615806103e857506006546001600160401b03600160401b9091048116908316105b15610406576040516374016e9d60e11b815260040160405180910390fd5b600654600160401b90046001600160401b031660006104268460016117d3565b90505b6104346001826117f2565b6001600160401b0316826001600160401b0316101561059b57600060026104676001600160401b03808516908616611811565b6104719190611824565b6001600160401b038082166000908152600560209081526040808320815160808101835281548087168252600160401b9004909516928501929092526001820154908401526002810180549495509193909160608401916104d190611846565b80601f01602080910402602001604051908101604052809291908181526020018280546104fd90611846565b801561054a5780601f1061051f5761010080835404028352916020019161054a565b820191906000526020600020905b81548152906001019060200180831161052d57829003601f168201915b5050509190925250508151919250506001600160401b03161561059057856001600160401b0316826001600160401b03161161058857819350610594565b819250610594565b8192505b5050610429565b6001600160401b038083166000908152600560209081526040808320815160808101835281548087168252600160401b9004909516928501929092526001820154908401526002810180549293926060840191906105f890611846565b80601f016020809104026020016040519081016040528092919081815260200182805461062490611846565b80156106715780601f1061064657610100808354040283529160200191610671565b820191906000526020600020905b81548152906001019060200180831161065457829003601f168201915b505050505081525050905080600001516001600160401b03166000036106aa576040516374016e9d60e11b815260040160405180910390fd5b949350505050565b6106ba610d4f565b6106c76060840184611880565b159050806106eb57506106e060408401602085016115d7565b6001600160401b0316155b156107095760405163b4fa3fb360e01b815260040160405180910390fd5b61071660208401846115d7565b6001600160401b031660000361073f576040516328ad4a9560e21b815260040160405180910390fd5b61074b61031f84610e46565b61076857604051638baa579f60e01b815260040160405180910390fd5b61077560208401846115d7565b6006546001600160401b03918216600160801b909104909116106107ac576040516328ad4a9560e21b815260040160405180910390fd5b600654600160801b90046001600160401b03161580159061080857506006546107e690600160801b90046001600160401b031660016117d3565b6001600160401b03166107fc60208501856115d7565b6001600160401b031614155b15610826576040516328ad4a9560e21b815260040160405180910390fd5b6006546001600160401b031667fffffffffffffffe19016108705761084e60208401846115d7565b6006805467ffffffffffffffff19166001600160401b03929092169190911790555b60065467fffffffffffffffe19600160401b9091046001600160401b0316016108ca576108a360408401602085016115d7565b600660086101000a8154816001600160401b0302191690836001600160401b031602179055505b6108d760208401846115d7565b600680546001600160401b0392909216600160801b0267ffffffffffffffff60801b19909216919091179055826004600061091560208401846115d7565b6001600160401b03168152602081019190915260400160002061093882826119ea565b508390506005600061095060408401602085016115d7565b6001600160401b03168152602081019190915260400160002061097382826119ea565b507fb2f2d8fc12d36205a87db37f52aa7754f67d078758e4c76ef43c0a420b39972490506109a460208501856115d7565b60408501356109b66060870187611880565b60405161038d9493929190611ab7565b6109ce610ee8565b6109d6610f15565b565b6109e0610ee8565b6109d66000610f6a565b60015433906001600160a01b03168114610a275760405163118cdaa760e01b81526001600160a01b03821660048201526024015b60405180910390fd5b610a3081610f6a565b50565b610a3b610ee8565b6109d6610f83565b600060608060008060006060610a57610fc6565b610a5f610ff8565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6004602052600090815260409020805460018201546002830180546001600160401b0380851695600160401b90950416939190610ac590611846565b80601f0160208091040260200160405190810160405280929190818152602001828054610af190611846565b8015610b3e5780601f10610b1357610100808354040283529160200191610b3e565b820191906000526020600020905b815481529060010190602001808311610b2157829003601f168201915b5050505050905084565b6005602052600090815260409020805460018201546002830180546001600160401b0380851695600160401b90950416939190610ac590611846565b610b8c610ee8565b600180546001600160a01b0383166001600160a01b03199091168117909155610bbd6000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60408051608081018252600080825260208201819052918101919091526060808201526006546001600160401b03600160801b90910481169083161180610c4a57506006546001600160401b03908116908316105b15610c68576040516328ad4a9560e21b815260040160405180910390fd5b6001600160401b03808316600090815260046020908152604091829020825160808101845281548086168252600160401b900490941691840191909152600181015491830191909152600281018054606084019190610cc690611846565b80601f0160208091040260200160405190810160405280929190818152602001828054610cf290611846565b8015610d3f5780601f10610d1457610100808354040283529160200191610d3f565b820191906000526020600020905b815481529060010190602001808311610d2257829003601f168201915b5050505050815250509050919050565b600154600160a01b900460ff16156109d65760405163d93c066560e01b815260040160405180910390fd5b6000610ddf7f954547414d847104d6fd7fab9829a39cc21ef3e8406170c018aa1d5d62b9c0c783604051602001610dc49291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120611025565b92915050565b600754604080516020601f85018190048102820181019092528381526000926001600160a01b031691610e34918791879087908190840183828082843760009201919091525061105292505050565b6001600160a01b031614949350505050565b6000610ddf7f1f65c79a1c09b00384427bcee7a738c4f35c3af5812ff6322f4e72a6c6e06593610e7960208501856115d7565b610e8960408601602087016115d7565b6040860135610e9b6060880188611880565b604051610ea9929190611afd565b6040805191829003822060208301969096526001600160401b0394851690820152929091166060830152608082015260a081019190915260c001610dc4565b6000546001600160a01b031633146109d65760405163118cdaa760e01b8152336004820152602401610a1e565b610f1d61107c565b6001805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600180546001600160a01b0319169055610a30816110a6565b610f8b610d4f565b6001805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610f4d3390565b6060610ff37f000000000000000000000000000000000000000000000000000000000000000060026110f6565b905090565b6060610ff37f000000000000000000000000000000000000000000000000000000000000000060036110f6565b6000610ddf6110326111a1565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060008061106286866112cc565b9250925092506110728282611319565b5090949350505050565b600154600160a01b900460ff166109d657604051638dfc202b60e01b815260040160405180910390fd5b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606060ff831461111057611109836113d6565b9050610ddf565b81805461111c90611846565b80601f016020809104026020016040519081016040528092919081815260200182805461114890611846565b80156111955780601f1061116a57610100808354040283529160200191611195565b820191906000526020600020905b81548152906001019060200180831161117857829003601f168201915b50505050509050610ddf565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156111fa57507f000000000000000000000000000000000000000000000000000000000000000046145b1561122457507f000000000000000000000000000000000000000000000000000000000000000090565b610ff3604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600080600083516041036113065760208401516040850151606086015160001a6112f888828585611415565b955095509550505050611312565b50508151600091506002905b9250925092565b600082600381111561132d5761132d611b0d565b03611336575050565b600182600381111561134a5761134a611b0d565b036113685760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561137c5761137c611b0d565b0361139d5760405163fce698f760e01b815260048101829052602401610a1e565b60038260038111156113b1576113b1611b0d565b036113d2576040516335e2f38360e21b815260048101829052602401610a1e565b5050565b606060006113e3836114e4565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561145057506000915060039050826114da565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156114a4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166114d0575060009250600191508290506114da565b9250600091508190505b9450945094915050565b600060ff8216601f811115610ddf57604051632cd44ac360e21b815260040160405180910390fd5b80356001600160a01b038116811461152357600080fd5b919050565b60008083601f84011261153a57600080fd5b5081356001600160401b0381111561155157600080fd5b60208301915083602082850101111561156957600080fd5b9250929050565b60008060006040848603121561158557600080fd5b61158e8461150c565b925060208401356001600160401b038111156115a957600080fd5b6115b586828701611528565b9497909650939450505050565b6001600160401b0381168114610a3057600080fd5b6000602082840312156115e957600080fd5b81356115f4816115c2565b9392505050565b6000815180845260005b8181101561162157602081850181015186830182015201611605565b506000602082860101526020601f19601f83011685010191505092915050565b602081526001600160401b0382511660208201526001600160401b03602083015116604082015260408201516060820152600060608301516080808401526106aa60a08401826115fb565b6000806000604084860312156116a157600080fd5b83356001600160401b038111156116b757600080fd5b84016080818703121561158e57600080fd5b60ff60f81b8816815260e0602082015260006116e860e08301896115fb565b82810360408401526116fa81896115fb565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501528451808252602080870193509091019060005b81811015611750578351835260209384019390920191600101611732565b50909b9a5050505050505050505050565b6001600160401b03851681526001600160401b038416602082015282604082015260806060820152600061179860808301846115fb565b9695505050505050565b6000602082840312156117b457600080fd5b6115f48261150c565b634e487b7160e01b600052601160045260246000fd5b6001600160401b038181168382160190811115610ddf57610ddf6117bd565b6001600160401b038281168282160390811115610ddf57610ddf6117bd565b80820180821115610ddf57610ddf6117bd565b60008261184157634e487b7160e01b600052601260045260246000fd5b500490565b600181811c9082168061185a57607f821691505b60208210810361187a57634e487b7160e01b600052602260045260246000fd5b50919050565b6000808335601e1984360301811261189757600080fd5b8301803591506001600160401b038211156118b157600080fd5b60200191503681900382131561156957600080fd5b634e487b7160e01b600052604160045260246000fd5b601f82111561192657806000526020600020601f840160051c810160208510156119035750805b601f840160051c820191505b81811015611923576000815560010161190f565b50505b505050565b6001600160401b03831115611942576119426118c6565b611956836119508354611846565b836118dc565b6000601f84116001811461198a57600085156119725750838201355b600019600387901b1c1916600186901b178355611923565b600083815260209020601f19861690835b828110156119bb578685013582556020948501946001909201910161199b565b50868210156119d85760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81356119f5816115c2565b6001600160401b03811690508154816001600160401b031982161783556020840135611a20816115c2565b6fffffffffffffffffffffffffffffffff1991909116909117604091821b6fffffffffffffffff0000000000000000161782558201356001820155600080606084013536859003601e19018112611a75578283fd5b8401803591506001600160401b03821115611a8e578283fd5b602001915036819003821315611aa357600080fd5b611ab181836002860161192b565b50505050565b6001600160401b038516815283602082015260606040820152816060820152818360808301376000818301608090810191909152601f909201601f191601019392505050565b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fdfea264697066735822122019b2baf8a24f7ca2711dccbe3a21729996fa2a14b04d639940248d30ab9a735564736f6c634300081a0033000000000000000000000000a272c14931e725d5cdb30f87af77cf5ce3d20b32000000000000000000000000aa64fa67856f2c89d6456595bc21418237f780248990e7a9aaed2ffed73dbd7092123d6f289930540d7651336225dc172e51b2ce", + "nonce": "0x11", + "chainId": "0x34c1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x210beec", + "logs": [ + { + "address": "0x576f30058e8f1bb8ef57c7e47cc96f1bd91dd126", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000a272c14931e725d5cdb30f87af77cf5ce3d20b32" + ], + "data": "0x", + "blockHash": "0x9d4ed828fb97c56ea91823e27c39100ac052bd22136d5644803b36f11b24583a", + "blockNumber": "0xad", + "transactionHash": "0xd574cc6db8a4ab34b988514d87ec48fecf43daee7f7f69f5e2517ad2cebd7d08", + "transactionIndex": "0x1", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x576f30058e8f1bb8ef57c7e47cc96f1bd91dd126", + "topics": [ + "0x5553331329228fbd4123164423717a4a7539f6dfa1c3279a923b98fd681a6c73" + ], + "data": "0x000000000000000000000000aa64fa67856f2c89d6456595bc21418237f78024", + "blockHash": "0x9d4ed828fb97c56ea91823e27c39100ac052bd22136d5644803b36f11b24583a", + "blockNumber": "0xad", + "transactionHash": "0xd574cc6db8a4ab34b988514d87ec48fecf43daee7f7f69f5e2517ad2cebd7d08", + "transactionIndex": "0x1", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000010000000000000800000000000000020000000000000000000000000001000000000000000000000000000000000000020000000100000000000800000000000004000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000002000000000000000000000000000000000000000000000000400000000000000020000000000000000000000000000000000000000000000000000100000000000000", + "type": "0x2", + "transactionHash": "0xd574cc6db8a4ab34b988514d87ec48fecf43daee7f7f69f5e2517ad2cebd7d08", + "transactionIndex": "0x1", + "blockHash": "0x9d4ed828fb97c56ea91823e27c39100ac052bd22136d5644803b36f11b24583a", + "blockNumber": "0xad", + "gasUsed": "0x210beec", + "effectiveGasPrice": "0x5f5e100", + "from": "0xa272c14931e725d5cdb30f87af77cf5ce3d20b32", + "to": null, + "contractAddress": "0x576f30058e8f1bb8ef57c7e47cc96f1bd91dd126", + "gasUsedForL1": "0x1f76b3c", + "l1BlockNumber": "0x6a98e7" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1730410831, + "chain": 13505, + "commit": "eba27f9" +} \ No newline at end of file diff --git a/contracts/broadcast/DrandOracle.s.sol/13505/run-latest.json b/contracts/broadcast/DrandOracle.s.sol/13505/run-latest.json new file mode 100644 index 0000000..89d2742 --- /dev/null +++ b/contracts/broadcast/DrandOracle.s.sol/13505/run-latest.json @@ -0,0 +1,81 @@ +{ + "transactions": [ + { + "hash": "0xd574cc6db8a4ab34b988514d87ec48fecf43daee7f7f69f5e2517ad2cebd7d08", + "transactionType": "CREATE", + "contractName": "DrandOracle", + "contractAddress": "0x576f30058e8f1bb8ef57c7e47cc96f1bd91dd126", + "function": null, + "arguments": [ + "0xa272C14931E725D5cDB30f87Af77CF5Ce3d20B32", + "0xAa64FA67856f2C89d6456595bc21418237f78024", + "0x8990e7a9aaed2ffed73dbd7092123d6f289930540d7651336225dc172e51b2ce" + ], + "transaction": { + "from": "0xa272c14931e725d5cdb30f87af77cf5ce3d20b32", + "gas": "0x9e3df60", + "value": "0x0", + "input": "0x610180604052600680546001600160c01b0319166001600160801b0317905534801561002a57600080fd5b5060405161210c38038061210c83398101604081905261004991610343565b604080518082018252600b81526a4472616e644f7261636c6560a81b602080830191909152825180840190935260058352640312e302e360dc1b9083015290846001600160a01b0381166100b857604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6100c18161024a565b506001805460ff60a01b191690556100da826002610266565b610120526100e9816003610266565b61014052815160208084019190912060e052815190820120610100524660a05261017660e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526001600160a01b0382166101a65760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0383166101cd5760405163e6c4247b60e01b815260040160405180910390fd5b806101eb5760405163b4fa3fb360e01b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0384169081179091556101608290526040519081527f5553331329228fbd4123164423717a4a7539f6dfa1c3279a923b98fd681a6c739060200160405180910390a150505061054e565b600180546001600160a01b031916905561026381610299565b50565b60006020835110156102825761027b836102e9565b9050610293565b8161028d848261041e565b5060ff90505b92915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080829050601f81511115610314578260405163305a27a960e01b81526004016100af91906104dc565b805161031f8261052a565b179392505050565b80516001600160a01b038116811461033e57600080fd5b919050565b60008060006060848603121561035857600080fd5b61036184610327565b925061036f60208501610327565b9150604084015190509250925092565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806103a957607f821691505b6020821081036103c957634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561041957806000526020600020601f840160051c810160208510156103f65750805b601f840160051c820191505b818110156104165760008155600101610402565b50505b505050565b81516001600160401b038111156104375761043761037f565b61044b816104458454610395565b846103cf565b6020601f82116001811461047f57600083156104675750848201515b600019600385901b1c1916600184901b178455610416565b600084815260208120601f198516915b828110156104af578785015182556020948501946001909201910161048f565b50848210156104cd5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b602081526000825180602084015260005b8181101561050a57602081860181015160408684010152016104ed565b506000604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156103c95760001960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051611b596105b3600039600061024701526000610fff01526000610fcd0152600061127b01526000611253015260006111ae015260006111d8015260006112020152611b596000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806379ba5097116100ad578063bc3ac87511610071578063bc3ac87514610277578063deaf3ba61461029a578063e30c3978146102ad578063f2fde38b146102be578063fc4f57c5146102d157600080fd5b806379ba5097146102065780638456cb591461020e57806384b0196e146102165780638da5cb5b146102315780639acbc4ca1461024257600080fd5b80633f4ba83a116100f45780633f4ba83a1461019c5780635c975abb146101a4578063668a0f02146101c157806367eb66cb146101ed578063715018a6146101fe57600080fd5b806303c0737f14610126578063167ef5fb1461013b578063238ac933146101645780632e1f830914610189575b600080fd5b610139610134366004611570565b6102e4565b005b61014e6101493660046115d7565b61039a565b60405161015b9190611641565b60405180910390f35b6007546001600160a01b03165b6040516001600160a01b03909116815260200161015b565b61013961019736600461168c565b6106b2565b6101396109c6565b600154600160a01b900460ff16604051901515815260200161015b565b600654600160801b90046001600160401b03165b6040516001600160401b03909116815260200161015b565b6006546001600160401b03166101d5565b6101396109d8565b6101396109ea565b610139610a33565b61021e610a43565b60405161015b97969594939291906116c9565b6000546001600160a01b0316610171565b6102697f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200161015b565b61028a6102853660046115d7565b610a89565b60405161015b9493929190611761565b61028a6102a83660046115d7565b610b48565b6001546001600160a01b0316610171565b6101396102cc3660046117a2565b610b84565b61014e6102df3660046115d7565b610bf5565b6102ec610d4f565b6001600160a01b0383166103135760405163e6c4247b60e01b815260040160405180910390fd5b61032661031f84610d7a565b8383610de5565b61034357604051638baa579f60e01b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0385169081179091556040519081527f5553331329228fbd4123164423717a4a7539f6dfa1c3279a923b98fd681a6c73906020015b60405180910390a1505050565b60408051608081018252600080825260208201819052918101919091526060808201526001600160401b03821615806103e857506006546001600160401b03600160401b9091048116908316105b15610406576040516374016e9d60e11b815260040160405180910390fd5b600654600160401b90046001600160401b031660006104268460016117d3565b90505b6104346001826117f2565b6001600160401b0316826001600160401b0316101561059b57600060026104676001600160401b03808516908616611811565b6104719190611824565b6001600160401b038082166000908152600560209081526040808320815160808101835281548087168252600160401b9004909516928501929092526001820154908401526002810180549495509193909160608401916104d190611846565b80601f01602080910402602001604051908101604052809291908181526020018280546104fd90611846565b801561054a5780601f1061051f5761010080835404028352916020019161054a565b820191906000526020600020905b81548152906001019060200180831161052d57829003601f168201915b5050509190925250508151919250506001600160401b03161561059057856001600160401b0316826001600160401b03161161058857819350610594565b819250610594565b8192505b5050610429565b6001600160401b038083166000908152600560209081526040808320815160808101835281548087168252600160401b9004909516928501929092526001820154908401526002810180549293926060840191906105f890611846565b80601f016020809104026020016040519081016040528092919081815260200182805461062490611846565b80156106715780601f1061064657610100808354040283529160200191610671565b820191906000526020600020905b81548152906001019060200180831161065457829003601f168201915b505050505081525050905080600001516001600160401b03166000036106aa576040516374016e9d60e11b815260040160405180910390fd5b949350505050565b6106ba610d4f565b6106c76060840184611880565b159050806106eb57506106e060408401602085016115d7565b6001600160401b0316155b156107095760405163b4fa3fb360e01b815260040160405180910390fd5b61071660208401846115d7565b6001600160401b031660000361073f576040516328ad4a9560e21b815260040160405180910390fd5b61074b61031f84610e46565b61076857604051638baa579f60e01b815260040160405180910390fd5b61077560208401846115d7565b6006546001600160401b03918216600160801b909104909116106107ac576040516328ad4a9560e21b815260040160405180910390fd5b600654600160801b90046001600160401b03161580159061080857506006546107e690600160801b90046001600160401b031660016117d3565b6001600160401b03166107fc60208501856115d7565b6001600160401b031614155b15610826576040516328ad4a9560e21b815260040160405180910390fd5b6006546001600160401b031667fffffffffffffffe19016108705761084e60208401846115d7565b6006805467ffffffffffffffff19166001600160401b03929092169190911790555b60065467fffffffffffffffe19600160401b9091046001600160401b0316016108ca576108a360408401602085016115d7565b600660086101000a8154816001600160401b0302191690836001600160401b031602179055505b6108d760208401846115d7565b600680546001600160401b0392909216600160801b0267ffffffffffffffff60801b19909216919091179055826004600061091560208401846115d7565b6001600160401b03168152602081019190915260400160002061093882826119ea565b508390506005600061095060408401602085016115d7565b6001600160401b03168152602081019190915260400160002061097382826119ea565b507fb2f2d8fc12d36205a87db37f52aa7754f67d078758e4c76ef43c0a420b39972490506109a460208501856115d7565b60408501356109b66060870187611880565b60405161038d9493929190611ab7565b6109ce610ee8565b6109d6610f15565b565b6109e0610ee8565b6109d66000610f6a565b60015433906001600160a01b03168114610a275760405163118cdaa760e01b81526001600160a01b03821660048201526024015b60405180910390fd5b610a3081610f6a565b50565b610a3b610ee8565b6109d6610f83565b600060608060008060006060610a57610fc6565b610a5f610ff8565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6004602052600090815260409020805460018201546002830180546001600160401b0380851695600160401b90950416939190610ac590611846565b80601f0160208091040260200160405190810160405280929190818152602001828054610af190611846565b8015610b3e5780601f10610b1357610100808354040283529160200191610b3e565b820191906000526020600020905b815481529060010190602001808311610b2157829003601f168201915b5050505050905084565b6005602052600090815260409020805460018201546002830180546001600160401b0380851695600160401b90950416939190610ac590611846565b610b8c610ee8565b600180546001600160a01b0383166001600160a01b03199091168117909155610bbd6000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60408051608081018252600080825260208201819052918101919091526060808201526006546001600160401b03600160801b90910481169083161180610c4a57506006546001600160401b03908116908316105b15610c68576040516328ad4a9560e21b815260040160405180910390fd5b6001600160401b03808316600090815260046020908152604091829020825160808101845281548086168252600160401b900490941691840191909152600181015491830191909152600281018054606084019190610cc690611846565b80601f0160208091040260200160405190810160405280929190818152602001828054610cf290611846565b8015610d3f5780601f10610d1457610100808354040283529160200191610d3f565b820191906000526020600020905b815481529060010190602001808311610d2257829003601f168201915b5050505050815250509050919050565b600154600160a01b900460ff16156109d65760405163d93c066560e01b815260040160405180910390fd5b6000610ddf7f954547414d847104d6fd7fab9829a39cc21ef3e8406170c018aa1d5d62b9c0c783604051602001610dc49291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120611025565b92915050565b600754604080516020601f85018190048102820181019092528381526000926001600160a01b031691610e34918791879087908190840183828082843760009201919091525061105292505050565b6001600160a01b031614949350505050565b6000610ddf7f1f65c79a1c09b00384427bcee7a738c4f35c3af5812ff6322f4e72a6c6e06593610e7960208501856115d7565b610e8960408601602087016115d7565b6040860135610e9b6060880188611880565b604051610ea9929190611afd565b6040805191829003822060208301969096526001600160401b0394851690820152929091166060830152608082015260a081019190915260c001610dc4565b6000546001600160a01b031633146109d65760405163118cdaa760e01b8152336004820152602401610a1e565b610f1d61107c565b6001805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600180546001600160a01b0319169055610a30816110a6565b610f8b610d4f565b6001805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610f4d3390565b6060610ff37f000000000000000000000000000000000000000000000000000000000000000060026110f6565b905090565b6060610ff37f000000000000000000000000000000000000000000000000000000000000000060036110f6565b6000610ddf6110326111a1565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060008061106286866112cc565b9250925092506110728282611319565b5090949350505050565b600154600160a01b900460ff166109d657604051638dfc202b60e01b815260040160405180910390fd5b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606060ff831461111057611109836113d6565b9050610ddf565b81805461111c90611846565b80601f016020809104026020016040519081016040528092919081815260200182805461114890611846565b80156111955780601f1061116a57610100808354040283529160200191611195565b820191906000526020600020905b81548152906001019060200180831161117857829003601f168201915b50505050509050610ddf565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156111fa57507f000000000000000000000000000000000000000000000000000000000000000046145b1561122457507f000000000000000000000000000000000000000000000000000000000000000090565b610ff3604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600080600083516041036113065760208401516040850151606086015160001a6112f888828585611415565b955095509550505050611312565b50508151600091506002905b9250925092565b600082600381111561132d5761132d611b0d565b03611336575050565b600182600381111561134a5761134a611b0d565b036113685760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561137c5761137c611b0d565b0361139d5760405163fce698f760e01b815260048101829052602401610a1e565b60038260038111156113b1576113b1611b0d565b036113d2576040516335e2f38360e21b815260048101829052602401610a1e565b5050565b606060006113e3836114e4565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561145057506000915060039050826114da565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156114a4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166114d0575060009250600191508290506114da565b9250600091508190505b9450945094915050565b600060ff8216601f811115610ddf57604051632cd44ac360e21b815260040160405180910390fd5b80356001600160a01b038116811461152357600080fd5b919050565b60008083601f84011261153a57600080fd5b5081356001600160401b0381111561155157600080fd5b60208301915083602082850101111561156957600080fd5b9250929050565b60008060006040848603121561158557600080fd5b61158e8461150c565b925060208401356001600160401b038111156115a957600080fd5b6115b586828701611528565b9497909650939450505050565b6001600160401b0381168114610a3057600080fd5b6000602082840312156115e957600080fd5b81356115f4816115c2565b9392505050565b6000815180845260005b8181101561162157602081850181015186830182015201611605565b506000602082860101526020601f19601f83011685010191505092915050565b602081526001600160401b0382511660208201526001600160401b03602083015116604082015260408201516060820152600060608301516080808401526106aa60a08401826115fb565b6000806000604084860312156116a157600080fd5b83356001600160401b038111156116b757600080fd5b84016080818703121561158e57600080fd5b60ff60f81b8816815260e0602082015260006116e860e08301896115fb565b82810360408401526116fa81896115fb565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501528451808252602080870193509091019060005b81811015611750578351835260209384019390920191600101611732565b50909b9a5050505050505050505050565b6001600160401b03851681526001600160401b038416602082015282604082015260806060820152600061179860808301846115fb565b9695505050505050565b6000602082840312156117b457600080fd5b6115f48261150c565b634e487b7160e01b600052601160045260246000fd5b6001600160401b038181168382160190811115610ddf57610ddf6117bd565b6001600160401b038281168282160390811115610ddf57610ddf6117bd565b80820180821115610ddf57610ddf6117bd565b60008261184157634e487b7160e01b600052601260045260246000fd5b500490565b600181811c9082168061185a57607f821691505b60208210810361187a57634e487b7160e01b600052602260045260246000fd5b50919050565b6000808335601e1984360301811261189757600080fd5b8301803591506001600160401b038211156118b157600080fd5b60200191503681900382131561156957600080fd5b634e487b7160e01b600052604160045260246000fd5b601f82111561192657806000526020600020601f840160051c810160208510156119035750805b601f840160051c820191505b81811015611923576000815560010161190f565b50505b505050565b6001600160401b03831115611942576119426118c6565b611956836119508354611846565b836118dc565b6000601f84116001811461198a57600085156119725750838201355b600019600387901b1c1916600186901b178355611923565b600083815260209020601f19861690835b828110156119bb578685013582556020948501946001909201910161199b565b50868210156119d85760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81356119f5816115c2565b6001600160401b03811690508154816001600160401b031982161783556020840135611a20816115c2565b6fffffffffffffffffffffffffffffffff1991909116909117604091821b6fffffffffffffffff0000000000000000161782558201356001820155600080606084013536859003601e19018112611a75578283fd5b8401803591506001600160401b03821115611a8e578283fd5b602001915036819003821315611aa357600080fd5b611ab181836002860161192b565b50505050565b6001600160401b038516815283602082015260606040820152816060820152818360808301376000818301608090810191909152601f909201601f191601019392505050565b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fdfea264697066735822122019b2baf8a24f7ca2711dccbe3a21729996fa2a14b04d639940248d30ab9a735564736f6c634300081a0033000000000000000000000000a272c14931e725d5cdb30f87af77cf5ce3d20b32000000000000000000000000aa64fa67856f2c89d6456595bc21418237f780248990e7a9aaed2ffed73dbd7092123d6f289930540d7651336225dc172e51b2ce", + "nonce": "0x11", + "chainId": "0x34c1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x210beec", + "logs": [ + { + "address": "0x576f30058e8f1bb8ef57c7e47cc96f1bd91dd126", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000a272c14931e725d5cdb30f87af77cf5ce3d20b32" + ], + "data": "0x", + "blockHash": "0x9d4ed828fb97c56ea91823e27c39100ac052bd22136d5644803b36f11b24583a", + "blockNumber": "0xad", + "transactionHash": "0xd574cc6db8a4ab34b988514d87ec48fecf43daee7f7f69f5e2517ad2cebd7d08", + "transactionIndex": "0x1", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x576f30058e8f1bb8ef57c7e47cc96f1bd91dd126", + "topics": [ + "0x5553331329228fbd4123164423717a4a7539f6dfa1c3279a923b98fd681a6c73" + ], + "data": "0x000000000000000000000000aa64fa67856f2c89d6456595bc21418237f78024", + "blockHash": "0x9d4ed828fb97c56ea91823e27c39100ac052bd22136d5644803b36f11b24583a", + "blockNumber": "0xad", + "transactionHash": "0xd574cc6db8a4ab34b988514d87ec48fecf43daee7f7f69f5e2517ad2cebd7d08", + "transactionIndex": "0x1", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000010000000000000800000000000000020000000000000000000000000001000000000000000000000000000000000000020000000100000000000800000000000004000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000002000000000000000000000000000000000000000000000000400000000000000020000000000000000000000000000000000000000000000000000100000000000000", + "type": "0x2", + "transactionHash": "0xd574cc6db8a4ab34b988514d87ec48fecf43daee7f7f69f5e2517ad2cebd7d08", + "transactionIndex": "0x1", + "blockHash": "0x9d4ed828fb97c56ea91823e27c39100ac052bd22136d5644803b36f11b24583a", + "blockNumber": "0xad", + "gasUsed": "0x210beec", + "effectiveGasPrice": "0x5f5e100", + "from": "0xa272c14931e725d5cdb30f87af77cf5ce3d20b32", + "to": null, + "contractAddress": "0x576f30058e8f1bb8ef57c7e47cc96f1bd91dd126", + "gasUsedForL1": "0x1f76b3c", + "l1BlockNumber": "0x6a98e7" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1730410831, + "chain": 13505, + "commit": "eba27f9" +} \ No newline at end of file diff --git a/contracts/foundry.toml b/contracts/foundry.toml index 53061fc..0089f97 100644 --- a/contracts/foundry.toml +++ b/contracts/foundry.toml @@ -5,6 +5,12 @@ libs = ["lib"] remappings = ["@openzeppelin/=lib/openzeppelin-contracts/"] +[rpc_endpoints] +gravity = "${RPC_GRAVITY}" +gravity_sepolia = "${RPC_GRAVITY_SEPOLIA}" +anvil = "http://127.0.0.1:8545" + [etherscan] -gravity_testnet = { key = "", chain = "13505", url = "https://explorer-sepolia.gravity.xyz/api" } +gravity = { key = "${ETHERSCAN_API_KEY_GRAVITY}", url = "${ETHERSCAN_API_URL_GRAVITY}" } +gravity_sepolia = { key = "${ETHERSCAN_API_KEY_GRAVITY_SEPOLIA}", url = "${ETHERSCAN_API_URL_GRAVITY_SEPOLIA}" } anvil = { key = "", chain = "31337", url = "http://127.0.0.1:8545" } diff --git a/contracts/script/deploy/DrandOracle.s.sol b/contracts/script/deploy/DrandOracle.s.sol index 332cc36..79559eb 100644 --- a/contracts/script/deploy/DrandOracle.s.sol +++ b/contracts/script/deploy/DrandOracle.s.sol @@ -2,19 +2,22 @@ pragma solidity ^0.8.24; import "forge-std/Script.sol"; +import {BaseScript} from "../utils/Base.s.sol"; import {DrandOracle} from "../../src/DrandOracle.sol"; -contract DrandOracleScript is Script { - function run() public { - uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); +contract DrandOracleScript is BaseScript { + function run() external chain broadcaster { + bytes32 CREATE2_SALT = vm.envBytes32("CREATE2_SALT"); address owner = vm.envAddress("OWNER"); address signer = vm.envAddress("SIGNER"); bytes32 chainHash = vm.envBytes32("CHAIN_HASH"); - vm.startBroadcast(deployerPrivateKey); - DrandOracle oracle = new DrandOracle{salt: "DrandOracle"}(owner, signer, chainHash); - console.log("DrandOracle deployed at:", address(oracle)); + console.log("Owner:", owner); + console.log("Signer:", signer); + console.log("Chain hash:"); + console.logBytes32(chainHash); - vm.stopBroadcast(); + DrandOracle oracle = new DrandOracle{salt: CREATE2_SALT}(owner, signer, chainHash); + console.log("DrandOracle deployed at:", address(oracle)); } } diff --git a/contracts/script/utils/Base.s.sol b/contracts/script/utils/Base.s.sol new file mode 100644 index 0000000..9cb8fc4 --- /dev/null +++ b/contracts/script/utils/Base.s.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "forge-std/Vm.sol"; +import "forge-std/console.sol"; +import {stdJson} from "forge-std/StdJson.sol"; +import {Script} from "forge-std/Script.sol"; + +/// @notice Script to inherit from to get access to helper functions for deployments. +abstract contract BaseScript is Script { + using stdJson for string; + + /// @notice Run the command with the `--broadcast` flag to send the transaction to the chain, + /// otherwise just simulate the transaction execution. + modifier broadcaster() { + uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + console.log("Deployer: %s", vm.addr(deployerPrivateKey)); + vm.startBroadcast(deployerPrivateKey); + _; + vm.stopBroadcast(); + } + + /// @notice Runs the script on the chain specified in the `CHAIN` env variable. + /// Must have a `RPC_${CHAIN}` env variable set for the chain (e.g. RPC_MAINNET). + modifier chain() { + string memory c = vm.envString("CHAIN"); + + // Switch to the chain using the RPC + vm.createSelectFork(c); + + console.log("Running script on %s", c); + + _; + } +}