Source Code
Overview
S Balance
More Info
ContractCreator
Loading...
Loading
Contract Name:
SOMockVaultRelayer
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)
// SPDX-License-Identifier: GPL-3.0-only pragma solidity ^0.8.18; import '@openzeppelin/contracts-v4/token/ERC20/IERC20.sol'; contract SOMockVaultRelayer { constructor() {} function transfer( IERC20 token, address from, address to, uint256 amount ) external { if (from == address(this)) { token.transfer(to, amount); } else { token.transferFrom(from, to, amount); } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.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); }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50610219806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063f18d03cc14610030575b600080fd5b61004361003e366004610169565b610045565b005b306001600160a01b038416036100ce5760405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905285169063a9059cbb906044016020604051808303816000875af11580156100a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100c891906101ba565b5061014b565b6040516323b872dd60e01b81526001600160a01b0384811660048301528381166024830152604482018390528516906323b872dd906064016020604051808303816000875af1158015610125573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014991906101ba565b505b50505050565b6001600160a01b038116811461016657600080fd5b50565b6000806000806080858703121561017f57600080fd5b843561018a81610151565b9350602085013561019a81610151565b925060408501356101aa81610151565b9396929550929360600135925050565b6000602082840312156101cc57600080fd5b815180151581146101dc57600080fd5b939250505056fea2646970667358221220efd85223e9b67e818071e831be7151d24ebe60b073922ef8b72e18cfde690e3b64736f6c63430008120033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063f18d03cc14610030575b600080fd5b61004361003e366004610169565b610045565b005b306001600160a01b038416036100ce5760405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905285169063a9059cbb906044016020604051808303816000875af11580156100a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100c891906101ba565b5061014b565b6040516323b872dd60e01b81526001600160a01b0384811660048301528381166024830152604482018390528516906323b872dd906064016020604051808303816000875af1158015610125573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014991906101ba565b505b50505050565b6001600160a01b038116811461016657600080fd5b50565b6000806000806080858703121561017f57600080fd5b843561018a81610151565b9350602085013561019a81610151565b925060408501356101aa81610151565b9396929550929360600135925050565b6000602082840312156101cc57600080fd5b815180151581146101dc57600080fd5b939250505056fea2646970667358221220efd85223e9b67e818071e831be7151d24ebe60b073922ef8b72e18cfde690e3b64736f6c63430008120033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.