Contract Overview
Latest 25 from a total of 29 transactions
Contract Name:
CrosschainTokenCashierRouter2
Compiler Version
v0.8.0+commit.c7dfd78e
pragma solidity >=0.8.0; interface ICashier { function depositTo(address _token, address _to, uint256 _amount) external payable; } interface ICrosschainToken { function deposit(uint256 _amount) external; function coToken() external view returns (address); } interface WToken { function deposit() external payable; } contract CrosschainTokenCashierRouter2 { address public ciotx; WToken public wiotx; constructor(ICrosschainToken _ciotx) public { wiotx = WToken(address(_ciotx.coToken())); ciotx = address(_ciotx); _approve(ciotx, address(wiotx)); } function _approve(address _ctoken, address _coToken) private { require(safeApprove(_coToken, _ctoken, type(uint256).max), "failed to approve allowance to crosschain token"); } function approveCrosschainToken(address _crosschainToken) public { _approve(_crosschainToken, ICrosschainToken(_crosschainToken).coToken()); } function _depositToCashier(address _token, address _cashier, address _to, uint256 _amount, uint256 _value) private { ICrosschainToken(_token).deposit(_amount); require(safeApprove(_token, _cashier, _amount), "failed to approve allowance to cashier"); ICashier(_cashier).depositTo{value: _value}(_token, _to, _amount); } function depositCoinTo(address _cashier, address _to, uint256 _amount) public payable { require(_amount <= msg.value, "invalid amount"); wiotx.deposit{value: _amount}(); _depositToCashier(ciotx, _cashier, _to, _amount, msg.value - _amount); } function depositTo(address _cashier, address _crosschainToken, address _to, uint256 _amount) public payable { require(_crosschainToken != address(0), "invalid token"); require(safeTransferFrom(ICrosschainToken(_crosschainToken).coToken(), msg.sender, address(this), _amount), "failed to transfer token"); _depositToCashier(_crosschainToken, _cashier, _to, _amount, msg.value); } 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))); } function safeApprove(address _token, address _spender, uint256 _amount) internal returns (bool) { // selector = bytes4(keccak256(bytes('approve(address,uint256)'))) (bool success, bytes memory data) = _token.call(abi.encodeWithSelector(0x095ea7b3, _spender, _amount)); return success && (data.length == 0 || abi.decode(data, (bool))); } }
[{"inputs":[{"internalType":"contract ICrosschainToken","name":"_ciotx","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"_crosschainToken","type":"address"}],"name":"approveCrosschainToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ciotx","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_cashier","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"depositCoinTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_cashier","type":"address"},{"internalType":"address","name":"_crosschainToken","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"depositTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"wiotx","outputs":[{"internalType":"contract WToken","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040526004361061004a5760003560e01c80630d71f7ca1461004f57806372eb521e1461007157806388052d2514610084578063c479256b146100af578063cfb83718146100c2575b600080fd5b34801561005b57600080fd5b5061006f61006a3660046105ca565b6100d7565b005b61006f61007f366004610609565b610154565b34801561009057600080fd5b5061009961022e565b6040516100a691906106f2565b60405180910390f35b61006f6100bd366004610659565b61023d565b3480156100ce57600080fd5b506100996102ef565b61015181826001600160a01b0316637f9864f76040518163ffffffff1660e01b815260040160206040518083038186803b15801561011457600080fd5b505afa158015610128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014c91906105ed565b6102fe565b50565b6001600160a01b0383166101835760405162461bcd60e51b815260040161017a906107ba565b60405180910390fd5b6101ff836001600160a01b0316637f9864f76040518163ffffffff1660e01b815260040160206040518083038186803b1580156101bf57600080fd5b505afa1580156101d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f791906105ed565b33308461032b565b61021b5760405162461bcd60e51b815260040161017a90610827565b6102288385848434610404565b50505050565b6000546001600160a01b031681565b3481111561025d5760405162461bcd60e51b815260040161017a90610792565b600160009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156102ad57600080fd5b505af11580156102c1573d6000803e3d6000fd5b50506000546102ea93506001600160a01b0316915085905084846102e58134610867565b610404565b505050565b6001546001600160a01b031681565b61030b81836000196104f4565b6103275760405162461bcd60e51b815260040161017a90610743565b5050565b6000806000866001600160a01b03166323b872dd87878760405160240161035493929190610706565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161038d91906106b9565b6000604051808303816000865af19150503d80600081146103ca576040519150601f19603f3d011682016040523d82523d6000602084013e6103cf565b606091505b50915091508180156103f95750805115806103f95750808060200190518101906103f99190610699565b979650505050505050565b60405163b6b55f2560e01b81526001600160a01b0386169063b6b55f259061043090859060040161085e565b600060405180830381600087803b15801561044a57600080fd5b505af115801561045e573d6000803e3d6000fd5b5050505061046d8585846104f4565b6104895760405162461bcd60e51b815260040161017a906107e1565b604051633c84c56760e21b81526001600160a01b0385169063f213159c9083906104bb90899088908890600401610706565b6000604051808303818588803b1580156104d457600080fd5b505af11580156104e8573d6000803e3d6000fd5b50505050505050505050565b6000806000856001600160a01b031663095ea7b3868660405160240161051b92919061072a565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161055491906106b9565b6000604051808303816000865af19150503d8060008114610591576040519150601f19603f3d011682016040523d82523d6000602084013e610596565b606091505b50915091508180156105c05750805115806105c05750808060200190518101906105c09190610699565b9695505050505050565b6000602082840312156105db578081fd5b81356105e68161088a565b9392505050565b6000602082840312156105fe578081fd5b81516105e68161088a565b6000806000806080858703121561061e578283fd5b84356106298161088a565b935060208501356106398161088a565b925060408501356106498161088a565b9396929550929360600135925050565b60008060006060848603121561066d578283fd5b83356106788161088a565b925060208401356106888161088a565b929592945050506040919091013590565b6000602082840312156106aa578081fd5b815180151581146105e6578182fd5b60008251815b818110156106d957602081860181015185830152016106bf565b818111156106e75782828501525b509190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6020808252602f908201527f6661696c656420746f20617070726f766520616c6c6f77616e636520746f206360408201526e3937b9b9b1b430b4b7103a37b5b2b760891b606082015260800190565b6020808252600e908201526d1a5b9d985b1a5908185b5bdd5b9d60921b604082015260600190565b6020808252600d908201526c34b73b30b634b2103a37b5b2b760991b604082015260600190565b60208082526026908201527f6661696c656420746f20617070726f766520616c6c6f77616e636520746f206360408201526530b9b434b2b960d11b606082015260800190565b60208082526018908201527f6661696c656420746f207472616e7366657220746f6b656e0000000000000000604082015260600190565b90815260200190565b60008282101561088557634e487b7160e01b81526011600452602481fd5b500390565b6001600160a01b038116811461015157600080fdfea26469706673582212204466174f890189bb52ba0642ea1155f416d8cbc7f86119d13e3b5fc5f84c7f3064736f6c63430008000033
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.