Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Treasury
Compiler Version
v0.8.30+commit.73712a01
Optimization Enabled:
Yes with 1000000 runs
Other Settings:
prague EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// 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;
}{
"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
- No Contract Security Audit Submitted- Submit Audit Here
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"}]Contract Creation Code
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
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.