Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 84 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Strict Multicall | 19637013 | 131 days ago | IN | 0 ETH | 0.00133614 | ||||
Strict Multicall | 19581892 | 138 days ago | IN | 0 ETH | 0.00265801 | ||||
Strict Multicall | 19524476 | 147 days ago | IN | 0 ETH | 0.00315152 | ||||
Strict Multicall | 19524068 | 147 days ago | IN | 0 ETH | 0.00280782 | ||||
Strict Multicall | 19486028 | 152 days ago | IN | 0 ETH | 0.00376123 | ||||
Strict Multicall | 19479069 | 153 days ago | IN | 0 ETH | 0.00465874 | ||||
Strict Multicall | 19457163 | 156 days ago | IN | 0 ETH | 0.00454002 | ||||
Strict Multicall | 19450144 | 157 days ago | IN | 0 ETH | 0.00538963 | ||||
Strict Multicall | 19422083 | 161 days ago | IN | 0 ETH | 0.00622373 | ||||
Strict Multicall | 19415295 | 162 days ago | IN | 0 ETH | 0.01117722 | ||||
Multicall | 19412128 | 162 days ago | IN | 0 ETH | 0.01080282 | ||||
Strict Multicall | 19372138 | 168 days ago | IN | 0 ETH | 0.01168576 | ||||
Strict Multicall | 19355775 | 170 days ago | IN | 0 ETH | 0.00877042 | ||||
Strict Multicall | 19336746 | 173 days ago | IN | 0 ETH | 0.00755858 | ||||
Strict Multicall | 19299517 | 178 days ago | IN | 0 ETH | 0.00357891 | ||||
Strict Multicall | 19275630 | 181 days ago | IN | 0 ETH | 0.00381169 | ||||
Strict Multicall | 19268357 | 182 days ago | IN | 0 ETH | 0.00375517 | ||||
Strict Multicall | 19261372 | 183 days ago | IN | 0 ETH | 0.00543018 | ||||
Strict Multicall | 19217601 | 190 days ago | IN | 0 ETH | 0.00189619 | ||||
Strict Multicall | 19205314 | 191 days ago | IN | 0 ETH | 0.00306848 | ||||
Strict Multicall | 19195965 | 193 days ago | IN | 0 ETH | 0.00558801 | ||||
Strict Multicall | 19193062 | 193 days ago | IN | 0 ETH | 0.00858255 | ||||
Strict Multicall | 19193032 | 193 days ago | IN | 0 ETH | 0.00661019 | ||||
Strict Multicall | 19159388 | 198 days ago | IN | 0 ETH | 0.00107145 | ||||
Strict Multicall | 19150164 | 199 days ago | IN | 0 ETH | 0.00238254 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
MultiCall
Compiler Version
v0.8.18+commit.87f61d96
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity ^0.8.0; // SPDX-License-Identifier: MIT OR Apache-2.0 import '../interfaces/IZkLink.sol'; contract MultiCall { struct WithdrawToL1Info { address owner; address token; uint128 amount; uint16 fastWithdrawFeeRate; uint32 accountIdOfNonce; uint8 subAccountIdOfNonce; uint32 nonce; uint256 value; } struct WithdrawPendingBalanceInfo { address payable owner; uint16 tokenId; uint128 amount; } struct Result { bool success; bytes returnData; } event Call(address target, bytes _calldata, bool success, bytes result); function multiStaticCall( address[] calldata targets, bytes[] calldata calls ) external view returns (uint256 blockNumber, Result[] memory returnData) { blockNumber = block.number; returnData = new Result[](calls.length); for (uint i = 0; i < targets.length; i++) { (bool success, bytes memory ret) = targets[i].staticcall(calls[i]); returnData[i] = Result(success, ret); } } function strictMulticall( address[] calldata targets, bytes[] calldata calls ) external { require(targets.length == calls.length, 'targets.length != calls.length'); for (uint i = 0; i < targets.length; i++) { (bool success, bytes memory data) = targets[i].call(calls[i]); require(success, string(data)); } } function multicall( address[] calldata targets, bytes[] calldata calls ) external { require(targets.length == calls.length, 'targets.length != calls.length'); for (uint i = 0; i < targets.length; i++) { (bool success, bytes memory data) = targets[i].call(calls[i]); emit Call(targets[i], calls[i], success, data); } } function batchWithdrawToL1( IZkLink zkLinkInstance, WithdrawToL1Info[] calldata _withdrawDatas ) external payable { for (uint i; i < _withdrawDatas.length; i++) { WithdrawToL1Info memory withdrawInfo = _withdrawDatas[i]; zkLinkInstance.withdrawToL1{value: withdrawInfo.value}( withdrawInfo.owner, withdrawInfo.token, withdrawInfo.amount, withdrawInfo.fastWithdrawFeeRate, withdrawInfo.accountIdOfNonce, withdrawInfo.subAccountIdOfNonce, withdrawInfo.nonce ); } } function batchWithdrawPendingBalance( IZkLink zkLinkInstance, WithdrawPendingBalanceInfo[] calldata _withdrawDatas ) external { for (uint i; i < _withdrawDatas.length; i++) { WithdrawPendingBalanceInfo memory withdrawInfo = _withdrawDatas[i]; zkLinkInstance.withdrawPendingBalance( withdrawInfo.owner, withdrawInfo.tokenId, withdrawInfo.amount ); } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 amount) external returns (bool); }
pragma solidity ^0.8.0; // SPDX-License-Identifier: MIT OR Apache-2.0 import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; /// @title ZkLink interface contract /// @author zk.link interface IZkLink { /// @notice Return the network governor function networkGovernor() external view returns (address); /// @notice Deposit ETH to Layer 2 - transfer ether from user into contract, validate it, register deposit function depositETH(bytes32 _zkLinkAddress, uint8 _subAccountId) external payable; /// @notice Deposit ERC20 token to Layer 2 - transfer ERC20 tokens from user into contract, validate it, register deposit function depositERC20(IERC20 _token, uint104 _amount, bytes32 _zkLinkAddress, uint8 _subAccountId, bool _mapping) external; /// @notice Receive block confirmation from master chain function receiveBlockConfirmation(uint32 blockNumber) external; /// @notice Withdraw token to L1 for user by gateway /// @param owner User receive token on L1 /// @param token Token address /// @param amount The amount(recovered decimals) of withdraw operation /// @param fastWithdrawFeeRate Fast withdraw fee rate taken by acceptor /// @param accountIdOfNonce Account that supply nonce, may be different from accountId /// @param subAccountIdOfNonce SubAccount that supply nonce /// @param nonce SubAccount nonce, used to produce unique accept info function withdrawToL1(address owner, address token, uint128 amount, uint16 fastWithdrawFeeRate, uint32 accountIdOfNonce, uint8 subAccountIdOfNonce, uint32 nonce) external payable; /// @notice Withdraws tokens from zkLink contract to the owner /// @param _owner Address of the tokens owner /// @param _tokenId Token id /// @param _amount Amount to withdraw to request. /// @return The actual withdrawn amount /// @dev NOTE: We will call ERC20.transfer(.., _amount), but if according to internal logic of ERC20 token zkLink contract /// balance will be decreased by value more then _amount we will try to subtract this value from user pending balance function withdrawPendingBalance(address payable _owner, uint16 _tokenId, uint128 _amount) external returns (uint128); }
{ "viaIR": true, "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"bytes","name":"_calldata","type":"bytes"},{"indexed":false,"internalType":"bool","name":"success","type":"bool"},{"indexed":false,"internalType":"bytes","name":"result","type":"bytes"}],"name":"Call","type":"event"},{"inputs":[{"internalType":"contract IZkLink","name":"zkLinkInstance","type":"address"},{"components":[{"internalType":"address payable","name":"owner","type":"address"},{"internalType":"uint16","name":"tokenId","type":"uint16"},{"internalType":"uint128","name":"amount","type":"uint128"}],"internalType":"struct MultiCall.WithdrawPendingBalanceInfo[]","name":"_withdrawDatas","type":"tuple[]"}],"name":"batchWithdrawPendingBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IZkLink","name":"zkLinkInstance","type":"address"},{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"uint16","name":"fastWithdrawFeeRate","type":"uint16"},{"internalType":"uint32","name":"accountIdOfNonce","type":"uint32"},{"internalType":"uint8","name":"subAccountIdOfNonce","type":"uint8"},{"internalType":"uint32","name":"nonce","type":"uint32"},{"internalType":"uint256","name":"value","type":"uint256"}],"internalType":"struct MultiCall.WithdrawToL1Info[]","name":"_withdrawDatas","type":"tuple[]"}],"name":"batchWithdrawToL1","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"bytes[]","name":"calls","type":"bytes[]"}],"name":"multiStaticCall","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"internalType":"struct MultiCall.Result[]","name":"returnData","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"bytes[]","name":"calls","type":"bytes[]"}],"name":"multicall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"bytes[]","name":"calls","type":"bytes[]"}],"name":"strictMulticall","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60808060405234610016576109b9908161001c8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c80632b8e9249146106345780633b32eaae1461043457806363fb0b96146103355780639c5367dc146101d157639ecefae31461005357600080fd5b346101a45760403660031901126101a45761006c61074e565b602480359167ffffffffffffffff918284116101a457366023850112156101a45783600401358381116101a4576060903683838302880101116101a457946001600160a01b039384169060005b8781106100c257005b83810282018460231982360301126101a457604051908582018281108a8211176101bc576040528681013591888316908184036101a457604093815260449161010c838501610963565b9360209383868680960152610124606480940161094f565b978891015261ffff604051968794631792c03f60e11b86526004860152168c8401526001600160801b03809716908301528160008a5af180156101b057610177575b505050610172906107fa565b6100b9565b81813d83116101a9575b61018b81836107c0565b810103126101a45751908116036101a457388080610166565b600080fd5b503d610181565b6040513d6000823e3d90fd5b87634e487b7160e01b60005260416004526000fd5b346101a4576101df36610703565b6101eb819493946107e2565b936101f960405195866107c0565b818552601f19610208836107e2565b0160005b81811061031057505060005b81811061029a578560405160408101914382526020604081840152815180945260608301938160608260051b8601019301916000955b82871061025b5785850386f35b90919293828061028a600193605f198a82030186526040838a5180511515845201519181858201520190610764565b960192019601959291909261024e565b806000806102b46102af61030b95878b61081f565b610845565b6102bf84888a610859565b90816040519283928337810184815203915afa6102da61089b565b604051916102e7836107a4565b1515825260208201526102fa82896108db565b5261030581886108db565b506107fa565b610218565b60209060405161031f816107a4565b6000815282606081830152828a0101520161020c565b346101a45761034336610703565b9290916103518482146108ef565b60005b81811061035d57005b807fab62a3ffa5261e813f1520909db385792f512ab049d5b4a7d522ac63c65713636000806103936102af61042f96888a61081f565b8161039f868c8c610859565b9190826040519384928337810182815203925af16103bb61089b565b6104276103cc6102af86898b61081f565b916103d8868c8c610859565b9460405195869560018060a01b031686528060808060208901528701528060a0938488013760008682018401529015156040860152601f01601f19168401848103820160608601520190610764565b0390a16107fa565b610354565b60403660031901126101a45761044861074e565b6024359067ffffffffffffffff8083116101a457366023840112156101a4578260040135918183116101a45760089336602485871b830101116101a45760005b84811061049157005b610100908160231982891b8501360301126101a4576040519182018281108682111761061e576040526104ca602482891b85010161093b565b918281526104de6044838a1b86010161093b565b908160208201526104f56064848b1b87010161094f565b9182604083015261050c6084858c1b880101610963565b80606084015261052260a4868d1b890101610972565b9384608085015260c4868d1b890101359160ff831683036101a4578460e06101048f9761055c60e48e8960a08f950152838c1b0101610972565b60c08501819052981b8c0101359101526001600160a01b038a163b156101a45760405163d311461760e01b81526001600160a01b03988916600482015293881660248501526001600160801b0391909116604484015261ffff16606483015263ffffffff938416608483015260ff1660a4820152911660c482015291600090839060e4908290858c1b880161010401359089165af180156101b05761060b575b61060691506107fa565b610488565b84821161061e57610606916040526105fc565b634e487b7160e01b600052604160045260246000fd5b346101a45761064236610703565b9291906106508483146108ef565b60005b82811061065c57005b60008061066d6102af84878961081f565b81610679858a88610859565b9190826040519384928337810182815203925af161069561089b565b90156106aa57506106a5906107fa565b610653565b60405162461bcd60e51b8152602060048201529081906106ce906024830190610764565b0390fd5b9181601f840112156101a45782359167ffffffffffffffff83116101a4576020808501948460051b0101116101a457565b60406003198201126101a45767ffffffffffffffff916004358381116101a45782610730916004016106d2565b939093926024359182116101a45761074a916004016106d2565b9091565b600435906001600160a01b03821682036101a457565b919082519283825260005b848110610790575050826000602080949584010152601f8019910116010190565b60208183018101518483018201520161076f565b6040810190811067ffffffffffffffff82111761061e57604052565b90601f8019910116810190811067ffffffffffffffff82111761061e57604052565b67ffffffffffffffff811161061e5760051b60200190565b60001981146108095760010190565b634e487b7160e01b600052601160045260246000fd5b919081101561082f5760051b0190565b634e487b7160e01b600052603260045260246000fd5b356001600160a01b03811681036101a45790565b919081101561082f5760051b81013590601e19813603018212156101a457019081359167ffffffffffffffff83116101a45760200182360381136101a4579190565b3d156108d6573d9067ffffffffffffffff821161061e57604051916108ca601f8201601f1916602001846107c0565b82523d6000602084013e565b606090565b805182101561082f5760209160051b010190565b156108f657565b60405162461bcd60e51b815260206004820152601e60248201527f746172676574732e6c656e67746820213d2063616c6c732e6c656e67746800006044820152606490fd5b35906001600160a01b03821682036101a457565b35906001600160801b03821682036101a457565b359061ffff821682036101a457565b359063ffffffff821682036101a45756fea264697066735822122044811fd7f4a8a3b59d6c1cd34528ba588694de1cd1de9f2baba191ce79d655c164736f6c63430008120033
Deployed Bytecode
0x6080604052600436101561001257600080fd5b60003560e01c80632b8e9249146106345780633b32eaae1461043457806363fb0b96146103355780639c5367dc146101d157639ecefae31461005357600080fd5b346101a45760403660031901126101a45761006c61074e565b602480359167ffffffffffffffff918284116101a457366023850112156101a45783600401358381116101a4576060903683838302880101116101a457946001600160a01b039384169060005b8781106100c257005b83810282018460231982360301126101a457604051908582018281108a8211176101bc576040528681013591888316908184036101a457604093815260449161010c838501610963565b9360209383868680960152610124606480940161094f565b978891015261ffff604051968794631792c03f60e11b86526004860152168c8401526001600160801b03809716908301528160008a5af180156101b057610177575b505050610172906107fa565b6100b9565b81813d83116101a9575b61018b81836107c0565b810103126101a45751908116036101a457388080610166565b600080fd5b503d610181565b6040513d6000823e3d90fd5b87634e487b7160e01b60005260416004526000fd5b346101a4576101df36610703565b6101eb819493946107e2565b936101f960405195866107c0565b818552601f19610208836107e2565b0160005b81811061031057505060005b81811061029a578560405160408101914382526020604081840152815180945260608301938160608260051b8601019301916000955b82871061025b5785850386f35b90919293828061028a600193605f198a82030186526040838a5180511515845201519181858201520190610764565b960192019601959291909261024e565b806000806102b46102af61030b95878b61081f565b610845565b6102bf84888a610859565b90816040519283928337810184815203915afa6102da61089b565b604051916102e7836107a4565b1515825260208201526102fa82896108db565b5261030581886108db565b506107fa565b610218565b60209060405161031f816107a4565b6000815282606081830152828a0101520161020c565b346101a45761034336610703565b9290916103518482146108ef565b60005b81811061035d57005b807fab62a3ffa5261e813f1520909db385792f512ab049d5b4a7d522ac63c65713636000806103936102af61042f96888a61081f565b8161039f868c8c610859565b9190826040519384928337810182815203925af16103bb61089b565b6104276103cc6102af86898b61081f565b916103d8868c8c610859565b9460405195869560018060a01b031686528060808060208901528701528060a0938488013760008682018401529015156040860152601f01601f19168401848103820160608601520190610764565b0390a16107fa565b610354565b60403660031901126101a45761044861074e565b6024359067ffffffffffffffff8083116101a457366023840112156101a4578260040135918183116101a45760089336602485871b830101116101a45760005b84811061049157005b610100908160231982891b8501360301126101a4576040519182018281108682111761061e576040526104ca602482891b85010161093b565b918281526104de6044838a1b86010161093b565b908160208201526104f56064848b1b87010161094f565b9182604083015261050c6084858c1b880101610963565b80606084015261052260a4868d1b890101610972565b9384608085015260c4868d1b890101359160ff831683036101a4578460e06101048f9761055c60e48e8960a08f950152838c1b0101610972565b60c08501819052981b8c0101359101526001600160a01b038a163b156101a45760405163d311461760e01b81526001600160a01b03988916600482015293881660248501526001600160801b0391909116604484015261ffff16606483015263ffffffff938416608483015260ff1660a4820152911660c482015291600090839060e4908290858c1b880161010401359089165af180156101b05761060b575b61060691506107fa565b610488565b84821161061e57610606916040526105fc565b634e487b7160e01b600052604160045260246000fd5b346101a45761064236610703565b9291906106508483146108ef565b60005b82811061065c57005b60008061066d6102af84878961081f565b81610679858a88610859565b9190826040519384928337810182815203925af161069561089b565b90156106aa57506106a5906107fa565b610653565b60405162461bcd60e51b8152602060048201529081906106ce906024830190610764565b0390fd5b9181601f840112156101a45782359167ffffffffffffffff83116101a4576020808501948460051b0101116101a457565b60406003198201126101a45767ffffffffffffffff916004358381116101a45782610730916004016106d2565b939093926024359182116101a45761074a916004016106d2565b9091565b600435906001600160a01b03821682036101a457565b919082519283825260005b848110610790575050826000602080949584010152601f8019910116010190565b60208183018101518483018201520161076f565b6040810190811067ffffffffffffffff82111761061e57604052565b90601f8019910116810190811067ffffffffffffffff82111761061e57604052565b67ffffffffffffffff811161061e5760051b60200190565b60001981146108095760010190565b634e487b7160e01b600052601160045260246000fd5b919081101561082f5760051b0190565b634e487b7160e01b600052603260045260246000fd5b356001600160a01b03811681036101a45790565b919081101561082f5760051b81013590601e19813603018212156101a457019081359167ffffffffffffffff83116101a45760200182360381136101a4579190565b3d156108d6573d9067ffffffffffffffff821161061e57604051916108ca601f8201601f1916602001846107c0565b82523d6000602084013e565b606090565b805182101561082f5760209160051b010190565b156108f657565b60405162461bcd60e51b815260206004820152601e60248201527f746172676574732e6c656e67746820213d2063616c6c732e6c656e67746800006044820152606490fd5b35906001600160a01b03821682036101a457565b35906001600160801b03821682036101a457565b359061ffff821682036101a457565b359063ffffffff821682036101a45756fea264697066735822122044811fd7f4a8a3b59d6c1cd34528ba588694de1cd1de9f2baba191ce79d655c164736f6c63430008120033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.