Overview
ETH Balance
0 ETH
Eth Value
$0.00Token Holdings
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 2,844 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Swap In | 19409639 | 113 days ago | IN | 0 ETH | 0.00169186 | ||||
Swap In | 19409639 | 113 days ago | IN | 0 ETH | 0.00169227 | ||||
Swap In | 19409639 | 113 days ago | IN | 0 ETH | 0.0016732 | ||||
Swap In | 18368404 | 258 days ago | IN | 0 ETH | 0.00149209 | ||||
Swap In | 18365597 | 259 days ago | IN | 0 ETH | 0.00258559 | ||||
Swap In | 18362089 | 259 days ago | IN | 0 ETH | 0.00202358 | ||||
Swap In | 18361693 | 259 days ago | IN | 0 ETH | 0.00129204 | ||||
Swap In | 18343331 | 262 days ago | IN | 0 ETH | 0.00147343 | ||||
Swap In | 18342776 | 262 days ago | IN | 0 ETH | 0.00468884 | ||||
Swap In | 18341770 | 262 days ago | IN | 0 ETH | 0.00225496 | ||||
Swap In | 18340915 | 262 days ago | IN | 0 ETH | 0.00143125 | ||||
Swap In | 18340196 | 262 days ago | IN | 0 ETH | 0.00254814 | ||||
Swap In | 18338556 | 263 days ago | IN | 0 ETH | 0.0013704 | ||||
Swap In | 18336985 | 263 days ago | IN | 0 ETH | 0.00177123 | ||||
Swap In | 18326633 | 264 days ago | IN | 0 ETH | 0.00145896 | ||||
Swap In | 18279004 | 271 days ago | IN | 0 ETH | 0.00232033 | ||||
Swap In | 18265157 | 273 days ago | IN | 0 ETH | 0.00449308 | ||||
Swap In | 18263221 | 273 days ago | IN | 0 ETH | 0.00618573 | ||||
Swap In | 18263219 | 273 days ago | IN | 0 ETH | 0.00520852 | ||||
Swap In | 18258792 | 274 days ago | IN | 0 ETH | 0.00377921 | ||||
Swap In | 18258529 | 274 days ago | IN | 0 ETH | 0.00233294 | ||||
Swap In | 18257604 | 274 days ago | IN | 0 ETH | 0.00191323 | ||||
Swap In | 18251185 | 275 days ago | IN | 0 ETH | 0.00566703 | ||||
Swap In | 18248050 | 275 days ago | IN | 0 ETH | 0.00246713 | ||||
Swap In | 18248033 | 275 days ago | IN | 0 ETH | 0.00214208 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | Value | ||
---|---|---|---|---|---|---|
18368404 | 258 days ago | 0.08300599 ETH | ||||
18368404 | 258 days ago | 0.00012469 ETH | ||||
18368404 | 258 days ago | 0.08313069 ETH | ||||
18365597 | 259 days ago | 0.7807789 ETH | ||||
18365597 | 259 days ago | 0.00117292 ETH | ||||
18365597 | 259 days ago | 0.78195182 ETH | ||||
18362089 | 259 days ago | 0.08105816 ETH | ||||
18362089 | 259 days ago | 0.00012176 ETH | ||||
18362089 | 259 days ago | 0.08117993 ETH | ||||
18361693 | 259 days ago | 1.57697842 ETH | ||||
18361693 | 259 days ago | 0.00236902 ETH | ||||
18361693 | 259 days ago | 1.57934745 ETH | ||||
18343331 | 262 days ago | 0.32560188 ETH | ||||
18343331 | 262 days ago | 0.00048913 ETH | ||||
18343331 | 262 days ago | 0.32609101 ETH | ||||
18342776 | 262 days ago | 0.03292138 ETH | ||||
18342776 | 262 days ago | 0.00004945 ETH | ||||
18342776 | 262 days ago | 0.03297084 ETH | ||||
18341770 | 262 days ago | 0.82140999 ETH | ||||
18341770 | 262 days ago | 0.00123396 ETH | ||||
18341770 | 262 days ago | 0.82264395 ETH | ||||
18340915 | 262 days ago | 1.07116971 ETH | ||||
18340915 | 262 days ago | 0.00160916 ETH | ||||
18340915 | 262 days ago | 1.07277888 ETH | ||||
18340196 | 262 days ago | 22.20282877 ETH |
Loading...
Loading
Contract Name:
TSAggregatorGeneric
Compiler Version
v0.8.10+commit.fc410830
Optimization Enabled:
Yes with 10000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.10; import { SafeTransferLib } from "../lib/SafeTransferLib.sol"; import { TSAggregator } from "./TSAggregator.sol"; import { IERC20 } from "./interfaces/IERC20.sol"; import { IThorchainRouter } from "./interfaces/IThorchainRouter.sol"; import { TSAggregatorTokenTransferProxy } from './TSAggregatorTokenTransferProxy.sol'; contract TSAggregatorGeneric is TSAggregator { using SafeTransferLib for address; constructor(address _ttp) TSAggregator(_ttp) { } // Use 1inch's swap API endpoint to get data to send // e.g. https://api.1inch.io/v4.0/1/swap?toTokenAddress=0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE&fromTokenAddress=0x111111111117dc0aa78b770fa6a738034120c302&amount=10000000000000000&fromAddress=0x2f8aedd149afbdb5206ecaf8b1a3abb9186c8053&slippage=1&disableEstimate=true // toTokenAddress needs to be 0xeeee so ETH is sent back to swapIn // fromAddress needs to be the address of this contract // disableEstimate makes the API return a result even if there's no token balance in the contract function swapIn( address tcRouter, address tcVault, string calldata tcMemo, address token, uint amount, address router, bytes calldata data, uint deadline ) public nonReentrant { require(router != address(tokenTransferProxy), "no calling ttp"); tokenTransferProxy.transferTokens(token, msg.sender, address(this), amount); token.safeApprove(address(router), 0); // USDT quirk token.safeApprove(address(router), amount); (bool success,) = router.call(data); require(success, "failed to swap"); uint256 amountOut = address(this).balance; amountOut = skimFee(amountOut); IThorchainRouter(tcRouter).depositWithExpiry{value: amountOut}( payable(tcVault), address(0), // ETH amountOut, tcMemo, deadline ); } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; /// @notice Safe ETH and ERC20 transfer library that gracefully handles missing return values. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/utils/SafeTransferLib.sol) /// @author Modified from Gnosis (https://github.com/gnosis/gp-v2-contracts/blob/main/src/contracts/libraries/GPv2SafeERC20.sol) /// @dev Use with caution! Some functions in this library knowingly create dirty bits at the destination of the free memory pointer. library SafeTransferLib { /*/////////////////////////////////////////////////////////////// ETH OPERATIONS //////////////////////////////////////////////////////////////*/ function safeTransferETH(address to, uint256 amount) internal { bool callStatus; assembly { // Transfer the ETH and store if it succeeded or not. callStatus := call(gas(), to, amount, 0, 0, 0, 0) } require(callStatus, "ETH_TRANSFER_FAILED"); } /*/////////////////////////////////////////////////////////////// ERC20 OPERATIONS //////////////////////////////////////////////////////////////*/ function safeTransferFrom( address token, address from, address to, uint256 amount ) internal { bool callStatus; assembly { // Get a pointer to some free memory. let freeMemoryPointer := mload(0x40) // Write the abi-encoded calldata to memory piece by piece: mstore(freeMemoryPointer, 0x23b872dd00000000000000000000000000000000000000000000000000000000) // Begin with the function selector. mstore(add(freeMemoryPointer, 4), and(from, 0xffffffffffffffffffffffffffffffffffffffff)) // Mask and append the "from" argument. mstore(add(freeMemoryPointer, 36), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Mask and append the "to" argument. mstore(add(freeMemoryPointer, 68), amount) // Finally append the "amount" argument. No mask as it's a full 32 byte value. // Call the token and store if it succeeded or not. // We use 100 because the calldata length is 4 + 32 * 3. callStatus := call(gas(), token, 0, freeMemoryPointer, 100, 0, 0) } require(didLastOptionalReturnCallSucceed(callStatus), "TRANSFER_FROM_FAILED"); } function safeTransfer( address token, address to, uint256 amount ) internal { bool callStatus; assembly { // Get a pointer to some free memory. let freeMemoryPointer := mload(0x40) // Write the abi-encoded calldata to memory piece by piece: mstore(freeMemoryPointer, 0xa9059cbb00000000000000000000000000000000000000000000000000000000) // Begin with the function selector. mstore(add(freeMemoryPointer, 4), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Mask and append the "to" argument. mstore(add(freeMemoryPointer, 36), amount) // Finally append the "amount" argument. No mask as it's a full 32 byte value. // Call the token and store if it succeeded or not. // We use 68 because the calldata length is 4 + 32 * 2. callStatus := call(gas(), token, 0, freeMemoryPointer, 68, 0, 0) } require(didLastOptionalReturnCallSucceed(callStatus), "TRANSFER_FAILED"); } function safeApprove( address token, address to, uint256 amount ) internal { bool callStatus; assembly { // Get a pointer to some free memory. let freeMemoryPointer := mload(0x40) // Write the abi-encoded calldata to memory piece by piece: mstore(freeMemoryPointer, 0x095ea7b300000000000000000000000000000000000000000000000000000000) // Begin with the function selector. mstore(add(freeMemoryPointer, 4), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Mask and append the "to" argument. mstore(add(freeMemoryPointer, 36), amount) // Finally append the "amount" argument. No mask as it's a full 32 byte value. // Call the token and store if it succeeded or not. // We use 68 because the calldata length is 4 + 32 * 2. callStatus := call(gas(), token, 0, freeMemoryPointer, 68, 0, 0) } require(didLastOptionalReturnCallSucceed(callStatus), "APPROVE_FAILED"); } /*/////////////////////////////////////////////////////////////// INTERNAL HELPER LOGIC //////////////////////////////////////////////////////////////*/ function didLastOptionalReturnCallSucceed(bool callStatus) private pure returns (bool success) { assembly { // Get how many bytes the call returned. let returnDataSize := returndatasize() // If the call reverted: if iszero(callStatus) { // Copy the revert message into memory. returndatacopy(0, 0, returnDataSize) // Revert with the same message. revert(0, returnDataSize) } switch returnDataSize case 32 { // Copy the return data into memory. returndatacopy(0, 0, returnDataSize) // Set success to whether it returned true. success := iszero(iszero(mload(0))) } case 0 { // There was no return data. success := 1 } default { // It returned some malformed input. success := 0 } } } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.10; import { SafeTransferLib } from "../lib/SafeTransferLib.sol"; import { ReentrancyGuard } from "../lib/ReentrancyGuard.sol"; import { Owners } from "./Owners.sol"; import { TSAggregatorTokenTransferProxy } from './TSAggregatorTokenTransferProxy.sol'; abstract contract TSAggregator is Owners, ReentrancyGuard { using SafeTransferLib for address; event FeeSet(uint256 fee, address feeRecipient); uint256 public fee; address public feeRecipient; TSAggregatorTokenTransferProxy public tokenTransferProxy; constructor(address _tokenTransferProxy) { _setOwner(msg.sender, true); tokenTransferProxy = TSAggregatorTokenTransferProxy(_tokenTransferProxy); } // Needed for the swap router to be able to send back ETH receive() external payable {} function setFee(uint256 _fee, address _feeRecipient) public isOwner { require(_fee <= 1000, "fee can not be more than 10%"); fee = _fee; feeRecipient = _feeRecipient; emit FeeSet(_fee, _feeRecipient); } function skimFee(uint256 amount) internal returns (uint256) { if (fee != 0 && feeRecipient != address(0)) { uint256 feeAmount = (amount * fee) / 10000; feeRecipient.safeTransferETH(feeAmount); amount -= feeAmount; } return amount; } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.10; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity 0.8.10; interface IThorchainRouter { function depositWithExpiry( address payable vault, address asset, uint amount, string memory memo, uint expiration ) external payable; }
// SPDX-License-Identifier: MIT pragma solidity 0.8.10; import { SafeTransferLib } from "../lib/SafeTransferLib.sol"; import { Owners } from "./Owners.sol"; contract TSAggregatorTokenTransferProxy is Owners { using SafeTransferLib for address; constructor() { _setOwner(msg.sender, true); } function transferTokens(address token, address from, address to, uint256 amount) external isOwner { require(from == tx.origin || _isContract(from), "Invalid from address"); token.safeTransferFrom(from, to, amount); } function _isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; /// @notice Gas optimized reentrancy protection for smart contracts. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/utils/ReentrancyGuard.sol) /// @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/security/ReentrancyGuard.sol) abstract contract ReentrancyGuard { uint256 private locked = 1; modifier nonReentrant() { require(locked == 1, "REENTRANCY"); locked = 2; _; locked = 1; } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.10; abstract contract Owners { event OwnerSet(address indexed owner, bool active); mapping(address => bool) public owners; modifier isOwner() { require(owners[msg.sender], "Unauthorized"); _; } function _setOwner(address owner, bool active) internal virtual { owners[owner] = active; emit OwnerSet(owner, active); } function setOwner(address owner, bool active) public virtual isOwner { _setOwner(owner, active); } }
{ "optimizer": { "enabled": true, "runs": 10000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_ttp","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"},{"indexed":false,"internalType":"address","name":"feeRecipient","type":"address"}],"name":"FeeSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"bool","name":"active","type":"bool"}],"name":"OwnerSet","type":"event"},{"inputs":[],"name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"owners","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"},{"internalType":"address","name":"_feeRecipient","type":"address"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"bool","name":"active","type":"bool"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tcRouter","type":"address"},{"internalType":"address","name":"tcVault","type":"address"},{"internalType":"string","name":"tcMemo","type":"string"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"router","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapIn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenTransferProxy","outputs":[{"internalType":"contract TSAggregatorTokenTransferProxy","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526001805534801561001457600080fd5b50604051610def380380610def833981016040819052610033916100c2565b8061003f336001610065565b600480546001600160a01b0319166001600160a01b0392909216919091179055506100f2565b6001600160a01b03821660008181526020818152604091829020805460ff191685151590811790915591519182527ff74826f11048fa8ecf33e91132bf280f6582ed97548a84e426b56e98526b9316910160405180910390a25050565b6000602082840312156100d457600080fd5b81516001600160a01b03811681146100eb57600080fd5b9392505050565b610cee806101016000396000f3fe6080604052600436106100745760003560e01c8063469048401161004e5780634690484014610139578063516c731c14610166578063b4f2e8b814610186578063ddca3f43146101a657600080fd5b8063022914a7146100805780630701c374146100c55780630eefdbad146100e757600080fd5b3661007b57005b600080fd5b34801561008c57600080fd5b506100b061009b3660046109c5565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156100d157600080fd5b506100e56100e0366004610a30565b6101ca565b005b3480156100f357600080fd5b506004546101149073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100bc565b34801561014557600080fd5b506003546101149073ffffffffffffffffffffffffffffffffffffffff1681565b34801561017257600080fd5b506100e5610181366004610afc565b61050e565b34801561019257600080fd5b506100e56101a1366004610b38565b610595565b3480156101b257600080fd5b506101bc60025481565b6040519081526020016100bc565b60015460011461023b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f5245454e5452414e43590000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600260015560045473ffffffffffffffffffffffffffffffffffffffff858116911614156102c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6e6f2063616c6c696e67207474700000000000000000000000000000000000006044820152606401610232565b600480546040517f68155ec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811693820193909352336024820152306044820152606481018890529116906368155ec190608401600060405180830381600087803b15801561034757600080fd5b505af115801561035b573d6000803e3d6000fd5b506103829250505073ffffffffffffffffffffffffffffffffffffffff8716856000610700565b6103a373ffffffffffffffffffffffffffffffffffffffff87168587610700565b60008473ffffffffffffffffffffffffffffffffffffffff1684846040516103cc929190610b64565b6000604051808303816000865af19150503d8060008114610409576040519150601f19603f3d011682016040523d82523d6000602084013e61040e565b606091505b5050905080610479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6661696c656420746f20737761700000000000000000000000000000000000006044820152606401610232565b47610483816107cd565b90508b73ffffffffffffffffffffffffffffffffffffffff166344bc937b828d6000858f8f8a6040518863ffffffff1660e01b81526004016104ca96959493929190610b74565b6000604051808303818588803b1580156104e357600080fd5b505af11580156104f7573d6000803e3d6000fd5b505060018055505050505050505050505050505050565b3360009081526020819052604090205460ff16610587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a656400000000000000000000000000000000000000006044820152606401610232565b6105918282610853565b5050565b3360009081526020819052604090205460ff1661060e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a656400000000000000000000000000000000000000006044820152606401610232565b6103e882111561067a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6665652063616e206e6f74206265206d6f7265207468616e20313025000000006044820152606401610232565b6002829055600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040805184815260208101929092527fc8242dc5446855370b781abbfc5d882af1d1a3cc29143216aba3558feb0ce925910160405180910390a15050565b60006040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201528260248201526000806044836000895af1915050610761816108db565b6107c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c45440000000000000000000000000000000000006044820152606401610232565b50505050565b60006002546000141580156107f9575060035473ffffffffffffffffffffffffffffffffffffffff1615155b1561084f576000612710600254846108119190610c29565b61081b9190610c66565b6003549091506108419073ffffffffffffffffffffffffffffffffffffffff1682610922565b61084b8184610ca1565b9250505b5090565b73ffffffffffffffffffffffffffffffffffffffff82166000818152602081815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527ff74826f11048fa8ecf33e91132bf280f6582ed97548a84e426b56e98526b9316910160405180910390a25050565b60003d826108ed57806000803e806000fd5b8060208114610905578015610916576000925061091b565b816000803e6000511515925061091b565b600192505b5050919050565b600080600080600085875af1905080610997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610232565b505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146109c057600080fd5b919050565b6000602082840312156109d757600080fd5b6109e08261099c565b9392505050565b60008083601f8401126109f957600080fd5b50813567ffffffffffffffff811115610a1157600080fd5b602083019150836020828501011115610a2957600080fd5b9250929050565b6000806000806000806000806000806101008b8d031215610a5057600080fd5b610a598b61099c565b9950610a6760208c0161099c565b985060408b013567ffffffffffffffff80821115610a8457600080fd5b610a908e838f016109e7565b909a509850889150610aa460608e0161099c565b975060808d01359650610ab960a08e0161099c565b955060c08d0135915080821115610acf57600080fd5b50610adc8d828e016109e7565b9150809450508092505060e08b013590509295989b9194979a5092959850565b60008060408385031215610b0f57600080fd5b610b188361099c565b915060208301358015158114610b2d57600080fd5b809150509250929050565b60008060408385031215610b4b57600080fd5b82359150610b5b6020840161099c565b90509250929050565b8183823760009101908152919050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015260a060608301528360a0830152838560c0840137600060c0858401015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601168301019050826080830152979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610c6157610c61610bfa565b500290565b600082610c9c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015610cb357610cb3610bfa565b50039056fea26469706673582212202391cae87c0a1bacca1122e108b16db0113911a2d4906a7783f7298fea44259864736f6c634300080a0033000000000000000000000000f892fef9da200d9e84c9b0647ecff0f34633abe8
Deployed Bytecode
0x6080604052600436106100745760003560e01c8063469048401161004e5780634690484014610139578063516c731c14610166578063b4f2e8b814610186578063ddca3f43146101a657600080fd5b8063022914a7146100805780630701c374146100c55780630eefdbad146100e757600080fd5b3661007b57005b600080fd5b34801561008c57600080fd5b506100b061009b3660046109c5565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156100d157600080fd5b506100e56100e0366004610a30565b6101ca565b005b3480156100f357600080fd5b506004546101149073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100bc565b34801561014557600080fd5b506003546101149073ffffffffffffffffffffffffffffffffffffffff1681565b34801561017257600080fd5b506100e5610181366004610afc565b61050e565b34801561019257600080fd5b506100e56101a1366004610b38565b610595565b3480156101b257600080fd5b506101bc60025481565b6040519081526020016100bc565b60015460011461023b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f5245454e5452414e43590000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600260015560045473ffffffffffffffffffffffffffffffffffffffff858116911614156102c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6e6f2063616c6c696e67207474700000000000000000000000000000000000006044820152606401610232565b600480546040517f68155ec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811693820193909352336024820152306044820152606481018890529116906368155ec190608401600060405180830381600087803b15801561034757600080fd5b505af115801561035b573d6000803e3d6000fd5b506103829250505073ffffffffffffffffffffffffffffffffffffffff8716856000610700565b6103a373ffffffffffffffffffffffffffffffffffffffff87168587610700565b60008473ffffffffffffffffffffffffffffffffffffffff1684846040516103cc929190610b64565b6000604051808303816000865af19150503d8060008114610409576040519150601f19603f3d011682016040523d82523d6000602084013e61040e565b606091505b5050905080610479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6661696c656420746f20737761700000000000000000000000000000000000006044820152606401610232565b47610483816107cd565b90508b73ffffffffffffffffffffffffffffffffffffffff166344bc937b828d6000858f8f8a6040518863ffffffff1660e01b81526004016104ca96959493929190610b74565b6000604051808303818588803b1580156104e357600080fd5b505af11580156104f7573d6000803e3d6000fd5b505060018055505050505050505050505050505050565b3360009081526020819052604090205460ff16610587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a656400000000000000000000000000000000000000006044820152606401610232565b6105918282610853565b5050565b3360009081526020819052604090205460ff1661060e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a656400000000000000000000000000000000000000006044820152606401610232565b6103e882111561067a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6665652063616e206e6f74206265206d6f7265207468616e20313025000000006044820152606401610232565b6002829055600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040805184815260208101929092527fc8242dc5446855370b781abbfc5d882af1d1a3cc29143216aba3558feb0ce925910160405180910390a15050565b60006040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201528260248201526000806044836000895af1915050610761816108db565b6107c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c45440000000000000000000000000000000000006044820152606401610232565b50505050565b60006002546000141580156107f9575060035473ffffffffffffffffffffffffffffffffffffffff1615155b1561084f576000612710600254846108119190610c29565b61081b9190610c66565b6003549091506108419073ffffffffffffffffffffffffffffffffffffffff1682610922565b61084b8184610ca1565b9250505b5090565b73ffffffffffffffffffffffffffffffffffffffff82166000818152602081815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527ff74826f11048fa8ecf33e91132bf280f6582ed97548a84e426b56e98526b9316910160405180910390a25050565b60003d826108ed57806000803e806000fd5b8060208114610905578015610916576000925061091b565b816000803e6000511515925061091b565b600192505b5050919050565b600080600080600085875af1905080610997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610232565b505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146109c057600080fd5b919050565b6000602082840312156109d757600080fd5b6109e08261099c565b9392505050565b60008083601f8401126109f957600080fd5b50813567ffffffffffffffff811115610a1157600080fd5b602083019150836020828501011115610a2957600080fd5b9250929050565b6000806000806000806000806000806101008b8d031215610a5057600080fd5b610a598b61099c565b9950610a6760208c0161099c565b985060408b013567ffffffffffffffff80821115610a8457600080fd5b610a908e838f016109e7565b909a509850889150610aa460608e0161099c565b975060808d01359650610ab960a08e0161099c565b955060c08d0135915080821115610acf57600080fd5b50610adc8d828e016109e7565b9150809450508092505060e08b013590509295989b9194979a5092959850565b60008060408385031215610b0f57600080fd5b610b188361099c565b915060208301358015158114610b2d57600080fd5b809150509250929050565b60008060408385031215610b4b57600080fd5b82359150610b5b6020840161099c565b90509250929050565b8183823760009101908152919050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015260a060608301528360a0830152838560c0840137600060c0858401015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601168301019050826080830152979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610c6157610c61610bfa565b500290565b600082610c9c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015610cb357610cb3610bfa565b50039056fea26469706673582212202391cae87c0a1bacca1122e108b16db0113911a2d4906a7783f7298fea44259864736f6c634300080a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f892fef9da200d9e84c9b0647ecff0f34633abe8
-----Decoded View---------------
Arg [0] : _ttp (address): 0xF892Fef9dA200d9E84c9b0647ecFF0F34633aBe8
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000f892fef9da200d9e84c9b0647ecff0f34633abe8
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.