Contract
0xce5d236164d2bc0b2f65351f23b617c2a7d5cc28
1
Contract Overview
Balance:
0 AVAX
AVAX Value:
$0.00
My Name Tag:
Not Available, login to update
Txn Hash | Method |
Block
|
From
|
To
|
Value | [Txn Fee] | |||
---|---|---|---|---|---|---|---|---|---|
0x20cba785c479ad73c9829b5e56a4f837fdb39ea6bc7272c8b80f7b6192b9359b | Set Fee | 25371650 | 6 days 1 hr ago | 0x813288526ccbfade7aba8836a4ca2462eb886bb7 | IN | 0xce5d236164d2bc0b2f65351f23b617c2a7d5cc28 | 0 AVAX | 0.00195314 | |
0x76075ec997fe76d5dc111b408c1be12400bb8c8da8717e0b63dfd51f9952e972 | Set Owner | 25371646 | 6 days 1 hr ago | 0x813288526ccbfade7aba8836a4ca2462eb886bb7 | IN | 0xce5d236164d2bc0b2f65351f23b617c2a7d5cc28 | 0 AVAX | 0.00133924 | |
0x0082b6791df39441ddd66a101b743b526e1161237d1aef518d3e23261644720a | 0x60806040 | 25371644 | 6 days 1 hr ago | 0x813288526ccbfade7aba8836a4ca2462eb886bb7 | IN | Create: TSAggregatorUniswapV2AVAX | 0 AVAX | 0.02806468 |
[ Download CSV Export ]
Contract Name:
TSAggregatorUniswapV2AVAX
Compiler Version
v0.8.10+commit.fc410830
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// 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: 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; 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) external virtual isOwner { _setOwner(owner, active); } }
// 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) external 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) { uint256 amountFee = getFee(amount); if (amountFee > 0) { feeRecipient.safeTransferETH(amountFee); amount -= amountFee; } return amount; } function getFee(uint256 amount) internal view returns (uint256) { if (fee != 0 && feeRecipient != address(0)) { return (amount * fee) / 10000; } return 0; } // Parse amountOutMin treating the last 2 digits as an exponent // So 15e4 = 150000. This allows for compressed memos on chains // with limited space like Bitcoin function _parseAmountOutMin(uint256 amount) internal pure returns (uint256) { return amount / 100 * (10 ** (amount % 100)); } }
// 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: MIT pragma solidity 0.8.10; import { SafeTransferLib } from "../lib/SafeTransferLib.sol"; import { TSAggregator } from "./TSAggregator.sol"; import { IThorchainRouter } from "./interfaces/IThorchainRouter.sol"; import { IUniswapRouterV2AVAX } from "./interfaces/IUniswapRouterV2AVAX.sol"; contract TSAggregatorUniswapV2AVAX is TSAggregator { using SafeTransferLib for address; address public weth; IUniswapRouterV2AVAX public swapRouter; event SwapIn(address from, address token, uint256 amount, uint256 out, uint256 fee, address vault, string memo); event SwapOut(address to, address token, uint256 amount, uint256 fee); constructor( address _ttp, address _weth, address _swapRouter ) TSAggregator(_ttp) { weth = _weth; swapRouter = IUniswapRouterV2AVAX(_swapRouter); } function swapIn( address router, address vault, string calldata memo, address token, uint amount, uint amountOutMin, uint deadline ) public nonReentrant { tokenTransferProxy.transferTokens(token, msg.sender, address(this), amount); token.safeApprove(address(swapRouter), 0); // USDT quirk token.safeApprove(address(swapRouter), amount); address[] memory path = new address[](2); path[0] = token; path[1] = weth; swapRouter.swapExactTokensForAVAX( amount, amountOutMin, path, address(this), deadline ); uint256 out = address(this).balance; { uint256 outMinusFee = skimFee(out); IThorchainRouter(router).depositWithExpiry{value: outMinusFee}( payable(vault), address(0), outMinusFee, memo, deadline ); } emit SwapIn(msg.sender, token, amount, out+getFee(out), getFee(out), vault, memo); } function swapOut(address token, address to, uint256 amountOutMin) public payable nonReentrant { uint256 amount = skimFee(msg.value); address[] memory path = new address[](2); path[0] = weth; path[1] = token; swapRouter.swapExactAVAXForTokens{value: amount}( _parseAmountOutMin(amountOutMin), path, to, type(uint).max // deadline ); emit SwapOut(to, token, msg.value, msg.value-amount); } }
// 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; interface IUniswapRouterV2AVAX { function swapExactTokensForAVAX( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactAVAXForTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; }
{ "remappings": [ "hardhat/=node_modules/hardhat/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "bytecodeHash": "ipfs" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "london", "libraries": {} }
[{"inputs":[{"internalType":"address","name":"_ttp","type":"address"},{"internalType":"address","name":"_weth","type":"address"},{"internalType":"address","name":"_swapRouter","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"},{"indexed":false,"internalType":"address","name":"vault","type":"address"},{"indexed":false,"internalType":"string","name":"memo","type":"string"}],"name":"SwapIn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"SwapOut","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":"router","type":"address"},{"internalType":"address","name":"vault","type":"address"},{"internalType":"string","name":"memo","type":"string"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapIn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"}],"name":"swapOut","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IUniswapRouterV2AVAX","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenTransferProxy","outputs":[{"internalType":"contract TSAggregatorTokenTransferProxy","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"weth","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526001805534801561001457600080fd5b50604051611053380380611053833981016040819052610033916100f9565b8261003f336001610080565b600480546001600160a01b03199081166001600160a01b0393841617909155600580548216948316949094179093556006805490931691161790555061013c565b6001600160a01b03821660008181526020818152604091829020805460ff191685151590811790915591519182527ff74826f11048fa8ecf33e91132bf280f6582ed97548a84e426b56e98526b9316910160405180910390a25050565b80516001600160a01b03811681146100f457600080fd5b919050565b60008060006060848603121561010e57600080fd5b610117846100dd565b9250610125602085016100dd565b9150610133604085016100dd565b90509250925092565b610f088061014b6000396000f3fe6080604052600436106100955760003560e01c8063516c731c11610059578063516c731c14610173578063b4f2e8b814610193578063c31c9c07146101b3578063ddca3f43146101d3578063e4d0c7f0146101f757600080fd5b8063022914a7146100a15780630eefdbad146100e65780633fc8cef31461011e578063469048401461013e57806348c314f41461015e57600080fd5b3661009c57005b600080fd5b3480156100ad57600080fd5b506100d16100bc366004610a2c565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156100f257600080fd5b50600454610106906001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b34801561012a57600080fd5b50600554610106906001600160a01b031681565b34801561014a57600080fd5b50600354610106906001600160a01b031681565b61017161016c366004610a4e565b610217565b005b34801561017f57600080fd5b5061017161018e366004610a8a565b6103cd565b34801561019f57600080fd5b506101716101ae366004610ac6565b610429565b3480156101bf57600080fd5b50600654610106906001600160a01b031681565b3480156101df57600080fd5b506101e960025481565b6040519081526020016100dd565b34801561020357600080fd5b50610171610212366004610af2565b61052a565b60015460011461025b5760405162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b60448201526064015b60405180910390fd5b6002600155600061026b346107e0565b6040805160028082526060820183529293506000929091602083019080368337505060055482519293506001600160a01b0316918391506000906102b1576102b1610bb1565b60200260200101906001600160a01b031690816001600160a01b03168152505084816001815181106102e5576102e5610bb1565b6001600160a01b0392831660209182029290920101526006541663a2a1623d8361030e8661081e565b84886000196040518663ffffffff1660e01b81526004016103329493929190610c0b565b6000604051808303818588803b15801561034b57600080fd5b505af115801561035f573d6000803e3d6000fd5b50505050507f61fad1e4996f793deb2a6b2d07c7fe999e0ce4a95e1ca4662fd430f1c524401984863485346103949190610c56565b604080516001600160a01b03958616815294909316602085015291830152606082015260800160405180910390a1505060018055505050565b3360009081526020819052604090205460ff1661041b5760405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5e995960a21b6044820152606401610252565b6104258282610851565b5050565b3360009081526020819052604090205460ff166104775760405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5e995960a21b6044820152606401610252565b6103e88211156104c95760405162461bcd60e51b815260206004820152601c60248201527f6665652063616e206e6f74206265206d6f7265207468616e20313025000000006044820152606401610252565b6002829055600380546001600160a01b0319166001600160a01b0383169081179091556040805184815260208101929092527fc8242dc5446855370b781abbfc5d882af1d1a3cc29143216aba3558feb0ce925910160405180910390a15050565b6001546001146105695760405162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b6044820152606401610252565b6002600155600480546040516368155ec160e01b81526001600160a01b0387811693820193909352336024820152306044820152606481018690529116906368155ec190608401600060405180830381600087803b1580156105ca57600080fd5b505af11580156105de573d6000803e3d6000fd5b50506006546105fd92506001600160a01b0387811692501660006108ae565b600654610617906001600160a01b038681169116856108ae565b604080516002808252606082018352600092602083019080368337019050509050848160008151811061064c5761064c610bb1565b6001600160a01b03928316602091820292909201015260055482519116908290600190811061067d5761067d610bb1565b6001600160a01b03928316602091820292909201015260065460405163676528d160e01b815291169063676528d1906106c29087908790869030908990600401610c6d565b600060405180830381600087803b1580156106dc57600080fd5b505af11580156106f0573d6000803e3d6000fd5b5050505060004790506000610704826107e0565b90508a6001600160a01b03166344bc937b828c6000858e8e8b6040518863ffffffff1660e01b815260040161073e96959493929190610cd2565b6000604051808303818588803b15801561075757600080fd5b505af115801561076b573d6000803e3d6000fd5b5050505050507fd0905d621f104066424412dcaf4dd7189ca00660fc08a026e5927026b8afa82c33878761079e8561092c565b6107a89086610d19565b6107b18661092c565b8e8e8e6040516107c8989796959493929190610d31565b60405180910390a15050600180555050505050505050565b6000806107ec8361092c565b905080156108175760035461080a906001600160a01b031682610973565b6108148184610c56565b92505b5090919050565b600061082b606483610d9b565b61083690600a610e93565b610841606484610e9f565b61084b9190610eb3565b92915050565b6001600160a01b03821660008181526020818152604091829020805460ff191685151590811790915591519182527ff74826f11048fa8ecf33e91132bf280f6582ed97548a84e426b56e98526b9316910160405180910390a25050565b600060405163095ea7b360e01b81526001600160a01b03841660048201528260248201526000806044836000895af19150506108e9816109c9565b6109265760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b6044820152606401610252565b50505050565b600060025460001415801561094b57506003546001600160a01b031615155b1561096b57612710600254836109619190610eb3565b61084b9190610e9f565b506000919050565b600080600080600085875af19050806109c45760405162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b6044820152606401610252565b505050565b60003d826109db57806000803e806000fd5b80602081146109f3578015610a045760009250610a09565b816000803e60005115159250610a09565b600192505b5050919050565b80356001600160a01b0381168114610a2757600080fd5b919050565b600060208284031215610a3e57600080fd5b610a4782610a10565b9392505050565b600080600060608486031215610a6357600080fd5b610a6c84610a10565b9250610a7a60208501610a10565b9150604084013590509250925092565b60008060408385031215610a9d57600080fd5b610aa683610a10565b915060208301358015158114610abb57600080fd5b809150509250929050565b60008060408385031215610ad957600080fd5b82359150610ae960208401610a10565b90509250929050565b60008060008060008060008060e0898b031215610b0e57600080fd5b610b1789610a10565b9750610b2560208a01610a10565b9650604089013567ffffffffffffffff80821115610b4257600080fd5b818b0191508b601f830112610b5657600080fd5b813581811115610b6557600080fd5b8c6020828501011115610b7757600080fd5b602083019850809750505050610b8f60608a01610a10565b979a96995094979396956080850135955060a08501359460c001359350915050565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015610c005781516001600160a01b031687529582019590820190600101610bdb565b509495945050505050565b848152608060208201526000610c246080830186610bc7565b6001600160a01b03949094166040830152506060015292915050565b634e487b7160e01b600052601160045260246000fd5b600082821015610c6857610c68610c40565b500390565b85815284602082015260a060408201526000610c8c60a0830186610bc7565b6001600160a01b0394909416606083015250608001529392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038781168252861660208201526040810185905260a060608201819052600090610d069083018587610ca9565b9050826080830152979650505050505050565b60008219821115610d2c57610d2c610c40565b500190565b600060018060a01b03808b168352808a16602084015288604084015287606084015286608084015280861660a08401525060e060c0830152610d7760e083018486610ca9565b9a9950505050505050505050565b634e487b7160e01b600052601260045260246000fd5b600082610daa57610daa610d85565b500690565b600181815b80851115610dea578160001904821115610dd057610dd0610c40565b80851615610ddd57918102915b93841c9390800290610db4565b509250929050565b600082610e015750600161084b565b81610e0e5750600061084b565b8160018114610e245760028114610e2e57610e4a565b600191505061084b565b60ff841115610e3f57610e3f610c40565b50506001821b61084b565b5060208310610133831016604e8410600b8410161715610e6d575081810a61084b565b610e778383610daf565b8060001904821115610e8b57610e8b610c40565b029392505050565b6000610a478383610df2565b600082610eae57610eae610d85565b500490565b6000816000190483118215151615610ecd57610ecd610c40565b50029056fea2646970667358221220eafea89ad2ae5e4d021f2bfbc4493f1ac8a8d356ded297382f5894bd3c9b6af564736f6c634300080a003300000000000000000000000069ba883af416ff5501d54d5e27a1f497fbd97156000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c700000000000000000000000060ae616a2155ee3d9a68541ba4544862310933d4
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000069ba883af416ff5501d54d5e27a1f497fbd97156000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c700000000000000000000000060ae616a2155ee3d9a68541ba4544862310933d4
-----Decoded View---------------
Arg [0] : _ttp (address): 0x69ba883af416ff5501d54d5e27a1f497fbd97156
Arg [1] : _weth (address): 0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7
Arg [2] : _swapRouter (address): 0x60ae616a2155ee3d9a68541ba4544862310933d4
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 00000000000000000000000069ba883af416ff5501d54d5e27a1f497fbd97156
Arg [1] : 000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7
Arg [2] : 00000000000000000000000060ae616a2155ee3d9a68541ba4544862310933d4
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.