From 2094cb9e9641f76d4b5fc334ff36470df46c9d62 Mon Sep 17 00:00:00 2001 From: Zitao Xiong Date: Tue, 24 Dec 2024 20:55:11 +0800 Subject: [PATCH] feat: force send --- .mise.toml | 2 +- .../reclaim.s.sol/42161/run-1735044839.json | 100 +++++++++++++++++ broadcast/reclaim.s.sol/42161/run-latest.json | 105 +++++++++--------- foundry.toml | 15 +-- script/reclaim.s.sol | 8 +- src/NFTVault.sol | 2 +- src/Vault.sol | 2 +- src/interfaces/IVault.sol | 2 +- 8 files changed, 170 insertions(+), 66 deletions(-) create mode 100644 broadcast/reclaim.s.sol/42161/run-1735044839.json diff --git a/.mise.toml b/.mise.toml index 500981b..12fa0a3 100644 --- a/.mise.toml +++ b/.mise.toml @@ -1,4 +1,4 @@ [tools] -foundry = "nightly-5902a6fa87600cf0cbe44e689c97479c16fd474e" +foundry = "nightly-f922a340dae8e347d573fc6a403694bcb7fea106" pnpm = "9.8.0" nodejs = "22.7.0" diff --git a/broadcast/reclaim.s.sol/42161/run-1735044839.json b/broadcast/reclaim.s.sol/42161/run-1735044839.json new file mode 100644 index 0000000..5395345 --- /dev/null +++ b/broadcast/reclaim.s.sol/42161/run-1735044839.json @@ -0,0 +1,100 @@ +{ + "transactions": [ + { + "hash": "0x8de96fe658f1b01c0a7ab64b2dbd4488f06737aa06f42514df63d225d540537c", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x181b6c4042b9c5c53194e007ae645415eaa0a50f", + "function": "executeCall(address,uint256,bytes)", + "arguments": [ + "0x78072889Ee4D7Fe1A100C25296AABBEA32e92Bea", + "0", + "0x42842e0e000000000000000000000000181b6c4042b9c5c53194e007ae645415eaa0a50f000000000000000000000000fc795dd1faacf2f3758832bfcae1d090836ecfdd00000000000000000000000000000000000000000000000000000000000a23fe" + ], + "transaction": { + "from": "0xf53f105e90b3e9ea928926a5a78e921d8168e213", + "to": "0x181b6c4042b9c5c53194e007ae645415eaa0a50f", + "value": "0x0", + "input": "0x9e5d4c4900000000000000000000000078072889ee4d7fe1a100c25296aabbea32e92bea00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006442842e0e000000000000000000000000181b6c4042b9c5c53194e007ae645415eaa0a50f000000000000000000000000fc795dd1faacf2f3758832bfcae1d090836ecfdd00000000000000000000000000000000000000000000000000000000000a23fe00000000000000000000000000000000000000000000000000000000", + "nonce": "0x47", + "chainId": "0xa4b1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8d25d", + "logs": [ + { + "address": "0x181b6c4042b9c5c53194e007ae645415eaa0a50f", + "topics": [ + "0x47d99ad340f52da66535aff7e10da1ceb85a32bcbd9fa1c42314d194545e14d2", + "0x00000000000000000000000078072889ee4d7fe1a100c25296aabbea32e92bea", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000006442842e0e000000000000000000000000181b6c4042b9c5c53194e007ae645415eaa0a50f000000000000000000000000fc795dd1faacf2f3758832bfcae1d090836ecfdd00000000000000000000000000000000000000000000000000000000000a23fe00000000000000000000000000000000000000000000000000000000", + "blockHash": "0x727462cad9fc8da74d3055c9dfa18efbd07fb6a60f5f9f5593501a70794ed656", + "blockNumber": "0x112c553d", + "transactionHash": "0x8de96fe658f1b01c0a7ab64b2dbd4488f06737aa06f42514df63d225d540537c", + "transactionIndex": "0x1", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x78072889ee4d7fe1a100c25296aabbea32e92bea", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000181b6c4042b9c5c53194e007ae645415eaa0a50f", + "0x000000000000000000000000fc795dd1faacf2f3758832bfcae1d090836ecfdd", + "0x00000000000000000000000000000000000000000000000000000000000a23fe" + ], + "data": "0x", + "blockHash": "0x727462cad9fc8da74d3055c9dfa18efbd07fb6a60f5f9f5593501a70794ed656", + "blockNumber": "0x112c553d", + "transactionHash": "0x8de96fe658f1b01c0a7ab64b2dbd4488f06737aa06f42514df63d225d540537c", + "transactionIndex": "0x1", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xfc795dd1faacf2f3758832bfcae1d090836ecfdd", + "topics": [ + "0xa05d90f300156ad1b545bc5d8197024456f21d22a708f5af04dd293e3d605251", + "0x000000000000000000000000181b6c4042b9c5c53194e007ae645415eaa0a50f", + "0x000000000000000000000000181b6c4042b9c5c53194e007ae645415eaa0a50f", + "0x00000000000000000000000000000000000000000000000000000000000a23fe" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x727462cad9fc8da74d3055c9dfa18efbd07fb6a60f5f9f5593501a70794ed656", + "blockNumber": "0x112c553d", + "transactionHash": "0x8de96fe658f1b01c0a7ab64b2dbd4488f06737aa06f42514df63d225d540537c", + "transactionIndex": "0x1", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x01000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000080028000000008000000000000000000000000000000000000000020100000000000000000800000000000000000000000010000000002000000000000000000000000002000000400000000000080000000000000000000000000000000000000200000000000000040001000000000000000000000000010002004081000800000000000000000000000100040000000000004020000200000000020000000002000000000000000000000000000020000000100000", + "type": "0x2", + "transactionHash": "0x8de96fe658f1b01c0a7ab64b2dbd4488f06737aa06f42514df63d225d540537c", + "transactionIndex": "0x1", + "blockHash": "0x727462cad9fc8da74d3055c9dfa18efbd07fb6a60f5f9f5593501a70794ed656", + "blockNumber": "0x112c553d", + "gasUsed": "0x8d25d", + "effectiveGasPrice": "0x989680", + "from": "0xf53f105e90b3e9ea928926a5a78e921d8168e213", + "to": "0x181b6c4042b9c5c53194e007ae645415eaa0a50f", + "contractAddress": null, + "gasUsedForL1": "0x689db", + "l1BlockNumber": "0x147a4c5" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1735044839, + "chain": 42161, + "commit": "98a6857" +} \ No newline at end of file diff --git a/broadcast/reclaim.s.sol/42161/run-latest.json b/broadcast/reclaim.s.sol/42161/run-latest.json index 85265c3..5395345 100644 --- a/broadcast/reclaim.s.sol/42161/run-latest.json +++ b/broadcast/reclaim.s.sol/42161/run-latest.json @@ -1,23 +1,22 @@ { "transactions": [ { - "hash": "0xae6df4f5a0891570b3abf81f1f194431610d5f786ffc28be90fa9f2263d3ecb3", + "hash": "0x8de96fe658f1b01c0a7ab64b2dbd4488f06737aa06f42514df63d225d540537c", "transactionType": "CALL", "contractName": null, - "contractAddress": "0x1ce4a27fa620783daaa03cf6472d9c32121ec7f6", + "contractAddress": "0x181b6c4042b9c5c53194e007ae645415eaa0a50f", "function": "executeCall(address,uint256,bytes)", "arguments": [ - "0x47A91457a3a1f700097199Fd63c039c4784384aB", + "0x78072889Ee4D7Fe1A100C25296AABBEA32e92Bea", "0", - "0x23b872dd0000000000000000000000001ce4a27fa620783daaa03cf6472d9c32121ec7f60000000000000000000000003260e5d0a58f2e8c592adea06ba0100cb09f26ea0000000000000000000000000000000000000000000000000000000005f6288a" + "0x42842e0e000000000000000000000000181b6c4042b9c5c53194e007ae645415eaa0a50f000000000000000000000000fc795dd1faacf2f3758832bfcae1d090836ecfdd00000000000000000000000000000000000000000000000000000000000a23fe" ], "transaction": { "from": "0xf53f105e90b3e9ea928926a5a78e921d8168e213", - "to": "0x1ce4a27fa620783daaa03cf6472d9c32121ec7f6", - "gas": "0x5fcda", + "to": "0x181b6c4042b9c5c53194e007ae645415eaa0a50f", "value": "0x0", - "input": "0x9e5d4c4900000000000000000000000047a91457a3a1f700097199fd63c039c4784384ab00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006423b872dd0000000000000000000000001ce4a27fa620783daaa03cf6472d9c32121ec7f60000000000000000000000003260e5d0a58f2e8c592adea06ba0100cb09f26ea0000000000000000000000000000000000000000000000000000000005f6288a00000000000000000000000000000000000000000000000000000000", - "nonce": "0x30", + "input": "0x9e5d4c4900000000000000000000000078072889ee4d7fe1a100c25296aabbea32e92bea00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006442842e0e000000000000000000000000181b6c4042b9c5c53194e007ae645415eaa0a50f000000000000000000000000fc795dd1faacf2f3758832bfcae1d090836ecfdd00000000000000000000000000000000000000000000000000000000000a23fe00000000000000000000000000000000000000000000000000000000", + "nonce": "0x47", "chainId": "0xa4b1" }, "additionalContracts": [], @@ -27,75 +26,75 @@ "receipts": [ { "status": "0x1", - "cumulativeGasUsed": "0x8f36f", + "cumulativeGasUsed": "0x8d25d", "logs": [ { - "address": "0x1ce4a27fa620783daaa03cf6472d9c32121ec7f6", + "address": "0x181b6c4042b9c5c53194e007ae645415eaa0a50f", "topics": [ "0x47d99ad340f52da66535aff7e10da1ceb85a32bcbd9fa1c42314d194545e14d2", - "0x00000000000000000000000047a91457a3a1f700097199fd63c039c4784384ab", + "0x00000000000000000000000078072889ee4d7fe1a100c25296aabbea32e92bea", "0x0000000000000000000000000000000000000000000000000000000000000000" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000006423b872dd0000000000000000000000001ce4a27fa620783daaa03cf6472d9c32121ec7f60000000000000000000000003260e5d0a58f2e8c592adea06ba0100cb09f26ea0000000000000000000000000000000000000000000000000000000005f6288a00000000000000000000000000000000000000000000000000000000", - "blockHash": "0x35e532172a5193801662c5326702f6751db5927d64618f1bac48e13405e9ca83", - "blockNumber": "0xf57c5a5", - "transactionHash": "0xae6df4f5a0891570b3abf81f1f194431610d5f786ffc28be90fa9f2263d3ecb3", - "transactionIndex": "0x2", - "logIndex": "0xa", + "data": "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000006442842e0e000000000000000000000000181b6c4042b9c5c53194e007ae645415eaa0a50f000000000000000000000000fc795dd1faacf2f3758832bfcae1d090836ecfdd00000000000000000000000000000000000000000000000000000000000a23fe00000000000000000000000000000000000000000000000000000000", + "blockHash": "0x727462cad9fc8da74d3055c9dfa18efbd07fb6a60f5f9f5593501a70794ed656", + "blockNumber": "0x112c553d", + "transactionHash": "0x8de96fe658f1b01c0a7ab64b2dbd4488f06737aa06f42514df63d225d540537c", + "transactionIndex": "0x1", + "logIndex": "0x0", "removed": false }, { - "address": "0x47a91457a3a1f700097199fd63c039c4784384ab", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x0000000000000000000000001ce4a27fa620783daaa03cf6472d9c32121ec7f6", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000005f6288a" - ], - "data": "0x", - "blockHash": "0x35e532172a5193801662c5326702f6751db5927d64618f1bac48e13405e9ca83", - "blockNumber": "0xf57c5a5", - "transactionHash": "0xae6df4f5a0891570b3abf81f1f194431610d5f786ffc28be90fa9f2263d3ecb3", - "transactionIndex": "0x2", - "logIndex": "0xb", - "removed": false - }, - { - "address": "0x47a91457a3a1f700097199fd63c039c4784384ab", + "address": "0x78072889ee4d7fe1a100c25296aabbea32e92bea", "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000001ce4a27fa620783daaa03cf6472d9c32121ec7f6", - "0x0000000000000000000000003260e5d0a58f2e8c592adea06ba0100cb09f26ea", - "0x0000000000000000000000000000000000000000000000000000000005f6288a" + "0x000000000000000000000000181b6c4042b9c5c53194e007ae645415eaa0a50f", + "0x000000000000000000000000fc795dd1faacf2f3758832bfcae1d090836ecfdd", + "0x00000000000000000000000000000000000000000000000000000000000a23fe" ], "data": "0x", - "blockHash": "0x35e532172a5193801662c5326702f6751db5927d64618f1bac48e13405e9ca83", - "blockNumber": "0xf57c5a5", - "transactionHash": "0xae6df4f5a0891570b3abf81f1f194431610d5f786ffc28be90fa9f2263d3ecb3", - "transactionIndex": "0x2", - "logIndex": "0xc", + "blockHash": "0x727462cad9fc8da74d3055c9dfa18efbd07fb6a60f5f9f5593501a70794ed656", + "blockNumber": "0x112c553d", + "transactionHash": "0x8de96fe658f1b01c0a7ab64b2dbd4488f06737aa06f42514df63d225d540537c", + "transactionIndex": "0x1", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xfc795dd1faacf2f3758832bfcae1d090836ecfdd", + "topics": [ + "0xa05d90f300156ad1b545bc5d8197024456f21d22a708f5af04dd293e3d605251", + "0x000000000000000000000000181b6c4042b9c5c53194e007ae645415eaa0a50f", + "0x000000000000000000000000181b6c4042b9c5c53194e007ae645415eaa0a50f", + "0x00000000000000000000000000000000000000000000000000000000000a23fe" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x727462cad9fc8da74d3055c9dfa18efbd07fb6a60f5f9f5593501a70794ed656", + "blockNumber": "0x112c553d", + "transactionHash": "0x8de96fe658f1b01c0a7ab64b2dbd4488f06737aa06f42514df63d225d540537c", + "transactionIndex": "0x1", + "logIndex": "0x2", "removed": false } ], - "logsBloom": "0x0100000000000400000000000000000000000000000000000000000000000000000000008000000400000000000002000000000000000000000000200020000000000000000020000000000a020000000000000000020000080000202000000000000000020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000000000008000000000000000020000000000000000000000000000000040000000000000000000200000000000000002000010000000000200000000000000000000001000000000000020000010008000000000000002000000000000000000000000000000000000000000", + "logsBloom": "0x01000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000080028000000008000000000000000000000000000000000000000020100000000000000000800000000000000000000000010000000002000000000000000000000000002000000400000000000080000000000000000000000000000000000000200000000000000040001000000000000000000000000010002004081000800000000000000000000000100040000000000004020000200000000020000000002000000000000000000000000000020000000100000", "type": "0x2", - "transactionHash": "0xae6df4f5a0891570b3abf81f1f194431610d5f786ffc28be90fa9f2263d3ecb3", - "transactionIndex": "0x2", - "blockHash": "0x35e532172a5193801662c5326702f6751db5927d64618f1bac48e13405e9ca83", - "blockNumber": "0xf57c5a5", - "gasUsed": "0x3e904", + "transactionHash": "0x8de96fe658f1b01c0a7ab64b2dbd4488f06737aa06f42514df63d225d540537c", + "transactionIndex": "0x1", + "blockHash": "0x727462cad9fc8da74d3055c9dfa18efbd07fb6a60f5f9f5593501a70794ed656", + "blockNumber": "0x112c553d", + "gasUsed": "0x8d25d", "effectiveGasPrice": "0x989680", "from": "0xf53f105e90b3e9ea928926a5a78e921d8168e213", - "to": "0x1ce4a27fa620783daaa03cf6472d9c32121ec7f6", + "to": "0x181b6c4042b9c5c53194e007ae645415eaa0a50f", "contractAddress": null, - "gasUsedForL1": "0x25830", - "l1BlockNumber": "0x13dded4" + "gasUsedForL1": "0x689db", + "l1BlockNumber": "0x147a4c5" } ], "libraries": [], "pending": [], "returns": {}, - "timestamp": 1727319626, + "timestamp": 1735044839, "chain": 42161, - "commit": "3387e0c" + "commit": "98a6857" } \ No newline at end of file diff --git a/foundry.toml b/foundry.toml index 1f78016..809dc07 100644 --- a/foundry.toml +++ b/foundry.toml @@ -2,16 +2,17 @@ src = "src" out = "out" libs = ["lib"] -solc = "0.8.20" +solc = "0.8.28" fs_permissions = [{ access = "read", path = "./"}, { access = "readwrite", path = "./config"}] -evm_version = "cancun" -optimizer = true -optimizer_runs = 200 +evm_version = "prague" + +# optimizer = true +# optimizer_runs = 200 # See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options -fallback_oz = true -is_system = false # Note: NonceHolder and the ContractDeployer system contracts can only be called with a special isSystem flag as true -mode = "3" +# fallback_oz = true +# is_system = false # Note: NonceHolder and the ContractDeployer system contracts can only be called with a special isSystem flag as true +# mode = "3" [fmt] line_length = 120 diff --git a/script/reclaim.s.sol b/script/reclaim.s.sol index 8569461..c88d7cf 100644 --- a/script/reclaim.s.sol +++ b/script/reclaim.s.sol @@ -9,7 +9,8 @@ import { GiftedAccount } from "../src/GiftedAccount.sol"; contract Reclaim is Script { function run() public { - reclaim(934, 0x0000000080d04343D60D06e1a36aAF46c9242805, 1457, 0xF99E6913b949D6e3da3E217D0F5E09b7f7B7d2B1); + // reclaim(934, 0x0000000080d04343D60D06e1a36aAF46c9242805, 1457, 0xF99E6913b949D6e3da3E217D0F5E09b7f7B7d2B1); + reclaim(430, 0x78072889Ee4D7Fe1A100C25296AABBEA32e92Bea, 664574, 0xfC795Dd1FaaCF2F3758832BfCae1d090836ecFDD); } function reclaim(uint256 giftBoxID, address artworkAddress, uint256 artworkID, address recipient) internal { @@ -17,10 +18,13 @@ contract Reclaim is Script { GiftedAccount tokenAccount = GiftedAccount(payable(GiftedBox(getAddressFromConfig("GiftedBox")).tokenAccountAddress(giftBoxID))); + vm.expectRevert(); tokenAccount.executeCall( artworkAddress, 0, - abi.encodeWithSelector(IERC721.transferFrom.selector, address(tokenAccount), recipient, artworkID) + // abi.encodeWithSelector(bytes4(keccak256("transferERC721(address,uint256,address,address,uint256)")), address(tokenAccount), recipient, artworkID, address(tokenAccount), block.timestamp + 1 days) + abi.encodeWithSelector(bytes4(keccak256("safeTransferFrom(address,address,uint256)")), address(tokenAccount), recipient, artworkID) + // abi.encodeWithSelector(IERC721.safeTransferFrom.selector, address(tokenAccount), recipient, artworkID) ); vm.stopBroadcast(); } diff --git a/src/NFTVault.sol b/src/NFTVault.sol index 7dbb3d4..273dbe8 100644 --- a/src/NFTVault.sol +++ b/src/NFTVault.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.20; +pragma solidity ^0.8.20; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; import "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol"; diff --git a/src/Vault.sol b/src/Vault.sol index ffbaed8..6bdf682 100644 --- a/src/Vault.sol +++ b/src/Vault.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: BUSL-1.1 -pragma solidity 0.8.20; +pragma solidity ^0.8.20; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "@openzeppelin/contracts/utils/Pausable.sol"; diff --git a/src/interfaces/IVault.sol b/src/interfaces/IVault.sol index b8faf69..279887f 100644 --- a/src/interfaces/IVault.sol +++ b/src/interfaces/IVault.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: BUSL-1.1 -pragma solidity 0.8.20; +pragma solidity ^0.8.20; interface IVault { function transferIn(address asset, address from, uint256 amount) external payable;