Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 2,538 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw Fees | 11771622 | 1403 days ago | IN | 0 ETH | 0.0043384 | ||||
Return Funds | 11610738 | 1427 days ago | IN | 0 ETH | 0.00262278 | ||||
Return Funds | 11610736 | 1427 days ago | IN | 0 ETH | 0.00262386 | ||||
Return Funds | 11607640 | 1428 days ago | IN | 0 ETH | 0.00262386 | ||||
Create | 11590846 | 1431 days ago | IN | 0 ETH | 0.00578479 | ||||
Create | 11590841 | 1431 days ago | IN | 0 ETH | 0.00645251 | ||||
Create | 11587617 | 1431 days ago | IN | 0 ETH | 0.01821109 | ||||
Return Funds | 11405937 | 1459 days ago | IN | 0 ETH | 0.00103387 | ||||
Return Funds | 11405739 | 1459 days ago | IN | 0 ETH | 0.00106521 | ||||
Return Funds | 11402330 | 1459 days ago | IN | 0 ETH | 0.00100205 | ||||
Return Funds | 11402314 | 1459 days ago | IN | 0 ETH | 0.00087646 | ||||
Return Funds | 11400403 | 1460 days ago | IN | 0 ETH | 0.00117102 | ||||
Return Funds | 11399643 | 1460 days ago | IN | 0 ETH | 0.00082644 | ||||
Return Funds | 11399596 | 1460 days ago | IN | 0 ETH | 0.00071287 | ||||
Return Funds | 11399546 | 1460 days ago | IN | 0 ETH | 0.00071287 | ||||
Return Funds | 11398607 | 1460 days ago | IN | 0 ETH | 0.00069724 | ||||
Return Funds | 11398582 | 1460 days ago | IN | 0 ETH | 0.00069724 | ||||
Return Funds | 11398564 | 1460 days ago | IN | 0 ETH | 0.00071346 | ||||
Return Funds | 11398538 | 1460 days ago | IN | 0 ETH | 0.00061582 | ||||
Return Funds | 11395724 | 1460 days ago | IN | 0 ETH | 0.0007362 | ||||
Return Funds | 11388846 | 1462 days ago | IN | 0 ETH | 0.00119237 | ||||
Release | 11388576 | 1462 days ago | IN | 0 ETH | 0.00080336 | ||||
Release | 11386737 | 1462 days ago | IN | 0 ETH | 0.00164238 | ||||
Create | 11386728 | 1462 days ago | IN | 0 ETH | 0.00321419 | ||||
Release | 11386333 | 1462 days ago | IN | 0 ETH | 0.00116834 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
11771622 | 1403 days ago | 9.23767584 ETH | ||||
11610738 | 1427 days ago | 0.36225664 ETH | ||||
11610736 | 1427 days ago | 0.4825707 ETH | ||||
11607640 | 1428 days ago | 0.19257284 ETH | ||||
11590846 | 1431 days ago | 0.36225664 ETH | ||||
11590841 | 1431 days ago | 0.4825707 ETH | ||||
11587617 | 1431 days ago | 0.19257284 ETH | ||||
11405937 | 1459 days ago | 0.22671017 ETH | ||||
11405739 | 1459 days ago | 0.02033594 ETH | ||||
11402330 | 1459 days ago | 0.05900716 ETH | ||||
11402314 | 1459 days ago | 0.05893278 ETH | ||||
11400403 | 1460 days ago | 0.03131583 ETH | ||||
11399643 | 1460 days ago | 0.21992275 ETH | ||||
11399596 | 1460 days ago | 0.05966367 ETH | ||||
11399546 | 1460 days ago | 0.05927718 ETH | ||||
11398607 | 1460 days ago | 0.09702565 ETH | ||||
11398582 | 1460 days ago | 0.09709563 ETH | ||||
11398564 | 1460 days ago | 0.09720079 ETH | ||||
11398538 | 1460 days ago | 0.0971735 ETH | ||||
11395724 | 1460 days ago | 0.20140079 ETH | ||||
11388846 | 1462 days ago | 0.20242672 ETH | ||||
11388576 | 1462 days ago | 0.05608532 ETH | ||||
11386737 | 1462 days ago | 0.22116066 ETH | ||||
11386728 | 1462 days ago | 0.22556175 ETH | ||||
11386333 | 1462 days ago | 1.14981565 ETH |
Loading...
Loading
Contract Name:
RampInstantEthEscrows
Compiler Version
v0.7.0+commit.9e61f92b
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-08-13 */ pragma solidity 0.7.0; // SPDX-License-Identifier: MIT /** * Copyright © 2017-2019 Ramp Network sp. z o.o. All rights reserved (MIT License). * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software * and associated documentation files (the "Software"), to deal in the Software without restriction, * including without limitation the rights to use, copy, modify, merge, publish, distribute, * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software * is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies * or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /** * Abstract class for an asset adapter -- a class handling a binary asset description, * encapsulating the asset-specific transfer logic, to maintain a single interface for the main * escrows contract, regardless of asset type. * The `assetData` bytes represent a tightly packed struct, consisting of a 2-byte (uint16) asset * type, followed by asset-specific data. For now there are 2 asset types, ETH and ERC-20 tokens. * The asset type bytes must be equal to the `ASSET_TYPE` constant in each subclass. * * @dev Subclasses of this class are used as mixins to their respective main escrows contract. * * @author Ramp Network sp. z o.o. */ abstract contract AssetAdapter { uint16 public immutable ASSET_TYPE; // solhint-disable-line var-name-mixedcase constructor( uint16 assetType ) { ASSET_TYPE = assetType; } /** * Ensure the described asset is sent to the given address. * Should revert if the transfer failed, but callers must also handle `false` being returned, * much like ERC-20's `transfer`. */ function rawSendAsset( bytes memory assetData, uint256 _amount, address payable _to ) internal virtual returns (bool success); /** * Ensure the described asset is sent to this contract. * Should revert if the transfer failed, but callers must also handle `false` being returned, * much like ERC-20's `transfer`. */ function rawLockAsset( uint256 amount, address payable _from ) internal returns (bool success) { return RampInstantPoolInterface(_from).sendFundsToSwap(amount); } function getAmount(bytes memory assetData) internal virtual pure returns (uint256); /** * Verify that the passed asset data can be handled by this adapter and given pool. * * @dev it's sufficient to use this only when creating a new swap -- all the other swap * functions first check if the swap hash is valid, while a swap hash with invalid * asset type wouldn't be created at all. * * @dev asset type is 2 bytes long, and it's at offset 32 in `assetData`'s memory (the first 32 * bytes are the data length). We load the word at offset 2 (it ends with the asset type bytes), * and retrieve its last 2 bytes into a `uint16` variable. */ modifier checkAssetTypeAndData(bytes memory assetData, address _pool) { uint16 assetType; // solhint-disable-next-line no-inline-assembly assembly { assetType := and( mload(add(assetData, 2)), 0xffff ) } require(assetType == ASSET_TYPE, "iat"); // "invalid asset type" checkAssetData(assetData, _pool); _; } function checkAssetData(bytes memory assetData, address _pool) internal virtual view; } /** * A simple interface used by the escrows contract (precisely AssetAdapters) to interact * with the liquidity pools. */ abstract contract RampInstantPoolInterface { uint16 public ASSET_TYPE; // solhint-disable-line var-name-mixedcase function sendFundsToSwap(uint256 _amount) public virtual /*onlyActive onlySwapsContract isWithinLimits*/ returns(bool success); } /** * A standard, simple transferrable contract ownership. */ abstract contract Ownable { address public owner; event OwnerChanged(address oldOwner, address newOwner); constructor() { owner = msg.sender; } modifier onlyOwner() { require(msg.sender == owner, "ooc"); // "only the owner can call this" _; } function changeOwner(address _newOwner) external onlyOwner { owner = _newOwner; emit OwnerChanged(msg.sender, _newOwner); } } /** * An extended version of the standard `Pausable` contract, with more possible statuses: * * STOPPED: all swap actions cannot be executed until the status is changed, * * RETURN_ONLY: the existing swaps can only be returned, no new swaps can be created; * * FINALIZE_ONLY: the existing swaps can be released or returned, no new swaps can be created; * * ACTIVE: all swap actions can be executed. * * @dev the status enum is strictly monotonic (i.e. all actions allowed on status X are allowed on * status X+1) and the default 0 is mapped to STOPPED for safety. */ abstract contract WithStatus is Ownable { enum Status { STOPPED, RETURN_ONLY, FINALIZE_ONLY, ACTIVE } event StatusChanged(Status oldStatus, Status newStatus); Status public status = Status.ACTIVE; function setStatus(Status _status) external onlyOwner { emit StatusChanged(status, _status); status = _status; } modifier statusAtLeast(Status _status) { require(status >= _status, "ics"); // "invalid contract status" _; } } /** * An owner-managed list of oracles, that are allowed to release or return swaps. * The deployer is the default only oracle. */ abstract contract WithOracles is Ownable { mapping (address => bool) internal oracles; constructor() { oracles[msg.sender] = true; } function approveOracle(address _oracle) external onlyOwner { oracles[_oracle] = true; } function revokeOracle(address _oracle) external onlyOwner { oracles[_oracle] = false; } modifier isOracle(address _oracle) { require(oracles[_oracle], "ioa"); // invalid oracle address" _; } modifier onlyOracleOrPool(address _pool, address _oracle) { require( msg.sender == _pool || (msg.sender == _oracle && oracles[msg.sender]), "oop" // "only the oracle or the pool can call this" ); _; } } /** * An owner-managed address that is allowed to create new swaps. */ abstract contract WithSwapsCreators is Ownable { mapping (address => bool) internal creators; constructor() { creators[msg.sender] = true; } function approveSwapCreator(address _creator) external onlyOwner { creators[_creator] = true; } function revokeSwapCreator(address _creator) external onlyOwner { creators[_creator] = false; } modifier onlySwapCreator() { require(creators[msg.sender], "osc"); // "only the swap creator can call this" _; } } /** * An extension of `AssetAdapter` that encapsulates collecting Ramp fees while locking and resolving * an escrow. The collected fees can be withdrawn by the contract owner. * * Fees are configured dynamically by the backend and encoded in `assetData`. The fee amount is * also hashed into the swapHash, so a swap is guaranteed to be released/returned with the same fee * it was created with. * * @author Ramp Network sp. z o.o. */ abstract contract AssetAdapterWithFees is Ownable, AssetAdapter { function accumulateFee(bytes memory assetData) internal virtual; function withdrawFees( bytes calldata assetData, address payable _to ) external virtual /*onlyOwner*/ returns (bool success); function getFee(bytes memory assetData) internal virtual pure returns (uint256); function getAmountWithFee(bytes memory assetData) internal pure returns (uint256) { return getAmount(assetData) + getFee(assetData); } function lockAssetWithFee( bytes memory assetData, address payable _from ) internal returns (bool success) { return rawLockAsset(getAmountWithFee(assetData), _from); } function sendAssetWithFee( bytes memory assetData, address payable _to ) internal returns (bool success) { return rawSendAsset(assetData, getAmountWithFee(assetData), _to); } function sendAssetKeepingFee( bytes memory assetData, address payable _to ) internal returns (bool success) { bool result = rawSendAsset(assetData, getAmount(assetData), _to); if (result) accumulateFee(assetData); return result; } function getAccumulatedFees(address _assetAddress) public virtual view returns (uint256); } /** * The main contract managing Ramp Swaps escrows lifecycle: create, release or return. * Uses an abstract AssetAdapter to carry out the transfers and handle the particular asset data. * With a corresponding off-chain oracle protocol allows for atomic-swap-like transfer between * fiat currencies and crypto assets. * * @dev an active swap is represented by a hash of its details, mapped to its escrow expiration * timestamp. When the swap is created, its end time is set a given amount of time in the future * (but within {MIN,MAX}_SWAP_LOCK_TIME_S). * The hashed swap details are: * * address pool: the `RampInstantPool` contract that sells the crypto asset; * * address receiver: the user that buys the crypto asset; * * address oracle: address of the oracle that handles this particular swap; * * bytes assetData: description of the crypto asset, handled by an AssetAdapter; * * bytes32 paymentDetailsHash: hash of the fiat payment details: account numbers, fiat value * and currency, and the transfer reference (title), that can be verified off-chain. * * @author Ramp Network sp. z o.o. */ abstract contract RampInstantEscrows is Ownable, WithStatus, WithOracles, WithSwapsCreators, AssetAdapterWithFees { /// @dev contract version, defined in semver string public constant VERSION = "0.6.4"; uint32 internal constant MIN_ACTUAL_TIMESTAMP = 1000000000; /// @dev lock time limits for pool's assets, after which unreleased escrows can be returned uint32 internal constant MIN_SWAP_LOCK_TIME_S = 24 hours; uint32 internal constant MAX_SWAP_LOCK_TIME_S = 30 days; event Created(bytes32 indexed swapHash); event Released(bytes32 indexed swapHash); event PoolReleased(bytes32 indexed swapHash); event Returned(bytes32 indexed swapHash); event PoolReturned(bytes32 indexed swapHash); /** * @dev Mapping from swap details hash to its end time (as a unix timestamp). * After the end time the swap can be cancelled, and the funds will be returned to the pool. */ mapping (bytes32 => uint32) internal swaps; /** * Swap creation, called by the Ramp Network. Checks swap parameters and ensures the crypto * asset is locked on this contract. * * Emits a `Created` event with the swap hash. */ function create( address payable _pool, address _receiver, address _oracle, bytes calldata _assetData, bytes32 _paymentDetailsHash, uint32 lockTimeS ) external statusAtLeast(Status.ACTIVE) onlySwapCreator() isOracle(_oracle) checkAssetTypeAndData(_assetData, _pool) returns (bool success) { require( lockTimeS >= MIN_SWAP_LOCK_TIME_S && lockTimeS <= MAX_SWAP_LOCK_TIME_S, "ltl" // "lock time outside limits" ); bytes32 swapHash = getSwapHash( _pool, _receiver, _oracle, keccak256(_assetData), _paymentDetailsHash ); requireSwapNotExists(swapHash); // Set up swap status before transfer, to avoid reentrancy attacks. // Even if a malicious token is somehow passed to this function (despite the oracle // signature of its details), the state of this contract is already fully updated, // so it will behave correctly (as it would be a separate call). // solhint-disable-next-line not-rely-on-time swaps[swapHash] = uint32(block.timestamp) + lockTimeS; require( lockAssetWithFee(_assetData, _pool), "elf" // "escrow lock failed" ); emit Created(swapHash); return true; } /** * Swap release, which transfers the crypto asset to the receiver and removes the swap from * the active swap mapping. Normally called by the swap's oracle after it confirms a matching * wire transfer on pool's bank account. Can be also called by the pool, for example in case * of a dispute, when the parties reach an agreement off-chain. * * Emits a `Released` or `PoolReleased` event with the swap's hash. */ function release( address _pool, address payable _receiver, address _oracle, bytes calldata _assetData, bytes32 _paymentDetailsHash ) external statusAtLeast(Status.FINALIZE_ONLY) onlyOracleOrPool(_pool, _oracle) { bytes32 swapHash = getSwapHash( _pool, _receiver, _oracle, keccak256(_assetData), _paymentDetailsHash ); requireSwapCreated(swapHash); // Delete the swap status before transfer, to avoid reentrancy attacks. swaps[swapHash] = 0; require( sendAssetKeepingFee(_assetData, _receiver), "arf" // "asset release failed" ); if (msg.sender == _pool) { emit PoolReleased(swapHash); } else { emit Released(swapHash); } } /** * Swap return, which transfers the crypto asset back to the pool and removes the swap from * the active swap mapping. Can be called by the pool or the swap's oracle, but only if the * escrow lock time expired. * * Emits a `Returned` or `PoolReturned` event with the swap's hash. */ function returnFunds( address payable _pool, address _receiver, address _oracle, bytes calldata _assetData, bytes32 _paymentDetailsHash ) external statusAtLeast(Status.RETURN_ONLY) onlyOracleOrPool(_pool, _oracle) { bytes32 swapHash = getSwapHash( _pool, _receiver, _oracle, keccak256(_assetData), _paymentDetailsHash ); requireSwapExpired(swapHash); // Delete the swap status before transfer, to avoid reentrancy attacks. swaps[swapHash] = 0; require( sendAssetWithFee(_assetData, _pool), "acf" // "asset return failed" ); if (msg.sender == _pool) { emit PoolReturned(swapHash); } else { emit Returned(swapHash); } } /** * Given all valid swap details, returns its status. The return can be: * 0: the swap details are invalid, swap doesn't exist, or was already released/returned. * >1: the swap was created, and the value is a timestamp indicating end of its lock time. */ function getSwapStatus( address _pool, address _receiver, address _oracle, bytes calldata _assetData, bytes32 _paymentDetailsHash ) external view returns (uint32 status) { bytes32 swapHash = getSwapHash( _pool, _receiver, _oracle, keccak256(_assetData), _paymentDetailsHash ); return swaps[swapHash]; } /** * Calculates the swap hash used to reference the swap in this contract's storage. */ function getSwapHash( address _pool, address _receiver, address _oracle, bytes32 assetHash, bytes32 _paymentDetailsHash ) internal pure returns (bytes32) { return keccak256( abi.encodePacked( _pool, _receiver, _oracle, assetHash, _paymentDetailsHash ) ); } function requireSwapNotExists(bytes32 swapHash) internal view { require( swaps[swapHash] == 0, "sae" // "swap already exists" ); } function requireSwapCreated(bytes32 swapHash) internal view { require( swaps[swapHash] > MIN_ACTUAL_TIMESTAMP, "siv" // "swap invalid" ); } function requireSwapExpired(bytes32 swapHash) internal view { require( // solhint-disable-next-line not-rely-on-time swaps[swapHash] > MIN_ACTUAL_TIMESTAMP && block.timestamp > swaps[swapHash], "sei" // "swap not expired or invalid" ); } } /** * An adapter for handling ether assets. * * @author Ramp Network sp. z o.o. */ abstract contract EthAdapter is AssetAdapterWithFees { uint16 internal constant ETH_TYPE_ID = 1; uint16 internal constant ETH_ASSET_DATA_LENGTH = 66; uint256 internal accumulatedFees = 0; constructor() AssetAdapter(ETH_TYPE_ID) {} /** * @dev extract the amount from the asset data bytes. ETH assetData bytes contents: * offset length type contents * +00 32 uint256 data length (== 0x22 == 34 bytes) * +32 2 uint16 asset type (== ETH_TYPE_ID == 1) * +34 32 uint256 ether amount in wei * +66 32 uint256 ether fee in wei */ function getAmount(bytes memory assetData) internal override pure returns (uint256 amount) { // solhint-disable-next-line no-inline-assembly assembly { amount := mload(add(assetData, 34)) } } /** * @dev extract the fee from the asset data bytes. See getAmount for bytes contents. */ function getFee(bytes memory assetData) internal override pure returns (uint256 fee) { // solhint-disable-next-line no-inline-assembly assembly { fee := mload(add(assetData, 66)) } } function rawSendAsset( bytes memory /*assetData*/, uint256 _amount, address payable _to ) internal override returns (bool success) { // To enable more complex purchase receiver contracts, we're using `call.value(...)` instead // of plain `transfer(...)`, which allows only 2300 gas to be used by the fallback function. // This works for transfers to plain accounts too, no need to check if it's a contract. // solhint-disable-next-line avoid-low-level-calls (bool transferSuccessful,) = _to.call{ value:_amount }(""); require(transferSuccessful, "etf"); // "eth transfer failed" return true; } function accumulateFee(bytes memory assetData) internal override { accumulatedFees += getFee(assetData); } function withdrawFees( bytes calldata /*assetData*/, address payable _to ) external override onlyOwner returns (bool success) { uint256 fees = accumulatedFees; accumulatedFees = 0; _to.transfer(fees); return true; } /** * This adapter can receive eth payments, but no other use of the fallback function is allowed. * @dev this is the "receive ether" fallback function, split off from the regular fallback * function in Solidity 0.6 */ receive () external payable {} function checkAssetData(bytes memory assetData, address /*_pool*/) internal override pure { require(assetData.length == ETH_ASSET_DATA_LENGTH, "adl"); // "invalid asset data length" } function getAccumulatedFees(address /*_assetAddress*/) public override view returns (uint256) { return accumulatedFees; } } /** * Ramp Swaps contract with the ether asset adapter. * * @author Ramp Network sp. z o.o. */ contract RampInstantEthEscrows is RampInstantEscrows, EthAdapter {}
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"swapHash","type":"bytes32"}],"name":"Created","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"swapHash","type":"bytes32"}],"name":"PoolReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"swapHash","type":"bytes32"}],"name":"PoolReturned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"swapHash","type":"bytes32"}],"name":"Released","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"swapHash","type":"bytes32"}],"name":"Returned","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"enum WithStatus.Status","name":"oldStatus","type":"uint8"},{"indexed":false,"internalType":"enum WithStatus.Status","name":"newStatus","type":"uint8"}],"name":"StatusChanged","type":"event"},{"inputs":[],"name":"ASSET_TYPE","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_oracle","type":"address"}],"name":"approveOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_creator","type":"address"}],"name":"approveSwapCreator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"changeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_pool","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"address","name":"_oracle","type":"address"},{"internalType":"bytes","name":"_assetData","type":"bytes"},{"internalType":"bytes32","name":"_paymentDetailsHash","type":"bytes32"},{"internalType":"uint32","name":"lockTimeS","type":"uint32"}],"name":"create","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"getAccumulatedFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pool","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"address","name":"_oracle","type":"address"},{"internalType":"bytes","name":"_assetData","type":"bytes"},{"internalType":"bytes32","name":"_paymentDetailsHash","type":"bytes32"}],"name":"getSwapStatus","outputs":[{"internalType":"uint32","name":"status","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pool","type":"address"},{"internalType":"address payable","name":"_receiver","type":"address"},{"internalType":"address","name":"_oracle","type":"address"},{"internalType":"bytes","name":"_assetData","type":"bytes"},{"internalType":"bytes32","name":"_paymentDetailsHash","type":"bytes32"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_pool","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"address","name":"_oracle","type":"address"},{"internalType":"bytes","name":"_assetData","type":"bytes"},{"internalType":"bytes32","name":"_paymentDetailsHash","type":"bytes32"}],"name":"returnFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oracle","type":"address"}],"name":"revokeOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_creator","type":"address"}],"name":"revokeSwapCreator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithStatus.Status","name":"_status","type":"uint8"}],"name":"setStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"status","outputs":[{"internalType":"enum WithStatus.Status","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"address payable","name":"_to","type":"address"}],"name":"withdrawFees","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526000805460ff60a01b1916600360a01b17815560045534801561002657600080fd5b50600080546001600160a01b0319163390811782558152600160208181526040808420805460ff19908116851790915560029092528320805490911682179055600160f01b608052906115ed9061008b9039806108055280610b2e52506115ed6000f3fe6080604052600436106100f75760003560e01c80639a3c6e291161008a578063c2f6ce0011610059578063c2f6ce00146105a7578063dd651ed3146105da578063f47bc89c1461060d578063ffa1ad7414610640576100fe565b80639a3c6e29146103b2578063a6f9dae114610450578063a80e7acb14610483578063bfe5d9c514610521576100fe565b80635983e6b0116100c65780635983e6b01461026b5780638815eb391461029e5780638da5cb5b146102ca578063946519f1146102fb576100fe565b80630b898c9e14610103578063200d2ed2146101c15780632e49d78b146101f7578063564201f914610226576100fe565b366100fe57005b600080fd5b34801561010f57600080fd5b506101ad600480360360c081101561012657600080fd5b6001600160a01b038235811692602081013582169260408201359092169181019060808101606082013564010000000081111561016257600080fd5b82018360208201111561017457600080fd5b8035906020019184600183028401116401000000008311171561019657600080fd5b91935091508035906020013563ffffffff166106ca565b604080519115158252519081900360200190f35b3480156101cd57600080fd5b506101d66109df565b604051808260038111156101e657fe5b815260200191505060405180910390f35b34801561020357600080fd5b506102246004803603602081101561021a57600080fd5b503560ff166109ef565b005b34801561023257600080fd5b506102596004803603602081101561024957600080fd5b50356001600160a01b0316610abf565b60408051918252519081900360200190f35b34801561027757600080fd5b506102246004803603602081101561028e57600080fd5b50356001600160a01b0316610ac6565b3480156102aa57600080fd5b506102b3610b2c565b6040805161ffff9092168252519081900360200190f35b3480156102d657600080fd5b506102df610b50565b604080516001600160a01b039092168252519081900360200190f35b34801561030757600080fd5b50610399600480360360a081101561031e57600080fd5b6001600160a01b038235811692602081013582169260408201359092169181019060808101606082013564010000000081111561035a57600080fd5b82018360208201111561036c57600080fd5b8035906020019184600183028401116401000000008311171561038e57600080fd5b919350915035610b5f565b6040805163ffffffff9092168252519081900360200190f35b3480156103be57600080fd5b50610224600480360360a08110156103d557600080fd5b6001600160a01b038235811692602081013582169260408201359092169181019060808101606082013564010000000081111561041157600080fd5b82018360208201111561042357600080fd5b8035906020019184600183028401116401000000008311171561044557600080fd5b919350915035610bad565b34801561045c57600080fd5b506102246004803603602081101561047357600080fd5b50356001600160a01b0316610db3565b34801561048f57600080fd5b50610224600480360360a08110156104a657600080fd5b6001600160a01b03823581169260208101358216926040820135909216918101906080810160608201356401000000008111156104e257600080fd5b8201836020820111156104f457600080fd5b8035906020019184600183028401116401000000008311171561051657600080fd5b919350915035610e61565b34801561052d57600080fd5b506101ad6004803603604081101561054457600080fd5b81019060208101813564010000000081111561055f57600080fd5b82018360208201111561057157600080fd5b8035906020019184600183028401116401000000008311171561059357600080fd5b9193509150356001600160a01b0316611066565b3480156105b357600080fd5b50610224600480360360208110156105ca57600080fd5b50356001600160a01b03166110f9565b3480156105e657600080fd5b50610224600480360360208110156105fd57600080fd5b50356001600160a01b0316611162565b34801561061957600080fd5b506102246004803603602081101561063057600080fd5b50356001600160a01b03166111c8565b34801561064c57600080fd5b50610655611234565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561068f578181015183820152602001610677565b50505050905090810190601f1680156106bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600380600054600160a01b900460ff1660038111156106e757fe5b1015610720576040805162461bcd60e51b815260206004820152600360248201526269637360e81b604482015290519081900360640190fd5b3360009081526002602052604090205460ff1661076a576040805162461bcd60e51b81526020600482015260036024820152626f736360e81b604482015290519081900360640190fd5b6001600160a01b038716600090815260016020526040902054879060ff166107bf576040805162461bcd60e51b8152602060048201526003602482015262696f6160e81b604482015290519081900360640190fd5b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060028101518b9061ffff908116907f000000000000000000000000000000000000000000000000000000000000000016811461085e576040805162461bcd60e51b81526020600482015260036024820152621a585d60ea1b604482015290519081900360640190fd5b6108688383611255565b6201518063ffffffff88161080159061088a575062278d0063ffffffff881611155b6108c1576040805162461bcd60e51b81526020600482015260036024820152621b1d1b60ea1b604482015290519081900360640190fd5b60006108ee8e8e8e8e8e60405180838380828437808301925050509250505060405180910390208d611295565b90506108f9816112f7565b600081815260036020908152604091829020805463ffffffff1916428c0163ffffffff161790558151601f8d018290048202810182019092528b825261096991908d908d9081908401838280828437600081840152601f19601f820116905080830192505050505050508f611347565b6109a0576040805162461bcd60e51b815260206004820152600360248201526232b63360e91b604482015290519081900360640190fd5b60405181907f102d25c49d33fcdb8976a3f2744e0785c98d9e43b88364859e6aec4ae82eff5c90600090a25060019d9c50505050505050505050505050565b600054600160a01b900460ff1681565b6000546001600160a01b03163314610a34576040805162461bcd60e51b81526020600482015260036024820152626f6f6360e81b604482015290519081900360640190fd5b7fe1377aa21d49fa10bb9ece6a0cd4f75597a90a80c3750f7f7674967f49ab9a62600060149054906101000a900460ff168260405180836003811115610a7657fe5b8152602001826003811115610a8757fe5b81526020019250505060405180910390a16000805482919060ff60a01b1916600160a01b836003811115610ab757fe5b021790555050565b5060045490565b6000546001600160a01b03163314610b0b576040805162461bcd60e51b81526020600482015260036024820152626f6f6360e81b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b031681565b600080610b8c888888888860405180838380828437604051920182900390912093508a9250611295915050565b60009081526003602052604090205463ffffffff1698975050505050505050565b600280600054600160a01b900460ff166003811115610bc857fe5b1015610c01576040805162461bcd60e51b815260206004820152600360248201526269637360e81b604482015290519081900360640190fd5b8685336001600160a01b0383161480610c3c5750336001600160a01b038216148015610c3c57503360009081526001602052604090205460ff165b610c73576040805162461bcd60e51b815260206004820152600360248201526206f6f760ec1b604482015290519081900360640190fd5b6000610c9f8a8a8a8a8a60405180838380828437604051920182900390912093508c9250611295915050565b9050610caa81611362565b600081815260036020908152604091829020805463ffffffff191690558151601f8901829004820281018201909252878252610d03919089908990819084018382808284376000920191909152508d92506113b6915050565b610d3a576040805162461bcd60e51b815260206004820152600360248201526230b93360e91b604482015290519081900360640190fd5b336001600160a01b038b161415610d7b5760405181907f789952a21900cba4809507b4ba56618cee6a1e748254f8faab21e9b8f1c60bc990600090a2610da7565b60405181907f6eec2dd2382427616d4ea7ef183b16091feac4e2e63c8b55f25215f132df8d1490600090a25b50505050505050505050565b6000546001600160a01b03163314610df8576040805162461bcd60e51b81526020600482015260036024820152626f6f6360e81b604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03831690811790915560408051338152602081019290925280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a150565b600180600054600160a01b900460ff166003811115610e7c57fe5b1015610eb5576040805162461bcd60e51b815260206004820152600360248201526269637360e81b604482015290519081900360640190fd5b8685336001600160a01b0383161480610ef05750336001600160a01b038216148015610ef057503360009081526001602052604090205460ff165b610f27576040805162461bcd60e51b815260206004820152600360248201526206f6f760ec1b604482015290519081900360640190fd5b6000610f538a8a8a8a8a60405180838380828437604051920182900390912093508c9250611295915050565b9050610f5e816113dd565b600081815260036020908152604091829020805463ffffffff191690558151601f8901829004820281018201909252878252610fb7919089908990819084018382808284376000920191909152508e9250611450915050565b610fee576040805162461bcd60e51b815260206004820152600360248201526230b1b360e91b604482015290519081900360640190fd5b336001600160a01b038b16141561102f5760405181907f7b5ac55826e0ca40c3f69722d916fb9962d86cffcddc9c84d082b712419e5cbd90600090a2610da7565b60405181907fc99795d9dc9d68f27b21e122a0e663f689138f9110dee0122fc2980f8d57977590600090a250505050505050505050565b600080546001600160a01b031633146110ac576040805162461bcd60e51b81526020600482015260036024820152626f6f6360e81b604482015290519081900360640190fd5b6004805460009182905560405190916001600160a01b0385169183156108fc0291849190818181858888f193505050501580156110ed573d6000803e3d6000fd5b50600195945050505050565b6000546001600160a01b0316331461113e576040805162461bcd60e51b81526020600482015260036024820152626f6f6360e81b604482015290519081900360640190fd5b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b6000546001600160a01b031633146111a7576040805162461bcd60e51b81526020600482015260036024820152626f6f6360e81b604482015290519081900360640190fd5b6001600160a01b03166000908152600260205260409020805460ff19169055565b6000546001600160a01b0316331461120d576040805162461bcd60e51b81526020600482015260036024820152626f6f6360e81b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b604051806040016040528060058152602001640c0b8d8b8d60da1b81525081565b8151604214611291576040805162461bcd60e51b815260206004820152600360248201526218591b60ea1b604482015290519081900360640190fd5b5050565b604080516bffffffffffffffffffffffff19606097881b811660208084019190915296881b811660348301529490961b9093166048860152605c850191909152607c8085019190915281518085039091018152609c9093019052815191012090565b60008181526003602052604090205463ffffffff1615611344576040805162461bcd60e51b815260206004820152600360248201526273616560e81b604482015290519081900360640190fd5b50565b600061135b61135584611465565b83611480565b9392505050565b600081815260036020526040902054633b9aca0063ffffffff90911611611344576040805162461bcd60e51b815260206004820152600360248201526239b4bb60e91b604482015290519081900360640190fd5b6000806113cc846113c6866114fb565b85611502565b9050801561135b5761135b8461159b565b600081815260036020526040902054633b9aca0063ffffffff909116118015611419575060008181526003602052604090205463ffffffff1642115b611344576040805162461bcd60e51b815260206004820152600360248201526273656960e81b604482015290519081900360640190fd5b600061135b8361145f85611465565b84611502565b6000611470826115b0565b611479836114fb565b0192915050565b6000816001600160a01b03166381fd3f0b846040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156114c857600080fd5b505af11580156114dc573d6000803e3d6000fd5b505050506040513d60208110156114f257600080fd5b50519392505050565b6022015190565b60405160009081906001600160a01b0384169085908381818185875af1925050503d806000811461154f576040519150601f19603f3d011682016040523d82523d6000602084013e611554565b606091505b5050905080611590576040805162461bcd60e51b815260206004820152600360248201526232ba3360e91b604482015290519081900360640190fd5b506001949350505050565b6115a4816115b0565b60048054909101905550565b604201519056fea264697066735822122040d4f4e159553924fcd3405061198325b4e3a8413f7dda315300452cc7e2cce564736f6c63430007000033
Deployed Bytecode
0x6080604052600436106100f75760003560e01c80639a3c6e291161008a578063c2f6ce0011610059578063c2f6ce00146105a7578063dd651ed3146105da578063f47bc89c1461060d578063ffa1ad7414610640576100fe565b80639a3c6e29146103b2578063a6f9dae114610450578063a80e7acb14610483578063bfe5d9c514610521576100fe565b80635983e6b0116100c65780635983e6b01461026b5780638815eb391461029e5780638da5cb5b146102ca578063946519f1146102fb576100fe565b80630b898c9e14610103578063200d2ed2146101c15780632e49d78b146101f7578063564201f914610226576100fe565b366100fe57005b600080fd5b34801561010f57600080fd5b506101ad600480360360c081101561012657600080fd5b6001600160a01b038235811692602081013582169260408201359092169181019060808101606082013564010000000081111561016257600080fd5b82018360208201111561017457600080fd5b8035906020019184600183028401116401000000008311171561019657600080fd5b91935091508035906020013563ffffffff166106ca565b604080519115158252519081900360200190f35b3480156101cd57600080fd5b506101d66109df565b604051808260038111156101e657fe5b815260200191505060405180910390f35b34801561020357600080fd5b506102246004803603602081101561021a57600080fd5b503560ff166109ef565b005b34801561023257600080fd5b506102596004803603602081101561024957600080fd5b50356001600160a01b0316610abf565b60408051918252519081900360200190f35b34801561027757600080fd5b506102246004803603602081101561028e57600080fd5b50356001600160a01b0316610ac6565b3480156102aa57600080fd5b506102b3610b2c565b6040805161ffff9092168252519081900360200190f35b3480156102d657600080fd5b506102df610b50565b604080516001600160a01b039092168252519081900360200190f35b34801561030757600080fd5b50610399600480360360a081101561031e57600080fd5b6001600160a01b038235811692602081013582169260408201359092169181019060808101606082013564010000000081111561035a57600080fd5b82018360208201111561036c57600080fd5b8035906020019184600183028401116401000000008311171561038e57600080fd5b919350915035610b5f565b6040805163ffffffff9092168252519081900360200190f35b3480156103be57600080fd5b50610224600480360360a08110156103d557600080fd5b6001600160a01b038235811692602081013582169260408201359092169181019060808101606082013564010000000081111561041157600080fd5b82018360208201111561042357600080fd5b8035906020019184600183028401116401000000008311171561044557600080fd5b919350915035610bad565b34801561045c57600080fd5b506102246004803603602081101561047357600080fd5b50356001600160a01b0316610db3565b34801561048f57600080fd5b50610224600480360360a08110156104a657600080fd5b6001600160a01b03823581169260208101358216926040820135909216918101906080810160608201356401000000008111156104e257600080fd5b8201836020820111156104f457600080fd5b8035906020019184600183028401116401000000008311171561051657600080fd5b919350915035610e61565b34801561052d57600080fd5b506101ad6004803603604081101561054457600080fd5b81019060208101813564010000000081111561055f57600080fd5b82018360208201111561057157600080fd5b8035906020019184600183028401116401000000008311171561059357600080fd5b9193509150356001600160a01b0316611066565b3480156105b357600080fd5b50610224600480360360208110156105ca57600080fd5b50356001600160a01b03166110f9565b3480156105e657600080fd5b50610224600480360360208110156105fd57600080fd5b50356001600160a01b0316611162565b34801561061957600080fd5b506102246004803603602081101561063057600080fd5b50356001600160a01b03166111c8565b34801561064c57600080fd5b50610655611234565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561068f578181015183820152602001610677565b50505050905090810190601f1680156106bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600380600054600160a01b900460ff1660038111156106e757fe5b1015610720576040805162461bcd60e51b815260206004820152600360248201526269637360e81b604482015290519081900360640190fd5b3360009081526002602052604090205460ff1661076a576040805162461bcd60e51b81526020600482015260036024820152626f736360e81b604482015290519081900360640190fd5b6001600160a01b038716600090815260016020526040902054879060ff166107bf576040805162461bcd60e51b8152602060048201526003602482015262696f6160e81b604482015290519081900360640190fd5b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060028101518b9061ffff908116907f000000000000000000000000000000000000000000000000000000000000000116811461085e576040805162461bcd60e51b81526020600482015260036024820152621a585d60ea1b604482015290519081900360640190fd5b6108688383611255565b6201518063ffffffff88161080159061088a575062278d0063ffffffff881611155b6108c1576040805162461bcd60e51b81526020600482015260036024820152621b1d1b60ea1b604482015290519081900360640190fd5b60006108ee8e8e8e8e8e60405180838380828437808301925050509250505060405180910390208d611295565b90506108f9816112f7565b600081815260036020908152604091829020805463ffffffff1916428c0163ffffffff161790558151601f8d018290048202810182019092528b825261096991908d908d9081908401838280828437600081840152601f19601f820116905080830192505050505050508f611347565b6109a0576040805162461bcd60e51b815260206004820152600360248201526232b63360e91b604482015290519081900360640190fd5b60405181907f102d25c49d33fcdb8976a3f2744e0785c98d9e43b88364859e6aec4ae82eff5c90600090a25060019d9c50505050505050505050505050565b600054600160a01b900460ff1681565b6000546001600160a01b03163314610a34576040805162461bcd60e51b81526020600482015260036024820152626f6f6360e81b604482015290519081900360640190fd5b7fe1377aa21d49fa10bb9ece6a0cd4f75597a90a80c3750f7f7674967f49ab9a62600060149054906101000a900460ff168260405180836003811115610a7657fe5b8152602001826003811115610a8757fe5b81526020019250505060405180910390a16000805482919060ff60a01b1916600160a01b836003811115610ab757fe5b021790555050565b5060045490565b6000546001600160a01b03163314610b0b576040805162461bcd60e51b81526020600482015260036024820152626f6f6360e81b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b7f000000000000000000000000000000000000000000000000000000000000000181565b6000546001600160a01b031681565b600080610b8c888888888860405180838380828437604051920182900390912093508a9250611295915050565b60009081526003602052604090205463ffffffff1698975050505050505050565b600280600054600160a01b900460ff166003811115610bc857fe5b1015610c01576040805162461bcd60e51b815260206004820152600360248201526269637360e81b604482015290519081900360640190fd5b8685336001600160a01b0383161480610c3c5750336001600160a01b038216148015610c3c57503360009081526001602052604090205460ff165b610c73576040805162461bcd60e51b815260206004820152600360248201526206f6f760ec1b604482015290519081900360640190fd5b6000610c9f8a8a8a8a8a60405180838380828437604051920182900390912093508c9250611295915050565b9050610caa81611362565b600081815260036020908152604091829020805463ffffffff191690558151601f8901829004820281018201909252878252610d03919089908990819084018382808284376000920191909152508d92506113b6915050565b610d3a576040805162461bcd60e51b815260206004820152600360248201526230b93360e91b604482015290519081900360640190fd5b336001600160a01b038b161415610d7b5760405181907f789952a21900cba4809507b4ba56618cee6a1e748254f8faab21e9b8f1c60bc990600090a2610da7565b60405181907f6eec2dd2382427616d4ea7ef183b16091feac4e2e63c8b55f25215f132df8d1490600090a25b50505050505050505050565b6000546001600160a01b03163314610df8576040805162461bcd60e51b81526020600482015260036024820152626f6f6360e81b604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03831690811790915560408051338152602081019290925280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a150565b600180600054600160a01b900460ff166003811115610e7c57fe5b1015610eb5576040805162461bcd60e51b815260206004820152600360248201526269637360e81b604482015290519081900360640190fd5b8685336001600160a01b0383161480610ef05750336001600160a01b038216148015610ef057503360009081526001602052604090205460ff165b610f27576040805162461bcd60e51b815260206004820152600360248201526206f6f760ec1b604482015290519081900360640190fd5b6000610f538a8a8a8a8a60405180838380828437604051920182900390912093508c9250611295915050565b9050610f5e816113dd565b600081815260036020908152604091829020805463ffffffff191690558151601f8901829004820281018201909252878252610fb7919089908990819084018382808284376000920191909152508e9250611450915050565b610fee576040805162461bcd60e51b815260206004820152600360248201526230b1b360e91b604482015290519081900360640190fd5b336001600160a01b038b16141561102f5760405181907f7b5ac55826e0ca40c3f69722d916fb9962d86cffcddc9c84d082b712419e5cbd90600090a2610da7565b60405181907fc99795d9dc9d68f27b21e122a0e663f689138f9110dee0122fc2980f8d57977590600090a250505050505050505050565b600080546001600160a01b031633146110ac576040805162461bcd60e51b81526020600482015260036024820152626f6f6360e81b604482015290519081900360640190fd5b6004805460009182905560405190916001600160a01b0385169183156108fc0291849190818181858888f193505050501580156110ed573d6000803e3d6000fd5b50600195945050505050565b6000546001600160a01b0316331461113e576040805162461bcd60e51b81526020600482015260036024820152626f6f6360e81b604482015290519081900360640190fd5b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b6000546001600160a01b031633146111a7576040805162461bcd60e51b81526020600482015260036024820152626f6f6360e81b604482015290519081900360640190fd5b6001600160a01b03166000908152600260205260409020805460ff19169055565b6000546001600160a01b0316331461120d576040805162461bcd60e51b81526020600482015260036024820152626f6f6360e81b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b604051806040016040528060058152602001640c0b8d8b8d60da1b81525081565b8151604214611291576040805162461bcd60e51b815260206004820152600360248201526218591b60ea1b604482015290519081900360640190fd5b5050565b604080516bffffffffffffffffffffffff19606097881b811660208084019190915296881b811660348301529490961b9093166048860152605c850191909152607c8085019190915281518085039091018152609c9093019052815191012090565b60008181526003602052604090205463ffffffff1615611344576040805162461bcd60e51b815260206004820152600360248201526273616560e81b604482015290519081900360640190fd5b50565b600061135b61135584611465565b83611480565b9392505050565b600081815260036020526040902054633b9aca0063ffffffff90911611611344576040805162461bcd60e51b815260206004820152600360248201526239b4bb60e91b604482015290519081900360640190fd5b6000806113cc846113c6866114fb565b85611502565b9050801561135b5761135b8461159b565b600081815260036020526040902054633b9aca0063ffffffff909116118015611419575060008181526003602052604090205463ffffffff1642115b611344576040805162461bcd60e51b815260206004820152600360248201526273656960e81b604482015290519081900360640190fd5b600061135b8361145f85611465565b84611502565b6000611470826115b0565b611479836114fb565b0192915050565b6000816001600160a01b03166381fd3f0b846040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156114c857600080fd5b505af11580156114dc573d6000803e3d6000fd5b505050506040513d60208110156114f257600080fd5b50519392505050565b6022015190565b60405160009081906001600160a01b0384169085908381818185875af1925050503d806000811461154f576040519150601f19603f3d011682016040523d82523d6000602084013e611554565b606091505b5050905080611590576040805162461bcd60e51b815260206004820152600360248201526232ba3360e91b604482015290519081900360640190fd5b506001949350505050565b6115a4816115b0565b60048054909101905550565b604201519056fea264697066735822122040d4f4e159553924fcd3405061198325b4e3a8413f7dda315300452cc7e2cce564736f6c63430007000033
Deployed Bytecode Sourcemap
20934:67:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12019:1400;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12019:1400:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12019:1400:0;-1:-1:-1;12019:1400:0;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;5940:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;5985:135;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5985:135:0;;;;:::i;:::-;;20684;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20684:135:0;-1:-1:-1;;;;;20684:135:0;;:::i;:::-;;;;;;;;;;;;;;;;6687:101;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6687:101:0;-1:-1:-1;;;;;6687:101:0;;:::i;1947:34::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4693:20;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;4693:20:0;;;;;;;;;;;;;;16180:397;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16180:397:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16180:397:0;-1:-1:-1;16180:397:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;13889:834;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13889:834:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13889:834:0;-1:-1:-1;13889:834:0;;:::i;4974:146::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4974:146:0;-1:-1:-1;;;;;4974:146:0;;:::i;15058:828::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15058:828:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15058:828:0;-1:-1:-1;15058:828:0;;:::i;19905:279::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19905:279:0;-1:-1:-1;19905:279:0;-1:-1:-1;;;;;19905:279:0;;:::i;7452:109::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7452:109:0;-1:-1:-1;;;;;7452:109:0;;:::i;7569:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7569:109:0;-1:-1:-1;;;;;7569:109:0;;:::i;6578:101::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6578:101:0;-1:-1:-1;;;;;6578:101:0;;:::i;10968:40::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12019:1400;12416:12;12270:13;;6186:6;;-1:-1:-1;;;6186:6:0;;;;:17;;;;;;;;;;6178:33;;;;;-1:-1:-1;;;6178:33:0;;;;;;;;;;;;-1:-1:-1;;;6178:33:0;;;;;;;;;;;;;;;7741:10:::1;7732:20;::::0;;;:8:::1;:20;::::0;;;;;::::1;;7724:36;;;::::0;;-1:-1:-1;;;7724:36:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;7724:36:0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;6850:16:0;::::2;;::::0;;;:7:::2;:16;::::0;;;;;12330:7;;6850:16:::2;;6842:32;;;::::0;;-1:-1:-1;;;6842:32:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;6842:32:0;;;;;;;;;;;;;::::2;;12370:10:::3;;3649:436;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;::::0;;;;-1:-1:-1;;;;3894:1:0::3;3879:17:::0;::::3;3873:24:::0;12382:5;;3916:6:::3;3851:86:::0;;::::3;::::0;3979:10:::3;3966:23;::::0;::::3;3958:39;;;::::0;;-1:-1:-1;;;3958:39:0;;::::3;;::::0;::::3;::::0;::::3;::::0;;;;-1:-1:-1;;;3958:39:0;;;;;;;;;;;;;::::3;;4033:32;4048:9;4059:5;4033:14;:32::i;:::-;11229:8:::4;12468:33;::::0;::::4;;::::0;::::4;::::0;:70:::4;;-1:-1:-1::0;11292:7:0::4;12505:33;::::0;::::4;;;12468:70;12446:154;;;::::0;;-1:-1:-1;;;12446:154:0;;::::4;;::::0;::::4;::::0;::::4;::::0;;;;-1:-1:-1;;;12446:154:0;;;;;;;;;;;;;::::4;;12611:16;12630:106;12656:5;12663:9;12674:7;12693:10;;12683:21;;;;;;;;;;;;;;;;;;;;;;;;;;;12706:19;12630:11;:106::i;:::-;12611:125;;12747:30;12768:8;12747:20;:30::i;:::-;13179:15;::::0;;;:5:::4;:15;::::0;;;;;;;;:53;;-1:-1:-1;;13179:53:0::4;13204:15;13197:35:::0;::::4;13179:53;;;::::0;;13265:35;;::::4;::::0;::::4;::::0;;::::4;::::0;::::4;::::0;;;;;;;;;;::::4;::::0;;13282:10;;13265:35;;;;;::::4;13282:10:::0;13265:35;;13282:10;13265:35;::::4;;;;;;;;;;;;;;;;;;;;;;;;;13294:5;13265:16;:35::i;:::-;13243:113;;;::::0;;-1:-1:-1;;;13243:113:0;;::::4;;::::0;::::4;::::0;::::4;::::0;;;;-1:-1:-1;;;13243:113:0;;;;;;;;;;;;;::::4;;13372:17;::::0;13380:8;;13372:17:::4;::::0;;;::::4;-1:-1:-1::0;13407:4:0::4;::::0;12019:1400;-1:-1:-1;;;;;;;;;;;;;12019:1400:0:o;5940:36::-;;;-1:-1:-1;;;5940:36:0;;;;;:::o;5985:135::-;4898:5;;-1:-1:-1;;;;;4898:5:0;4884:10;:19;4876:35;;;;;-1:-1:-1;;;4876:35:0;;;;;;;;;;;;-1:-1:-1;;;4876:35:0;;;;;;;;;;;;;;;6055:30:::1;6069:6;;;;;;;;;;;6077:7;6055:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6096:6;:16:::0;;6105:7;;6096:6;-1:-1:-1;;;;6096:16:0::1;-1:-1:-1::0;;;6105:7:0;6096:16:::1;::::0;::::1;;;;;;;;;;;5985:135:::0;:::o;20684:::-;-1:-1:-1;20796:15:0;;;20684:135::o;6687:101::-;4898:5;;-1:-1:-1;;;;;4898:5:0;4884:10;:19;4876:35;;;;;-1:-1:-1;;;4876:35:0;;;;;;;;;;;;-1:-1:-1;;;4876:35:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;6756:16:0::1;6775:5;6756:16:::0;;;:7:::1;:16;::::0;;;;:24;;-1:-1:-1;;6756:24:0::1;::::0;;6687:101::o;1947:34::-;;;:::o;4693:20::-;;;-1:-1:-1;;;;;4693:20:0;;:::o;16180:397::-;16385:13;16411:16;16430:106;16456:5;16463:9;16474:7;16493:10;;16483:21;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16506:19:0;;-1:-1:-1;16430:11:0;;-1:-1:-1;;16430:106:0:i;:::-;16554:15;;;;:5;:15;;;;;;;;;16180:397;-1:-1:-1;;;;;;;;16180:397:0:o;13889:834::-;14096:20;;6186:6;;-1:-1:-1;;;6186:6:0;;;;:17;;;;;;;;;;6178:33;;;;;-1:-1:-1;;;6178:33:0;;;;;;;;;;;;-1:-1:-1;;;6178:33:0;;;;;;;;;;;;;;;14135:5;14142:7;7021:10:::1;-1:-1:-1::0;;;;;7021:19:0;::::1;;::::0;:69:::1;;-1:-1:-1::0;7045:10:0::1;-1:-1:-1::0;;;;;7045:21:0;::::1;;:44:::0;::::1;;;-1:-1:-1::0;7078:10:0::1;7070:19;::::0;;;:7:::1;:19;::::0;;;;;::::1;;7045:44;6999:170;;;::::0;;-1:-1:-1;;;6999:170:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;6999:170:0;;;;;;;;;;;;;::::1;;14162:16:::2;14181:106;14207:5;14214:9;14225:7;14244:10;;14234:21;;;;;;;;;;::::0;;::::2;::::0;;::::2;::::0;;;;-1:-1:-1;14257:19:0;;-1:-1:-1;14181:11:0::2;::::0;-1:-1:-1;;14181:106:0:i:2;:::-;14162:125;;14298:28;14317:8;14298:18;:28::i;:::-;14436:1;14418:15:::0;;;:5:::2;:15;::::0;;;;;;;;:19;;-1:-1:-1;;14418:19:0::2;::::0;;14470:42;;::::2;::::0;::::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;;;::::2;::::0;;14490:10;;;;;;14470:42;::::2;14490:10:::0;;;;14470:42;::::2;;::::0;::::2;::::0;;;;-1:-1:-1;14502:9:0;;-1:-1:-1;14470:19:0::2;::::0;-1:-1:-1;;14470:42:0:i:2;:::-;14448:122;;;::::0;;-1:-1:-1;;;14448:122:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;14448:122:0;;;;;;;;;;;;;::::2;;14585:10;-1:-1:-1::0;;;;;14585:19:0;::::2;;14581:135;;;14626:22;::::0;14639:8;;14626:22:::2;::::0;;;::::2;14581:135;;;14686:18;::::0;14695:8;;14686:18:::2;::::0;;;::::2;14581:135;7180:1;6252::::1;;13889:834:::0;;;;;;;:::o;4974:146::-;4898:5;;-1:-1:-1;;;;;4898:5:0;4884:10;:19;4876:35;;;;;-1:-1:-1;;;4876:35:0;;;;;;;;;;;;-1:-1:-1;;;4876:35:0;;;;;;;;;;;;;;;5044:5:::1;:17:::0;;-1:-1:-1;;5044:17:0::1;-1:-1:-1::0;;;;;5044:17:0;::::1;::::0;;::::1;::::0;;;5077:35:::1;::::0;;5090:10:::1;5077:35:::0;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;;;;;;;::::1;4974:146:::0;:::o;15058:828::-;15269:18;;6186:6;;-1:-1:-1;;;6186:6:0;;;;:17;;;;;;;;;;6178:33;;;;;-1:-1:-1;;;6178:33:0;;;;;;;;;;;;-1:-1:-1;;;6178:33:0;;;;;;;;;;;;;;;15306:5;15313:7;7021:10:::1;-1:-1:-1::0;;;;;7021:19:0;::::1;;::::0;:69:::1;;-1:-1:-1::0;7045:10:0::1;-1:-1:-1::0;;;;;7045:21:0;::::1;;:44:::0;::::1;;;-1:-1:-1::0;7078:10:0::1;7070:19;::::0;;;:7:::1;:19;::::0;;;;;::::1;;7045:44;6999:170;;;::::0;;-1:-1:-1;;;6999:170:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;6999:170:0;;;;;;;;;;;;;::::1;;15333:16:::2;15352:106;15378:5;15385:9;15396:7;15415:10;;15405:21;;;;;;;;;;::::0;;::::2;::::0;;::::2;::::0;;;;-1:-1:-1;15428:19:0;;-1:-1:-1;15352:11:0::2;::::0;-1:-1:-1;;15352:106:0:i:2;:::-;15333:125;;15469:28;15488:8;15469:18;:28::i;:::-;15607:1;15589:15:::0;;;:5:::2;:15;::::0;;;;;;;;:19;;-1:-1:-1;;15589:19:0::2;::::0;;15641:35;;::::2;::::0;::::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;;;::::2;::::0;;15658:10;;;;;;15641:35;::::2;15658:10:::0;;;;15641:35;::::2;;::::0;::::2;::::0;;;;-1:-1:-1;15670:5:0;;-1:-1:-1;15641:16:0::2;::::0;-1:-1:-1;;15641:35:0:i:2;:::-;15619:114;;;::::0;;-1:-1:-1;;;15619:114:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;15619:114:0;;;;;;;;;;;;;::::2;;15748:10;-1:-1:-1::0;;;;;15748:19:0;::::2;;15744:135;;;15789:22;::::0;15802:8;;15789:22:::2;::::0;;;::::2;15744:135;;;15849:18;::::0;15858:8;;15849:18:::2;::::0;;;::::2;7180:1;6252::::1;;15058:828:::0;;;;;;;:::o;19905:279::-;20040:12;4898:5;;-1:-1:-1;;;;;4898:5:0;4884:10;:19;4876:35;;;;;-1:-1:-1;;;4876:35:0;;;;;;;;;;;;-1:-1:-1;;;4876:35:0;;;;;;;;;;;;;;;20080:15:::1;::::0;;20065:12:::1;20106:19:::0;;;;20136:18:::1;::::0;20080:15;;-1:-1:-1;;;;;20136:12:0;::::1;::::0;:18;::::1;;;::::0;20080:15;;20136:18;;20065:12;20136:18;20080:15;20136:12;:18;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;20172:4:0::1;::::0;19905:279;-1:-1:-1;;;;;19905:279:0:o;7452:109::-;4898:5;;-1:-1:-1;;;;;4898:5:0;4884:10;:19;4876:35;;;;;-1:-1:-1;;;4876:35:0;;;;;;;;;;;;-1:-1:-1;;;4876:35:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;7528:18:0::1;;::::0;;;:8:::1;:18;::::0;;;;:25;;-1:-1:-1;;7528:25:0::1;7549:4;7528:25;::::0;;7452:109::o;7569:::-;4898:5;;-1:-1:-1;;;;;4898:5:0;4884:10;:19;4876:35;;;;;-1:-1:-1;;;4876:35:0;;;;;;;;;;;;-1:-1:-1;;;4876:35:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;7644:18:0::1;7665:5;7644:18:::0;;;:8:::1;:18;::::0;;;;:26;;-1:-1:-1;;7644:26:0::1;::::0;;7569:109::o;6578:101::-;4898:5;;-1:-1:-1;;;;;4898:5:0;4884:10;:19;4876:35;;;;;-1:-1:-1;;;4876:35:0;;;;;;;;;;;;-1:-1:-1;;;4876:35:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;6648:16:0::1;;::::0;;;6667:4:::1;6648:16;::::0;;;;;;;:23;;-1:-1:-1;;6648:23:0::1;::::0;;::::1;::::0;;6578:101::o;10968:40::-;;;;;;;;;;;;;;-1:-1:-1;;;10968:40:0;;;;:::o;20478:198::-;20587:16;;18015:2;20587:41;20579:57;;;;;-1:-1:-1;;;20579:57:0;;;;;;;;;;;;-1:-1:-1;;;20579:57:0;;;;;;;;;;;;;;;20478:198;;:::o;16691:372::-;16937:107;;;-1:-1:-1;;16937:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16913:142;;;;;;16691:372::o;17071:180::-;17166:15;;;;:5;:15;;;;;;;;:20;17144:99;;;;;-1:-1:-1;;;17144:99:0;;;;;;;;;;;;-1:-1:-1;;;17144:99:0;;;;;;;;;;;;;;;17071:180;:::o;8829:204::-;8945:12;8977:48;8990:27;9007:9;8990:16;:27::i;:::-;9019:5;8977:12;:48::i;:::-;8970:55;8829:204;-1:-1:-1;;;8829:204:0:o;17259:189::-;17352:15;;;;:5;:15;;;;;;11065:10;17352:38;:15;;;:38;17330:110;;;;;-1:-1:-1;;;17330:110:0;;;;;;;;;;;;-1:-1:-1;;;17330:110:0;;;;;;;;;;;;;;9260:285;9377:12;9402:11;9416:50;9429:9;9440:20;9450:9;9440;:20::i;:::-;9462:3;9416:12;:50::i;:::-;9402:64;;9481:6;9477:36;;;9489:24;9503:9;9489:13;:24::i;17456:300::-;17608:15;;;;:5;:15;;;;;;11065:10;17608:38;:15;;;:38;:75;;;;-1:-1:-1;17668:15:0;;;;:5;:15;;;;;;;;17650;:33;17608:75;17527:221;;;;;-1:-1:-1;;;17527:221:0;;;;;;;;;;;;-1:-1:-1;;;17527:221:0;;;;;;;;;;;;;;9041:211;9155:12;9187:57;9200:9;9211:27;9228:9;9211:16;:27::i;:::-;9240:3;9187:12;:57::i;8673:148::-;8746:7;8796:17;8803:9;8796:6;:17::i;:::-;8773:20;8783:9;8773;:20::i;:::-;:40;;8673:148;-1:-1:-1;;8673:148:0:o;2733:199::-;2837:12;2894:5;-1:-1:-1;;;;;2869:47:0;;2917:6;2869:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2869:55:0;;2733:199;-1:-1:-1;;;2733:199:0:o;18488:236::-;18702:2;18687:18;18681:25;;18656:61::o;19075:694::-;19639:29;;19224:12;;;;-1:-1:-1;;;;;19639:8:0;;;19655:7;;19224:12;19639:29;19224:12;19639:29;19655:7;19639:8;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19610:58;;;19687:18;19679:34;;;;;-1:-1:-1;;;19679:34:0;;;;;;;;;;;;-1:-1:-1;;;19679:34:0;;;;;;;;;;;;;;;-1:-1:-1;19757:4:0;;19075:694;-1:-1:-1;;;;19075:694:0:o;19777:120::-;19872:17;19879:9;19872:6;:17::i;:::-;19853:15;:36;;;;;;;-1:-1:-1;19777:120:0:o;18840:227::-;19045:2;19030:18;19024:25;;19002:58::o
Swarm Source
ipfs://40d4f4e159553924fcd3405061198325b4e3a8413f7dda315300452cc7e2cce5
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.