ETH Price: $2,378.10 (+7.10%)

Contract

0xD5060CA04EfC02c9EDC619F9047DF1e1CB382D01
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Distribute Treas...218932722025-02-21 7:38:239 days ago1740123503IN
0xD5060CA0...1CB382D01
0 ETH0.000047740.68067124
Distribute Treas...218448312025-02-14 12:54:3516 days ago1739537675IN
0xD5060CA0...1CB382D01
0 ETH0.000069150.79270424
Set Treasury Wal...218448082025-02-14 12:49:5916 days ago1739537399IN
0xD5060CA0...1CB382D01
0 ETH0.000028510.97016612
Set Shares218447832025-02-14 12:44:5916 days ago1739537099IN
0xD5060CA0...1CB382D01
0 ETH0.000033331.13155738
Distribute Commu...217452732025-01-31 15:01:5930 days ago1738335719IN
0xD5060CA0...1CB382D01
0 ETH0.0011987312.65969641
Distribute Treas...217452702025-01-31 15:01:2330 days ago1738335683IN
0xD5060CA0...1CB382D01
0 ETH0.0012143912.80413689
Distribute Commu...217381172025-01-30 15:01:5931 days ago1738249319IN
0xD5060CA0...1CB382D01
0 ETH0.000835988.82870519
Distribute Treas...217381132025-01-30 15:01:1131 days ago1738249271IN
0xD5060CA0...1CB382D01
0 ETH0.00074937.90041167
Distribute Commu...217309492025-01-29 15:01:5932 days ago1738162919IN
0xD5060CA0...1CB382D01
0 ETH0.000536575.66666114
Distribute Treas...217309452025-01-29 15:01:1132 days ago1738162871IN
0xD5060CA0...1CB382D01
0 ETH0.000558645.89014563
Distribute Commu...217237872025-01-28 15:02:1133 days ago1738076531IN
0xD5060CA0...1CB382D01
0 ETH0.000748937.90942087
Distribute Treas...217237832025-01-28 15:01:2333 days ago1738076483IN
0xD5060CA0...1CB382D01
0 ETH0.000776018.18204475
Distribute Commu...217166282025-01-27 15:02:3534 days ago1737990155IN
0xD5060CA0...1CB382D01
0 ETH0.0023631224.95665041
Distribute Treas...217166242025-01-27 15:01:4734 days ago1737990107IN
0xD5060CA0...1CB382D01
0 ETH0.0023711925.00104342
Distribute Commu...217094532025-01-26 15:01:4735 days ago1737903707IN
0xD5060CA0...1CB382D01
0 ETH0.000537235.67368066
Distribute Treas...217094502025-01-26 15:01:1135 days ago1737903671IN
0xD5060CA0...1CB382D01
0 ETH0.000544235.73820048
Distribute Commu...217036382025-01-25 19:33:1136 days ago1737833591IN
0xD5060CA0...1CB382D01
0 ETH0.000548225.78979415
Distribute Treas...217036352025-01-25 19:32:3536 days ago1737833555IN
0xD5060CA0...1CB382D01
0 ETH0.000566825.976408
Distribute Commu...216879552025-01-23 15:01:4738 days ago1737644507IN
0xD5060CA0...1CB382D01
0 ETH0.0029021530.64936656
Distribute Treas...216879522025-01-23 15:01:1138 days ago1737644471IN
0xD5060CA0...1CB382D01
0 ETH0.0028394829.93848638
Distribute Commu...216807942025-01-22 15:01:4739 days ago1737558107IN
0xD5060CA0...1CB382D01
0 ETH0.0018243119.26643983
Distribute Treas...216807912025-01-22 15:01:1139 days ago1737558071IN
0xD5060CA0...1CB382D01
0 ETH0.0015189116.01489453
Distribute Commu...216736282025-01-21 15:02:1140 days ago1737471731IN
0xD5060CA0...1CB382D01
0 ETH0.0015886716.77779927
Distribute Treas...216736252025-01-21 15:01:3540 days ago1737471695IN
0xD5060CA0...1CB382D01
0 ETH0.0016354917.24401146
Distribute Commu...216710432025-01-21 6:22:1141 days ago1737440531IN
0xD5060CA0...1CB382D01
0 ETH0.000727367.68163801
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TSFeeDistributor_V2

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
File 1 of 7 : TSFeeDistributor_V2.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

// -------------------
// Compatibility
// TC Router V4
// -------------------

import {Owners} from "../../lib/Owners.sol";
import {Executors} from "../../lib/Executors.sol";
import {SafeTransferLib} from "../../lib/SafeTransferLib.sol";
import {IERC20} from "../../interfaces/IERC20.sol";
import {IThorchainRouterV4} from "../../interfaces/IThorchainRouterV4.sol";
import {IOracleV1} from "../../interfaces/IOracleV1.sol";

contract TSFeeDistributor_V2 is Owners, Executors {
    using SafeTransferLib for address;

    IOracleV1 public oracle;
    IThorchainRouterV4 public tcRouter;

    IERC20 public feeAsset;
    uint256 public minFeeAmount;
    uint256 private _communityDistribution;

    uint32 public treasuryBps;
    uint32 public communityBps;
    uint32 public treasuryIndex;
    uint32 public communityIndex;

    bool public publicMode;
    bool public transferTreasury;
    address public treasuryWallet;

    mapping(uint32 => string) public memoTreasury;
    mapping(uint32 => string) public memoCommunity;

    event TreasuryDistribution(uint256 amount, string memo);
    event CommunityDistribution(uint256 amount, string memo);

    constructor(
        address _oracleAddress,
        address _tcRouterAddress,
        address _feeAsset,
        address _treasuryWallet
    ) {
        treasuryBps = 2500;
        communityBps = 7500;
        _communityDistribution = 0;

        oracle = IOracleV1(_oracleAddress);
        tcRouter = IThorchainRouterV4(_tcRouterAddress);
        feeAsset = IERC20(_feeAsset);
        minFeeAmount = 0;

        _feeAsset.safeApprove(_tcRouterAddress, 0);
        _feeAsset.safeApprove(_tcRouterAddress, type(uint256).max);

        publicMode = false;
        transferTreasury = true;
        treasuryWallet = _treasuryWallet;

        _setOwner(msg.sender, true);
    }

    function setMinFeeAmount(uint256 amount) external isOwner {
        minFeeAmount = amount;
    }

    function setTCRouter(address _tcRouterAddress) public isOwner {
        tcRouter = IThorchainRouterV4(_tcRouterAddress);
        feeAsset.approve(_tcRouterAddress, 0);
        feeAsset.approve(_tcRouterAddress, type(uint256).max);
    }

    function setShares(uint32 treasury, uint32 community) external isOwner {
        require(treasury + community == 10000, "Shares must add up to 10000");
        treasuryBps = treasury;
        communityBps = community;
    }

    function getMemoTreasury(uint32 id) external view returns (string memory) {
        return memoTreasury[id];
    }

    function setMemoTreasury(uint32 id, string memory memo) external isOwner {
        memoTreasury[id] = memo;
    }

    function setTreasuryIndex(uint32 index) external isOwner {
        treasuryIndex = index;
    }

    function setTreasuryTransfer(bool _transferTreasury) external isOwner {
        transferTreasury = _transferTreasury;
    }

    function getMemoCommunity(uint32 id) external view returns (string memory) {
        return memoCommunity[id];
    }

    function setMemoCommunity(uint32 id, string memory memo) external isOwner {
        memoCommunity[id] = memo;
    }

    function setCommunityIndex(uint32 index) external isOwner {
        communityIndex = index;
    }

    function setTreasuryWallet(address _treasuryWallet) external isOwner {
        treasuryWallet = _treasuryWallet;
    }

    // Protected version in case the oracle is down
    function distributeTreasuryExecutor(
        address inboundAddress
    ) external isExecutor {
        require(!publicMode, "Must call distributeTreasury instead.");
        _distributeTreasury(inboundAddress);
    }

    function distributeTreasury() external {
        require(publicMode, "Must call distributeTreasuryExecutor instead.");
        (, address inboundAddress) = oracle.getInboundAddress("ETH");

        _distributeTreasury(inboundAddress);
    }

    function _distributeTreasury(address inboundAddress) internal {
        require(
            _communityDistribution == 0,
            "It's the community's turn to receive distribution"
        );
        uint256 balance = feeAsset.balanceOf(address(this));
        require(balance >= minFeeAmount, "Balance is below minimum fee amount");

        uint256 treasuryAmount = (balance * treasuryBps) / 10000;
        _communityDistribution = balance - treasuryAmount;

        if (transferTreasury) {
            feeAsset.transfer(treasuryWallet, treasuryAmount);
        } else {
            tcRouter.depositWithExpiry{value: 0}(
                payable(inboundAddress),
                address(feeAsset),
                treasuryAmount,
                memoTreasury[treasuryIndex],
                type(uint256).max
            );
        }

        emit TreasuryDistribution(treasuryAmount, memoTreasury[treasuryIndex]);
    }

    function distributeCommunityExecutor(
        address inboundAddress
    ) external isExecutor {
        require(!publicMode, "Must call distributeCommunity instead.");
        _distributeCommunity(inboundAddress);
    }

    function distributeCommunity() external {
        require(publicMode, "Must call distributeCommunityExecutor instead.");
        (, address inboundAddress) = oracle.getInboundAddress("ETH");

        _distributeCommunity(inboundAddress);
    }

    function _distributeCommunity(address inboundAddress) internal {
        require(
            _communityDistribution > 0,
            "It's the treasury's turn to receive distribution"
        );
        require(
            _communityDistribution <= feeAsset.balanceOf(address(this)),
            "Community distribution exceeds balance"
        );

        tcRouter.depositWithExpiry{value: 0}(
            payable(inboundAddress),
            address(feeAsset),
            _communityDistribution,
            memoCommunity[communityIndex],
            type(uint256).max
        );

        emit CommunityDistribution(
            _communityDistribution,
            memoCommunity[communityIndex]
        );

        _communityDistribution = 0;
    }
}

File 2 of 7 : IERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

interface IERC20 {
    function decimals() external view returns (uint8);

    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);
}

File 3 of 7 : IOracleV1.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

interface IOracleV1 {
    function getRouterAddress() external view returns (address);

    function getPoolsAPY(string memory chain) external view returns (uint64);

    function getSaversAPY(string memory chain) external view returns (uint64);

    // Updated to match the new return type of getInboundAddress in the TSOracle_V1 contract
    function getInboundAddress(
        string memory chain
    ) external view returns (bytes memory, address);
}

File 4 of 7 : IThorchainRouterV4.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

interface IThorchainRouterV4 {
    function depositWithExpiry(
        address payable vault,
        address asset,
        uint amount,
        string memory memo,
        uint expiration
    ) external payable;
}

File 5 of 7 : Executors.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

import {Owners} from "./Owners.sol";

abstract contract Executors is Owners {
    event ExecutorSet(address indexed executor, bool active);

    mapping(address => bool) public executors;

    modifier isExecutor() {
        require(executors[msg.sender], "Unauthorized");
        _;
    }

    function _setExecutor(address executor, bool active) internal virtual {
        executors[executor] = active;
        emit ExecutorSet(executor, active);
    }

    function setExecutor(address owner, bool active) external virtual isOwner {
        _setExecutor(owner, active);
    }
}

File 6 of 7 : Owners.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

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);
    }
}

File 7 of 7 : SafeTransferLib.sol
// 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
            }
        }
    }
}

Settings
{
  "viaIR": true,
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "evmVersion": "paris",
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_oracleAddress","type":"address"},{"internalType":"address","name":"_tcRouterAddress","type":"address"},{"internalType":"address","name":"_feeAsset","type":"address"},{"internalType":"address","name":"_treasuryWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"string","name":"memo","type":"string"}],"name":"CommunityDistribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"executor","type":"address"},{"indexed":false,"internalType":"bool","name":"active","type":"bool"}],"name":"ExecutorSet","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":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"string","name":"memo","type":"string"}],"name":"TreasuryDistribution","type":"event"},{"inputs":[],"name":"communityBps","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"communityIndex","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributeCommunity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"inboundAddress","type":"address"}],"name":"distributeCommunityExecutor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributeTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"inboundAddress","type":"address"}],"name":"distributeTreasuryExecutor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"executors","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeAsset","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"id","type":"uint32"}],"name":"getMemoCommunity","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"id","type":"uint32"}],"name":"getMemoTreasury","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"","type":"uint32"}],"name":"memoCommunity","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"","type":"uint32"}],"name":"memoTreasury","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minFeeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oracle","outputs":[{"internalType":"contract IOracleV1","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":[],"name":"publicMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"index","type":"uint32"}],"name":"setCommunityIndex","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"bool","name":"active","type":"bool"}],"name":"setExecutor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"id","type":"uint32"},{"internalType":"string","name":"memo","type":"string"}],"name":"setMemoCommunity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"id","type":"uint32"},{"internalType":"string","name":"memo","type":"string"}],"name":"setMemoTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMinFeeAmount","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":"uint32","name":"treasury","type":"uint32"},{"internalType":"uint32","name":"community","type":"uint32"}],"name":"setShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tcRouterAddress","type":"address"}],"name":"setTCRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"index","type":"uint32"}],"name":"setTreasuryIndex","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_transferTreasury","type":"bool"}],"name":"setTreasuryTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasuryWallet","type":"address"}],"name":"setTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tcRouter","outputs":[{"internalType":"contract IThorchainRouterV4","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transferTreasury","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryBps","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryIndex","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

34620000815762001a34388190036080601f8201601f19168101906001600160401b03821190821017620000865760809282916040528339126200008157620000716200004b6200009c565b62000055620000b3565b6200005f620000ca565b906200006a620000e1565b92620000f8565b60405161173e9081620002f68239f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b608051906001600160a01b03821682036200008157565b60a051906001600160a01b03821682036200008157565b60c051906001600160a01b03821682036200008157565b60e051906001600160a01b03821682036200008157565b60449093929193651d4c000009c460018060401b031960075416176007556000809281928260065560018060a01b03908160018060a01b0319911681600254161760025581891691828260035416176003558716906004541617600455826005556040519063095ea7b360e01b8252600482015282602482015282865af13d90156200023557806020146200022657156200021d575b15620001e757620001da92620001a4916200023c565b6007805461ffff60801b1916600160881b179055600880546001600160a01b0319166001600160a01b0392909216919091179055565b620001e533620002a7565b565b60405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b6044820152606490fd5b5060016200018e565b50602081803e5115156200018e565b908181803efd5b60405163095ea7b360e01b81526001600160a01b03909216600483015260001960248301526000918291829160449183905af13d90156200023557806020146200029857156200028f575b15620001e757565b50600162000287565b50602081803e51151562000287565b60018060a01b03168060005260006020526040600020600160ff198254161790557ff74826f11048fa8ecf33e91132bf280f6582ed97548a84e426b56e98526b9316602060405160018152a256fe608060408181526004918236101561001657600080fd5b600092833560e01c918263022914a714610e71575081630852817d14610e2057816308a199da14610d035781630d13b95314610be9578163162d493c14610ba35781631e1bff3f14610b205781631ff48c4914610af457816327a8d0d914610a595781632e394a94146109665781634109ce6c146108135781634626402b146107ea5781634dc10ea1146107c5578163516c731c1461073d57816353ba352c14610715578163644c5695146106ee5781636e91a94814610652578163730a1e38146105495781637dc0d1d01461052057816390170654146104f4578163932f3f66146104ce5781639ac2a011146104905781639e0320ca1461043b578163a8602fea146103e7578163ac21d47a146103be578163b37b50e3146102e1578163c37fb119146102b9578163d61175291461028457508063d6942c8b14610245578063dacd0737146101f1578063e6d7329d146101cb578063f5d36475146101ad5763fa5802941461018557600080fd5b346101a957816003193601126101a9576007549051602091821c63ffffffff168152f35b5080fd5b50346101a957816003193601126101a9576020906005549051908152f35b50346101a957816003193601126101a95760209060ff60075460801c1690519015158152f35b50346101a95760203660031901126101a95780610237610230926102419463ffffffff61021c610ec6565b168152600960205220825193848092611054565b0383610f03565b5191829182610fee565b0390f35b50346101a95760203660031901126101a95780610237610230926102419463ffffffff610270610ec6565b168152600a60205220825193848092611054565b919050346102b55760203660031901126102b55760ff6102ae9133855284602052842054166110ea565b3560055580f35b8280fd5b5050346101a957816003193601126101a95760209063ffffffff60075460601c169051908152f35b9050346102b557816003193601126102b5576102fb610ec6565b906024359263ffffffff808516938486036103ba5781903388528760205261032860ff858a2054166110ea565b169384018181116103a7571661270f190161036457505067ffffffff000000006007549260201b169167ffffffffffffffff1916171760075580f35b906020606492519162461bcd60e51b8352820152601b60248201527f536861726573206d7573742061646420757020746f20313030303000000000006044820152fd5b634e487b7160e01b875260118452602487fd5b8680fd5b5050346101a957816003193601126101a95760035490516001600160a01b039091168152602090f35b5050346101a95760203660031901126101a95761041860ff610407610eab565b9233855284602052842054166110ea565b60018060a01b03166bffffffffffffffffffffffff60a01b600854161760085580f35b9050346102b55760203660031901126102b55735908115158092036102b55760ff6104709133855284602052842054166110ea565b6007805460ff60881b191660889290921b60ff60881b1691909117905580f35b5050346101a95760203660031901126101a95760209160ff9082906001600160a01b036104bb610eab565b1681526001855220541690519015158152f35b5050346101a957816003193601126101a9576007548151911c63ffffffff168152602090f35b5050346101a95760203660031901126101a95780610237610230926102419463ffffffff61021c610ec6565b5050346101a957816003193601126101a95760025490516001600160a01b039091168152602090f35b9050346102b557826003193601126102b55760ff60075460801c16156105fa57826105aa9160018060a01b03600254168451808095819463a0e3440f60e01b8352820160609060208152600360208201526208aa8960eb1b60408201520190565b03915afa9081156105ee576105c7925083916105ca575b506111f7565b80f35b6105e691503d8085833e6105de8183610f03565b81019061113d565b9050386105c1565b505051903d90823e3d90fd5b6020608492519162461bcd60e51b8352820152602d60248201527f4d7573742063616c6c206469737472696275746554726561737572794578656360448201526c3aba37b91034b739ba32b0b21760991b6064820152fd5b9050346102b55760203660031901126102b55761066d610eab565b91338452600160205261068560ff82862054166110ea565b60ff60075460801c1661069c57836105c7846114df565b906020608492519162461bcd60e51b8352820152602660248201527f4d7573742063616c6c2064697374726962757465436f6d6d756e69747920696e60448201526539ba32b0b21760d11b6064820152fd5b5050346101a957816003193601126101a95760209060ff60075460881c1690519015158152f35b9050346102b557826003193601126102b5575490516001600160a01b03909116815260209150f35b5050346101a957806003193601126101a9577ff74826f11048fa8ecf33e91132bf280f6582ed97548a84e426b56e98526b9316602061077a610eab565b610782610fbc565b9033865285835261079860ff86882054166110ea565b6001600160a01b0316808652858352848620805460ff191660ff84151516179055935b519015158152a280f35b5050346101a957816003193601126101a95760209063ffffffff600754169051908152f35b5050346101a957816003193601126101a95760085490516001600160a01b039091168152602090f35b8383346101a95761082336610f41565b93909133845263ffffffff60209385855261084360ff84882054166110ea565b1684526009835283209184519167ffffffffffffffff8311610953575061086a835461101a565b601f8111610910575b5080601f83116001146108ae57508394829394926108a3575b50508160011b916000199060031b1c191617905580f35b01519050848061088c565b90601f198316958486528286209286905b8882106108f8575050836001959697106108df575b505050811b01905580f35b015160001960f88460031b161c191690558480806108d4565b806001859682949686015181550195019301906108bf565b838552818520601f840160051c810191838510610949575b601f0160051c01905b81811061093e5750610873565b858155600101610931565b9091508190610928565b634e487b7160e01b855260419052602484fd5b9050346102b557826003193601126102b55760ff60075460801c1615610a0057826109c79160018060a01b03600254168451808095819463a0e3440f60e01b8352820160609060208152600360208201526208aa8960eb1b60408201520190565b03915afa9081156105ee576105c7925083916109e4575b506114df565b6109f891503d8085833e6105de8183610f03565b9050386109de565b6020608492519162461bcd60e51b8352820152602e60248201527f4d7573742063616c6c2064697374726962757465436f6d6d756e69747945786560448201526d31baba37b91034b739ba32b0b21760911b6064820152fd5b9050346102b55760203660031901126102b557610a74610eab565b913384526001602052610a8c60ff82862054166110ea565b60ff60075460801c16610aa357836105c7846111f7565b906020608492519162461bcd60e51b8352820152602560248201527f4d7573742063616c6c2064697374726962757465547265617375727920696e736044820152643a32b0b21760d91b6064820152fd5b5050346101a95760203660031901126101a95780610237610230926102419463ffffffff610270610ec6565b5050346101a957806003193601126101a9577f278b09622564dd3991fe7744514513d64ea2c8ed2b2b9ec1150ad964fde80a996020610b5d610eab565b610b65610fbc565b90338652858352610b7b60ff86882054166110ea565b6001600160a01b031680865260018352848620805460ff191660ff84151516179055936107bb565b5050346101a95760203660031901126101a957610bc360ff610407610ec6565b6007805463ffffffff60601b191660609290921b63ffffffff60601b1691909117905580f35b8383346101a957610bf936610f41565b93909133845263ffffffff602093858552610c1960ff84882054166110ea565b168452600a835283209184519167ffffffffffffffff83116109535750610c40835461101a565b601f8111610cc0575b5080601f8311600114610c7857508394829394926108a35750508160011b916000199060031b1c191617905580f35b90601f198316958486528286209286905b888210610ca8575050836001959697106108df57505050811b01905580f35b80600185968294968601518155019501930190610c89565b838552818520601f840160051c810191838510610cf9575b601f0160051c01905b818110610cee5750610c49565b858155600101610ce1565b9091508190610cd8565b9050346102b55760209182600319360112610e1c57610d20610eab565b91338552848452610d3660ff83872054166110ea565b60018060a01b0380931692836bffffffffffffffffffffffff60a01b6003541617600355858183541691845187816044818663095ea7b360e01b988983528c8b8401528160248401525af18015610e1257916044939189969593610df5575b5084541686519788958694855284015260001960248401525af1908115610dec5750610dbf578280f35b81610dde92903d10610de5575b610dd68183610f03565b810190611125565b5038808280f35b503d610dcc565b513d85823e3d90fd5b610e0b90873d8911610de557610dd68183610f03565b5038610d95565b86513d85823e3d90fd5b8380fd5b5050346101a95760203660031901126101a95763ffffffff60401b610e43610ec6565b33845283602052610e5960ff84862054166110ea565b600754921b169063ffffffff60401b19161760075580f35b849084346102b55760203660031901126102b55760209260ff91906001600160a01b03610e9c610eab565b16815280855220541615158152f35b600435906001600160a01b0382168203610ec157565b600080fd5b6004359063ffffffff82168203610ec157565b67ffffffffffffffff8111610eed57604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff821117610eed57604052565b67ffffffffffffffff8111610eed57601f01601f191660200190565b906040600319830112610ec15760043563ffffffff81168103610ec1579160243567ffffffffffffffff8111610ec15781602382011215610ec157806004013590610f8b82610f25565b92610f996040519485610f03565b82845260248383010111610ec15781600092602460209301838601378301015290565b602435908115158203610ec157565b60005b838110610fde5750506000910152565b8181015183820152602001610fce565b6040916020825261100e8151809281602086015260208686019101610fcb565b601f01601f1916010190565b90600182811c9216801561104a575b602083101461103457565b634e487b7160e01b600052602260045260246000fd5b91607f1691611029565b8054600093926110638261101a565b918282526020936001916001811690816000146110cb575060011461108a575b5050505050565b90939495506000929192528360002092846000945b8386106110b757505050500101903880808080611083565b80548587018301529401938590820161109f565b60ff19168685015250505090151560051b010191503880808080611083565b156110f157565b60405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5e995960a21b6044820152606490fd5b90816020910312610ec157518015158103610ec15790565b9190604083820312610ec157825167ffffffffffffffff8111610ec15783019080601f83011215610ec15781519161117483610f25565b916111826040519384610f03565b83835260208483010111610ec1576020926111a291848085019101610fcb565b9201516001600160a01b0381168103610ec15790565b6001600160a01b03918216815291166020820152604081019190915260a0606082018190529092916111ec91840190611054565b916080600019910152565b90600654916000926114805760048054604080516370a0823160e01b815230818501526020949093919290916001600160a01b039182168686602481845afa958615611476578996611443575b5060055486106113f45760075463ffffffff948582168089029089820414891517156113e1576127109004978881039081116113e15760065560ff8260881c1660001461133e5750505080604483889354169360085416918a8751958694859363a9059cbb60e01b85528401528960248401525af180156113345796839261131294927f12fb68790bf96e8e0866b1d92968d5f195cefca1c631c800a1a5e1d7b80772419899611317575b505b600754831c1681526009865220908080519586958652850152830190611054565b0390a1565b61132d90883d8a11610de557610dd68183610f03565b50386112ef565b83513d89823e3d90fd5b858560039c97989c969394965416938c1c168652600989528a8620833b156103ba57869493929161138786928b8f51998a98899788966344bc937b60e01b8852169086016111b8565b03925af180156113d7579287927f12fb68790bf96e8e0866b1d92968d5f195cefca1c631c800a1a5e1d7b8077241979892611312956113c8575b50906112f1565b6113d190610ed9565b386113c1565b87513d84823e3d90fd5b634e487b7160e01b8c526011855260248cfd5b845162461bcd60e51b8152808301889052602360248201527f42616c616e63652069732062656c6f77206d696e696d756d2066656520616d6f6044820152621d5b9d60ea1b6064820152608490fd5b9095508681813d831161146f575b61145b8183610f03565b8101031261146b57519438611244565b8880fd5b503d611451565b85513d8b823e3d90fd5b60405162461bcd60e51b815260206004820152603160248201527f497427732074686520636f6d6d756e6974792773207475726e20746f2072656360448201527032b4bb32903234b9ba3934b13aba34b7b760791b6064820152608490fd5b6006549060009082156116aa5760018060a01b03908160045416936040948551936370a0823160e01b85523060048601526020948581602481865afa9081156116a0578791611673575b5083116116205780600354169063ffffffff948560075460601c168852600a8752888820833b1561146b57889493929161157b86928c51988997889687956344bc937b60e01b875216600486016111b8565b03925af18015611616576115e1575b506115d97f2a0d85dcd8643493024ad5bb803e92df710f15f0b462daf2cdba9b7ef18a07c793946006549260075460601c168652600a8452808620908080519586958652850152830190611054565b0390a1600655565b7f2a0d85dcd8643493024ad5bb803e92df710f15f0b462daf2cdba9b7ef18a07c79361160f6115d992610ed9565b935061158a565b85513d86823e3d90fd5b865162461bcd60e51b815260048101869052602660248201527f436f6d6d756e69747920646973747269627574696f6e20657863656564732062604482015265616c616e636560d01b6064820152608490fd5b90508581813d8311611699575b61168a8183610f03565b810103126103ba575138611529565b503d611680565b88513d89823e3d90fd5b60405162461bcd60e51b815260206004820152603060248201527f49742773207468652074726561737572792773207475726e20746f207265636560448201526f34bb32903234b9ba3934b13aba34b7b760811b6064820152608490fdfea2646970667358221220643708981cc607a868cc365e22a7ef06ef62959116418ffe93dee5ff398173eb64736f6c63430008160033000000000000000000000000849ec611ee47bee012fe9274b78e10ddae167d05000000000000000000000000d37bbe5744d730a1d98d8dc97c42f0ca46ad7146000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000c85fef7a1b039a9e080aadf80ff6f1536dada088

Deployed Bytecode

0x608060408181526004918236101561001657600080fd5b600092833560e01c918263022914a714610e71575081630852817d14610e2057816308a199da14610d035781630d13b95314610be9578163162d493c14610ba35781631e1bff3f14610b205781631ff48c4914610af457816327a8d0d914610a595781632e394a94146109665781634109ce6c146108135781634626402b146107ea5781634dc10ea1146107c5578163516c731c1461073d57816353ba352c14610715578163644c5695146106ee5781636e91a94814610652578163730a1e38146105495781637dc0d1d01461052057816390170654146104f4578163932f3f66146104ce5781639ac2a011146104905781639e0320ca1461043b578163a8602fea146103e7578163ac21d47a146103be578163b37b50e3146102e1578163c37fb119146102b9578163d61175291461028457508063d6942c8b14610245578063dacd0737146101f1578063e6d7329d146101cb578063f5d36475146101ad5763fa5802941461018557600080fd5b346101a957816003193601126101a9576007549051602091821c63ffffffff168152f35b5080fd5b50346101a957816003193601126101a9576020906005549051908152f35b50346101a957816003193601126101a95760209060ff60075460801c1690519015158152f35b50346101a95760203660031901126101a95780610237610230926102419463ffffffff61021c610ec6565b168152600960205220825193848092611054565b0383610f03565b5191829182610fee565b0390f35b50346101a95760203660031901126101a95780610237610230926102419463ffffffff610270610ec6565b168152600a60205220825193848092611054565b919050346102b55760203660031901126102b55760ff6102ae9133855284602052842054166110ea565b3560055580f35b8280fd5b5050346101a957816003193601126101a95760209063ffffffff60075460601c169051908152f35b9050346102b557816003193601126102b5576102fb610ec6565b906024359263ffffffff808516938486036103ba5781903388528760205261032860ff858a2054166110ea565b169384018181116103a7571661270f190161036457505067ffffffff000000006007549260201b169167ffffffffffffffff1916171760075580f35b906020606492519162461bcd60e51b8352820152601b60248201527f536861726573206d7573742061646420757020746f20313030303000000000006044820152fd5b634e487b7160e01b875260118452602487fd5b8680fd5b5050346101a957816003193601126101a95760035490516001600160a01b039091168152602090f35b5050346101a95760203660031901126101a95761041860ff610407610eab565b9233855284602052842054166110ea565b60018060a01b03166bffffffffffffffffffffffff60a01b600854161760085580f35b9050346102b55760203660031901126102b55735908115158092036102b55760ff6104709133855284602052842054166110ea565b6007805460ff60881b191660889290921b60ff60881b1691909117905580f35b5050346101a95760203660031901126101a95760209160ff9082906001600160a01b036104bb610eab565b1681526001855220541690519015158152f35b5050346101a957816003193601126101a9576007548151911c63ffffffff168152602090f35b5050346101a95760203660031901126101a95780610237610230926102419463ffffffff61021c610ec6565b5050346101a957816003193601126101a95760025490516001600160a01b039091168152602090f35b9050346102b557826003193601126102b55760ff60075460801c16156105fa57826105aa9160018060a01b03600254168451808095819463a0e3440f60e01b8352820160609060208152600360208201526208aa8960eb1b60408201520190565b03915afa9081156105ee576105c7925083916105ca575b506111f7565b80f35b6105e691503d8085833e6105de8183610f03565b81019061113d565b9050386105c1565b505051903d90823e3d90fd5b6020608492519162461bcd60e51b8352820152602d60248201527f4d7573742063616c6c206469737472696275746554726561737572794578656360448201526c3aba37b91034b739ba32b0b21760991b6064820152fd5b9050346102b55760203660031901126102b55761066d610eab565b91338452600160205261068560ff82862054166110ea565b60ff60075460801c1661069c57836105c7846114df565b906020608492519162461bcd60e51b8352820152602660248201527f4d7573742063616c6c2064697374726962757465436f6d6d756e69747920696e60448201526539ba32b0b21760d11b6064820152fd5b5050346101a957816003193601126101a95760209060ff60075460881c1690519015158152f35b9050346102b557826003193601126102b5575490516001600160a01b03909116815260209150f35b5050346101a957806003193601126101a9577ff74826f11048fa8ecf33e91132bf280f6582ed97548a84e426b56e98526b9316602061077a610eab565b610782610fbc565b9033865285835261079860ff86882054166110ea565b6001600160a01b0316808652858352848620805460ff191660ff84151516179055935b519015158152a280f35b5050346101a957816003193601126101a95760209063ffffffff600754169051908152f35b5050346101a957816003193601126101a95760085490516001600160a01b039091168152602090f35b8383346101a95761082336610f41565b93909133845263ffffffff60209385855261084360ff84882054166110ea565b1684526009835283209184519167ffffffffffffffff8311610953575061086a835461101a565b601f8111610910575b5080601f83116001146108ae57508394829394926108a3575b50508160011b916000199060031b1c191617905580f35b01519050848061088c565b90601f198316958486528286209286905b8882106108f8575050836001959697106108df575b505050811b01905580f35b015160001960f88460031b161c191690558480806108d4565b806001859682949686015181550195019301906108bf565b838552818520601f840160051c810191838510610949575b601f0160051c01905b81811061093e5750610873565b858155600101610931565b9091508190610928565b634e487b7160e01b855260419052602484fd5b9050346102b557826003193601126102b55760ff60075460801c1615610a0057826109c79160018060a01b03600254168451808095819463a0e3440f60e01b8352820160609060208152600360208201526208aa8960eb1b60408201520190565b03915afa9081156105ee576105c7925083916109e4575b506114df565b6109f891503d8085833e6105de8183610f03565b9050386109de565b6020608492519162461bcd60e51b8352820152602e60248201527f4d7573742063616c6c2064697374726962757465436f6d6d756e69747945786560448201526d31baba37b91034b739ba32b0b21760911b6064820152fd5b9050346102b55760203660031901126102b557610a74610eab565b913384526001602052610a8c60ff82862054166110ea565b60ff60075460801c16610aa357836105c7846111f7565b906020608492519162461bcd60e51b8352820152602560248201527f4d7573742063616c6c2064697374726962757465547265617375727920696e736044820152643a32b0b21760d91b6064820152fd5b5050346101a95760203660031901126101a95780610237610230926102419463ffffffff610270610ec6565b5050346101a957806003193601126101a9577f278b09622564dd3991fe7744514513d64ea2c8ed2b2b9ec1150ad964fde80a996020610b5d610eab565b610b65610fbc565b90338652858352610b7b60ff86882054166110ea565b6001600160a01b031680865260018352848620805460ff191660ff84151516179055936107bb565b5050346101a95760203660031901126101a957610bc360ff610407610ec6565b6007805463ffffffff60601b191660609290921b63ffffffff60601b1691909117905580f35b8383346101a957610bf936610f41565b93909133845263ffffffff602093858552610c1960ff84882054166110ea565b168452600a835283209184519167ffffffffffffffff83116109535750610c40835461101a565b601f8111610cc0575b5080601f8311600114610c7857508394829394926108a35750508160011b916000199060031b1c191617905580f35b90601f198316958486528286209286905b888210610ca8575050836001959697106108df57505050811b01905580f35b80600185968294968601518155019501930190610c89565b838552818520601f840160051c810191838510610cf9575b601f0160051c01905b818110610cee5750610c49565b858155600101610ce1565b9091508190610cd8565b9050346102b55760209182600319360112610e1c57610d20610eab565b91338552848452610d3660ff83872054166110ea565b60018060a01b0380931692836bffffffffffffffffffffffff60a01b6003541617600355858183541691845187816044818663095ea7b360e01b988983528c8b8401528160248401525af18015610e1257916044939189969593610df5575b5084541686519788958694855284015260001960248401525af1908115610dec5750610dbf578280f35b81610dde92903d10610de5575b610dd68183610f03565b810190611125565b5038808280f35b503d610dcc565b513d85823e3d90fd5b610e0b90873d8911610de557610dd68183610f03565b5038610d95565b86513d85823e3d90fd5b8380fd5b5050346101a95760203660031901126101a95763ffffffff60401b610e43610ec6565b33845283602052610e5960ff84862054166110ea565b600754921b169063ffffffff60401b19161760075580f35b849084346102b55760203660031901126102b55760209260ff91906001600160a01b03610e9c610eab565b16815280855220541615158152f35b600435906001600160a01b0382168203610ec157565b600080fd5b6004359063ffffffff82168203610ec157565b67ffffffffffffffff8111610eed57604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff821117610eed57604052565b67ffffffffffffffff8111610eed57601f01601f191660200190565b906040600319830112610ec15760043563ffffffff81168103610ec1579160243567ffffffffffffffff8111610ec15781602382011215610ec157806004013590610f8b82610f25565b92610f996040519485610f03565b82845260248383010111610ec15781600092602460209301838601378301015290565b602435908115158203610ec157565b60005b838110610fde5750506000910152565b8181015183820152602001610fce565b6040916020825261100e8151809281602086015260208686019101610fcb565b601f01601f1916010190565b90600182811c9216801561104a575b602083101461103457565b634e487b7160e01b600052602260045260246000fd5b91607f1691611029565b8054600093926110638261101a565b918282526020936001916001811690816000146110cb575060011461108a575b5050505050565b90939495506000929192528360002092846000945b8386106110b757505050500101903880808080611083565b80548587018301529401938590820161109f565b60ff19168685015250505090151560051b010191503880808080611083565b156110f157565b60405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5e995960a21b6044820152606490fd5b90816020910312610ec157518015158103610ec15790565b9190604083820312610ec157825167ffffffffffffffff8111610ec15783019080601f83011215610ec15781519161117483610f25565b916111826040519384610f03565b83835260208483010111610ec1576020926111a291848085019101610fcb565b9201516001600160a01b0381168103610ec15790565b6001600160a01b03918216815291166020820152604081019190915260a0606082018190529092916111ec91840190611054565b916080600019910152565b90600654916000926114805760048054604080516370a0823160e01b815230818501526020949093919290916001600160a01b039182168686602481845afa958615611476578996611443575b5060055486106113f45760075463ffffffff948582168089029089820414891517156113e1576127109004978881039081116113e15760065560ff8260881c1660001461133e5750505080604483889354169360085416918a8751958694859363a9059cbb60e01b85528401528960248401525af180156113345796839261131294927f12fb68790bf96e8e0866b1d92968d5f195cefca1c631c800a1a5e1d7b80772419899611317575b505b600754831c1681526009865220908080519586958652850152830190611054565b0390a1565b61132d90883d8a11610de557610dd68183610f03565b50386112ef565b83513d89823e3d90fd5b858560039c97989c969394965416938c1c168652600989528a8620833b156103ba57869493929161138786928b8f51998a98899788966344bc937b60e01b8852169086016111b8565b03925af180156113d7579287927f12fb68790bf96e8e0866b1d92968d5f195cefca1c631c800a1a5e1d7b8077241979892611312956113c8575b50906112f1565b6113d190610ed9565b386113c1565b87513d84823e3d90fd5b634e487b7160e01b8c526011855260248cfd5b845162461bcd60e51b8152808301889052602360248201527f42616c616e63652069732062656c6f77206d696e696d756d2066656520616d6f6044820152621d5b9d60ea1b6064820152608490fd5b9095508681813d831161146f575b61145b8183610f03565b8101031261146b57519438611244565b8880fd5b503d611451565b85513d8b823e3d90fd5b60405162461bcd60e51b815260206004820152603160248201527f497427732074686520636f6d6d756e6974792773207475726e20746f2072656360448201527032b4bb32903234b9ba3934b13aba34b7b760791b6064820152608490fd5b6006549060009082156116aa5760018060a01b03908160045416936040948551936370a0823160e01b85523060048601526020948581602481865afa9081156116a0578791611673575b5083116116205780600354169063ffffffff948560075460601c168852600a8752888820833b1561146b57889493929161157b86928c51988997889687956344bc937b60e01b875216600486016111b8565b03925af18015611616576115e1575b506115d97f2a0d85dcd8643493024ad5bb803e92df710f15f0b462daf2cdba9b7ef18a07c793946006549260075460601c168652600a8452808620908080519586958652850152830190611054565b0390a1600655565b7f2a0d85dcd8643493024ad5bb803e92df710f15f0b462daf2cdba9b7ef18a07c79361160f6115d992610ed9565b935061158a565b85513d86823e3d90fd5b865162461bcd60e51b815260048101869052602660248201527f436f6d6d756e69747920646973747269627574696f6e20657863656564732062604482015265616c616e636560d01b6064820152608490fd5b90508581813d8311611699575b61168a8183610f03565b810103126103ba575138611529565b503d611680565b88513d89823e3d90fd5b60405162461bcd60e51b815260206004820152603060248201527f49742773207468652074726561737572792773207475726e20746f207265636560448201526f34bb32903234b9ba3934b13aba34b7b760811b6064820152608490fdfea2646970667358221220643708981cc607a868cc365e22a7ef06ef62959116418ffe93dee5ff398173eb64736f6c63430008160033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000849ec611ee47bee012fe9274b78e10ddae167d05000000000000000000000000d37bbe5744d730a1d98d8dc97c42f0ca46ad7146000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000c85fef7a1b039a9e080aadf80ff6f1536dada088

-----Decoded View---------------
Arg [0] : _oracleAddress (address): 0x849ec611ee47BeE012Fe9274B78E10DDaE167D05
Arg [1] : _tcRouterAddress (address): 0xD37BbE5744D730a1d98d8DC97c42F0Ca46aD7146
Arg [2] : _feeAsset (address): 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
Arg [3] : _treasuryWallet (address): 0xC85feF7A1b039A9e080aadf80FF6f1536DADa088

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000849ec611ee47bee012fe9274b78e10ddae167d05
Arg [1] : 000000000000000000000000d37bbe5744d730a1d98d8dc97c42f0ca46ad7146
Arg [2] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Arg [3] : 000000000000000000000000c85fef7a1b039a9e080aadf80ff6f1536dada088


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ 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.