Source Code
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Batcher
Compiler Version
v0.8.30+commit.73712a01
Optimization Enabled:
No with 200 runs
Other Settings:
prague EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
contract Batcher {
function batch(address[] memory target, bytes[] memory data) external {
if (msg.sender != address(this)) revert OnlyAddress();
for (uint256 i; i < target.length; ++i) {
uint balBefore = IERC20(0xFc00000000000000000000000000000000000001).balanceOf(address(this));
(bool success, ) = target[i].call(data[i]);
if (!success) revert CallFailed();
uint balanceAfter = IERC20(0xFc00000000000000000000000000000000000001).balanceOf(address(this));
if (balanceAfter - balBefore < 0.15 ether) revert PaymentNotReceived();
}
}
error CallFailed();
error OnlyAddress();
error PaymentNotReceived();
}// 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);
}{
"remappings": [
"frax-std/=node_modules/frax-standard-solidity/src/",
"forge-std/=node_modules/forge-std/src/",
"ds-test/=node_modules/ds-test/src/",
"@openzeppelin/=node_modules/@openzeppelin/"
],
"optimizer": {
"enabled": false,
"runs": 200
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "prague",
"viaIR": false
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"name":"CallFailed","type":"error"},{"inputs":[],"name":"OnlyAddress","type":"error"},{"inputs":[],"name":"PaymentNotReceived","type":"error"},{"inputs":[{"internalType":"address[]","name":"target","type":"address[]"},{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"batch","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
6080604052348015600e575f5ffd5b5061087a8061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c8063f38f59d71461002d575b5f5ffd5b61004760048036038101906100429190610653565b610049565b005b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146100ae576040517fd225b1fd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8251811015610305575f73fc0000000000000000000000000000000000000173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161010791906106d8565b602060405180830381865afa158015610122573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101469190610724565b90505f84838151811061015c5761015b61074f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1684848151811061018d5761018c61074f565b5b60200260200101516040516101a291906107ce565b5f604051808303815f865af19150503d805f81146101db576040519150601f19603f3d011682016040523d82523d5f602084013e6101e0565b606091505b505090508061021b576040517f3204506f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73fc0000000000000000000000000000000000000173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161026991906106d8565b602060405180830381865afa158015610284573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102a89190610724565b9050670214e8348c4f000083826102bf9190610811565b10156102f7576040517f89b0d69900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050508060010190506100b0565b505050565b5f604051905090565b5f5ffd5b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6103658261031f565b810181811067ffffffffffffffff821117156103845761038361032f565b5b80604052505050565b5f61039661030a565b90506103a2828261035c565b919050565b5f67ffffffffffffffff8211156103c1576103c061032f565b5b602082029050602081019050919050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6103ff826103d6565b9050919050565b61040f816103f5565b8114610419575f5ffd5b50565b5f8135905061042a81610406565b92915050565b5f61044261043d846103a7565b61038d565b90508083825260208201905060208402830185811115610465576104646103d2565b5b835b8181101561048e578061047a888261041c565b845260208401935050602081019050610467565b5050509392505050565b5f82601f8301126104ac576104ab61031b565b5b81356104bc848260208601610430565b91505092915050565b5f67ffffffffffffffff8211156104df576104de61032f565b5b602082029050602081019050919050565b5f5ffd5b5f67ffffffffffffffff82111561050e5761050d61032f565b5b6105178261031f565b9050602081019050919050565b828183375f83830152505050565b5f61054461053f846104f4565b61038d565b9050828152602081018484840111156105605761055f6104f0565b5b61056b848285610524565b509392505050565b5f82601f8301126105875761058661031b565b5b8135610597848260208601610532565b91505092915050565b5f6105b26105ad846104c5565b61038d565b905080838252602082019050602084028301858111156105d5576105d46103d2565b5b835b8181101561061c57803567ffffffffffffffff8111156105fa576105f961031b565b5b8086016106078982610573565b855260208501945050506020810190506105d7565b5050509392505050565b5f82601f83011261063a5761063961031b565b5b813561064a8482602086016105a0565b91505092915050565b5f5f6040838503121561066957610668610313565b5b5f83013567ffffffffffffffff81111561068657610685610317565b5b61069285828601610498565b925050602083013567ffffffffffffffff8111156106b3576106b2610317565b5b6106bf85828601610626565b9150509250929050565b6106d2816103f5565b82525050565b5f6020820190506106eb5f8301846106c9565b92915050565b5f819050919050565b610703816106f1565b811461070d575f5ffd5b50565b5f8151905061071e816106fa565b92915050565b5f6020828403121561073957610738610313565b5b5f61074684828501610710565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f6107a88261077c565b6107b28185610786565b93506107c2818560208601610790565b80840191505092915050565b5f6107d9828461079e565b915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61081b826106f1565b9150610826836106f1565b925082820390508181111561083e5761083d6107e4565b5b9291505056fea2646970667358221220c8e8e047192a6796e3c741cd36f27c68874893d02ec4bb7bfd3a477684a6d65364736f6c634300081e0033
Deployed Bytecode
0x608060405234801561000f575f5ffd5b5060043610610029575f3560e01c8063f38f59d71461002d575b5f5ffd5b61004760048036038101906100429190610653565b610049565b005b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146100ae576040517fd225b1fd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8251811015610305575f73fc0000000000000000000000000000000000000173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161010791906106d8565b602060405180830381865afa158015610122573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101469190610724565b90505f84838151811061015c5761015b61074f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1684848151811061018d5761018c61074f565b5b60200260200101516040516101a291906107ce565b5f604051808303815f865af19150503d805f81146101db576040519150601f19603f3d011682016040523d82523d5f602084013e6101e0565b606091505b505090508061021b576040517f3204506f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73fc0000000000000000000000000000000000000173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161026991906106d8565b602060405180830381865afa158015610284573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102a89190610724565b9050670214e8348c4f000083826102bf9190610811565b10156102f7576040517f89b0d69900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050508060010190506100b0565b505050565b5f604051905090565b5f5ffd5b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6103658261031f565b810181811067ffffffffffffffff821117156103845761038361032f565b5b80604052505050565b5f61039661030a565b90506103a2828261035c565b919050565b5f67ffffffffffffffff8211156103c1576103c061032f565b5b602082029050602081019050919050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6103ff826103d6565b9050919050565b61040f816103f5565b8114610419575f5ffd5b50565b5f8135905061042a81610406565b92915050565b5f61044261043d846103a7565b61038d565b90508083825260208201905060208402830185811115610465576104646103d2565b5b835b8181101561048e578061047a888261041c565b845260208401935050602081019050610467565b5050509392505050565b5f82601f8301126104ac576104ab61031b565b5b81356104bc848260208601610430565b91505092915050565b5f67ffffffffffffffff8211156104df576104de61032f565b5b602082029050602081019050919050565b5f5ffd5b5f67ffffffffffffffff82111561050e5761050d61032f565b5b6105178261031f565b9050602081019050919050565b828183375f83830152505050565b5f61054461053f846104f4565b61038d565b9050828152602081018484840111156105605761055f6104f0565b5b61056b848285610524565b509392505050565b5f82601f8301126105875761058661031b565b5b8135610597848260208601610532565b91505092915050565b5f6105b26105ad846104c5565b61038d565b905080838252602082019050602084028301858111156105d5576105d46103d2565b5b835b8181101561061c57803567ffffffffffffffff8111156105fa576105f961031b565b5b8086016106078982610573565b855260208501945050506020810190506105d7565b5050509392505050565b5f82601f83011261063a5761063961031b565b5b813561064a8482602086016105a0565b91505092915050565b5f5f6040838503121561066957610668610313565b5b5f83013567ffffffffffffffff81111561068657610685610317565b5b61069285828601610498565b925050602083013567ffffffffffffffff8111156106b3576106b2610317565b5b6106bf85828601610626565b9150509250929050565b6106d2816103f5565b82525050565b5f6020820190506106eb5f8301846106c9565b92915050565b5f819050919050565b610703816106f1565b811461070d575f5ffd5b50565b5f8151905061071e816106fa565b92915050565b5f6020828403121561073957610738610313565b5b5f61074684828501610710565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f6107a88261077c565b6107b28185610786565b93506107c2818560208601610790565b80840191505092915050565b5f6107d9828461079e565b915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61081b826106f1565b9150610826836106f1565b925082820390508181111561083e5761083d6107e4565b5b9291505056fea2646970667358221220c8e8e047192a6796e3c741cd36f27c68874893d02ec4bb7bfd3a477684a6d65364736f6c634300081e0033
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in FRAX
0
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
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.