Contract Overview
Latest 25 from a total of 828 transactions
Contract Name:
CrosschainTokenCashierRouter
Compiler Version
v0.5.17+commit.d19bba13
// File: contracts/token/ERC20Basic.sol pragma solidity <0.6 >=0.4.21; /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/179 */ contract ERC20Basic { function totalSupply() public view returns (uint256); function balanceOf(address who) public view returns (uint256); function transfer(address to, uint256 value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } // File: contracts/token/ERC20.sol pragma solidity <0.6 >=0.4.21; /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ contract ERC20 is ERC20Basic { function allowance(address owner, address spender) public view returns (uint256); function transferFrom(address from, address to, uint256 value) public returns (bool); function approve(address spender, uint256 value) public returns (bool); event Approval(address indexed owner, address indexed spender, uint256 value); } // File: contracts/iotube/CrosschainTokenCashierRouter.sol pragma solidity <6.0 >=0.4.24; interface ICashier { function depositTo(address _token, address _to, uint256 _amount) external payable; } interface ICrosschainToken { function deposit(uint256 _amount) external; function coToken() external view returns (ERC20); } contract CrosschainTokenCashierRouter { ICashier public cashier; constructor(ICashier _cashier) public { cashier = _cashier; } function approveCrosschainToken(address _crosschainToken) public { ERC20 token = ICrosschainToken(_crosschainToken).coToken(); require(token.approve(_crosschainToken, uint256(-1)), "failed to approve allowance to crosschain token"); require(ERC20(_crosschainToken).approve(address(cashier), uint256(-1)), "failed to approve allowance to cashier"); } function depositTo(address _crosschainToken, address _to, uint256 _amount) public payable { require(_crosschainToken != address(0), "invalid token"); ERC20 token = ICrosschainToken(_crosschainToken).coToken(); require(safeTransferFrom(address(token), msg.sender, address(this), _amount), "failed to transfer token"); ICrosschainToken(_crosschainToken).deposit(_amount); cashier.depositTo.value(msg.value)(_crosschainToken, _to, _amount); } function safeTransferFrom(address _token, address _from, address _to, uint256 _amount) internal returns (bool) { // selector = bytes4(keccak256(bytes('transferFrom(address,address,uint256)'))) (bool success, bytes memory data) = _token.call(abi.encodeWithSelector(0x23b872dd, _from, _to, _amount)); return success && (data.length == 0 || abi.decode(data, (bool))); } }
[{"inputs":[{"internalType":"contract ICashier","name":"_cashier","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"constant":false,"inputs":[{"internalType":"address","name":"_crosschainToken","type":"address"}],"name":"approveCrosschainToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"cashier","outputs":[{"internalType":"contract ICashier","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_crosschainToken","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"depositTo","outputs":[],"payable":true,"stateMutability":"payable","type":"function"}]
Contract Creation Code
6080604052600436106100345760003560e01c80630d71f7ca14610039578063ed740e971461006e578063f213159c1461009f575b600080fd5b34801561004557600080fd5b5061006c6004803603602081101561005c57600080fd5b50356001600160a01b03166100d5565b005b34801561007a57600080fd5b506100836102bd565b604080516001600160a01b039092168252519081900360200190f35b61006c600480360360608110156100b557600080fd5b506001600160a01b038135811691602081013590911690604001356102cc565b6000816001600160a01b0316637f9864f76040518163ffffffff1660e01b815260040160206040518083038186803b15801561011057600080fd5b505afa158015610124573d6000803e3d6000fd5b505050506040513d602081101561013a57600080fd5b50516040805163095ea7b360e01b81526001600160a01b038581166004830152600019602483015291519293509083169163095ea7b3916044808201926020929091908290030181600087803b15801561019357600080fd5b505af11580156101a7573d6000803e3d6000fd5b505050506040513d60208110156101bd57600080fd5b50516101fa5760405162461bcd60e51b815260040180806020018281038252602f8152602001806105e0602f913960400191505060405180910390fd5b600080546040805163095ea7b360e01b81526001600160a01b039283166004820152600019602482015290519185169263095ea7b3926044808401936020939083900390910190829087803b15801561025257600080fd5b505af1158015610266573d6000803e3d6000fd5b505050506040513d602081101561027c57600080fd5b50516102b95760405162461bcd60e51b815260040180806020018281038252602681526020018061060f6026913960400191505060405180910390fd5b5050565b6000546001600160a01b031681565b6001600160a01b038316610317576040805162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b2103a37b5b2b760991b604482015290519081900360640190fd5b6000836001600160a01b0316637f9864f76040518163ffffffff1660e01b815260040160206040518083038186803b15801561035257600080fd5b505afa158015610366573d6000803e3d6000fd5b505050506040513d602081101561037c57600080fd5b5051905061038c813330856104b8565b6103dd576040805162461bcd60e51b815260206004820152601860248201527f6661696c656420746f207472616e7366657220746f6b656e0000000000000000604482015290519081900360640190fd5b836001600160a01b031663b6b55f25836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561042357600080fd5b505af1158015610437573d6000803e3d6000fd5b50506000805460408051633c84c56760e21b81526001600160a01b038a81166004830152898116602483015260448201899052915191909216945063f213159c9350349260648084019391929182900301818588803b15801561049957600080fd5b505af11580156104ad573d6000803e3d6000fd5b505050505050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1781529251825160009485946060948b16939092909182918083835b6020831061053f5780518252601f199092019160209182019101610520565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146105a1576040519150601f19603f3d011682016040523d82523d6000602084013e6105a6565b606091505b50915091508180156105d45750805115806105d457508080602001905160208110156105d157600080fd5b50515b97965050505050505056fe6661696c656420746f20617070726f766520616c6c6f77616e636520746f2063726f7373636861696e20746f6b656e6661696c656420746f20617070726f766520616c6c6f77616e636520746f2063617368696572a265627a7a723158209f236ad6dc0a63e47b89441686d0c33769b072bb790830088f28aed8b0e4a50a64736f6c63430005110032
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for
interesting conversations.