diff --git a/.env.example b/.env.example index ea48de8..7109083 100644 --- a/.env.example +++ b/.env.example @@ -1,8 +1,10 @@ -export DEPLOYER_PRIVATE_KEY="YOUR_PRIVATE_KEY" -export MNEMONIC="YOUR_MNEMONIC" -export API_KEY_ALCHEMY="YOUR_ALCHEMY_API_KEY" -export API_KEY_INFURA="YOUR_INFURA_API_KEY" +export DEPLOYER_PRIVATE_KEY="your api key" +export API_KEY_ALCHEMY="your api key" +export API_KEY_INFURA="your api key" -export API_KEY_ETHERSCAN="YOUR_ETHERSCAN_API_KEY" -export API_KEY_OPTIMISTIC_ETHERSCAN="YOUR_OPTIMISTIC_ETHERSCAN_API_KEY" +export API_KEY_ARBISCAN="your api key" +export API_KEY_BASESCAN="your api key" +export API_KEY_ETHERSCAN="your api key" +export API_KEY_OPTIMISTIC_ETHERSCAN="your api key" +export API_KEY_CELOSCAN="your api key" export NEMONIC="test test test test test test test test test test test test" \ No newline at end of file diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0970c26..e526a33 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,6 +11,9 @@ env: API_KEY_OPTIMISTIC_ETHERSCAN: ${{secrets.API_KEY_OPTIMISTIC_ETHERSCAN}} API_KEY_ETHERSCAN: ${{secrets.API_KEY_ETHERSCAN}} API_KEY_ALCHEMY: ${{secrets.API_KEY_ALCHEMY}} + API_KEY_ARBISCAN: ${{${{secrets.API_KEY_ARBISCAN}} + API_KEY_BASESCAN: ${{secrets.API_KEY_BASESCAN}} + API_KEY_CELOSCAN: ${{secrets.API_KEY_CELOSCAN}} jobs: build: diff --git a/.gitmodules b/.gitmodules index 23acfb1..c970396 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "lib/openzeppelin-contracts-upgradeable"] path = lib/openzeppelin-contracts-upgradeable url = https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable +[submodule "lib/hypercerts-protocol"] + path = lib/hypercerts-protocol + url = https://github.com/hypercerts-org/hypercerts-protocol diff --git a/README.md b/README.md index 75b2409..04f6b6f 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ ## Implementation ### BatchTransferFraction + ```mermaid sequenceDiagram actor o as Owner @@ -23,6 +24,7 @@ b ->> r: safeTransferFrom() end ``` + ```solidity /// @dev msg.sender must be the owner of all the fraction IDs being transferred /// @dev msg.sender must have approved the contract to transfer the fractions @@ -32,7 +34,6 @@ end require(data.length > 0, INVALID_DATA()); TransferData memory transferData = abi.decode(data, (TransferData)); require(transferData.recipients.length == transferData.fractionIds.length, INVALID_LENGTHS()); - _batchTransfer(transferData.recipients, transferData.fractionIds); } @@ -42,12 +43,28 @@ end /// @param recipients The addresses of the recipients /// @param fractionIds The IDs of the fractions to be transferred function _batchTransfer(address[] memory recipients, uint256[] memory fractionIds) internal { - for (uint256 i = 0; i < recipients.length; i++) { + uint256 length = recipients.length; + for (uint256 i = 0; i < length; i++) { address recipient = recipients[i]; uint256 fractionId = fractionIds[i]; require(hypercertToken.ownerOf(fractionId) == msg.sender, INVALID_CALLER(msg.sender)); hypercertToken.safeTransferFrom(msg.sender, recipient, fractionId, 1, ""); } + emit BatchFractionTransfer(msg.sender, recipients, fractionIds); } ``` + +## Deployments + +### BatchTransferFraction + +| chain | chainId | address | +| ---------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------- | +| Sepolia | 11155111 | [0x59e07f1cc8eb8eca2703179a7217673318a0fe47](https://sepolia.etherscan.io/address/0x59e07f1cc8eb8eca2703179a7217673318a0fe47) | +| Base Sepolia | 84532 | [0x3C0FaAA04078d715BB05Af82Ca99c41623AeC5Ae](https://sepolia.basescan.org/address/0x3C0FaAA04078d715BB05Af82Ca99c41623AeC5Ae) | +| Arbitrum Sepolia | 421614 | [0x0fCCa2bAd3103934304874E782450688B7a044B0](https://sepolia.arbiscan.io/address/0x0fCCa2bAd3103934304874E782450688B7a044B0) | +| Optimism | 10 | [0xf77e452ec289da0616574aae371800ca4d6315b1](https://optimistic.etherscan.io/address/0xf77e452ec289da0616574aae371800ca4d6315b1) | +| Base | 8453 | [0xc4aEB039BC432343bf4dB57Be203E0540d385a18](https://basescan.org/address/0xc4aEB039BC432343bf4dB57Be203E0540d385a18) | +| Arbitrum | 42161 | [0x8b973c408c2748588b3ECFfDA06D670819FbEb1D](https://arbiscan.io/address/0x8b973c408c2748588b3ECFfDA06D670819FbEb1D) | +| Celo | 42220 | [0xB64B7e4793D72958e028B1D5D556888b115c4c3E](https://celoscan.io/address/0xB64B7e4793D72958e028B1D5D556888b115c4c3E) | diff --git a/broadcast/DeployBatchTransferScript.s.sol/10/run-1745832438.json b/broadcast/DeployBatchTransferScript.s.sol/10/run-1745832438.json new file mode 100644 index 0000000..23c264c --- /dev/null +++ b/broadcast/DeployBatchTransferScript.s.sol/10/run-1745832438.json @@ -0,0 +1,54 @@ +{ + "transactions": [ + { + "hash": "0x731098a5ade3bfca43aee36be56e4d0395f16186a508c69da5869fffe0259c50", + "transactionType": "CREATE", + "contractName": "BatchTransferFraction", + "contractAddress": "0xf77e452ec289da0616574aae371800ca4d6315b1", + "function": null, + "arguments": [ + "0x822F17A9A5EeCFd66dBAFf7946a8071C265D1d07" + ], + "transaction": { + "from": "0xc3593524e2744e547f013e17e6b0776bc27fc614", + "gas": "0x84ba9", + "value": "0x0", + "input": "0x60a060405234801561000f575f5ffd5b5060405161075738038061075783398101604081905261002e91610078565b806001600160a01b03811661006657604051637f4c3a8160e11b81526001600160a01b03909116600482015260240160405180910390fd5b506001600160a01b03166080526100a5565b5f60208284031215610088575f5ffd5b81516001600160a01b038116811461009e575f5ffd5b9392505050565b60805161068d6100ca5f395f8181605201528181610157015261025c015261068d5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806310a890af14610038578063f49bdbea1461004d575b5f5ffd5b61004b61004636600461038a565b610090565b005b6100747f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b5f8151116100b157604051630e34c5ef60e11b815260040160405180910390fd5b5f818060200190518101906100c691906104c6565b602081015151815151919250146100f05760405163194374f160e11b815260040160405180910390fd5b610101815f01518260200151610105565b5050565b81515f5b818110156102c1575f848281518110610124576101246105bb565b602002602001015190505f848381518110610141576101416105bb565b60200260200101519050336001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e836040518263ffffffff1660e01b81526004016101a391815260200190565b602060405180830381865afa1580156101be573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e291906105cf565b6001600160a01b031614339061021b5760405163eb804abb60e01b81526001600160a01b03909116600482015260240160405180910390fd5b50604051637921219560e11b81523360048201526001600160a01b038381166024830152604482018390526001606483015260a060848301525f60a48301527f0000000000000000000000000000000000000000000000000000000000000000169063f242432a9060c4015f604051808303815f87803b15801561029d575f5ffd5b505af11580156102af573d5f5f3e3d5ffd5b50506001909401935061010992505050565b50816040516102d091906105ef565b6040518091039020836040516102e69190610624565b6040519081900381209033907f3f3c2c4ea143a2e27fbc736ce3268927ae97ed1db155207ffe0adfaff84cc3cb905f90a4505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156103535761035361031c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156103825761038261031c565b604052919050565b5f6020828403121561039a575f5ffd5b813567ffffffffffffffff8111156103b0575f5ffd5b8201601f810184136103c0575f5ffd5b803567ffffffffffffffff8111156103da576103da61031c565b6103ed601f8201601f1916602001610359565b818152856020838501011115610401575f5ffd5b816020840160208301375f91810160200191909152949350505050565b5f67ffffffffffffffff8211156104375761043761031c565b5060051b60200190565b80516001600160a01b0381168114610457575f5ffd5b919050565b5f82601f83011261046b575f5ffd5b815161047e6104798261041e565b610359565b8082825260208201915060208360051b86010192508583111561049f575f5ffd5b602085015b838110156104bc5780518352602092830192016104a4565b5095945050505050565b5f602082840312156104d6575f5ffd5b815167ffffffffffffffff8111156104ec575f5ffd5b8201604081850312156104fd575f5ffd5b610505610330565b815167ffffffffffffffff81111561051b575f5ffd5b8201601f8101861361052b575f5ffd5b80516105396104798261041e565b8082825260208201915060208360051b85010192508883111561055a575f5ffd5b6020840193505b828410156105835761057284610441565b825260209384019390910190610561565b8452505050602082015167ffffffffffffffff8111156105a1575f5ffd5b6105ad8682850161045c565b602083015250949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156105df575f5ffd5b6105e882610441565b9392505050565b81515f90829060208501835b828110156106195781518452602093840193909101906001016105fb565b509195945050505050565b81515f90829060208501835b828110156106195781516001600160a01b031684526020938401939091019060010161063056fea264697066735822122003733715a5bbed9d5d35546e5acca39a8821fadeb212ae4b1651b4978a7a79f964736f6c634300081c0033000000000000000000000000822f17a9a5eecfd66dbaff7946a8071c265d1d07", + "nonce": "0x3b", + "chainId": "0xa" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x5eca0e", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x731098a5ade3bfca43aee36be56e4d0395f16186a508c69da5869fffe0259c50", + "transactionIndex": "0x14", + "blockHash": "0xb33570f608b9fb11ccfa5681bc1de1077f0b4404e8fb279f8e97979dbd8ffb3a", + "blockNumber": "0x80db81b", + "gasUsed": "0x66196", + "effectiveGasPrice": "0x30f", + "from": "0xc3593524e2744e547f013e17e6b0776bc27fc614", + "to": null, + "contractAddress": "0xf77e452ec289da0616574aae371800ca4d6315b1", + "l1BaseFeeScalar": "0x146b", + "l1BlobBaseFee": "0x16d24cb01", + "l1BlobBaseFeeScalar": "0xf79c5", + "l1Fee": "0x6c50946dce5", + "l1GasPrice": "0x1c30c8d7", + "l1GasUsed": "0x4a66" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1745832438, + "chain": 10, + "commit": "4ee5d8e" +} \ No newline at end of file diff --git a/broadcast/DeployBatchTransferScript.s.sol/10/run-latest.json b/broadcast/DeployBatchTransferScript.s.sol/10/run-latest.json new file mode 100644 index 0000000..23c264c --- /dev/null +++ b/broadcast/DeployBatchTransferScript.s.sol/10/run-latest.json @@ -0,0 +1,54 @@ +{ + "transactions": [ + { + "hash": "0x731098a5ade3bfca43aee36be56e4d0395f16186a508c69da5869fffe0259c50", + "transactionType": "CREATE", + "contractName": "BatchTransferFraction", + "contractAddress": "0xf77e452ec289da0616574aae371800ca4d6315b1", + "function": null, + "arguments": [ + "0x822F17A9A5EeCFd66dBAFf7946a8071C265D1d07" + ], + "transaction": { + "from": "0xc3593524e2744e547f013e17e6b0776bc27fc614", + "gas": "0x84ba9", + "value": "0x0", + "input": "0x60a060405234801561000f575f5ffd5b5060405161075738038061075783398101604081905261002e91610078565b806001600160a01b03811661006657604051637f4c3a8160e11b81526001600160a01b03909116600482015260240160405180910390fd5b506001600160a01b03166080526100a5565b5f60208284031215610088575f5ffd5b81516001600160a01b038116811461009e575f5ffd5b9392505050565b60805161068d6100ca5f395f8181605201528181610157015261025c015261068d5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806310a890af14610038578063f49bdbea1461004d575b5f5ffd5b61004b61004636600461038a565b610090565b005b6100747f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b5f8151116100b157604051630e34c5ef60e11b815260040160405180910390fd5b5f818060200190518101906100c691906104c6565b602081015151815151919250146100f05760405163194374f160e11b815260040160405180910390fd5b610101815f01518260200151610105565b5050565b81515f5b818110156102c1575f848281518110610124576101246105bb565b602002602001015190505f848381518110610141576101416105bb565b60200260200101519050336001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e836040518263ffffffff1660e01b81526004016101a391815260200190565b602060405180830381865afa1580156101be573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e291906105cf565b6001600160a01b031614339061021b5760405163eb804abb60e01b81526001600160a01b03909116600482015260240160405180910390fd5b50604051637921219560e11b81523360048201526001600160a01b038381166024830152604482018390526001606483015260a060848301525f60a48301527f0000000000000000000000000000000000000000000000000000000000000000169063f242432a9060c4015f604051808303815f87803b15801561029d575f5ffd5b505af11580156102af573d5f5f3e3d5ffd5b50506001909401935061010992505050565b50816040516102d091906105ef565b6040518091039020836040516102e69190610624565b6040519081900381209033907f3f3c2c4ea143a2e27fbc736ce3268927ae97ed1db155207ffe0adfaff84cc3cb905f90a4505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156103535761035361031c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156103825761038261031c565b604052919050565b5f6020828403121561039a575f5ffd5b813567ffffffffffffffff8111156103b0575f5ffd5b8201601f810184136103c0575f5ffd5b803567ffffffffffffffff8111156103da576103da61031c565b6103ed601f8201601f1916602001610359565b818152856020838501011115610401575f5ffd5b816020840160208301375f91810160200191909152949350505050565b5f67ffffffffffffffff8211156104375761043761031c565b5060051b60200190565b80516001600160a01b0381168114610457575f5ffd5b919050565b5f82601f83011261046b575f5ffd5b815161047e6104798261041e565b610359565b8082825260208201915060208360051b86010192508583111561049f575f5ffd5b602085015b838110156104bc5780518352602092830192016104a4565b5095945050505050565b5f602082840312156104d6575f5ffd5b815167ffffffffffffffff8111156104ec575f5ffd5b8201604081850312156104fd575f5ffd5b610505610330565b815167ffffffffffffffff81111561051b575f5ffd5b8201601f8101861361052b575f5ffd5b80516105396104798261041e565b8082825260208201915060208360051b85010192508883111561055a575f5ffd5b6020840193505b828410156105835761057284610441565b825260209384019390910190610561565b8452505050602082015167ffffffffffffffff8111156105a1575f5ffd5b6105ad8682850161045c565b602083015250949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156105df575f5ffd5b6105e882610441565b9392505050565b81515f90829060208501835b828110156106195781518452602093840193909101906001016105fb565b509195945050505050565b81515f90829060208501835b828110156106195781516001600160a01b031684526020938401939091019060010161063056fea264697066735822122003733715a5bbed9d5d35546e5acca39a8821fadeb212ae4b1651b4978a7a79f964736f6c634300081c0033000000000000000000000000822f17a9a5eecfd66dbaff7946a8071c265d1d07", + "nonce": "0x3b", + "chainId": "0xa" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x5eca0e", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x731098a5ade3bfca43aee36be56e4d0395f16186a508c69da5869fffe0259c50", + "transactionIndex": "0x14", + "blockHash": "0xb33570f608b9fb11ccfa5681bc1de1077f0b4404e8fb279f8e97979dbd8ffb3a", + "blockNumber": "0x80db81b", + "gasUsed": "0x66196", + "effectiveGasPrice": "0x30f", + "from": "0xc3593524e2744e547f013e17e6b0776bc27fc614", + "to": null, + "contractAddress": "0xf77e452ec289da0616574aae371800ca4d6315b1", + "l1BaseFeeScalar": "0x146b", + "l1BlobBaseFee": "0x16d24cb01", + "l1BlobBaseFeeScalar": "0xf79c5", + "l1Fee": "0x6c50946dce5", + "l1GasPrice": "0x1c30c8d7", + "l1GasUsed": "0x4a66" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1745832438, + "chain": 10, + "commit": "4ee5d8e" +} \ No newline at end of file diff --git a/broadcast/DeployBatchTransferScript.s.sol/11155111/run-1745832419.json b/broadcast/DeployBatchTransferScript.s.sol/11155111/run-1745832419.json new file mode 100644 index 0000000..6977e8f --- /dev/null +++ b/broadcast/DeployBatchTransferScript.s.sol/11155111/run-1745832419.json @@ -0,0 +1,48 @@ +{ + "transactions": [ + { + "hash": "0x4e72790d7b0b743a863ebce953967095ed412c7f115da1b4c99223a406217fff", + "transactionType": "CREATE", + "contractName": "BatchTransferFraction", + "contractAddress": "0x59e07f1cc8eb8eca2703179a7217673318a0fe47", + "function": null, + "arguments": [ + "0xa16DFb32Eb140a6f3F2AC68f41dAd8c7e83C4941" + ], + "transaction": { + "from": "0xc3593524e2744e547f013e17e6b0776bc27fc614", + "gas": "0x84ba9", + "value": "0x0", + "input": "0x60a060405234801561000f575f5ffd5b5060405161075738038061075783398101604081905261002e91610078565b806001600160a01b03811661006657604051637f4c3a8160e11b81526001600160a01b03909116600482015260240160405180910390fd5b506001600160a01b03166080526100a5565b5f60208284031215610088575f5ffd5b81516001600160a01b038116811461009e575f5ffd5b9392505050565b60805161068d6100ca5f395f8181605201528181610157015261025c015261068d5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806310a890af14610038578063f49bdbea1461004d575b5f5ffd5b61004b61004636600461038a565b610090565b005b6100747f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b5f8151116100b157604051630e34c5ef60e11b815260040160405180910390fd5b5f818060200190518101906100c691906104c6565b602081015151815151919250146100f05760405163194374f160e11b815260040160405180910390fd5b610101815f01518260200151610105565b5050565b81515f5b818110156102c1575f848281518110610124576101246105bb565b602002602001015190505f848381518110610141576101416105bb565b60200260200101519050336001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e836040518263ffffffff1660e01b81526004016101a391815260200190565b602060405180830381865afa1580156101be573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e291906105cf565b6001600160a01b031614339061021b5760405163eb804abb60e01b81526001600160a01b03909116600482015260240160405180910390fd5b50604051637921219560e11b81523360048201526001600160a01b038381166024830152604482018390526001606483015260a060848301525f60a48301527f0000000000000000000000000000000000000000000000000000000000000000169063f242432a9060c4015f604051808303815f87803b15801561029d575f5ffd5b505af11580156102af573d5f5f3e3d5ffd5b50506001909401935061010992505050565b50816040516102d091906105ef565b6040518091039020836040516102e69190610624565b6040519081900381209033907f3f3c2c4ea143a2e27fbc736ce3268927ae97ed1db155207ffe0adfaff84cc3cb905f90a4505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156103535761035361031c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156103825761038261031c565b604052919050565b5f6020828403121561039a575f5ffd5b813567ffffffffffffffff8111156103b0575f5ffd5b8201601f810184136103c0575f5ffd5b803567ffffffffffffffff8111156103da576103da61031c565b6103ed601f8201601f1916602001610359565b818152856020838501011115610401575f5ffd5b816020840160208301375f91810160200191909152949350505050565b5f67ffffffffffffffff8211156104375761043761031c565b5060051b60200190565b80516001600160a01b0381168114610457575f5ffd5b919050565b5f82601f83011261046b575f5ffd5b815161047e6104798261041e565b610359565b8082825260208201915060208360051b86010192508583111561049f575f5ffd5b602085015b838110156104bc5780518352602092830192016104a4565b5095945050505050565b5f602082840312156104d6575f5ffd5b815167ffffffffffffffff8111156104ec575f5ffd5b8201604081850312156104fd575f5ffd5b610505610330565b815167ffffffffffffffff81111561051b575f5ffd5b8201601f8101861361052b575f5ffd5b80516105396104798261041e565b8082825260208201915060208360051b85010192508883111561055a575f5ffd5b6020840193505b828410156105835761057284610441565b825260209384019390910190610561565b8452505050602082015167ffffffffffffffff8111156105a1575f5ffd5b6105ad8682850161045c565b602083015250949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156105df575f5ffd5b6105e882610441565b9392505050565b81515f90829060208501835b828110156106195781518452602093840193909101906001016105fb565b509195945050505050565b81515f90829060208501835b828110156106195781516001600160a01b031684526020938401939091019060010161063056fea264697066735822122003733715a5bbed9d5d35546e5acca39a8821fadeb212ae4b1651b4978a7a79f964736f6c634300081c0033000000000000000000000000a16dfb32eb140a6f3f2ac68f41dad8c7e83c4941", + "nonce": "0x127", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x836901", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x4e72790d7b0b743a863ebce953967095ed412c7f115da1b4c99223a406217fff", + "transactionIndex": "0x57", + "blockHash": "0x2effef7aceca4ca15ef7870af86056a1ff1293a1e063c3797332eae7cb2fb2ad", + "blockNumber": "0x7d4e13", + "gasUsed": "0x66196", + "effectiveGasPrice": "0x4730df79f", + "from": "0xc3593524e2744e547f013e17e6b0776bc27fc614", + "to": null, + "contractAddress": "0x59e07f1cc8eb8eca2703179a7217673318a0fe47" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1745832419, + "chain": 11155111, + "commit": "4ee5d8e" +} \ No newline at end of file diff --git a/broadcast/DeployBatchTransferScript.s.sol/11155111/run-latest.json b/broadcast/DeployBatchTransferScript.s.sol/11155111/run-latest.json new file mode 100644 index 0000000..6977e8f --- /dev/null +++ b/broadcast/DeployBatchTransferScript.s.sol/11155111/run-latest.json @@ -0,0 +1,48 @@ +{ + "transactions": [ + { + "hash": "0x4e72790d7b0b743a863ebce953967095ed412c7f115da1b4c99223a406217fff", + "transactionType": "CREATE", + "contractName": "BatchTransferFraction", + "contractAddress": "0x59e07f1cc8eb8eca2703179a7217673318a0fe47", + "function": null, + "arguments": [ + "0xa16DFb32Eb140a6f3F2AC68f41dAd8c7e83C4941" + ], + "transaction": { + "from": "0xc3593524e2744e547f013e17e6b0776bc27fc614", + "gas": "0x84ba9", + "value": "0x0", + "input": "0x60a060405234801561000f575f5ffd5b5060405161075738038061075783398101604081905261002e91610078565b806001600160a01b03811661006657604051637f4c3a8160e11b81526001600160a01b03909116600482015260240160405180910390fd5b506001600160a01b03166080526100a5565b5f60208284031215610088575f5ffd5b81516001600160a01b038116811461009e575f5ffd5b9392505050565b60805161068d6100ca5f395f8181605201528181610157015261025c015261068d5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806310a890af14610038578063f49bdbea1461004d575b5f5ffd5b61004b61004636600461038a565b610090565b005b6100747f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b5f8151116100b157604051630e34c5ef60e11b815260040160405180910390fd5b5f818060200190518101906100c691906104c6565b602081015151815151919250146100f05760405163194374f160e11b815260040160405180910390fd5b610101815f01518260200151610105565b5050565b81515f5b818110156102c1575f848281518110610124576101246105bb565b602002602001015190505f848381518110610141576101416105bb565b60200260200101519050336001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e836040518263ffffffff1660e01b81526004016101a391815260200190565b602060405180830381865afa1580156101be573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e291906105cf565b6001600160a01b031614339061021b5760405163eb804abb60e01b81526001600160a01b03909116600482015260240160405180910390fd5b50604051637921219560e11b81523360048201526001600160a01b038381166024830152604482018390526001606483015260a060848301525f60a48301527f0000000000000000000000000000000000000000000000000000000000000000169063f242432a9060c4015f604051808303815f87803b15801561029d575f5ffd5b505af11580156102af573d5f5f3e3d5ffd5b50506001909401935061010992505050565b50816040516102d091906105ef565b6040518091039020836040516102e69190610624565b6040519081900381209033907f3f3c2c4ea143a2e27fbc736ce3268927ae97ed1db155207ffe0adfaff84cc3cb905f90a4505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156103535761035361031c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156103825761038261031c565b604052919050565b5f6020828403121561039a575f5ffd5b813567ffffffffffffffff8111156103b0575f5ffd5b8201601f810184136103c0575f5ffd5b803567ffffffffffffffff8111156103da576103da61031c565b6103ed601f8201601f1916602001610359565b818152856020838501011115610401575f5ffd5b816020840160208301375f91810160200191909152949350505050565b5f67ffffffffffffffff8211156104375761043761031c565b5060051b60200190565b80516001600160a01b0381168114610457575f5ffd5b919050565b5f82601f83011261046b575f5ffd5b815161047e6104798261041e565b610359565b8082825260208201915060208360051b86010192508583111561049f575f5ffd5b602085015b838110156104bc5780518352602092830192016104a4565b5095945050505050565b5f602082840312156104d6575f5ffd5b815167ffffffffffffffff8111156104ec575f5ffd5b8201604081850312156104fd575f5ffd5b610505610330565b815167ffffffffffffffff81111561051b575f5ffd5b8201601f8101861361052b575f5ffd5b80516105396104798261041e565b8082825260208201915060208360051b85010192508883111561055a575f5ffd5b6020840193505b828410156105835761057284610441565b825260209384019390910190610561565b8452505050602082015167ffffffffffffffff8111156105a1575f5ffd5b6105ad8682850161045c565b602083015250949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156105df575f5ffd5b6105e882610441565b9392505050565b81515f90829060208501835b828110156106195781518452602093840193909101906001016105fb565b509195945050505050565b81515f90829060208501835b828110156106195781516001600160a01b031684526020938401939091019060010161063056fea264697066735822122003733715a5bbed9d5d35546e5acca39a8821fadeb212ae4b1651b4978a7a79f964736f6c634300081c0033000000000000000000000000a16dfb32eb140a6f3f2ac68f41dad8c7e83c4941", + "nonce": "0x127", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x836901", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x4e72790d7b0b743a863ebce953967095ed412c7f115da1b4c99223a406217fff", + "transactionIndex": "0x57", + "blockHash": "0x2effef7aceca4ca15ef7870af86056a1ff1293a1e063c3797332eae7cb2fb2ad", + "blockNumber": "0x7d4e13", + "gasUsed": "0x66196", + "effectiveGasPrice": "0x4730df79f", + "from": "0xc3593524e2744e547f013e17e6b0776bc27fc614", + "to": null, + "contractAddress": "0x59e07f1cc8eb8eca2703179a7217673318a0fe47" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1745832419, + "chain": 11155111, + "commit": "4ee5d8e" +} \ No newline at end of file diff --git a/broadcast/DeployBatchTransferScript.s.sol/42161/run-1745833374.json b/broadcast/DeployBatchTransferScript.s.sol/42161/run-1745833374.json new file mode 100644 index 0000000..672d4e9 --- /dev/null +++ b/broadcast/DeployBatchTransferScript.s.sol/42161/run-1745833374.json @@ -0,0 +1,50 @@ +{ + "transactions": [ + { + "hash": "0xa2ad88407dcafe142872f55025a53f8000751f7d1fc527e2f4c6a902c60f5c91", + "transactionType": "CREATE", + "contractName": "BatchTransferFraction", + "contractAddress": "0x8b973c408c2748588b3ecffda06d670819fbeb1d", + "function": null, + "arguments": [ + "0x822F17A9A5EeCFd66dBAFf7946a8071C265D1d07" + ], + "transaction": { + "from": "0xc3593524e2744e547f013e17e6b0776bc27fc614", + "gas": "0x10a465", + "value": "0x0", + "input": "0x60a060405234801561000f575f5ffd5b5060405161075738038061075783398101604081905261002e91610078565b806001600160a01b03811661006657604051637f4c3a8160e11b81526001600160a01b03909116600482015260240160405180910390fd5b506001600160a01b03166080526100a5565b5f60208284031215610088575f5ffd5b81516001600160a01b038116811461009e575f5ffd5b9392505050565b60805161068d6100ca5f395f8181605201528181610157015261025c015261068d5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806310a890af14610038578063f49bdbea1461004d575b5f5ffd5b61004b61004636600461038a565b610090565b005b6100747f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b5f8151116100b157604051630e34c5ef60e11b815260040160405180910390fd5b5f818060200190518101906100c691906104c6565b602081015151815151919250146100f05760405163194374f160e11b815260040160405180910390fd5b610101815f01518260200151610105565b5050565b81515f5b818110156102c1575f848281518110610124576101246105bb565b602002602001015190505f848381518110610141576101416105bb565b60200260200101519050336001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e836040518263ffffffff1660e01b81526004016101a391815260200190565b602060405180830381865afa1580156101be573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e291906105cf565b6001600160a01b031614339061021b5760405163eb804abb60e01b81526001600160a01b03909116600482015260240160405180910390fd5b50604051637921219560e11b81523360048201526001600160a01b038381166024830152604482018390526001606483015260a060848301525f60a48301527f0000000000000000000000000000000000000000000000000000000000000000169063f242432a9060c4015f604051808303815f87803b15801561029d575f5ffd5b505af11580156102af573d5f5f3e3d5ffd5b50506001909401935061010992505050565b50816040516102d091906105ef565b6040518091039020836040516102e69190610624565b6040519081900381209033907f3f3c2c4ea143a2e27fbc736ce3268927ae97ed1db155207ffe0adfaff84cc3cb905f90a4505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156103535761035361031c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156103825761038261031c565b604052919050565b5f6020828403121561039a575f5ffd5b813567ffffffffffffffff8111156103b0575f5ffd5b8201601f810184136103c0575f5ffd5b803567ffffffffffffffff8111156103da576103da61031c565b6103ed601f8201601f1916602001610359565b818152856020838501011115610401575f5ffd5b816020840160208301375f91810160200191909152949350505050565b5f67ffffffffffffffff8211156104375761043761031c565b5060051b60200190565b80516001600160a01b0381168114610457575f5ffd5b919050565b5f82601f83011261046b575f5ffd5b815161047e6104798261041e565b610359565b8082825260208201915060208360051b86010192508583111561049f575f5ffd5b602085015b838110156104bc5780518352602092830192016104a4565b5095945050505050565b5f602082840312156104d6575f5ffd5b815167ffffffffffffffff8111156104ec575f5ffd5b8201604081850312156104fd575f5ffd5b610505610330565b815167ffffffffffffffff81111561051b575f5ffd5b8201601f8101861361052b575f5ffd5b80516105396104798261041e565b8082825260208201915060208360051b85010192508883111561055a575f5ffd5b6020840193505b828410156105835761057284610441565b825260209384019390910190610561565b8452505050602082015167ffffffffffffffff8111156105a1575f5ffd5b6105ad8682850161045c565b602083015250949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156105df575f5ffd5b6105e882610441565b9392505050565b81515f90829060208501835b828110156106195781518452602093840193909101906001016105fb565b509195945050505050565b81515f90829060208501835b828110156106195781516001600160a01b031684526020938401939091019060010161063056fea264697066735822122003733715a5bbed9d5d35546e5acca39a8821fadeb212ae4b1651b4978a7a79f964736f6c634300081c0033000000000000000000000000822f17a9a5eecfd66dbaff7946a8071c265d1d07", + "nonce": "0x3", + "chainId": "0xa4b1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x27b02b", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xa2ad88407dcafe142872f55025a53f8000751f7d1fc527e2f4c6a902c60f5c91", + "transactionIndex": "0x9", + "blockHash": "0x12d4db69a9b8f076fe68569e5066bac2eaed6bc589e2625bebd30855edcfb6ea", + "blockNumber": "0x13bb80ab", + "gasUsed": "0xbdea3", + "effectiveGasPrice": "0x989680", + "from": "0xc3593524e2744e547f013e17e6b0776bc27fc614", + "to": null, + "contractAddress": "0x8b973c408c2748588b3ecffda06d670819fbeb1d", + "gasUsedForL1": "0x57d0d", + "l1BlockNumber": "0x1554a12" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1745833374, + "chain": 42161, + "commit": "4ee5d8e" +} \ No newline at end of file diff --git a/broadcast/DeployBatchTransferScript.s.sol/42161/run-latest.json b/broadcast/DeployBatchTransferScript.s.sol/42161/run-latest.json new file mode 100644 index 0000000..672d4e9 --- /dev/null +++ b/broadcast/DeployBatchTransferScript.s.sol/42161/run-latest.json @@ -0,0 +1,50 @@ +{ + "transactions": [ + { + "hash": "0xa2ad88407dcafe142872f55025a53f8000751f7d1fc527e2f4c6a902c60f5c91", + "transactionType": "CREATE", + "contractName": "BatchTransferFraction", + "contractAddress": "0x8b973c408c2748588b3ecffda06d670819fbeb1d", + "function": null, + "arguments": [ + "0x822F17A9A5EeCFd66dBAFf7946a8071C265D1d07" + ], + "transaction": { + "from": "0xc3593524e2744e547f013e17e6b0776bc27fc614", + "gas": "0x10a465", + "value": "0x0", + "input": "0x60a060405234801561000f575f5ffd5b5060405161075738038061075783398101604081905261002e91610078565b806001600160a01b03811661006657604051637f4c3a8160e11b81526001600160a01b03909116600482015260240160405180910390fd5b506001600160a01b03166080526100a5565b5f60208284031215610088575f5ffd5b81516001600160a01b038116811461009e575f5ffd5b9392505050565b60805161068d6100ca5f395f8181605201528181610157015261025c015261068d5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806310a890af14610038578063f49bdbea1461004d575b5f5ffd5b61004b61004636600461038a565b610090565b005b6100747f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b5f8151116100b157604051630e34c5ef60e11b815260040160405180910390fd5b5f818060200190518101906100c691906104c6565b602081015151815151919250146100f05760405163194374f160e11b815260040160405180910390fd5b610101815f01518260200151610105565b5050565b81515f5b818110156102c1575f848281518110610124576101246105bb565b602002602001015190505f848381518110610141576101416105bb565b60200260200101519050336001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e836040518263ffffffff1660e01b81526004016101a391815260200190565b602060405180830381865afa1580156101be573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e291906105cf565b6001600160a01b031614339061021b5760405163eb804abb60e01b81526001600160a01b03909116600482015260240160405180910390fd5b50604051637921219560e11b81523360048201526001600160a01b038381166024830152604482018390526001606483015260a060848301525f60a48301527f0000000000000000000000000000000000000000000000000000000000000000169063f242432a9060c4015f604051808303815f87803b15801561029d575f5ffd5b505af11580156102af573d5f5f3e3d5ffd5b50506001909401935061010992505050565b50816040516102d091906105ef565b6040518091039020836040516102e69190610624565b6040519081900381209033907f3f3c2c4ea143a2e27fbc736ce3268927ae97ed1db155207ffe0adfaff84cc3cb905f90a4505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156103535761035361031c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156103825761038261031c565b604052919050565b5f6020828403121561039a575f5ffd5b813567ffffffffffffffff8111156103b0575f5ffd5b8201601f810184136103c0575f5ffd5b803567ffffffffffffffff8111156103da576103da61031c565b6103ed601f8201601f1916602001610359565b818152856020838501011115610401575f5ffd5b816020840160208301375f91810160200191909152949350505050565b5f67ffffffffffffffff8211156104375761043761031c565b5060051b60200190565b80516001600160a01b0381168114610457575f5ffd5b919050565b5f82601f83011261046b575f5ffd5b815161047e6104798261041e565b610359565b8082825260208201915060208360051b86010192508583111561049f575f5ffd5b602085015b838110156104bc5780518352602092830192016104a4565b5095945050505050565b5f602082840312156104d6575f5ffd5b815167ffffffffffffffff8111156104ec575f5ffd5b8201604081850312156104fd575f5ffd5b610505610330565b815167ffffffffffffffff81111561051b575f5ffd5b8201601f8101861361052b575f5ffd5b80516105396104798261041e565b8082825260208201915060208360051b85010192508883111561055a575f5ffd5b6020840193505b828410156105835761057284610441565b825260209384019390910190610561565b8452505050602082015167ffffffffffffffff8111156105a1575f5ffd5b6105ad8682850161045c565b602083015250949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156105df575f5ffd5b6105e882610441565b9392505050565b81515f90829060208501835b828110156106195781518452602093840193909101906001016105fb565b509195945050505050565b81515f90829060208501835b828110156106195781516001600160a01b031684526020938401939091019060010161063056fea264697066735822122003733715a5bbed9d5d35546e5acca39a8821fadeb212ae4b1651b4978a7a79f964736f6c634300081c0033000000000000000000000000822f17a9a5eecfd66dbaff7946a8071c265d1d07", + "nonce": "0x3", + "chainId": "0xa4b1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x27b02b", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xa2ad88407dcafe142872f55025a53f8000751f7d1fc527e2f4c6a902c60f5c91", + "transactionIndex": "0x9", + "blockHash": "0x12d4db69a9b8f076fe68569e5066bac2eaed6bc589e2625bebd30855edcfb6ea", + "blockNumber": "0x13bb80ab", + "gasUsed": "0xbdea3", + "effectiveGasPrice": "0x989680", + "from": "0xc3593524e2744e547f013e17e6b0776bc27fc614", + "to": null, + "contractAddress": "0x8b973c408c2748588b3ecffda06d670819fbeb1d", + "gasUsedForL1": "0x57d0d", + "l1BlockNumber": "0x1554a12" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1745833374, + "chain": 42161, + "commit": "4ee5d8e" +} \ No newline at end of file diff --git a/broadcast/DeployBatchTransferScript.s.sol/421614/run-1745833337.json b/broadcast/DeployBatchTransferScript.s.sol/421614/run-1745833337.json new file mode 100644 index 0000000..79c1e86 --- /dev/null +++ b/broadcast/DeployBatchTransferScript.s.sol/421614/run-1745833337.json @@ -0,0 +1,51 @@ +{ + "transactions": [ + { + "hash": "0x7691a500cd584e45e3aa2eb65d2c2fa955180f4c7a170578370664c655de6228", + "transactionType": "CREATE", + "contractName": "BatchTransferFraction", + "contractAddress": "0x0fcca2bad3103934304874e782450688b7a044b0", + "function": null, + "arguments": [ + "0x0A00a2f09cd37B24E7429c5238323bfebCfF3Ed9" + ], + "transaction": { + "from": "0xc3593524e2744e547f013e17e6b0776bc27fc614", + "gas": "0xa534a", + "value": "0x0", + "input": "0x60a060405234801561000f575f5ffd5b5060405161075738038061075783398101604081905261002e91610078565b806001600160a01b03811661006657604051637f4c3a8160e11b81526001600160a01b03909116600482015260240160405180910390fd5b506001600160a01b03166080526100a5565b5f60208284031215610088575f5ffd5b81516001600160a01b038116811461009e575f5ffd5b9392505050565b60805161068d6100ca5f395f8181605201528181610157015261025c015261068d5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806310a890af14610038578063f49bdbea1461004d575b5f5ffd5b61004b61004636600461038a565b610090565b005b6100747f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b5f8151116100b157604051630e34c5ef60e11b815260040160405180910390fd5b5f818060200190518101906100c691906104c6565b602081015151815151919250146100f05760405163194374f160e11b815260040160405180910390fd5b610101815f01518260200151610105565b5050565b81515f5b818110156102c1575f848281518110610124576101246105bb565b602002602001015190505f848381518110610141576101416105bb565b60200260200101519050336001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e836040518263ffffffff1660e01b81526004016101a391815260200190565b602060405180830381865afa1580156101be573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e291906105cf565b6001600160a01b031614339061021b5760405163eb804abb60e01b81526001600160a01b03909116600482015260240160405180910390fd5b50604051637921219560e11b81523360048201526001600160a01b038381166024830152604482018390526001606483015260a060848301525f60a48301527f0000000000000000000000000000000000000000000000000000000000000000169063f242432a9060c4015f604051808303815f87803b15801561029d575f5ffd5b505af11580156102af573d5f5f3e3d5ffd5b50506001909401935061010992505050565b50816040516102d091906105ef565b6040518091039020836040516102e69190610624565b6040519081900381209033907f3f3c2c4ea143a2e27fbc736ce3268927ae97ed1db155207ffe0adfaff84cc3cb905f90a4505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156103535761035361031c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156103825761038261031c565b604052919050565b5f6020828403121561039a575f5ffd5b813567ffffffffffffffff8111156103b0575f5ffd5b8201601f810184136103c0575f5ffd5b803567ffffffffffffffff8111156103da576103da61031c565b6103ed601f8201601f1916602001610359565b818152856020838501011115610401575f5ffd5b816020840160208301375f91810160200191909152949350505050565b5f67ffffffffffffffff8211156104375761043761031c565b5060051b60200190565b80516001600160a01b0381168114610457575f5ffd5b919050565b5f82601f83011261046b575f5ffd5b815161047e6104798261041e565b610359565b8082825260208201915060208360051b86010192508583111561049f575f5ffd5b602085015b838110156104bc5780518352602092830192016104a4565b5095945050505050565b5f602082840312156104d6575f5ffd5b815167ffffffffffffffff8111156104ec575f5ffd5b8201604081850312156104fd575f5ffd5b610505610330565b815167ffffffffffffffff81111561051b575f5ffd5b8201601f8101861361052b575f5ffd5b80516105396104798261041e565b8082825260208201915060208360051b85010192508883111561055a575f5ffd5b6020840193505b828410156105835761057284610441565b825260209384019390910190610561565b8452505050602082015167ffffffffffffffff8111156105a1575f5ffd5b6105ad8682850161045c565b602083015250949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156105df575f5ffd5b6105e882610441565b9392505050565b81515f90829060208501835b828110156106195781518452602093840193909101906001016105fb565b509195945050505050565b81515f90829060208501835b828110156106195781516001600160a01b031684526020938401939091019060010161063056fea264697066735822122003733715a5bbed9d5d35546e5acca39a8821fadeb212ae4b1651b4978a7a79f964736f6c634300081c00330000000000000000000000000a00a2f09cd37b24e7429c5238323bfebcff3ed9", + "nonce": "0x21", + "chainId": "0x66eee" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x84e26", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x7691a500cd584e45e3aa2eb65d2c2fa955180f4c7a170578370664c655de6228", + "transactionIndex": "0x2", + "blockHash": "0x09680a2a9c70b5258a5f549858ffeb13a3edfacbda9d053c042c28b2101808c1", + "blockNumber": "0x8c805ea", + "gasUsed": "0x7ac12", + "effectiveGasPrice": "0x5f5e100", + "from": "0xc3593524e2744e547f013e17e6b0776bc27fc614", + "to": null, + "contractAddress": "0x0fcca2bad3103934304874e782450688b7a044b0", + "gasUsedForL1": "0x14a88", + "l1BlockNumber": "0x7d4e5a", + "timeboosted": false + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1745833337, + "chain": 421614, + "commit": "4ee5d8e" +} \ No newline at end of file diff --git a/broadcast/DeployBatchTransferScript.s.sol/421614/run-latest.json b/broadcast/DeployBatchTransferScript.s.sol/421614/run-latest.json new file mode 100644 index 0000000..79c1e86 --- /dev/null +++ b/broadcast/DeployBatchTransferScript.s.sol/421614/run-latest.json @@ -0,0 +1,51 @@ +{ + "transactions": [ + { + "hash": "0x7691a500cd584e45e3aa2eb65d2c2fa955180f4c7a170578370664c655de6228", + "transactionType": "CREATE", + "contractName": "BatchTransferFraction", + "contractAddress": "0x0fcca2bad3103934304874e782450688b7a044b0", + "function": null, + "arguments": [ + "0x0A00a2f09cd37B24E7429c5238323bfebCfF3Ed9" + ], + "transaction": { + "from": "0xc3593524e2744e547f013e17e6b0776bc27fc614", + "gas": "0xa534a", + "value": "0x0", + "input": "0x60a060405234801561000f575f5ffd5b5060405161075738038061075783398101604081905261002e91610078565b806001600160a01b03811661006657604051637f4c3a8160e11b81526001600160a01b03909116600482015260240160405180910390fd5b506001600160a01b03166080526100a5565b5f60208284031215610088575f5ffd5b81516001600160a01b038116811461009e575f5ffd5b9392505050565b60805161068d6100ca5f395f8181605201528181610157015261025c015261068d5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806310a890af14610038578063f49bdbea1461004d575b5f5ffd5b61004b61004636600461038a565b610090565b005b6100747f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b5f8151116100b157604051630e34c5ef60e11b815260040160405180910390fd5b5f818060200190518101906100c691906104c6565b602081015151815151919250146100f05760405163194374f160e11b815260040160405180910390fd5b610101815f01518260200151610105565b5050565b81515f5b818110156102c1575f848281518110610124576101246105bb565b602002602001015190505f848381518110610141576101416105bb565b60200260200101519050336001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e836040518263ffffffff1660e01b81526004016101a391815260200190565b602060405180830381865afa1580156101be573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e291906105cf565b6001600160a01b031614339061021b5760405163eb804abb60e01b81526001600160a01b03909116600482015260240160405180910390fd5b50604051637921219560e11b81523360048201526001600160a01b038381166024830152604482018390526001606483015260a060848301525f60a48301527f0000000000000000000000000000000000000000000000000000000000000000169063f242432a9060c4015f604051808303815f87803b15801561029d575f5ffd5b505af11580156102af573d5f5f3e3d5ffd5b50506001909401935061010992505050565b50816040516102d091906105ef565b6040518091039020836040516102e69190610624565b6040519081900381209033907f3f3c2c4ea143a2e27fbc736ce3268927ae97ed1db155207ffe0adfaff84cc3cb905f90a4505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156103535761035361031c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156103825761038261031c565b604052919050565b5f6020828403121561039a575f5ffd5b813567ffffffffffffffff8111156103b0575f5ffd5b8201601f810184136103c0575f5ffd5b803567ffffffffffffffff8111156103da576103da61031c565b6103ed601f8201601f1916602001610359565b818152856020838501011115610401575f5ffd5b816020840160208301375f91810160200191909152949350505050565b5f67ffffffffffffffff8211156104375761043761031c565b5060051b60200190565b80516001600160a01b0381168114610457575f5ffd5b919050565b5f82601f83011261046b575f5ffd5b815161047e6104798261041e565b610359565b8082825260208201915060208360051b86010192508583111561049f575f5ffd5b602085015b838110156104bc5780518352602092830192016104a4565b5095945050505050565b5f602082840312156104d6575f5ffd5b815167ffffffffffffffff8111156104ec575f5ffd5b8201604081850312156104fd575f5ffd5b610505610330565b815167ffffffffffffffff81111561051b575f5ffd5b8201601f8101861361052b575f5ffd5b80516105396104798261041e565b8082825260208201915060208360051b85010192508883111561055a575f5ffd5b6020840193505b828410156105835761057284610441565b825260209384019390910190610561565b8452505050602082015167ffffffffffffffff8111156105a1575f5ffd5b6105ad8682850161045c565b602083015250949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156105df575f5ffd5b6105e882610441565b9392505050565b81515f90829060208501835b828110156106195781518452602093840193909101906001016105fb565b509195945050505050565b81515f90829060208501835b828110156106195781516001600160a01b031684526020938401939091019060010161063056fea264697066735822122003733715a5bbed9d5d35546e5acca39a8821fadeb212ae4b1651b4978a7a79f964736f6c634300081c00330000000000000000000000000a00a2f09cd37b24e7429c5238323bfebcff3ed9", + "nonce": "0x21", + "chainId": "0x66eee" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x84e26", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x7691a500cd584e45e3aa2eb65d2c2fa955180f4c7a170578370664c655de6228", + "transactionIndex": "0x2", + "blockHash": "0x09680a2a9c70b5258a5f549858ffeb13a3edfacbda9d053c042c28b2101808c1", + "blockNumber": "0x8c805ea", + "gasUsed": "0x7ac12", + "effectiveGasPrice": "0x5f5e100", + "from": "0xc3593524e2744e547f013e17e6b0776bc27fc614", + "to": null, + "contractAddress": "0x0fcca2bad3103934304874e782450688b7a044b0", + "gasUsedForL1": "0x14a88", + "l1BlockNumber": "0x7d4e5a", + "timeboosted": false + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1745833337, + "chain": 421614, + "commit": "4ee5d8e" +} \ No newline at end of file diff --git a/broadcast/DeployBatchTransferScript.s.sol/42220/run-1745833229.json b/broadcast/DeployBatchTransferScript.s.sol/42220/run-1745833229.json new file mode 100644 index 0000000..1943d58 --- /dev/null +++ b/broadcast/DeployBatchTransferScript.s.sol/42220/run-1745833229.json @@ -0,0 +1,54 @@ +{ + "transactions": [ + { + "hash": "0x020c2a9aec425009f147de83012f30fa832438b7ea355d4fca3afd3a8dcd0fcb", + "transactionType": "CREATE", + "contractName": "BatchTransferFraction", + "contractAddress": "0xb64b7e4793d72958e028b1d5d556888b115c4c3e", + "function": null, + "arguments": [ + "0x16bA53B74c234C870c61EFC04cD418B8f2865959" + ], + "transaction": { + "from": "0xc3593524e2744e547f013e17e6b0776bc27fc614", + "gas": "0x84ba9", + "value": "0x0", + "input": "0x60a060405234801561000f575f5ffd5b5060405161075738038061075783398101604081905261002e91610078565b806001600160a01b03811661006657604051637f4c3a8160e11b81526001600160a01b03909116600482015260240160405180910390fd5b506001600160a01b03166080526100a5565b5f60208284031215610088575f5ffd5b81516001600160a01b038116811461009e575f5ffd5b9392505050565b60805161068d6100ca5f395f8181605201528181610157015261025c015261068d5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806310a890af14610038578063f49bdbea1461004d575b5f5ffd5b61004b61004636600461038a565b610090565b005b6100747f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b5f8151116100b157604051630e34c5ef60e11b815260040160405180910390fd5b5f818060200190518101906100c691906104c6565b602081015151815151919250146100f05760405163194374f160e11b815260040160405180910390fd5b610101815f01518260200151610105565b5050565b81515f5b818110156102c1575f848281518110610124576101246105bb565b602002602001015190505f848381518110610141576101416105bb565b60200260200101519050336001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e836040518263ffffffff1660e01b81526004016101a391815260200190565b602060405180830381865afa1580156101be573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e291906105cf565b6001600160a01b031614339061021b5760405163eb804abb60e01b81526001600160a01b03909116600482015260240160405180910390fd5b50604051637921219560e11b81523360048201526001600160a01b038381166024830152604482018390526001606483015260a060848301525f60a48301527f0000000000000000000000000000000000000000000000000000000000000000169063f242432a9060c4015f604051808303815f87803b15801561029d575f5ffd5b505af11580156102af573d5f5f3e3d5ffd5b50506001909401935061010992505050565b50816040516102d091906105ef565b6040518091039020836040516102e69190610624565b6040519081900381209033907f3f3c2c4ea143a2e27fbc736ce3268927ae97ed1db155207ffe0adfaff84cc3cb905f90a4505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156103535761035361031c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156103825761038261031c565b604052919050565b5f6020828403121561039a575f5ffd5b813567ffffffffffffffff8111156103b0575f5ffd5b8201601f810184136103c0575f5ffd5b803567ffffffffffffffff8111156103da576103da61031c565b6103ed601f8201601f1916602001610359565b818152856020838501011115610401575f5ffd5b816020840160208301375f91810160200191909152949350505050565b5f67ffffffffffffffff8211156104375761043761031c565b5060051b60200190565b80516001600160a01b0381168114610457575f5ffd5b919050565b5f82601f83011261046b575f5ffd5b815161047e6104798261041e565b610359565b8082825260208201915060208360051b86010192508583111561049f575f5ffd5b602085015b838110156104bc5780518352602092830192016104a4565b5095945050505050565b5f602082840312156104d6575f5ffd5b815167ffffffffffffffff8111156104ec575f5ffd5b8201604081850312156104fd575f5ffd5b610505610330565b815167ffffffffffffffff81111561051b575f5ffd5b8201601f8101861361052b575f5ffd5b80516105396104798261041e565b8082825260208201915060208360051b85010192508883111561055a575f5ffd5b6020840193505b828410156105835761057284610441565b825260209384019390910190610561565b8452505050602082015167ffffffffffffffff8111156105a1575f5ffd5b6105ad8682850161045c565b602083015250949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156105df575f5ffd5b6105e882610441565b9392505050565b81515f90829060208501835b828110156106195781518452602093840193909101906001016105fb565b509195945050505050565b81515f90829060208501835b828110156106195781516001600160a01b031684526020938401939091019060010161063056fea264697066735822122003733715a5bbed9d5d35546e5acca39a8821fadeb212ae4b1651b4978a7a79f964736f6c634300081c003300000000000000000000000016ba53b74c234c870c61efc04cd418b8f2865959", + "nonce": "0x1a", + "chainId": "0xa4ec" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x2986a7", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0", + "transactionHash": "0x020c2a9aec425009f147de83012f30fa832438b7ea355d4fca3afd3a8dcd0fcb", + "transactionIndex": "0x18", + "blockHash": "0xa93fee825b6c0068e22906ffacbe3c278f5533cca7bf4293da3a243d98f7daae", + "blockNumber": "0x205c4a0", + "gasUsed": "0x66196", + "effectiveGasPrice": "0x5d22cfc40", + "from": "0xc3593524e2744e547f013e17e6b0776bc27fc614", + "to": null, + "contractAddress": "0xb64b7e4793d72958e028b1d5d556888b115c4c3e", + "l1BaseFeeScalar": "0x0", + "l1BlobBaseFee": "0x12c0fa0ff", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x0", + "l1GasPrice": "0x1496af30", + "l1GasUsed": "0x4a81" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1745833229, + "chain": 42220, + "commit": "4ee5d8e" +} \ No newline at end of file diff --git a/broadcast/DeployBatchTransferScript.s.sol/42220/run-latest.json b/broadcast/DeployBatchTransferScript.s.sol/42220/run-latest.json new file mode 100644 index 0000000..1943d58 --- /dev/null +++ b/broadcast/DeployBatchTransferScript.s.sol/42220/run-latest.json @@ -0,0 +1,54 @@ +{ + "transactions": [ + { + "hash": "0x020c2a9aec425009f147de83012f30fa832438b7ea355d4fca3afd3a8dcd0fcb", + "transactionType": "CREATE", + "contractName": "BatchTransferFraction", + "contractAddress": "0xb64b7e4793d72958e028b1d5d556888b115c4c3e", + "function": null, + "arguments": [ + "0x16bA53B74c234C870c61EFC04cD418B8f2865959" + ], + "transaction": { + "from": "0xc3593524e2744e547f013e17e6b0776bc27fc614", + "gas": "0x84ba9", + "value": "0x0", + "input": "0x60a060405234801561000f575f5ffd5b5060405161075738038061075783398101604081905261002e91610078565b806001600160a01b03811661006657604051637f4c3a8160e11b81526001600160a01b03909116600482015260240160405180910390fd5b506001600160a01b03166080526100a5565b5f60208284031215610088575f5ffd5b81516001600160a01b038116811461009e575f5ffd5b9392505050565b60805161068d6100ca5f395f8181605201528181610157015261025c015261068d5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806310a890af14610038578063f49bdbea1461004d575b5f5ffd5b61004b61004636600461038a565b610090565b005b6100747f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b5f8151116100b157604051630e34c5ef60e11b815260040160405180910390fd5b5f818060200190518101906100c691906104c6565b602081015151815151919250146100f05760405163194374f160e11b815260040160405180910390fd5b610101815f01518260200151610105565b5050565b81515f5b818110156102c1575f848281518110610124576101246105bb565b602002602001015190505f848381518110610141576101416105bb565b60200260200101519050336001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e836040518263ffffffff1660e01b81526004016101a391815260200190565b602060405180830381865afa1580156101be573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e291906105cf565b6001600160a01b031614339061021b5760405163eb804abb60e01b81526001600160a01b03909116600482015260240160405180910390fd5b50604051637921219560e11b81523360048201526001600160a01b038381166024830152604482018390526001606483015260a060848301525f60a48301527f0000000000000000000000000000000000000000000000000000000000000000169063f242432a9060c4015f604051808303815f87803b15801561029d575f5ffd5b505af11580156102af573d5f5f3e3d5ffd5b50506001909401935061010992505050565b50816040516102d091906105ef565b6040518091039020836040516102e69190610624565b6040519081900381209033907f3f3c2c4ea143a2e27fbc736ce3268927ae97ed1db155207ffe0adfaff84cc3cb905f90a4505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156103535761035361031c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156103825761038261031c565b604052919050565b5f6020828403121561039a575f5ffd5b813567ffffffffffffffff8111156103b0575f5ffd5b8201601f810184136103c0575f5ffd5b803567ffffffffffffffff8111156103da576103da61031c565b6103ed601f8201601f1916602001610359565b818152856020838501011115610401575f5ffd5b816020840160208301375f91810160200191909152949350505050565b5f67ffffffffffffffff8211156104375761043761031c565b5060051b60200190565b80516001600160a01b0381168114610457575f5ffd5b919050565b5f82601f83011261046b575f5ffd5b815161047e6104798261041e565b610359565b8082825260208201915060208360051b86010192508583111561049f575f5ffd5b602085015b838110156104bc5780518352602092830192016104a4565b5095945050505050565b5f602082840312156104d6575f5ffd5b815167ffffffffffffffff8111156104ec575f5ffd5b8201604081850312156104fd575f5ffd5b610505610330565b815167ffffffffffffffff81111561051b575f5ffd5b8201601f8101861361052b575f5ffd5b80516105396104798261041e565b8082825260208201915060208360051b85010192508883111561055a575f5ffd5b6020840193505b828410156105835761057284610441565b825260209384019390910190610561565b8452505050602082015167ffffffffffffffff8111156105a1575f5ffd5b6105ad8682850161045c565b602083015250949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156105df575f5ffd5b6105e882610441565b9392505050565b81515f90829060208501835b828110156106195781518452602093840193909101906001016105fb565b509195945050505050565b81515f90829060208501835b828110156106195781516001600160a01b031684526020938401939091019060010161063056fea264697066735822122003733715a5bbed9d5d35546e5acca39a8821fadeb212ae4b1651b4978a7a79f964736f6c634300081c003300000000000000000000000016ba53b74c234c870c61efc04cd418b8f2865959", + "nonce": "0x1a", + "chainId": "0xa4ec" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x2986a7", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0", + "transactionHash": "0x020c2a9aec425009f147de83012f30fa832438b7ea355d4fca3afd3a8dcd0fcb", + "transactionIndex": "0x18", + "blockHash": "0xa93fee825b6c0068e22906ffacbe3c278f5533cca7bf4293da3a243d98f7daae", + "blockNumber": "0x205c4a0", + "gasUsed": "0x66196", + "effectiveGasPrice": "0x5d22cfc40", + "from": "0xc3593524e2744e547f013e17e6b0776bc27fc614", + "to": null, + "contractAddress": "0xb64b7e4793d72958e028b1d5d556888b115c4c3e", + "l1BaseFeeScalar": "0x0", + "l1BlobBaseFee": "0x12c0fa0ff", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x0", + "l1GasPrice": "0x1496af30", + "l1GasUsed": "0x4a81" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1745833229, + "chain": 42220, + "commit": "4ee5d8e" +} \ No newline at end of file diff --git a/broadcast/DeployBatchTransferScript.s.sol/8453/run-1745833190.json b/broadcast/DeployBatchTransferScript.s.sol/8453/run-1745833190.json new file mode 100644 index 0000000..43025ce --- /dev/null +++ b/broadcast/DeployBatchTransferScript.s.sol/8453/run-1745833190.json @@ -0,0 +1,54 @@ +{ + "transactions": [ + { + "hash": "0xb718805168996f6cd67b3060231986f60b6aee589a1bdbd4fca4fcb469fd388f", + "transactionType": "CREATE", + "contractName": "BatchTransferFraction", + "contractAddress": "0xc4aeb039bc432343bf4db57be203e0540d385a18", + "function": null, + "arguments": [ + "0xC2d179166bc9dbB00A03686a5b17eCe2224c2704" + ], + "transaction": { + "from": "0xc3593524e2744e547f013e17e6b0776bc27fc614", + "gas": "0x84ba9", + "value": "0x0", + "input": "0x60a060405234801561000f575f5ffd5b5060405161075738038061075783398101604081905261002e91610078565b806001600160a01b03811661006657604051637f4c3a8160e11b81526001600160a01b03909116600482015260240160405180910390fd5b506001600160a01b03166080526100a5565b5f60208284031215610088575f5ffd5b81516001600160a01b038116811461009e575f5ffd5b9392505050565b60805161068d6100ca5f395f8181605201528181610157015261025c015261068d5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806310a890af14610038578063f49bdbea1461004d575b5f5ffd5b61004b61004636600461038a565b610090565b005b6100747f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b5f8151116100b157604051630e34c5ef60e11b815260040160405180910390fd5b5f818060200190518101906100c691906104c6565b602081015151815151919250146100f05760405163194374f160e11b815260040160405180910390fd5b610101815f01518260200151610105565b5050565b81515f5b818110156102c1575f848281518110610124576101246105bb565b602002602001015190505f848381518110610141576101416105bb565b60200260200101519050336001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e836040518263ffffffff1660e01b81526004016101a391815260200190565b602060405180830381865afa1580156101be573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e291906105cf565b6001600160a01b031614339061021b5760405163eb804abb60e01b81526001600160a01b03909116600482015260240160405180910390fd5b50604051637921219560e11b81523360048201526001600160a01b038381166024830152604482018390526001606483015260a060848301525f60a48301527f0000000000000000000000000000000000000000000000000000000000000000169063f242432a9060c4015f604051808303815f87803b15801561029d575f5ffd5b505af11580156102af573d5f5f3e3d5ffd5b50506001909401935061010992505050565b50816040516102d091906105ef565b6040518091039020836040516102e69190610624565b6040519081900381209033907f3f3c2c4ea143a2e27fbc736ce3268927ae97ed1db155207ffe0adfaff84cc3cb905f90a4505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156103535761035361031c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156103825761038261031c565b604052919050565b5f6020828403121561039a575f5ffd5b813567ffffffffffffffff8111156103b0575f5ffd5b8201601f810184136103c0575f5ffd5b803567ffffffffffffffff8111156103da576103da61031c565b6103ed601f8201601f1916602001610359565b818152856020838501011115610401575f5ffd5b816020840160208301375f91810160200191909152949350505050565b5f67ffffffffffffffff8211156104375761043761031c565b5060051b60200190565b80516001600160a01b0381168114610457575f5ffd5b919050565b5f82601f83011261046b575f5ffd5b815161047e6104798261041e565b610359565b8082825260208201915060208360051b86010192508583111561049f575f5ffd5b602085015b838110156104bc5780518352602092830192016104a4565b5095945050505050565b5f602082840312156104d6575f5ffd5b815167ffffffffffffffff8111156104ec575f5ffd5b8201604081850312156104fd575f5ffd5b610505610330565b815167ffffffffffffffff81111561051b575f5ffd5b8201601f8101861361052b575f5ffd5b80516105396104798261041e565b8082825260208201915060208360051b85010192508883111561055a575f5ffd5b6020840193505b828410156105835761057284610441565b825260209384019390910190610561565b8452505050602082015167ffffffffffffffff8111156105a1575f5ffd5b6105ad8682850161045c565b602083015250949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156105df575f5ffd5b6105e882610441565b9392505050565b81515f90829060208501835b828110156106195781518452602093840193909101906001016105fb565b509195945050505050565b81515f90829060208501835b828110156106195781516001600160a01b031684526020938401939091019060010161063056fea264697066735822122003733715a5bbed9d5d35546e5acca39a8821fadeb212ae4b1651b4978a7a79f964736f6c634300081c0033000000000000000000000000c2d179166bc9dbb00a03686a5b17ece2224c2704", + "nonce": "0x9", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x28a72a8", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xb718805168996f6cd67b3060231986f60b6aee589a1bdbd4fca4fcb469fd388f", + "transactionIndex": "0x87", + "blockHash": "0x252b2b08da2506474073ea28d0b595a68d09c2cbe2e4895fafa2354d3ad16d23", + "blockNumber": "0x1c277f6", + "gasUsed": "0x66196", + "effectiveGasPrice": "0x44be53", + "from": "0xc3593524e2744e547f013e17e6b0776bc27fc614", + "to": null, + "contractAddress": "0xc4aeb039bc432343bf4db57be203e0540d385a18", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0xe3f5193b", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x4655e965060", + "l1GasPrice": "0x16f8796d", + "l1GasUsed": "0x4a8e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1745833190, + "chain": 8453, + "commit": "4ee5d8e" +} \ No newline at end of file diff --git a/broadcast/DeployBatchTransferScript.s.sol/8453/run-latest.json b/broadcast/DeployBatchTransferScript.s.sol/8453/run-latest.json new file mode 100644 index 0000000..43025ce --- /dev/null +++ b/broadcast/DeployBatchTransferScript.s.sol/8453/run-latest.json @@ -0,0 +1,54 @@ +{ + "transactions": [ + { + "hash": "0xb718805168996f6cd67b3060231986f60b6aee589a1bdbd4fca4fcb469fd388f", + "transactionType": "CREATE", + "contractName": "BatchTransferFraction", + "contractAddress": "0xc4aeb039bc432343bf4db57be203e0540d385a18", + "function": null, + "arguments": [ + "0xC2d179166bc9dbB00A03686a5b17eCe2224c2704" + ], + "transaction": { + "from": "0xc3593524e2744e547f013e17e6b0776bc27fc614", + "gas": "0x84ba9", + "value": "0x0", + "input": "0x60a060405234801561000f575f5ffd5b5060405161075738038061075783398101604081905261002e91610078565b806001600160a01b03811661006657604051637f4c3a8160e11b81526001600160a01b03909116600482015260240160405180910390fd5b506001600160a01b03166080526100a5565b5f60208284031215610088575f5ffd5b81516001600160a01b038116811461009e575f5ffd5b9392505050565b60805161068d6100ca5f395f8181605201528181610157015261025c015261068d5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806310a890af14610038578063f49bdbea1461004d575b5f5ffd5b61004b61004636600461038a565b610090565b005b6100747f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b5f8151116100b157604051630e34c5ef60e11b815260040160405180910390fd5b5f818060200190518101906100c691906104c6565b602081015151815151919250146100f05760405163194374f160e11b815260040160405180910390fd5b610101815f01518260200151610105565b5050565b81515f5b818110156102c1575f848281518110610124576101246105bb565b602002602001015190505f848381518110610141576101416105bb565b60200260200101519050336001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e836040518263ffffffff1660e01b81526004016101a391815260200190565b602060405180830381865afa1580156101be573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e291906105cf565b6001600160a01b031614339061021b5760405163eb804abb60e01b81526001600160a01b03909116600482015260240160405180910390fd5b50604051637921219560e11b81523360048201526001600160a01b038381166024830152604482018390526001606483015260a060848301525f60a48301527f0000000000000000000000000000000000000000000000000000000000000000169063f242432a9060c4015f604051808303815f87803b15801561029d575f5ffd5b505af11580156102af573d5f5f3e3d5ffd5b50506001909401935061010992505050565b50816040516102d091906105ef565b6040518091039020836040516102e69190610624565b6040519081900381209033907f3f3c2c4ea143a2e27fbc736ce3268927ae97ed1db155207ffe0adfaff84cc3cb905f90a4505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156103535761035361031c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156103825761038261031c565b604052919050565b5f6020828403121561039a575f5ffd5b813567ffffffffffffffff8111156103b0575f5ffd5b8201601f810184136103c0575f5ffd5b803567ffffffffffffffff8111156103da576103da61031c565b6103ed601f8201601f1916602001610359565b818152856020838501011115610401575f5ffd5b816020840160208301375f91810160200191909152949350505050565b5f67ffffffffffffffff8211156104375761043761031c565b5060051b60200190565b80516001600160a01b0381168114610457575f5ffd5b919050565b5f82601f83011261046b575f5ffd5b815161047e6104798261041e565b610359565b8082825260208201915060208360051b86010192508583111561049f575f5ffd5b602085015b838110156104bc5780518352602092830192016104a4565b5095945050505050565b5f602082840312156104d6575f5ffd5b815167ffffffffffffffff8111156104ec575f5ffd5b8201604081850312156104fd575f5ffd5b610505610330565b815167ffffffffffffffff81111561051b575f5ffd5b8201601f8101861361052b575f5ffd5b80516105396104798261041e565b8082825260208201915060208360051b85010192508883111561055a575f5ffd5b6020840193505b828410156105835761057284610441565b825260209384019390910190610561565b8452505050602082015167ffffffffffffffff8111156105a1575f5ffd5b6105ad8682850161045c565b602083015250949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156105df575f5ffd5b6105e882610441565b9392505050565b81515f90829060208501835b828110156106195781518452602093840193909101906001016105fb565b509195945050505050565b81515f90829060208501835b828110156106195781516001600160a01b031684526020938401939091019060010161063056fea264697066735822122003733715a5bbed9d5d35546e5acca39a8821fadeb212ae4b1651b4978a7a79f964736f6c634300081c0033000000000000000000000000c2d179166bc9dbb00a03686a5b17ece2224c2704", + "nonce": "0x9", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x28a72a8", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xb718805168996f6cd67b3060231986f60b6aee589a1bdbd4fca4fcb469fd388f", + "transactionIndex": "0x87", + "blockHash": "0x252b2b08da2506474073ea28d0b595a68d09c2cbe2e4895fafa2354d3ad16d23", + "blockNumber": "0x1c277f6", + "gasUsed": "0x66196", + "effectiveGasPrice": "0x44be53", + "from": "0xc3593524e2744e547f013e17e6b0776bc27fc614", + "to": null, + "contractAddress": "0xc4aeb039bc432343bf4db57be203e0540d385a18", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0xe3f5193b", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x4655e965060", + "l1GasPrice": "0x16f8796d", + "l1GasUsed": "0x4a8e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1745833190, + "chain": 8453, + "commit": "4ee5d8e" +} \ No newline at end of file diff --git a/broadcast/DeployBatchTransferScript.s.sol/84532/run-1745833517.json b/broadcast/DeployBatchTransferScript.s.sol/84532/run-1745833517.json new file mode 100644 index 0000000..5fff35a --- /dev/null +++ b/broadcast/DeployBatchTransferScript.s.sol/84532/run-1745833517.json @@ -0,0 +1,54 @@ +{ + "transactions": [ + { + "hash": "0xe0b831e9b880b87215c315c4e0528de71a49d7b84cfe9d483363f5e29923ad8b", + "transactionType": "CREATE", + "contractName": "BatchTransferFraction", + "contractAddress": "0x3c0faaa04078d715bb05af82ca99c41623aec5ae", + "function": null, + "arguments": [ + "0xC2d179166bc9dbB00A03686a5b17eCe2224c2704" + ], + "transaction": { + "from": "0xc3593524e2744e547f013e17e6b0776bc27fc614", + "gas": "0x84ba9", + "value": "0x0", + "input": "0x60a060405234801561000f575f5ffd5b5060405161075738038061075783398101604081905261002e91610078565b806001600160a01b03811661006657604051637f4c3a8160e11b81526001600160a01b03909116600482015260240160405180910390fd5b506001600160a01b03166080526100a5565b5f60208284031215610088575f5ffd5b81516001600160a01b038116811461009e575f5ffd5b9392505050565b60805161068d6100ca5f395f8181605201528181610157015261025c015261068d5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806310a890af14610038578063f49bdbea1461004d575b5f5ffd5b61004b61004636600461038a565b610090565b005b6100747f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b5f8151116100b157604051630e34c5ef60e11b815260040160405180910390fd5b5f818060200190518101906100c691906104c6565b602081015151815151919250146100f05760405163194374f160e11b815260040160405180910390fd5b610101815f01518260200151610105565b5050565b81515f5b818110156102c1575f848281518110610124576101246105bb565b602002602001015190505f848381518110610141576101416105bb565b60200260200101519050336001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e836040518263ffffffff1660e01b81526004016101a391815260200190565b602060405180830381865afa1580156101be573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e291906105cf565b6001600160a01b031614339061021b5760405163eb804abb60e01b81526001600160a01b03909116600482015260240160405180910390fd5b50604051637921219560e11b81523360048201526001600160a01b038381166024830152604482018390526001606483015260a060848301525f60a48301527f0000000000000000000000000000000000000000000000000000000000000000169063f242432a9060c4015f604051808303815f87803b15801561029d575f5ffd5b505af11580156102af573d5f5f3e3d5ffd5b50506001909401935061010992505050565b50816040516102d091906105ef565b6040518091039020836040516102e69190610624565b6040519081900381209033907f3f3c2c4ea143a2e27fbc736ce3268927ae97ed1db155207ffe0adfaff84cc3cb905f90a4505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156103535761035361031c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156103825761038261031c565b604052919050565b5f6020828403121561039a575f5ffd5b813567ffffffffffffffff8111156103b0575f5ffd5b8201601f810184136103c0575f5ffd5b803567ffffffffffffffff8111156103da576103da61031c565b6103ed601f8201601f1916602001610359565b818152856020838501011115610401575f5ffd5b816020840160208301375f91810160200191909152949350505050565b5f67ffffffffffffffff8211156104375761043761031c565b5060051b60200190565b80516001600160a01b0381168114610457575f5ffd5b919050565b5f82601f83011261046b575f5ffd5b815161047e6104798261041e565b610359565b8082825260208201915060208360051b86010192508583111561049f575f5ffd5b602085015b838110156104bc5780518352602092830192016104a4565b5095945050505050565b5f602082840312156104d6575f5ffd5b815167ffffffffffffffff8111156104ec575f5ffd5b8201604081850312156104fd575f5ffd5b610505610330565b815167ffffffffffffffff81111561051b575f5ffd5b8201601f8101861361052b575f5ffd5b80516105396104798261041e565b8082825260208201915060208360051b85010192508883111561055a575f5ffd5b6020840193505b828410156105835761057284610441565b825260209384019390910190610561565b8452505050602082015167ffffffffffffffff8111156105a1575f5ffd5b6105ad8682850161045c565b602083015250949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156105df575f5ffd5b6105e882610441565b9392505050565b81515f90829060208501835b828110156106195781518452602093840193909101906001016105fb565b509195945050505050565b81515f90829060208501835b828110156106195781516001600160a01b031684526020938401939091019060010161063056fea264697066735822122003733715a5bbed9d5d35546e5acca39a8821fadeb212ae4b1651b4978a7a79f964736f6c634300081c0033000000000000000000000000c2d179166bc9dbb00a03686a5b17ece2224c2704", + "nonce": "0xbf", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x270e86", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xe0b831e9b880b87215c315c4e0528de71a49d7b84cfe9d483363f5e29923ad8b", + "transactionIndex": "0xa", + "blockHash": "0x0dccde633f37b5b258ef0de5f3e9d1d5a88ea4b3fac54301582932d74ee9ec15", + "blockNumber": "0x17df79d", + "gasUsed": "0x66196", + "effectiveGasPrice": "0xf08b5", + "from": "0xc3593524e2744e547f013e17e6b0776bc27fc614", + "to": null, + "contractAddress": "0x3c0faaa04078d715bb05af82ca99c41623aec5ae", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x67b80d5377", + "l1GasPrice": "0x4eb17b4ec", + "l1GasUsed": "0x4ad1" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1745833517, + "chain": 84532, + "commit": "4ee5d8e" +} \ No newline at end of file diff --git a/broadcast/DeployBatchTransferScript.s.sol/84532/run-latest.json b/broadcast/DeployBatchTransferScript.s.sol/84532/run-latest.json new file mode 100644 index 0000000..5fff35a --- /dev/null +++ b/broadcast/DeployBatchTransferScript.s.sol/84532/run-latest.json @@ -0,0 +1,54 @@ +{ + "transactions": [ + { + "hash": "0xe0b831e9b880b87215c315c4e0528de71a49d7b84cfe9d483363f5e29923ad8b", + "transactionType": "CREATE", + "contractName": "BatchTransferFraction", + "contractAddress": "0x3c0faaa04078d715bb05af82ca99c41623aec5ae", + "function": null, + "arguments": [ + "0xC2d179166bc9dbB00A03686a5b17eCe2224c2704" + ], + "transaction": { + "from": "0xc3593524e2744e547f013e17e6b0776bc27fc614", + "gas": "0x84ba9", + "value": "0x0", + "input": "0x60a060405234801561000f575f5ffd5b5060405161075738038061075783398101604081905261002e91610078565b806001600160a01b03811661006657604051637f4c3a8160e11b81526001600160a01b03909116600482015260240160405180910390fd5b506001600160a01b03166080526100a5565b5f60208284031215610088575f5ffd5b81516001600160a01b038116811461009e575f5ffd5b9392505050565b60805161068d6100ca5f395f8181605201528181610157015261025c015261068d5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806310a890af14610038578063f49bdbea1461004d575b5f5ffd5b61004b61004636600461038a565b610090565b005b6100747f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b5f8151116100b157604051630e34c5ef60e11b815260040160405180910390fd5b5f818060200190518101906100c691906104c6565b602081015151815151919250146100f05760405163194374f160e11b815260040160405180910390fd5b610101815f01518260200151610105565b5050565b81515f5b818110156102c1575f848281518110610124576101246105bb565b602002602001015190505f848381518110610141576101416105bb565b60200260200101519050336001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e836040518263ffffffff1660e01b81526004016101a391815260200190565b602060405180830381865afa1580156101be573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e291906105cf565b6001600160a01b031614339061021b5760405163eb804abb60e01b81526001600160a01b03909116600482015260240160405180910390fd5b50604051637921219560e11b81523360048201526001600160a01b038381166024830152604482018390526001606483015260a060848301525f60a48301527f0000000000000000000000000000000000000000000000000000000000000000169063f242432a9060c4015f604051808303815f87803b15801561029d575f5ffd5b505af11580156102af573d5f5f3e3d5ffd5b50506001909401935061010992505050565b50816040516102d091906105ef565b6040518091039020836040516102e69190610624565b6040519081900381209033907f3f3c2c4ea143a2e27fbc736ce3268927ae97ed1db155207ffe0adfaff84cc3cb905f90a4505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156103535761035361031c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156103825761038261031c565b604052919050565b5f6020828403121561039a575f5ffd5b813567ffffffffffffffff8111156103b0575f5ffd5b8201601f810184136103c0575f5ffd5b803567ffffffffffffffff8111156103da576103da61031c565b6103ed601f8201601f1916602001610359565b818152856020838501011115610401575f5ffd5b816020840160208301375f91810160200191909152949350505050565b5f67ffffffffffffffff8211156104375761043761031c565b5060051b60200190565b80516001600160a01b0381168114610457575f5ffd5b919050565b5f82601f83011261046b575f5ffd5b815161047e6104798261041e565b610359565b8082825260208201915060208360051b86010192508583111561049f575f5ffd5b602085015b838110156104bc5780518352602092830192016104a4565b5095945050505050565b5f602082840312156104d6575f5ffd5b815167ffffffffffffffff8111156104ec575f5ffd5b8201604081850312156104fd575f5ffd5b610505610330565b815167ffffffffffffffff81111561051b575f5ffd5b8201601f8101861361052b575f5ffd5b80516105396104798261041e565b8082825260208201915060208360051b85010192508883111561055a575f5ffd5b6020840193505b828410156105835761057284610441565b825260209384019390910190610561565b8452505050602082015167ffffffffffffffff8111156105a1575f5ffd5b6105ad8682850161045c565b602083015250949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156105df575f5ffd5b6105e882610441565b9392505050565b81515f90829060208501835b828110156106195781518452602093840193909101906001016105fb565b509195945050505050565b81515f90829060208501835b828110156106195781516001600160a01b031684526020938401939091019060010161063056fea264697066735822122003733715a5bbed9d5d35546e5acca39a8821fadeb212ae4b1651b4978a7a79f964736f6c634300081c0033000000000000000000000000c2d179166bc9dbb00a03686a5b17ece2224c2704", + "nonce": "0xbf", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x270e86", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xe0b831e9b880b87215c315c4e0528de71a49d7b84cfe9d483363f5e29923ad8b", + "transactionIndex": "0xa", + "blockHash": "0x0dccde633f37b5b258ef0de5f3e9d1d5a88ea4b3fac54301582932d74ee9ec15", + "blockNumber": "0x17df79d", + "gasUsed": "0x66196", + "effectiveGasPrice": "0xf08b5", + "from": "0xc3593524e2744e547f013e17e6b0776bc27fc614", + "to": null, + "contractAddress": "0x3c0faaa04078d715bb05af82ca99c41623aec5ae", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x67b80d5377", + "l1GasPrice": "0x4eb17b4ec", + "l1GasUsed": "0x4ad1" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1745833517, + "chain": 84532, + "commit": "4ee5d8e" +} \ No newline at end of file diff --git a/foundry.toml b/foundry.toml index fc30289..c642a92 100644 --- a/foundry.toml +++ b/foundry.toml @@ -11,13 +11,18 @@ ffi = true ast = true build_info = true extra_output = ["storageLayout"] -fs_permissions = [{ access = "read", path = "out" }] +fs_permissions = [ + { access = "read", path = "out"}, + { access = "read", path = "./lib/hypercerts-protocol/contracts/src/deployments"}] optimizer = true optimizer_runs = 200 [etherscan] -optimism = { key = "${API_KEY_OPTIMISTIC_ETHERSCAN}" } sepolia = { key = "${API_KEY_ETHERSCAN}" } +base = { key = "${API_KEY_BASESCAN}" } +optimism = { key = "${API_KEY_OPTIMISTIC_ETHERSCAN}" } +arbitrum = { key = "${API_KEY_ARBISCAN}" } +celo = { key = "${API_KEY_CELOSCAN}" } [fmt] bracket_spacing = true @@ -30,5 +35,10 @@ tab_width = 4 wrap_comments = true [rpc_endpoints] +sepolia = "https://sepolia.infura.io/v3/${API_KEY_INFURA}" +base-sepolia = "https://base-sepolia.infura.io/v3/${API_KEY_INFURA}" +arbitrum-sepolia = "https://arbitrum-sepolia.infura.io/v3/${API_KEY_INFURA}" optimism = "https://optimism-mainnet.infura.io/v3/${API_KEY_INFURA}" -sepolia = "https://sepolia.infura.io/v3/${API_KEY_INFURA}" \ No newline at end of file +arbitrum = "https://arbitrum-mainnet.infura.io/v3/${API_KEY_INFURA}" +base = "https://base-mainnet.infura.io/v3/${API_KEY_INFURA}" +celo = "https://celo-mainnet.infura.io/v3/${API_KEY_INFURA}" \ No newline at end of file diff --git a/lib/hypercerts-protocol b/lib/hypercerts-protocol new file mode 160000 index 0000000..a606868 --- /dev/null +++ b/lib/hypercerts-protocol @@ -0,0 +1 @@ +Subproject commit a606868b1f8d0502124428c45a985002170e6fca diff --git a/package.json b/package.json index 08cd391..17b3bff 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,12 @@ "test:sepolia": "forge clean && forge fmt && forge test --fork-url https://sepolia.drpc.org ", "deploy:sepolia": "forge script script/DeployBatchTransferScript.s.sol --rpc-url https://sepolia.drpc.org --broadcast -vvv --private-key $DEPLOYER_PRIVATE_KEY --etherscan-api-key sepolia --verify", "deploy:op": "forge script script/DeployBatchTransferScript.s.sol --rpc-url https://mainnet.optimism.io --broadcast -vvv --private-key $DEPLOYER_PRIVATE_KEY --etherscan-api-key optimism --verify", + "deploy:base-sepolia": "forge script script/DeployBatchTransferScript.s.sol --rpc-url base-sepolia --broadcast -vvv --private-key $DEPLOYER_PRIVATE_KEY --etherscan-api-key base --verify", + "deploy:base": "forge script script/DeployBatchTransferScript.s.sol --rpc-url base --broadcast -vvv --private-key $DEPLOYER_PRIVATE_KEY --etherscan-api-key base --verify", + "deploy:celo": "forge script script/DeployBatchTransferScript.s.sol --rpc-url celo --broadcast -vvv --private-key $DEPLOYER_PRIVATE_KEY --etherscan-api-key celo --verify", + "deploy:arbitrum-sepolia": "forge script script/DeployBatchTransferScript.s.sol --rpc-url arbitrum-sepolia --broadcast -vvv --private-key $DEPLOYER_PRIVATE_KEY --etherscan-api-key arbitrum --verify", + "deploy:arbitrum": "forge script script/DeployBatchTransferScript.s.sol --rpc-url arbitrum --broadcast -vvv --private-key $DEPLOYER_PRIVATE_KEY --etherscan-api-key arbitrum --verify", + "deploy:all": "pnpm deploy:sepolia && pnpm deploy:op && pnpm deploy:base-sepolia && pnpm deploy:base && pnpm deploy:celo && pnpm deploy:arbitrum-sepolia && pnpm deploy:arbitrum", "format": "forge fmt", "clean": "forge clean" } diff --git a/script/DeployBatchTransferScript.s.sol b/script/DeployBatchTransferScript.s.sol index 4ff9a6f..b701db3 100644 --- a/script/DeployBatchTransferScript.s.sol +++ b/script/DeployBatchTransferScript.s.sol @@ -4,21 +4,24 @@ pragma solidity ^0.8.28; import "forge-std/Script.sol"; import "../src/BatchTransferFraction.sol"; import "../src/interfaces/IHypercertToken.sol"; -import { Create2 } from "@openzeppelin/contracts/utils/Create2.sol"; contract DeployBatchTransferScript is Script { IHypercertToken internal hypercertToken; - function configureChain() public { - if (block.chainid == 10) { - // Optimism mainnet - hypercertToken = IHypercertToken(0x822F17A9A5EeCFd66dBAFf7946a8071C265D1d07); - } else if (block.chainid == 11_155_111) { - // Sepolia - hypercertToken = IHypercertToken(0xa16DFb32Eb140a6f3F2AC68f41dAd8c7e83C4941); - } else { - revert("Unsupported chain"); - } + function configureChain() internal { + string memory root = vm.projectRoot(); + string memory path = + string.concat(root, "/lib/hypercerts-protocol/contracts/src/deployments/deployments-protocol.json"); + string memory json = vm.readFile(path); + string memory chainIdStr = vm.toString(block.chainid); + + bytes memory uupsAddressRaw = vm.parseJson(json, string.concat(".", chainIdStr, ".HypercertMinterUUPS")); + + address uupsAddress = abi.decode(uupsAddressRaw, (address)); + + hypercertToken = IHypercertToken(uupsAddress); + console.log("HypercertMinterUUPS: %s", uupsAddress); + console.log("Deploying BatchTransferFraction on: %s", block.chainid); } function run() external { @@ -26,13 +29,7 @@ contract DeployBatchTransferScript is Script { vm.startBroadcast(); - bytes32 salt = keccak256(abi.encodePacked("BatchTransferFraction")); - - bytes memory arg = abi.encode(address(hypercertToken)); - - bytes memory bytecode = abi.encodePacked(type(BatchTransferFraction).creationCode, arg); - - address deployedAddress = Create2.deploy(0, salt, bytecode); + address deployedAddress = address(new BatchTransferFraction(address(hypercertToken))); console.log("BatchTransferFraction deployed to: %s", address(deployedAddress)); vm.stopBroadcast(); diff --git a/src/BatchTransferFraction.sol b/src/BatchTransferFraction.sol index 2886b68..d0620f3 100644 --- a/src/BatchTransferFraction.sol +++ b/src/BatchTransferFraction.sol @@ -11,6 +11,8 @@ contract BatchTransferFraction { error INVALID_CALLER(address caller); error INVALID_HYPERCERT_ADDRESS(address hypercertAddress); + event BatchFractionTransfer(address indexed from, address[] indexed to, uint256[] indexed fractionId); + struct TransferData { address[] recipients; uint256[] fractionIds; @@ -29,7 +31,6 @@ contract BatchTransferFraction { require(data.length > 0, INVALID_DATA()); TransferData memory transferData = abi.decode(data, (TransferData)); require(transferData.recipients.length == transferData.fractionIds.length, INVALID_LENGTHS()); - _batchTransfer(transferData.recipients, transferData.fractionIds); } @@ -39,18 +40,14 @@ contract BatchTransferFraction { /// @param recipients The addresses of the recipients /// @param fractionIds The IDs of the fractions to be transferred function _batchTransfer(address[] memory recipients, uint256[] memory fractionIds) internal { - for (uint256 i = 0; i < recipients.length; i++) { + uint256 length = recipients.length; + for (uint256 i = 0; i < length; i++) { address recipient = recipients[i]; uint256 fractionId = fractionIds[i]; require(hypercertToken.ownerOf(fractionId) == msg.sender, INVALID_CALLER(msg.sender)); hypercertToken.safeTransferFrom(msg.sender, recipient, fractionId, 1, ""); } - } - - /// @notice Returns the base type of a token ID - /// @dev The base type is the first 128 bits of the token ID - function getBaseType(uint256 tokenId) public pure returns (uint256) { - return tokenId & (type(uint256).max << 128); + emit BatchFractionTransfer(msg.sender, recipients, fractionIds); } } diff --git a/test/BatchTransferFraction.t.sol b/test/BatchTransferFraction.t.sol index 327daf8..a1b0c02 100644 --- a/test/BatchTransferFraction.t.sol +++ b/test/BatchTransferFraction.t.sol @@ -18,10 +18,11 @@ contract BatchTransferFractionTest is Test { address public owner; address public alice = makeAddr("Alice"); address public bob = makeAddr("Bob"); - uint256 public CLAIM_ID; uint256 public FRACTION_ID; + event BatchFractionTransfer(address indexed from, address[] indexed to, uint256[] indexed fractionId); + function setUp() public { configureChain(); batchTransferFraction = new BatchTransferFraction(address(hypercertToken)); @@ -74,11 +75,6 @@ contract BatchTransferFractionTest is Test { vm.stopPrank(); } - function testGetBaseType() public view { - uint256 baseType = batchTransferFraction.getBaseType(FRACTION_ID); - assertEq(baseType, CLAIM_ID, "Base type should be equal to CLAIM_ID"); - } - function testBatchTransfer() public { uint256[] memory tokenIds = new uint256[](2); tokenIds[0] = 314_761_189_401_868_078_703_621_511_874_385_595_596_802; @@ -93,6 +89,9 @@ contract BatchTransferFractionTest is Test { vm.startPrank(owner); hypercertToken.setApprovalForAll(address(batchTransferFraction), true); + vm.expectEmit(true, true, true, true); + emit BatchFractionTransfer(owner, recipients, tokenIds); + batchTransferFraction.batchTransfer(data); assertEq(hypercertToken.ownerOf(tokenIds[0]), alice, "Alice should own the first token"); @@ -106,15 +105,23 @@ contract BatchTransferFractionTest is Test { } function configureChain() public { - if (block.chainid == 10) { - // Optimism mainnet - hypercertToken = IHypercertToken(0x822F17A9A5EeCFd66dBAFf7946a8071C265D1d07); - } else if (block.chainid == 11_155_111) { + string memory root = vm.projectRoot(); + string memory path = + string.concat(root, "/lib/hypercerts-protocol/contracts/src/deployments/deployments-protocol.json"); + string memory json = vm.readFile(path); + string memory chainIdStr = vm.toString(block.chainid); + + bytes memory uupsAddressRaw = vm.parseJson(json, string.concat(".", chainIdStr, ".HypercertMinterUUPS")); + + address uupsAddress = abi.decode(uupsAddressRaw, (address)); + + hypercertToken = IHypercertToken(uupsAddress); + + if (block.chainid == 11_155_111) { // Sepolia CLAIM_ID = 296_385_941_588_137_401_676_599_283_073_070_112_178_176; FRACTION_ID = CLAIM_ID + 1; owner = 0xc3593524E2744E547f013E17E6b0776Bc27Fc614; - hypercertToken = IHypercertToken(0xa16DFb32Eb140a6f3F2AC68f41dAd8c7e83C4941); } else { revert("Unsupported chain"); }