ETH Price: $2,258.01 (-0.97%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Treasury

Compiler Version
v0.8.30+commit.73712a01

Optimization Enabled:
Yes with 1000000 runs

Other Settings:
prague EvmVersion
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.30;

import {ERC6909} from "../../lib/solmate/src/tokens/ERC6909.sol";
import {Implementation, OwnerOnly} from "../Implementation.sol";
import {IToken} from "../interfaces/IToken.sol";

interface IDepository {
    /// @dev Calculates amounts and initiates cross-chain unstake request from specified models.
    /// @param unstakeAmount Total amount to unstake.
    /// @param chainIds Set of chain Ids with staking proxies.
    /// @param stakingProxies Set staking proxies corresponding to each chain Id.
    /// @param bridgePayloads Bridge payloads corresponding to each chain Id.
    /// @param values Value amounts for each bridge interaction, if applicable.
    /// @param sender Sender account.
    /// @return amounts Corresponding OLAS amounts for each staking proxy.
    function unstake(
        uint256 unstakeAmount,
        uint256[] memory chainIds,
        address[] memory stakingProxies,
        bytes[] memory bridgePayloads,
        uint256[] memory values,
        address sender
    ) external payable returns (uint256[] memory amounts);
}

interface IST {
    /// @dev Redeems OLAS in exchange for stOLAS tokens.
    /// @param shares stOLAS amount.
    /// @param receiver Receiver account address.
    /// @param owner Token owner account address.
    /// @return assets OLAS amount.
    function redeem(uint256 shares, address receiver, address owner) external returns (uint256 assets);

    /// @dev Gets stOLAS staked balance.
    /// @return stOLAS staked balance.
    function stakedBalance() external returns (uint256);
}

/// @dev Only `depository` has a privilege, but the `sender` was provided.
/// @param sender Sender address.
/// @param depository Required depository address.
error DepositoryOnly(address sender, address depository);

/// @dev Zero value.
error ZeroValue();

/// @dev The contract is already initialized.
error AlreadyInitialized();

/// @dev Value overflow.
/// @param provided Overflow value.
/// @param max Maximum possible value.
error Overflow(uint256 provided, uint256 max);

/// @dev Caught reentrancy violation.
error ReentrancyGuard();

/// @title Treasury - Smart contract for treasury
contract Treasury is Implementation, ERC6909 {
    event WithdrawDelayUpdates(uint256 withdrawDelay);
    event WithdrawRequestInitiated(
        address indexed requester, uint256 indexed requestId, uint256 stAmount, uint256 olasAmount, uint256 withdrawTime
    );
    event WithdrawRequestExecuted(uint256 requestId, uint256 amount);
    event WithdrawAmountRequestedUpdated(uint256 withdrawAmountRequested);

    // Treasury version
    string public constant VERSION = "0.1.0";

    // OLAS token address
    address public immutable olas;
    // stOLAS token address
    address public immutable st;
    // Depository address
    address public immutable depository;

    // Total withdraw amount requested
    uint256 public withdrawAmountRequested;
    // Withdraw time delay
    uint256 public withdrawDelay;
    // Number of withdraw requests
    uint256 public numWithdrawRequests;

    // Reentrancy lock
    bool transient _locked;

    /// @dev Treasury constructor.
    /// @param _olas OLAS address.
    /// @param _st stOLAS address.
    /// @param _depository Depository address.
    constructor(address _olas, address _st, address _depository) {
        olas = _olas;
        st = _st;
        depository = _depository;
    }

    /// @dev Treasury initializer.
    function initialize(uint256 _withdrawDelay) external {
        // Check for already initialized
        if (owner != address(0)) {
            revert AlreadyInitialized();
        }

        withdrawDelay = _withdrawDelay;
        owner = msg.sender;
    }

    /// @dev Changes withdraw delay value.
    /// @param newWithdrawDelay New withdraw delay value in seconds.
    function changeWithdrawDelay(uint256 newWithdrawDelay) external {
        // Check for ownership
        if (msg.sender != owner) {
            revert OwnerOnly(msg.sender, owner);
        }

        withdrawDelay = newWithdrawDelay;
        emit WithdrawDelayUpdates(newWithdrawDelay);
    }

    /// @dev Requests withdraw of OLAS in exchange of provided stOLAS.
    /// @notice Vault reserves are used first. If there is a lack of OLAS reserves, the backup amount is requested
    ///         to be unstaked from other models.
    /// @param stAmount Provided stAmount to burn in favor of OLAS tokens.
    /// @param chainIds Set of chain Ids with staking proxies.
    /// @param stakingProxies Set of staking proxies corresponding to each chain Id.
    /// @param bridgePayloads Bridge payloads corresponding to each chain Id.
    /// @param values Value amounts for each bridge interaction, if applicable.
    /// @return requestId Withdraw request ERC-1155 token.
    /// @return olasAmount Calculated OLAS amount.
    function requestToWithdraw(
        uint256 stAmount,
        uint256[] memory chainIds,
        address[] memory stakingProxies,
        bytes[] memory bridgePayloads,
        uint256[] memory values
    ) external payable returns (uint256 requestId, uint256 olasAmount) {
        // Reentrancy guard
        if (_locked) {
            revert ReentrancyGuard();
        }
        _locked = true;

        // Check for zero value
        if (stAmount == 0) {
            revert ZeroValue();
        }

        // Get current staked balance
        uint256 stakedBalanceBefore = IST(st).stakedBalance();

        // Redeem OLAS and burn stOLAS tokens
        olasAmount = IST(st).redeem(stAmount, address(this), msg.sender);

        // Get updated staked balance
        uint256 stakedBalanceAfter = IST(st).stakedBalance();

        // Calculate withdraw time
        uint256 withdrawTime = block.timestamp + withdrawDelay;

        // Get withdraw request Id
        requestId = numWithdrawRequests;
        numWithdrawRequests = requestId + 1;

        // Push a pair of key defining variables into one key: withdrawTime | requestId
        // requestId occupies first 64 bits, withdrawTime occupies next bits as they both fit well in uint256
        requestId |= withdrawTime << 64;

        // Mint request tokens
        _mint(msg.sender, requestId, olasAmount);

        // Update total withdraw amount requested
        uint256 curWithdrawAmountRequested = withdrawAmountRequested;
        curWithdrawAmountRequested += olasAmount;
        withdrawAmountRequested = curWithdrawAmountRequested;

        // If withdraw amount is bigger than the current one, need to unstake
        if (stakedBalanceBefore > stakedBalanceAfter) {
            uint256 withdrawDiff = stakedBalanceBefore - stakedBalanceAfter;

            IDepository(depository).unstake(withdrawDiff, chainIds, stakingProxies, bridgePayloads, values, msg.sender);
        }

        emit WithdrawRequestInitiated(msg.sender, requestId, stAmount, olasAmount, withdrawTime);
        emit WithdrawAmountRequestedUpdated(curWithdrawAmountRequested);
    }

    /// @dev Finalizes withdraw requests.
    /// @param requestIds Withdraw request Ids.
    /// @param amounts Token amounts corresponding to request Ids.
    function finalizeWithdrawRequests(uint256[] calldata requestIds, uint256[] calldata amounts) external {
        // Reentrancy guard
        if (_locked) {
            revert ReentrancyGuard();
        }
        _locked = true;

        uint256 totalAmount;
        // Traverse all withdraw requests
        for (uint256 i = 0; i < requestIds.length; ++i) {
            // Decode a pair of key defining variables from one key: withdrawTime | requestId
            // requestId occupies first 64 bits, withdrawTime occupies next bits as they both fit well in uint256
            uint256 requestId = requestIds[i] & type(uint64).max;

            uint256 numRequests = numWithdrawRequests;
            // This must never happen as otherwise token would not exist and none of it would be transferFrom-ed
            if (requestId >= numRequests) {
                revert Overflow(requestId, numRequests - 1);
            }

            // It is safe to just move 64 bits as there is a single withdrawTime value after that
            uint256 withdrawTime = requestIds[i] >> 64;
            // Check for earliest possible withdraw time
            if (withdrawTime > block.timestamp) {
                revert Overflow(withdrawTime, block.timestamp);
            }

            // Burn withdraw tokens
            _burn(msg.sender, requestIds[i], amounts[i]);

            totalAmount += amounts[i];

            emit WithdrawRequestExecuted(requestIds[i], amounts[i]);
        }

        // This must never happen
        uint256 curWithdrawAmountRequested = withdrawAmountRequested;
        if (totalAmount > curWithdrawAmountRequested) {
            revert Overflow(totalAmount, curWithdrawAmountRequested);
        }
        // Update total withdraw amount requested
        curWithdrawAmountRequested -= totalAmount;
        withdrawAmountRequested = curWithdrawAmountRequested;

        // Transfer total amount of OLAS
        // The transfer overflow check is not needed since balances are in sync
        // OLAS has been redeemed when withdraw request was posted
        IToken(olas).transfer(msg.sender, totalAmount);

        emit WithdrawAmountRequestedUpdated(curWithdrawAmountRequested);
    }

    /// @dev Gets withdraw request Id by request Id and withdraw time.
    /// @param requestId Withdraw request Id.
    /// @param withdrawTime Withdraw time.
    function getWithdrawRequestId(uint256 requestId, uint256 withdrawTime) external pure returns (uint256) {
        return requestId | (withdrawTime << 64);
    }

    /// @dev Gets withdraw request Id and time.
    /// @param withdrawRequestId Combined withdrawRequestId value.
    function getWithdrawIdAndTime(uint256 withdrawRequestId) external pure returns (uint256, uint256) {
        return ((withdrawRequestId & type(uint64).max), (withdrawRequestId >> 64));
    }
}

// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;

/// @notice Minimalist and gas efficient standard ERC6909 implementation.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC6909.sol)
abstract contract ERC6909 {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event OperatorSet(address indexed owner, address indexed operator, bool approved);

    event Approval(address indexed owner, address indexed spender, uint256 indexed id, uint256 amount);

    event Transfer(address caller, address indexed from, address indexed to, uint256 indexed id, uint256 amount);

    /*//////////////////////////////////////////////////////////////
                             ERC6909 STORAGE
    //////////////////////////////////////////////////////////////*/

    mapping(address => mapping(address => bool)) public isOperator;

    mapping(address => mapping(uint256 => uint256)) public balanceOf;

    mapping(address => mapping(address => mapping(uint256 => uint256))) public allowance;

    /*//////////////////////////////////////////////////////////////
                              ERC6909 LOGIC
    //////////////////////////////////////////////////////////////*/

    function transfer(
        address receiver,
        uint256 id,
        uint256 amount
    ) public virtual returns (bool) {
        balanceOf[msg.sender][id] -= amount;

        balanceOf[receiver][id] += amount;

        emit Transfer(msg.sender, msg.sender, receiver, id, amount);

        return true;
    }

    function transferFrom(
        address sender,
        address receiver,
        uint256 id,
        uint256 amount
    ) public virtual returns (bool) {
        if (msg.sender != sender && !isOperator[sender][msg.sender]) {
            uint256 allowed = allowance[sender][msg.sender][id];
            if (allowed != type(uint256).max) allowance[sender][msg.sender][id] = allowed - amount;
        }

        balanceOf[sender][id] -= amount;

        balanceOf[receiver][id] += amount;

        emit Transfer(msg.sender, sender, receiver, id, amount);

        return true;
    }

    function approve(
        address spender,
        uint256 id,
        uint256 amount
    ) public virtual returns (bool) {
        allowance[msg.sender][spender][id] = amount;

        emit Approval(msg.sender, spender, id, amount);

        return true;
    }

    function setOperator(address operator, bool approved) public virtual returns (bool) {
        isOperator[msg.sender][operator] = approved;

        emit OperatorSet(msg.sender, operator, approved);

        return true;
    }

    /*//////////////////////////////////////////////////////////////
                              ERC165 LOGIC
    //////////////////////////////////////////////////////////////*/

    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
        return
            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165
            interfaceId == 0x0f632fb3; // ERC165 Interface ID for ERC6909
    }

    /*//////////////////////////////////////////////////////////////
                        INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(
        address receiver,
        uint256 id,
        uint256 amount
    ) internal virtual {
        balanceOf[receiver][id] += amount;

        emit Transfer(msg.sender, address(0), receiver, id, amount);
    }

    function _burn(
        address sender,
        uint256 id,
        uint256 amount
    ) internal virtual {
        balanceOf[sender][id] -= amount;

        emit Transfer(msg.sender, sender, address(0), id, amount);
    }
}

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.30;

/// @dev Only `owner` has a privilege, but the `sender` was provided.
/// @param sender Sender address.
/// @param owner Required sender address as an owner.
error OwnerOnly(address sender, address owner);

/// @dev Zero address.
error ZeroAddress();

/// @title Implementation - Smart contract for default minimal implementation
contract Implementation {
    event OwnerUpdated(address indexed owner);
    event ImplementationUpdated(address indexed implementation);

    // Code position in storage is bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1) = "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"
    bytes32 public constant PROXY_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

    // Contract owner address
    address public owner;

    /// @dev Changes contract owner address.
    /// @param newOwner Address of a new owner.
    function changeOwner(address newOwner) external {
        // Check for ownership
        if (msg.sender != owner) {
            revert OwnerOnly(msg.sender, owner);
        }

        // Check for zero address
        if (newOwner == address(0)) {
            revert ZeroAddress();
        }

        owner = newOwner;
        emit OwnerUpdated(newOwner);
    }

    /// @dev Changes depository implementation contract address.
    /// @param newImplementation New implementation contract address.
    function changeImplementation(address newImplementation) external {
        // Check for ownership
        if (msg.sender != owner) {
            revert OwnerOnly(msg.sender, owner);
        }

        // Check for zero address
        if (newImplementation == address(0)) {
            revert ZeroAddress();
        }

        // Store depository implementation address
        assembly {
            sstore(PROXY_SLOT, newImplementation)
        }

        emit ImplementationUpdated(newImplementation);
    }
}

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.30;

// ERC20 token interface
interface IToken {
    /// @dev Transfers the token amount.
    /// @param to Address to transfer to.
    /// @param amount The amount to transfer.
    /// @return True if the function execution is successful.
    function transfer(address to, uint256 amount) external returns (bool);

    /// @dev Transfers the token amount that was previously approved up until the maximum allowance.
    /// @param from Account address to transfer from.
    /// @param to Account address to transfer to.
    /// @param amount Amount to transfer to.
    /// @return True if the function execution is successful.
    function transferFrom(address from, address to, uint256 amount) external returns (bool);

    /// @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
    /// @param spender Account address that will be able to transfer tokens on behalf of the caller.
    /// @param amount Token amount.
    /// @return True if the function execution is successful.
    function approve(address spender, uint256 amount) external returns (bool);

    /// @dev Mints tokens.
    /// @param account Account address.
    /// @param amount Token amount.
    function mint(address account, uint256 amount) external;

    /// @dev Burns tokens.
    /// @param amount Token amount.
    function burn(uint256 amount) external;

    /// @dev Gets the amount of tokens owned by a specified account.
    /// @param account Account address.
    /// @return Amount of tokens owned.
    function balanceOf(address account) external view returns (uint256);
}

// ERC721 token interface
interface INFToken {
    /// @dev Sets token `id` as the allowance of `spender` over the caller's tokens.
    /// @param spender Account address that will be able to transfer the token on behalf of the caller.
    /// @param id Token id.
    function approve(address spender, uint256 id) external;

    /// @dev Transfers a specified token Id.
    /// @param from Account address to transfer from.
    /// @param to Account address to transfer to.
    /// @param id Token id.
    function transferFrom(address from, address to, uint256 id) external;

    /// @dev Transfers a specified token Id with a callback.
    /// @param from Account address to transfer from.
    /// @param to Account address to transfer to.
    /// @param id Token id.
    function safeTransferFrom(address from, address to, uint256 id) external;
}

Settings
{
  "remappings": [
    "@gnosis.pm/=node_modules/@gnosis.pm/",
    "@layerzerolabs/oapp-evm/=lib/devtools/packages/oapp-evm/",
    "@layerzerolabs/lz-evm-protocol-v2/=lib/layerzero-v2/packages/layerzero-v2/evm/protocol/",
    "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
    "@registries/=lib/autonolas-registries/",
    "@solmate/=lib/solmate/",
    "autonolas-registries/=lib/autonolas-registries/",
    "devtools/=lib/devtools/packages/toolbox-foundry/src/",
    "ds-test/=lib/autonolas-registries/lib/forge-std/lib/ds-test/src/",
    "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
    "forge-std/=lib/autonolas-registries/lib/forge-std/src/",
    "halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/",
    "layerzero-v2/=lib/layerzero-v2/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/",
    "solmate/=lib/solmate/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 1000000
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "prague",
  "viaIR": true
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_olas","type":"address"},{"internalType":"address","name":"_st","type":"address"},{"internalType":"address","name":"_depository","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyInitialized","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"Overflow","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"OwnerOnly","type":"error"},{"inputs":[],"name":"ReentrancyGuard","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"inputs":[],"name":"ZeroValue","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"ImplementationUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"OperatorSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"}],"name":"OwnerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"withdrawAmountRequested","type":"uint256"}],"name":"WithdrawAmountRequestedUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"withdrawDelay","type":"uint256"}],"name":"WithdrawDelayUpdates","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"requestId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WithdrawRequestExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"requester","type":"address"},{"indexed":true,"internalType":"uint256","name":"requestId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"stAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"olasAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"withdrawTime","type":"uint256"}],"name":"WithdrawRequestInitiated","type":"event"},{"inputs":[],"name":"PROXY_SLOT","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"changeImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"changeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newWithdrawDelay","type":"uint256"}],"name":"changeWithdrawDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depository","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"requestIds","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"finalizeWithdrawRequests","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"withdrawRequestId","type":"uint256"}],"name":"getWithdrawIdAndTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"requestId","type":"uint256"},{"internalType":"uint256","name":"withdrawTime","type":"uint256"}],"name":"getWithdrawRequestId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_withdrawDelay","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numWithdrawRequests","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"olas","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"stAmount","type":"uint256"},{"internalType":"uint256[]","name":"chainIds","type":"uint256[]"},{"internalType":"address[]","name":"stakingProxies","type":"address[]"},{"internalType":"bytes[]","name":"bridgePayloads","type":"bytes[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"requestToWithdraw","outputs":[{"internalType":"uint256","name":"requestId","type":"uint256"},{"internalType":"uint256","name":"olasAmount","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"st","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAmountRequested","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

60e0346100a957601f611cfe38819003918201601f19168301916001600160401b038311848410176100ad578084926060946040528339810103126100a957610047816100c1565b906100606040610059602084016100c1565b92016100c1565b9160805260a05260c052604051611c2890816100d6823960805181818161087d015261197f015260a051818181610bdb01526110f2015260c0518181816104d001526114270152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036100a95756fe6080806040526004361015610012575f80fd5b5f3560e01c90816231d1151461193757508062fdd58e146118c857806301ffc9a7146118095780630288a39c146117ce578063095bcdb6146117245780631758894814610f6c57806317a68dd814610eaf57806320eba23914610e2d578063426a849314610da957806352eda24714610d6e578063558a729714610c97578063598af9e714610bff57806373f0cc2d14610b915780638da5cb5b14610b41578063a556cb7914610739578063a6f9dae11461061f578063aa3d10df146105c7578063b6363cf214610536578063be558022146104f4578063bedd12a514610486578063e6074e631461044b578063f6756f6e146103fe578063fe4b84df1461035c578063fe99049a146101b25763ffa1ad741461012d575f80fd5b346101ae575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae576101aa60405161016c604082611a3e565b600581527f302e312e300000000000000000000000000000000000000000000000000000006020820152604051918291602083526020830190611b25565b0390f35b5f80fd5b346101ae5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae576101e96119a3565b6101f16119c6565b90604435917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288596102a573ffffffffffffffffffffffffffffffffffffffff806064359516938433141580610339575b6102b3575b845f52600260205260405f20875f5260205260405f20610266878254611b68565b90551693845f52600260205260405f20865f5260205260405f2061028b828254611b75565b905560408051338152602081019290925290918291820190565b0390a4602060405160018152f35b845f52600360205260405f208233165f5260205260405f20875f5260205260405f2054867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610306575b5050610245565b61030f91611b68565b855f52600360205260405f208333165f5260205260405f20885f5260205260405f205587866102ff565b50845f52600160205260405f208233165f5260205260ff60405f20541615610240565b346101ae5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae575f5473ffffffffffffffffffffffffffffffffffffffff81166103d6576004356005557fffffffffffffffffffffffff00000000000000000000000000000000000000001633175f55005b7f0dc149f0000000000000000000000000000000000000000000000000000000005f5260045ffd5b346101ae5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae57604060043581519067ffffffffffffffff81168252821c6020820152f35b346101ae575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae576020600654604051908152f35b346101ae575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101ae5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae57602060405160243560401b600435178152f35b346101ae5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae5761056d6119a3565b73ffffffffffffffffffffffffffffffffffffffff61058a6119c6565b91165f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060ff60405f2054166040519015158152f35b346101ae575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae5760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b346101ae5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae576106566119a3565b5f549073ffffffffffffffffffffffffffffffffffffffff821680330361070a575073ffffffffffffffffffffffffffffffffffffffff169081156106e2577fffffffffffffffffffffffff0000000000000000000000000000000000000000829116175f557f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b5f80a2005b7fd92e233d000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fa43d6ada000000000000000000000000000000000000000000000000000000005f523360045260245260445ffd5b346101ae5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae5760043567ffffffffffffffff81116101ae57610788903690600401611af4565b9060243567ffffffffffffffff81116101ae576107a9903690600401611af4565b60ff5f9392935c16610b195792919060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff005f5c16175f5d5f935f935b80851061094c578560045480821161091d5760206108078361086393611b68565b9283600455604051809381927fa9059cbb00000000000000000000000000000000000000000000000000000000835233600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015610912576108d7575b7fc4c0980deaec61fda0e944a8944c6ce4a49fac6f9327f5222bbb568f90590315602083604051908152a1005b6020813d60201161090a575b816108f060209383611a3e565b810103126101ae575180151581036101ae575060206108aa565b3d91506108e3565b6040513d5f823e3d90fd5b907f7ae59685000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b909192939467ffffffffffffffff610965878487611bb5565b35166006549081811015610a94575050610980868386611bb5565b3560401c428111610a655750610a1460019161099d888588611bb5565b355f6109aa8a888b611bb5565b35338252600260205260408220838352602052604082206109cc828254611b68565b9055604080513380825260208201939093527f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288599190a4610a0d888689611bb5565b3590611b75565b957fe7f9cb1a359b0329d08a5a7710f45a0241bc8f0cacc4f2de55b690d440bb82da6040610a43838689611bb5565b35610a4f84888b611bb5565b3582519182526020820152a101939291906107e6565b7f7ae59685000000000000000000000000000000000000000000000000000000005f526004524260245260445ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201918211610aec577f7ae59685000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7f8beb9d16000000000000000000000000000000000000000000000000000000005f5260045ffd5b346101ae575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b346101ae575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101ae5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae57610c366119a3565b73ffffffffffffffffffffffffffffffffffffffff610c536119c6565b91165f52600360205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f5260205260405f206044355f52602052602060405f2054604051908152f35b346101ae5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae57610cce6119a3565b602435908115158092036101ae5773ffffffffffffffffffffffffffffffffffffffff90335f52600160205260405f208282165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff851617905560405192835216907fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa26760203392a3602060405160018152f35b346101ae575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae576020600454604051908152f35b346101ae5773ffffffffffffffffffffffffffffffffffffffff610dcc366119e9565b91929092335f52600360205260405f208282165f5260205260405f20845f526020528260405f205560405192835216907fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a760203392a4602060405160018152f35b346101ae5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae5760043573ffffffffffffffffffffffffffffffffffffffff5f541680330361070a577fa9d252fe048da6dfb4899efff652a9de1020201e6bfee867b9266ecb3e49abb360208380600555604051908152a1005b346101ae5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae57610ee66119a3565b73ffffffffffffffffffffffffffffffffffffffff5f541680330361070a575073ffffffffffffffffffffffffffffffffffffffff81169081156106e2577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557f310ba5f1d2ed074b51e2eccd052a47ae9ab7c6b800d1fca3db3999d6a592ca035f80a2005b60a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae5760043560243567ffffffffffffffff81116101ae57610fb9903690600401611a97565b6044359167ffffffffffffffff83116101ae57366023840112156101ae578260040135610fe581611a7f565b93610ff36040519586611a3e565b81855260208501906024829360051b820101903682116101ae57602401915b8183106116f7575050506064359167ffffffffffffffff83116101ae57366023840112156101ae5782600401359361104985611a7f565b936110576040519586611a3e565b85855260208501906024829760051b820101903682116101ae5760248101925b828410611635575050505060843567ffffffffffffffff81116101ae576110a2903690600401611a97565b9460ff5f5c16610b195760017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff005f5c16175f5d821561160d5773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001695604051947f5b9f00160000000000000000000000000000000000000000000000000000000086526020866004815f8c5af1958615610912575f966115d9575b50604051967fba0876520000000000000000000000000000000000000000000000000000000088528560048901523060248901523360448901526020886064815f8d5af1978815610912575f986115a2575b5060205f996004604051809c81937f5b9f00160000000000000000000000000000000000000000000000000000000083525af1988915610912575f9961156e575b506111f260055442611b75565b9960065460018101808211610aec576006558b60401b1799335f52600260205260405f208b5f5260205260405f2061122b8b8254611b75565b90556040805133808252602082018d90528d9290915f917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885991a46112718a600454611b75565b98896004558181116112f0575b60408c8c8f60208e848f7fc4c0980deaec61fda0e944a8944c6ce4a49fac6f9327f5222bbb568f905903159488519182528685830152888201527fedebece117864ed1eee4044824d83bbba80c6a1702ebb043a3266d8a8796673760603392a38551908152a182519182526020820152f35b9061130091969493929596611b68565b9360206113456040519889977fa83f7829000000000000000000000000000000000000000000000000000000008952600489015260c0602489015260c4880190611b82565b917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc87840301604488015251918281520192905f5b81811061153f575050507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc84830301606485015251808252602082019160208260051b82010193925f915b8383106114ee575050505050611407815f947ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc85809503016084850152611b82565b3360a483015203818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1801561091257611460575b8080808080808061127e565b943d805f883e6114708188611a3e565b8601956020818803126101ae5780519067ffffffffffffffff82116101ae57019580601f880112156101ae578651966020806114ab8a611a7f565b6114b86040519182611a3e565b8a8152019860051b8201019182116101ae57602001965b8188106114de57505094611454565b87518152602097880197016114cf565b9193969550919360208061152c837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086600196030187528a51611b25565b98019301930190928795969492936113c5565b825173ffffffffffffffffffffffffffffffffffffffff1685528896506020948501949092019160010161137a565b9098506020813d60201161159a575b8161158a60209383611a3e565b810103126101ae5751978a6111e5565b3d915061157d565b9897506020893d6020116115d1575b816115be60209383611a3e565b810103126101ae579751969760206111a4565b3d91506115b1565b9095506020813d602011611605575b816115f560209383611a3e565b810103126101ae57519489611152565b3d91506115e8565b7f7c946ed7000000000000000000000000000000000000000000000000000000005f5260045ffd5b833567ffffffffffffffff81116101ae578201366043820112156101ae5760248101359167ffffffffffffffff83116116ca5760405161169d601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200182611a3e565b83815236604484860101116101ae575f602085819660448397018386013783010152815201930192611077565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b823573ffffffffffffffffffffffffffffffffffffffff811681036101ae57815260209283019201611012565b346101ae5773ffffffffffffffffffffffffffffffffffffffff611747366119e9565b91929092335f52600260205260405f20845f5260205260405f2061176c848254611b68565b90551690815f52600260205260405f20835f5260205260405f20611791828254611b75565b9055604080513380825260208201939093527f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885991819081016102a5565b346101ae575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae576020600554604051908152f35b346101ae5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae576004357fffffffff0000000000000000000000000000000000000000000000000000000081168091036101ae57807f01ffc9a7000000000000000000000000000000000000000000000000000000006020921490811561189e575b506040519015158152f35b7f0f632fb30000000000000000000000000000000000000000000000000000000091501482611893565b346101ae5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae5773ffffffffffffffffffffffffffffffffffffffff6119146119a3565b165f52600260205260405f206024355f52602052602060405f2054604051908152f35b346101ae575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae5760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101ae57565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101ae57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126101ae5760043573ffffffffffffffffffffffffffffffffffffffff811681036101ae57906024359060443590565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176116ca57604052565b67ffffffffffffffff81116116ca5760051b60200190565b9080601f830112156101ae578135611aae81611a7f565b92611abc6040519485611a3e565b81845260208085019260051b8201019283116101ae57602001905b828210611ae45750505090565b8135815260209182019101611ad7565b9181601f840112156101ae5782359167ffffffffffffffff83116101ae576020808501948460051b0101116101ae57565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b91908203918211610aec57565b91908201809211610aec57565b90602080835192838152019201905f5b818110611b9f5750505090565b8251845260209384019390920191600101611b92565b9190811015611bc55760051b0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea264697066735822122021250130ec19775204610b0b29970397e4f436e17d10b4b56c7d97e4c95ac94264736f6c634300081e00330000000000000000000000000001a500a6b18995b03f44bb040a5ffc28e45cb0000000000000000000000000ab4c5bb0797ca25e93a4af2e8fecd7fcac0f2c9b000000000000000000000000eff4a1d9faf5c750d5e32754c40cf163767c63a4

Deployed Bytecode

0x6080806040526004361015610012575f80fd5b5f3560e01c90816231d1151461193757508062fdd58e146118c857806301ffc9a7146118095780630288a39c146117ce578063095bcdb6146117245780631758894814610f6c57806317a68dd814610eaf57806320eba23914610e2d578063426a849314610da957806352eda24714610d6e578063558a729714610c97578063598af9e714610bff57806373f0cc2d14610b915780638da5cb5b14610b41578063a556cb7914610739578063a6f9dae11461061f578063aa3d10df146105c7578063b6363cf214610536578063be558022146104f4578063bedd12a514610486578063e6074e631461044b578063f6756f6e146103fe578063fe4b84df1461035c578063fe99049a146101b25763ffa1ad741461012d575f80fd5b346101ae575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae576101aa60405161016c604082611a3e565b600581527f302e312e300000000000000000000000000000000000000000000000000000006020820152604051918291602083526020830190611b25565b0390f35b5f80fd5b346101ae5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae576101e96119a3565b6101f16119c6565b90604435917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288596102a573ffffffffffffffffffffffffffffffffffffffff806064359516938433141580610339575b6102b3575b845f52600260205260405f20875f5260205260405f20610266878254611b68565b90551693845f52600260205260405f20865f5260205260405f2061028b828254611b75565b905560408051338152602081019290925290918291820190565b0390a4602060405160018152f35b845f52600360205260405f208233165f5260205260405f20875f5260205260405f2054867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610306575b5050610245565b61030f91611b68565b855f52600360205260405f208333165f5260205260405f20885f5260205260405f205587866102ff565b50845f52600160205260405f208233165f5260205260ff60405f20541615610240565b346101ae5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae575f5473ffffffffffffffffffffffffffffffffffffffff81166103d6576004356005557fffffffffffffffffffffffff00000000000000000000000000000000000000001633175f55005b7f0dc149f0000000000000000000000000000000000000000000000000000000005f5260045ffd5b346101ae5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae57604060043581519067ffffffffffffffff81168252821c6020820152f35b346101ae575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae576020600654604051908152f35b346101ae575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae57602060405173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000eff4a1d9faf5c750d5e32754c40cf163767c63a4168152f35b346101ae5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae57602060405160243560401b600435178152f35b346101ae5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae5761056d6119a3565b73ffffffffffffffffffffffffffffffffffffffff61058a6119c6565b91165f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060ff60405f2054166040519015158152f35b346101ae575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae5760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b346101ae5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae576106566119a3565b5f549073ffffffffffffffffffffffffffffffffffffffff821680330361070a575073ffffffffffffffffffffffffffffffffffffffff169081156106e2577fffffffffffffffffffffffff0000000000000000000000000000000000000000829116175f557f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b5f80a2005b7fd92e233d000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fa43d6ada000000000000000000000000000000000000000000000000000000005f523360045260245260445ffd5b346101ae5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae5760043567ffffffffffffffff81116101ae57610788903690600401611af4565b9060243567ffffffffffffffff81116101ae576107a9903690600401611af4565b60ff5f9392935c16610b195792919060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff005f5c16175f5d5f935f935b80851061094c578560045480821161091d5760206108078361086393611b68565b9283600455604051809381927fa9059cbb00000000000000000000000000000000000000000000000000000000835233600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000001a500a6b18995b03f44bb040a5ffc28e45cb0165af18015610912576108d7575b7fc4c0980deaec61fda0e944a8944c6ce4a49fac6f9327f5222bbb568f90590315602083604051908152a1005b6020813d60201161090a575b816108f060209383611a3e565b810103126101ae575180151581036101ae575060206108aa565b3d91506108e3565b6040513d5f823e3d90fd5b907f7ae59685000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b909192939467ffffffffffffffff610965878487611bb5565b35166006549081811015610a94575050610980868386611bb5565b3560401c428111610a655750610a1460019161099d888588611bb5565b355f6109aa8a888b611bb5565b35338252600260205260408220838352602052604082206109cc828254611b68565b9055604080513380825260208201939093527f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288599190a4610a0d888689611bb5565b3590611b75565b957fe7f9cb1a359b0329d08a5a7710f45a0241bc8f0cacc4f2de55b690d440bb82da6040610a43838689611bb5565b35610a4f84888b611bb5565b3582519182526020820152a101939291906107e6565b7f7ae59685000000000000000000000000000000000000000000000000000000005f526004524260245260445ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201918211610aec577f7ae59685000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7f8beb9d16000000000000000000000000000000000000000000000000000000005f5260045ffd5b346101ae575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b346101ae575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae57602060405173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ab4c5bb0797ca25e93a4af2e8fecd7fcac0f2c9b168152f35b346101ae5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae57610c366119a3565b73ffffffffffffffffffffffffffffffffffffffff610c536119c6565b91165f52600360205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f5260205260405f206044355f52602052602060405f2054604051908152f35b346101ae5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae57610cce6119a3565b602435908115158092036101ae5773ffffffffffffffffffffffffffffffffffffffff90335f52600160205260405f208282165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff851617905560405192835216907fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa26760203392a3602060405160018152f35b346101ae575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae576020600454604051908152f35b346101ae5773ffffffffffffffffffffffffffffffffffffffff610dcc366119e9565b91929092335f52600360205260405f208282165f5260205260405f20845f526020528260405f205560405192835216907fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a760203392a4602060405160018152f35b346101ae5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae5760043573ffffffffffffffffffffffffffffffffffffffff5f541680330361070a577fa9d252fe048da6dfb4899efff652a9de1020201e6bfee867b9266ecb3e49abb360208380600555604051908152a1005b346101ae5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae57610ee66119a3565b73ffffffffffffffffffffffffffffffffffffffff5f541680330361070a575073ffffffffffffffffffffffffffffffffffffffff81169081156106e2577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557f310ba5f1d2ed074b51e2eccd052a47ae9ab7c6b800d1fca3db3999d6a592ca035f80a2005b60a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae5760043560243567ffffffffffffffff81116101ae57610fb9903690600401611a97565b6044359167ffffffffffffffff83116101ae57366023840112156101ae578260040135610fe581611a7f565b93610ff36040519586611a3e565b81855260208501906024829360051b820101903682116101ae57602401915b8183106116f7575050506064359167ffffffffffffffff83116101ae57366023840112156101ae5782600401359361104985611a7f565b936110576040519586611a3e565b85855260208501906024829760051b820101903682116101ae5760248101925b828410611635575050505060843567ffffffffffffffff81116101ae576110a2903690600401611a97565b9460ff5f5c16610b195760017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff005f5c16175f5d821561160d5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ab4c5bb0797ca25e93a4af2e8fecd7fcac0f2c9b1695604051947f5b9f00160000000000000000000000000000000000000000000000000000000086526020866004815f8c5af1958615610912575f966115d9575b50604051967fba0876520000000000000000000000000000000000000000000000000000000088528560048901523060248901523360448901526020886064815f8d5af1978815610912575f986115a2575b5060205f996004604051809c81937f5b9f00160000000000000000000000000000000000000000000000000000000083525af1988915610912575f9961156e575b506111f260055442611b75565b9960065460018101808211610aec576006558b60401b1799335f52600260205260405f208b5f5260205260405f2061122b8b8254611b75565b90556040805133808252602082018d90528d9290915f917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885991a46112718a600454611b75565b98896004558181116112f0575b60408c8c8f60208e848f7fc4c0980deaec61fda0e944a8944c6ce4a49fac6f9327f5222bbb568f905903159488519182528685830152888201527fedebece117864ed1eee4044824d83bbba80c6a1702ebb043a3266d8a8796673760603392a38551908152a182519182526020820152f35b9061130091969493929596611b68565b9360206113456040519889977fa83f7829000000000000000000000000000000000000000000000000000000008952600489015260c0602489015260c4880190611b82565b917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc87840301604488015251918281520192905f5b81811061153f575050507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc84830301606485015251808252602082019160208260051b82010193925f915b8383106114ee575050505050611407815f947ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc85809503016084850152611b82565b3360a483015203818373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000eff4a1d9faf5c750d5e32754c40cf163767c63a4165af1801561091257611460575b8080808080808061127e565b943d805f883e6114708188611a3e565b8601956020818803126101ae5780519067ffffffffffffffff82116101ae57019580601f880112156101ae578651966020806114ab8a611a7f565b6114b86040519182611a3e565b8a8152019860051b8201019182116101ae57602001965b8188106114de57505094611454565b87518152602097880197016114cf565b9193969550919360208061152c837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086600196030187528a51611b25565b98019301930190928795969492936113c5565b825173ffffffffffffffffffffffffffffffffffffffff1685528896506020948501949092019160010161137a565b9098506020813d60201161159a575b8161158a60209383611a3e565b810103126101ae5751978a6111e5565b3d915061157d565b9897506020893d6020116115d1575b816115be60209383611a3e565b810103126101ae579751969760206111a4565b3d91506115b1565b9095506020813d602011611605575b816115f560209383611a3e565b810103126101ae57519489611152565b3d91506115e8565b7f7c946ed7000000000000000000000000000000000000000000000000000000005f5260045ffd5b833567ffffffffffffffff81116101ae578201366043820112156101ae5760248101359167ffffffffffffffff83116116ca5760405161169d601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200182611a3e565b83815236604484860101116101ae575f602085819660448397018386013783010152815201930192611077565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b823573ffffffffffffffffffffffffffffffffffffffff811681036101ae57815260209283019201611012565b346101ae5773ffffffffffffffffffffffffffffffffffffffff611747366119e9565b91929092335f52600260205260405f20845f5260205260405f2061176c848254611b68565b90551690815f52600260205260405f20835f5260205260405f20611791828254611b75565b9055604080513380825260208201939093527f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885991819081016102a5565b346101ae575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae576020600554604051908152f35b346101ae5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae576004357fffffffff0000000000000000000000000000000000000000000000000000000081168091036101ae57807f01ffc9a7000000000000000000000000000000000000000000000000000000006020921490811561189e575b506040519015158152f35b7f0f632fb30000000000000000000000000000000000000000000000000000000091501482611893565b346101ae5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae5773ffffffffffffffffffffffffffffffffffffffff6119146119a3565b165f52600260205260405f206024355f52602052602060405f2054604051908152f35b346101ae575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ae5760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000001a500a6b18995b03f44bb040a5ffc28e45cb0168152f35b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101ae57565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101ae57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126101ae5760043573ffffffffffffffffffffffffffffffffffffffff811681036101ae57906024359060443590565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176116ca57604052565b67ffffffffffffffff81116116ca5760051b60200190565b9080601f830112156101ae578135611aae81611a7f565b92611abc6040519485611a3e565b81845260208085019260051b8201019283116101ae57602001905b828210611ae45750505090565b8135815260209182019101611ad7565b9181601f840112156101ae5782359167ffffffffffffffff83116101ae576020808501948460051b0101116101ae57565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b91908203918211610aec57565b91908201809211610aec57565b90602080835192838152019201905f5b818110611b9f5750505090565b8251845260209384019390920191600101611b92565b9190811015611bc55760051b0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea264697066735822122021250130ec19775204610b0b29970397e4f436e17d10b4b56c7d97e4c95ac94264736f6c634300081e0033

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

0000000000000000000000000001a500a6b18995b03f44bb040a5ffc28e45cb0000000000000000000000000ab4c5bb0797ca25e93a4af2e8fecd7fcac0f2c9b000000000000000000000000eff4a1d9faf5c750d5e32754c40cf163767c63a4

-----Decoded View---------------
Arg [0] : _olas (address): 0x0001A500A6B18995B03f44bb040A5fFc28E45CB0
Arg [1] : _st (address): 0xab4C5BB0797Ca25e93a4af2E8FECD7Fcac0F2c9b
Arg [2] : _depository (address): 0xEfF4A1D9faF5c750d5E32754c40Cf163767C63A4

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000001a500a6b18995b03f44bb040a5ffc28e45cb0
Arg [1] : 000000000000000000000000ab4c5bb0797ca25e93a4af2e8fecd7fcac0f2c9b
Arg [2] : 000000000000000000000000eff4a1d9faf5c750d5e32754c40cf163767c63a4


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

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.