Source Code
Overview
S Balance
More Info
ContractCreator
Latest 25 from a total of 83 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Fire Random | 26030784 | 6 hrs ago | IN | 0 S | 0.00017518 | ||||
Fire Random | 26030763 | 6 hrs ago | IN | 0 S | 0.00017518 | ||||
Fire Random | 26030747 | 6 hrs ago | IN | 0 S | 0.00017518 | ||||
Fire Random | 26030730 | 6 hrs ago | IN | 0 S | 0.00017518 | ||||
Fire Random | 26030715 | 6 hrs ago | IN | 0 S | 0.00017518 | ||||
Fire Random | 26030697 | 6 hrs ago | IN | 0 S | 0.00017518 | ||||
Fire Random | 26030682 | 6 hrs ago | IN | 0 S | 0.00017518 | ||||
Fire Random | 26030667 | 6 hrs ago | IN | 0 S | 0.00017518 | ||||
Fire Random | 26030649 | 6 hrs ago | IN | 0 S | 0.00017518 | ||||
Fire Random | 26030632 | 6 hrs ago | IN | 0 S | 0.00017518 | ||||
Fire Random | 26030614 | 6 hrs ago | IN | 0 S | 0.00017518 | ||||
Fire Random | 26030596 | 6 hrs ago | IN | 0 S | 0.00017518 | ||||
Fire Random | 26030578 | 6 hrs ago | IN | 0 S | 0.00017518 | ||||
Fire Random | 26030560 | 6 hrs ago | IN | 0 S | 0.00017518 | ||||
Fire Random | 26030543 | 6 hrs ago | IN | 0 S | 0.00017518 | ||||
Fire Random | 26030529 | 6 hrs ago | IN | 0 S | 0.00017518 | ||||
Fire Random | 26030513 | 6 hrs ago | IN | 0 S | 0.00017518 | ||||
Fire Random | 26030496 | 6 hrs ago | IN | 0 S | 0.00017518 | ||||
Fire Random | 26030476 | 6 hrs ago | IN | 0 S | 0.00017518 | ||||
Fire Random | 26030456 | 6 hrs ago | IN | 0 S | 0.00017518 | ||||
Fire Random | 26030439 | 6 hrs ago | IN | 0 S | 0.00017518 | ||||
Fire Random | 26030423 | 6 hrs ago | IN | 0 S | 0.00017518 | ||||
Fire Random | 26030405 | 6 hrs ago | IN | 0 S | 0.00017518 | ||||
Fire Random | 26030384 | 6 hrs ago | IN | 0 S | 0.00017518 | ||||
Fire Random | 26030367 | 6 hrs ago | IN | 0 S | 0.00017518 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
26030784 | 6 hrs ago | 0 S | ||||
26030763 | 6 hrs ago | 0 S | ||||
26030747 | 6 hrs ago | 0 S | ||||
26030730 | 6 hrs ago | 0 S | ||||
26030715 | 6 hrs ago | 0 S | ||||
26030697 | 6 hrs ago | 0 S | ||||
26030682 | 6 hrs ago | 0 S | ||||
26030667 | 6 hrs ago | 0 S | ||||
26030649 | 6 hrs ago | 0 S | ||||
26030632 | 6 hrs ago | 0 S | ||||
26030614 | 6 hrs ago | 0 S | ||||
26030596 | 6 hrs ago | 0 S | ||||
26030578 | 6 hrs ago | 0 S | ||||
26030560 | 6 hrs ago | 0 S | ||||
26030543 | 6 hrs ago | 0 S | ||||
26030529 | 6 hrs ago | 0 S | ||||
26030513 | 6 hrs ago | 0 S | ||||
26030496 | 6 hrs ago | 0 S | ||||
26030476 | 6 hrs ago | 0 S | ||||
26030456 | 6 hrs ago | 0 S | ||||
26030439 | 6 hrs ago | 0 S | ||||
26030423 | 6 hrs ago | 0 S | ||||
26030405 | 6 hrs ago | 0 S | ||||
26030384 | 6 hrs ago | 0 S | ||||
26030367 | 6 hrs ago | 0 S |
Loading...
Loading
Contract Name:
sdeamon0xRandom
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity Standard Json-Input format)
// File: contracts\openzeppelin\contracts\utils\Context.sol // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } } // File: contracts\openzeppelin\contracts\access\Ownable.sol // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.19; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * The initial owner is set to the address provided by the deployer. This can * later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: contracts\openzeppelin\contracts\access\Ownable2Step.sol // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable2Step.sol) pragma solidity ^0.8.19; /** * @dev Contract module which provides access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * This extension of the {Ownable} contract includes a two-step mechanism to transfer * ownership, where the new owner must call {acceptOwnership} in order to replace the * old one. This can help prevent common mistakes, such as transfers of ownership to * incorrect accounts, or to contracts that are unable to interact with the * permission system. * * The initial owner is specified at deployment time in the constructor for `Ownable`. This * can later be changed with {transferOwnership} and {acceptOwnership}. * * This module is used through inheritance. It will make available all functions * from parent (Ownable). */ abstract contract Ownable2Step is Ownable { address private _pendingOwner; event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner); /** * @dev Returns the address of the pending owner. */ function pendingOwner() public view virtual returns (address) { return _pendingOwner; } /** * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual override onlyOwner { _pendingOwner = newOwner; emit OwnershipTransferStarted(owner(), newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner. * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual override { delete _pendingOwner; super._transferOwnership(newOwner); } /** * @dev The new owner accepts the ownership transfer. */ function acceptOwnership() public virtual { address sender = _msgSender(); if (pendingOwner() != sender) { revert OwnableUnauthorizedAccount(sender); } _transferOwnership(sender); } } // File: contracts\openzeppelin\contracts\utils\Panic.sol pragma solidity ^0.8.19; /** * @dev Helper library for emitting standardized panic codes. * * ```solidity * contract Example { * using Panic for uint256; * * // Use any of the declared internal constants * function foo() { Panic.GENERIC.panic(); } * * // Alternatively * function foo() { Panic.panic(Panic.GENERIC); } * } * ``` * * Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil]. */ // slither-disable-next-line unused-state library Panic { /// @dev generic / unspecified error uint256 internal constant GENERIC = 0x00; /// @dev used by the assert() builtin uint256 internal constant ASSERT = 0x01; /// @dev arithmetic underflow or overflow uint256 internal constant UNDER_OVERFLOW = 0x11; /// @dev division or modulo by zero uint256 internal constant DIVISION_BY_ZERO = 0x12; /// @dev enum conversion error uint256 internal constant ENUM_CONVERSION_ERROR = 0x21; /// @dev invalid encoding in storage uint256 internal constant STORAGE_ENCODING_ERROR = 0x22; /// @dev empty array pop uint256 internal constant EMPTY_ARRAY_POP = 0x31; /// @dev array out of bounds access uint256 internal constant ARRAY_OUT_OF_BOUNDS = 0x32; /// @dev resource error (too large allocation or too large array) uint256 internal constant RESOURCE_ERROR = 0x41; /// @dev calling invalid internal function uint256 internal constant INVALID_INTERNAL_FUNCTION = 0x51; /// @dev Reverts with a panic code. Recommended to use with /// the internal constants with predefined codes. function panic(uint256 code) internal pure { assembly ("memory-safe") { mstore(0x00, 0x4e487b71) mstore(0x20, code) revert(0x1c, 0x24) } } } // File: contracts/sdaemon0x/sdaemon0xRandomizer.sol pragma solidity ^0.8.19; // ------------------------------------------------------------ // // DICE BY RND ASK COMMIT REVEAL (ACR) // // Constructed waiting Chainlink or good VRF on Sonic... // and prevent double TX to create pseudo-random. // Designed for sDeamon // inspired by lib STL from C++ and openzeppelin double deque. // // ----------------------------------------------------------- interface sdeamon0xRandomCallback { function onRandomCallback(uint256 uid, uint256 res) external; } interface sdeamon0xRandomItf { function beginRandom(sdeamon0xRandomCallback CA) external returns (uint256); } contract sdeamon0xRandom is sdeamon0xRandomItf, Ownable2Step { constructor() Ownable(0x88524E752144C15dc1a12BA3978c2d700dc97498) { randomizer[0x88524E752144C15dc1a12BA3978c2d700dc97498] = true; nonceOne = uint256(keccak256(abi.encodePacked(block.prevrandao, msg.sender, block.timestamp, uint256(0x666)))); nonceTwo = uint256(keccak256(abi.encodePacked(uint256(0x666), block.timestamp, block.prevrandao, msg.sender, uint256(69)))); for(uint256 i=0; i<8; ++i) queues.push(); } mapping(address => bool) public randomizer; function setRandomizer(address addr, bool b) external onlyOwner { randomizer[addr] = b; } modifier onlyRandomizer() { require(randomizer[msg.sender] == true); _; } mapping(address => sdeamon0xRandomCallback) public registrars; mapping(sdeamon0xRandomCallback => bool) public registereds; function registerCA(sdeamon0xRandomCallback CA) payable public { if (msg.sender != owner()) { require(msg.value >= 500_000 ether, "No sufficient fund"); //price to buy my validator } registrars[msg.sender] = CA; registereds[CA] = true; } function unregisterCA(sdeamon0xRandomCallback CA) public { require(registrars[msg.sender] == CA, "not your CA"); registereds[CA] = false; registrars[msg.sender] = sdeamon0xRandomCallback(address(0)); } uint256 private nonceOne; uint256 private nonceTwo; uint256 public uniqueId = 0x666; struct Commit { uint256 uniqueId; sdeamon0xRandomCallback addr; uint256 salt; } struct CommitQueue { uint128 _begin; uint128 _end; mapping(uint128 index => Commit) _data; } CommitQueue[] private queues; // return the number of canal function canal_length() public view returns (uint256) { return queues.length; } function pushFront(uint256 canal, Commit memory value) internal { require(canal < queues.length); unchecked { CommitQueue storage queue = queues[canal]; uint128 frontIndex = queue._begin - 1; if (frontIndex == queue._end) Panic.panic(Panic.RESOURCE_ERROR); queue._data[frontIndex] = value; queue._begin = frontIndex; } } function popBack(uint256 canal) internal returns (Commit memory value) { require(canal < queues.length); unchecked { CommitQueue storage queue = queues[canal]; uint128 backIndex = queue._end; if (backIndex == queue._begin) Panic.panic(Panic.EMPTY_ARRAY_POP); --backIndex; value = queue._data[backIndex]; delete queue._data[backIndex]; queue._end = backIndex; } } function queueLen(uint256 canal) public view returns (uint256) { require(canal < queues.length); unchecked { CommitQueue storage queue = queues[canal]; return uint256(queue._end - queue._begin); } } uint256 canal_counter = 0; // Ask. function beginRandom(sdeamon0xRandomCallback CA) public returns (uint256) { require(registereds[CA] == true, "contract not registered"); unchecked { nonceOne += 13; nonceTwo += 7; } ++uniqueId; uint256 salt = uint256(keccak256(abi.encodePacked(nonceOne, block.timestamp, block.prevrandao, msg.sender, nonceTwo))); pushFront(canal_counter, Commit(uniqueId, CA, salt)); canal_counter++; canal_counter %= queues.length; return uniqueId; } // Reveal. function fireRandom(uint256 canal) public onlyRandomizer { require(queueLen(canal) > 0, 'nothing to launch'); Commit memory c = popBack(canal); uint256 random = uint256(keccak256(abi.encodePacked(c.salt, nonceOne, c.uniqueId, uniqueId, block.prevrandao, msg.sender, nonceTwo))); c.addr.onRandomCallback(c.uniqueId, random); } // clean to debug if onRandomCallback failed ! function cleanQueue(uint256 canal) public onlyRandomizer { while(queueLen(canal) > 0) { popBack(canal); } } // withdraw to buy a validator "Sonic" function withdraw(uint256 amount) external onlyOwner { (bool success,) = payable(msg.sender).call{value: amount}(""); require(success); } }
{ "metadata": { "appendCBOR": true, "bytecodeHash": "ipfs", "useLiteralContent": false }, "optimizer": { "enabled": true, "runs": 1000000 }, "viaIR": true, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract sdeamon0xRandomCallback","name":"CA","type":"address"}],"name":"beginRandom","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"canal_length","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"canal","type":"uint256"}],"name":"cleanQueue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"canal","type":"uint256"}],"name":"fireRandom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"canal","type":"uint256"}],"name":"queueLen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"randomizer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract sdeamon0xRandomCallback","name":"CA","type":"address"}],"name":"registerCA","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract sdeamon0xRandomCallback","name":"","type":"address"}],"name":"registereds","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"registrars","outputs":[{"internalType":"contract sdeamon0xRandomCallback","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"b","type":"bool"}],"name":"setRandomizer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniqueId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract sdeamon0xRandomCallback","name":"CA","type":"address"}],"name":"unregisterCA","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080346101d057600180546001600160a01b03199081168255600080549182167388524e752144c15dc1a12ba3978c2d700dc974989081178255909181906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08480a361066690816007558260095582526002602052604082208360ff1982541617905560208401934485523360601b908160408201524260548201528260748201526074815260a081019160018060401b0396828410888511176101bc5760408490528251902060055560c082019384524260e08301524461010083015261012082015260456101348201526094825261016001948511818610176101a857846040525190206006558181905b610129575b6040516111f790816101d68239f35b6008808210156101a25780546801000000000000000081101561018e5784810190818355101561017a578252600019811461016657820182610115565b634e487b7160e01b82526011600452602482fd5b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b84526041600452602484fd5b5061011a565b634e487b7160e01b83526041600452602483fd5b634e487b7160e01b86526041600452602486fd5b600080fdfe608060408181526004918236101561001657600080fd5b600090813560e01c9081630d97ca3114610dc8575080631d59e15914610bc65780632e1a7d4d14610ab957806355a08231146109895780635999e5121461094c578063629c52a91461090f578063654cafc414610871578063715018a6146107cb57806379ba5097146106e757806389aeca76146106825780638d6d8477146106155780638da5cb5b146105c4578063ca28204e14610319578063cf2bf835146102b2578063e30c39781461025b578063ea124ae3146101dd578063f2fde38b146101305763fa50bf77146100ea57600080fd5b3461012d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012d575061012660209235610fd0565b9051908152f35b80fd5b503461012d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012d57610168610eee565b610170610f16565b73ffffffffffffffffffffffffffffffffffffffff80911690817fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001558254167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b5091346102575760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102575760ff903591338452600260205260019182918520541615150361025757805b610235578280f35b61023e82610fd0565b156102535761024c826110aa565b508061022d565b8280f35b8280fd5b5090346102ae57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102ae5760209073ffffffffffffffffffffffffffffffffffffffff600154169051908152f35b5080fd5b5090346102ae5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102ae5760ff8160209373ffffffffffffffffffffffffffffffffffffffff610306610eee565b1681526002855220541690519015158152f35b50913461025757602092837ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012d57813573ffffffffffffffffffffffffffffffffffffffff80821680920361025757818352838652600160ff868520541615150361056857600d6005540180600555600760065401806006556103a2600754611003565b8060075587519189830193845242898401524460608401523360601b608084015260948301526094825260c082019282841067ffffffffffffffff85111761053a5761010090848a528351902092600954926103fd8661105f565b855260e08101968752019182526008548110156105365761041d90610f67565b50938454936fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81871601169460801c851461052557906002929185600052600187018b528960002094518555600185019151167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055519101557fffffffffffffffffffffffffffffffff000000000000000000000000000000008254161790556104de600954611003565b906008549283156104f9575050066009556007549051908152f35b9060126024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b60418a634e487b718952526024601cfd5b8580fd5b6041887f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b606484878751917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601760248201527f636f6e7472616374206e6f7420726567697374657265640000000000000000006044820152fd5b5090346102ae57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102ae5773ffffffffffffffffffffffffffffffffffffffff60209254169051908152f35b5091346102575760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261025757803573ffffffffffffffffffffffffffffffffffffffff811680910361067e578360ff92849260209652855220541690519015158152f35b8380fd5b5090346102ae5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102ae576020918173ffffffffffffffffffffffffffffffffffffffff91826106d6610eee565b168152600385522054169051908152f35b5091903461025757827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610257576001549173ffffffffffffffffffffffffffffffffffffffff91338385160361079b5750507fffffffffffffffffffffffff00000000000000000000000000000000000000008092166001556000549133908316176000553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a380f35b6024925051907f118cdaa70000000000000000000000000000000000000000000000000000000082523390820152fd5b503461012d57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012d57610802610f16565b600073ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffff0000000000000000000000000000000000000000806001541660015582549081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b5090346102ae57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102ae576108a9610eee565b906024359182151580930361067e5773ffffffffffffffffffffffffffffffffffffffff906108d6610f16565b168352600260205282209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00835416911617905580f35b5090346102ae57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102ae576020906007549051908152f35b5090346102ae57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102ae576020906008549051908152f35b509160207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261025757803573ffffffffffffffffffffffffffffffffffffffff808216809203610ab5578454163303610a46575b3384526003602052828420817fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790558352602052812060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905580f35b6969e10de76676d08000003410156109e05750602060649251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601260248201527f4e6f2073756666696369656e742066756e6400000000000000000000000000006044820152fd5b8480fd5b5091346102575760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261025757610af2610f16565b828080808435335af1913d15610bbf573d9067ffffffffffffffff90818311610b93578051937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f81601f870116011685019285841090841117610b6557505281528260203d92013e5b1561012d5780f35b6041907f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b6024866041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5050610b5d565b509190346102575760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102575781353384526002602052600160ff838620541615150361067e57610c1b81610fd0565b15610d6b57610c29906110aa565b9181830151600554938051600754600654918651976020890195865287890152606088015260808701524460a08701523360601b60c087015260d486015260d4855261010085019467ffffffffffffffff8611928187108417610d3f578686528151902060208301519251889373ffffffffffffffffffffffffffffffffffffffff1692833b15610ab5578893604493610124879387957fa4b1d16800000000000000000000000000000000000000000000000000000000875261010482015201525af18015610d3557610cfb578480f35b610d09575052388080808480f35b8360416024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b83513d87823e3d90fd5b6024886041877f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b60648360208451917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601160248201527f6e6f7468696e6720746f206c61756e63680000000000000000000000000000006044820152fd5b838584923461067e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261067e5781359073ffffffffffffffffffffffffffffffffffffffff8083168093036105365782903387526003602052858720541603610e93575083526020528082207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008154169055338252600360205281207fffffffffffffffffffffffff0000000000000000000000000000000000000000815416905580f35b806020847f08c379a00000000000000000000000000000000000000000000000000000000060649452820152600b60248201527f6e6f7420796f75722043410000000000000000000000000000000000000000006044820152fd5b6004359073ffffffffffffffffffffffffffffffffffffffff82168203610f1157565b600080fd5b73ffffffffffffffffffffffffffffffffffffffff600054163303610f3757565b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fd5b600854811015610fa157600860005260011b7ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30190600090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600854811015610f1157610fe390610f67565b50546fffffffffffffffffffffffffffffffff908181169060801c031690565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110305760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6060810190811067ffffffffffffffff82111761107b57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b906040809281516110ba8161105f565b600092818480935282602082015201526008548110156102ae576110dd90610f67565b509081548060801c6fffffffffffffffffffffffffffffffff80921681146111af577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01916002828416966001860188845280602052818420838351916111438361105f565b8054835273ffffffffffffffffffffffffffffffffffffffff6001820154166020840152015483820152988452602052822082815582600182015501557fffffffffffffffffffffffffffffffff0000000000000000000000000000000083549260801b169116179055565b634e487b71835260316020526024601cfdfea2646970667358221220a60e16c7b8228d883bb5f63881cb6fa8de2a87b0e783578462f177e2277edd1064736f6c63430008130033
Deployed Bytecode
0x608060408181526004918236101561001657600080fd5b600090813560e01c9081630d97ca3114610dc8575080631d59e15914610bc65780632e1a7d4d14610ab957806355a08231146109895780635999e5121461094c578063629c52a91461090f578063654cafc414610871578063715018a6146107cb57806379ba5097146106e757806389aeca76146106825780638d6d8477146106155780638da5cb5b146105c4578063ca28204e14610319578063cf2bf835146102b2578063e30c39781461025b578063ea124ae3146101dd578063f2fde38b146101305763fa50bf77146100ea57600080fd5b3461012d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012d575061012660209235610fd0565b9051908152f35b80fd5b503461012d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012d57610168610eee565b610170610f16565b73ffffffffffffffffffffffffffffffffffffffff80911690817fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001558254167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b5091346102575760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102575760ff903591338452600260205260019182918520541615150361025757805b610235578280f35b61023e82610fd0565b156102535761024c826110aa565b508061022d565b8280f35b8280fd5b5090346102ae57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102ae5760209073ffffffffffffffffffffffffffffffffffffffff600154169051908152f35b5080fd5b5090346102ae5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102ae5760ff8160209373ffffffffffffffffffffffffffffffffffffffff610306610eee565b1681526002855220541690519015158152f35b50913461025757602092837ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012d57813573ffffffffffffffffffffffffffffffffffffffff80821680920361025757818352838652600160ff868520541615150361056857600d6005540180600555600760065401806006556103a2600754611003565b8060075587519189830193845242898401524460608401523360601b608084015260948301526094825260c082019282841067ffffffffffffffff85111761053a5761010090848a528351902092600954926103fd8661105f565b855260e08101968752019182526008548110156105365761041d90610f67565b50938454936fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81871601169460801c851461052557906002929185600052600187018b528960002094518555600185019151167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055519101557fffffffffffffffffffffffffffffffff000000000000000000000000000000008254161790556104de600954611003565b906008549283156104f9575050066009556007549051908152f35b9060126024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b60418a634e487b718952526024601cfd5b8580fd5b6041887f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b606484878751917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601760248201527f636f6e7472616374206e6f7420726567697374657265640000000000000000006044820152fd5b5090346102ae57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102ae5773ffffffffffffffffffffffffffffffffffffffff60209254169051908152f35b5091346102575760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261025757803573ffffffffffffffffffffffffffffffffffffffff811680910361067e578360ff92849260209652855220541690519015158152f35b8380fd5b5090346102ae5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102ae576020918173ffffffffffffffffffffffffffffffffffffffff91826106d6610eee565b168152600385522054169051908152f35b5091903461025757827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610257576001549173ffffffffffffffffffffffffffffffffffffffff91338385160361079b5750507fffffffffffffffffffffffff00000000000000000000000000000000000000008092166001556000549133908316176000553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a380f35b6024925051907f118cdaa70000000000000000000000000000000000000000000000000000000082523390820152fd5b503461012d57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012d57610802610f16565b600073ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffff0000000000000000000000000000000000000000806001541660015582549081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b5090346102ae57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102ae576108a9610eee565b906024359182151580930361067e5773ffffffffffffffffffffffffffffffffffffffff906108d6610f16565b168352600260205282209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00835416911617905580f35b5090346102ae57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102ae576020906007549051908152f35b5090346102ae57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102ae576020906008549051908152f35b509160207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261025757803573ffffffffffffffffffffffffffffffffffffffff808216809203610ab5578454163303610a46575b3384526003602052828420817fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790558352602052812060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905580f35b6969e10de76676d08000003410156109e05750602060649251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601260248201527f4e6f2073756666696369656e742066756e6400000000000000000000000000006044820152fd5b8480fd5b5091346102575760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261025757610af2610f16565b828080808435335af1913d15610bbf573d9067ffffffffffffffff90818311610b93578051937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f81601f870116011685019285841090841117610b6557505281528260203d92013e5b1561012d5780f35b6041907f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b6024866041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5050610b5d565b509190346102575760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102575781353384526002602052600160ff838620541615150361067e57610c1b81610fd0565b15610d6b57610c29906110aa565b9181830151600554938051600754600654918651976020890195865287890152606088015260808701524460a08701523360601b60c087015260d486015260d4855261010085019467ffffffffffffffff8611928187108417610d3f578686528151902060208301519251889373ffffffffffffffffffffffffffffffffffffffff1692833b15610ab5578893604493610124879387957fa4b1d16800000000000000000000000000000000000000000000000000000000875261010482015201525af18015610d3557610cfb578480f35b610d09575052388080808480f35b8360416024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b83513d87823e3d90fd5b6024886041877f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b60648360208451917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601160248201527f6e6f7468696e6720746f206c61756e63680000000000000000000000000000006044820152fd5b838584923461067e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261067e5781359073ffffffffffffffffffffffffffffffffffffffff8083168093036105365782903387526003602052858720541603610e93575083526020528082207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008154169055338252600360205281207fffffffffffffffffffffffff0000000000000000000000000000000000000000815416905580f35b806020847f08c379a00000000000000000000000000000000000000000000000000000000060649452820152600b60248201527f6e6f7420796f75722043410000000000000000000000000000000000000000006044820152fd5b6004359073ffffffffffffffffffffffffffffffffffffffff82168203610f1157565b600080fd5b73ffffffffffffffffffffffffffffffffffffffff600054163303610f3757565b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fd5b600854811015610fa157600860005260011b7ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30190600090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600854811015610f1157610fe390610f67565b50546fffffffffffffffffffffffffffffffff908181169060801c031690565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110305760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6060810190811067ffffffffffffffff82111761107b57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b906040809281516110ba8161105f565b600092818480935282602082015201526008548110156102ae576110dd90610f67565b509081548060801c6fffffffffffffffffffffffffffffffff80921681146111af577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01916002828416966001860188845280602052818420838351916111438361105f565b8054835273ffffffffffffffffffffffffffffffffffffffff6001820154166020840152015483820152988452602052822082815582600182015501557fffffffffffffffffffffffffffffffff0000000000000000000000000000000083549260801b169116179055565b634e487b71835260316020526024601cfdfea2646970667358221220a60e16c7b8228d883bb5f63881cb6fa8de2a87b0e783578462f177e2277edd1064736f6c63430008130033
Deployed Bytecode Sourcemap
9165:4606:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2488:65;;:::i;:::-;9165:4606;;;;;;;5769:24;9165:4606;;;5769:24;9165:4606;;;;5809:43;;;;9165:4606;;;;;;;;;;;;;;;;;;9919:10;;9165:4606;;9908:10;9165:4606;;;;;;;;;;;;9908:30;9165:4606;;13483:68;9165:4606;;;;;;13483:68;13489:15;;;:::i;:::-;:19;;;13525:14;;;:::i;:::-;;13483:68;;;13489:19;9165:4606;;;;;;;;;;;;;;;;;;;;;;;5461:13;9165:4606;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;9704:42;9165:4606;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12533:4;9165:4606;;;;;;;;12514:23;9165:4606;;12613:2;12601:14;9165:4606;;;12601:14;9165:4606;12642:1;12630:13;9165:4606;;;12630:13;9165:4606;12665:10;12642:1;9165:4606;12665:10;:::i;:::-;9165:4606;12642:1;9165:4606;;;12719:83;;;;9165:4606;;;12746:15;9165:4606;;;;12763:16;9165:4606;;;;12781:10;9165:4606;;;;;;;;;;;12719:83;;9165:4606;;;;;;;;;;;;;12840:26;9165:4606;;;;;;12709:94;;9165:4606;12825:13;9165:4606;;;;;:::i;:::-;;;;12840:26;;9165:4606;;;12840:26;9165:4606;;;11291:6;9165:4606;11283:21;;9165:4606;;;11369:13;;;:::i;:::-;9165:4606;;;;;;;;;;;;;;;11453:24;;11449:63;;8029:4;;;;;9165:4606;8029:4;12533;11527:11;;8029:4;;;9165:4606;8029:4;;;9165:4606;;12533:4;8029;;;;9165:4606;;;;;;;;8029:4;;;9165:4606;8029:4;;;;;;;12878:15;12825:13;9165:4606;12878:15;:::i;:::-;9165:4606;11291:6;9165:4606;;;;;;;;;12825:13;9165:4606;12642:1;9165:4606;;;;;;;;;;;;;;;;;11449:63;8029:4;8327:139;;;;;;;;9165:4606;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;9965:61;9165:4606;;;;;;;;;;;;;;;;;;;;;;;;;5461:13;9165:4606;;;740:10;;9165:4606;;;6384:24;6380:98;;9165:4606;;;;;;5461:13;9165:4606;;;740:10;;9165:4606;;;;;;740:10;9165:4606;;4080:40;9165:4606;4080:40;;9165:4606;;6380:98;9165:4606;;;;6432:34;;;;740:10;6432:34;;;9165:4606;6432:34;9165:4606;;;;;;;;;;;;2488:65;;:::i;:::-;9165:4606;;;;6131:20;9165:4606;;6131:20;9165:4606;;;;;;;;;4080:40;;;;9165:4606;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;2488:65;;;:::i;:::-;9165:4606;;;9829:10;9165:4606;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10702:31;9165:4606;;;;;;;;;;;;;;;;;;;;;;11173:6;9165:4606;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10182:10;:21;10178:139;;9165:4606;10182:10;9165:4606;;10327:10;9165:4606;;;;;;;;;;;;;;;;;;;10383:4;9165:4606;;;;;;;;;10178:139;10241:13;10228:9;:26;9165:4606;10178:139;9165:4606;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2488:65;;:::i;:::-;9165:4606;;;;;;13698:10;13690:43;;9165:4606;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9919:10;9165:4606;;9908:10;9165:4606;;;;;;;;;;;9908:30;9165:4606;;13067:15;;;:::i;:::-;:19;9165:4606;;13137:14;;;:::i;:::-;13214:6;;;;8029:4;13222:8;9165:4606;8029:4;;;13244:8;9165:4606;13284:8;9165:4606;;;;13197:96;9165:4606;13197:96;;9165:4606;;;;;;;;;;;;;;;13254:16;9165:4606;;;;9919:10;9165:4606;;;;;;;;;;;13197:96;;9165:4606;;;;;;;;;;;;;;;;;;;;13187:107;;9165:4606;13306:6;;8029:4;;;9165:4606;;;;;13306:43;;;;;;;9165:4606;13306:43;9165:4606;13306:43;;;;9165:4606;13306:43;;;;;9165:4606;;;13306:43;;;;;;;;9165:4606;;;13306:43;9165:4606;;;;13306:43;;;;9165:4606;;;;;;;;;;;;;13306:43;9165:4606;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10488:10;;;9165:4606;;10477:10;9165:4606;;;;;;;10477:28;9165:4606;;;;;;;;;;;;;;;;10488:10;9165:4606;;10477:10;9165:4606;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;2795:166;9165:4606;2705:6;9165:4606;;740:10;2855:23;2851:103;;2795:166::o;2851:103::-;9165:4606;;;2902:40;;;740:10;2902:40;;;9165:4606;2902:40;9165:4606;11291:6;9165:4606;;;;;;11291:6;-1:-1:-1;9165:4606:0;;;;;;-1:-1:-1;9165:4606:0;:::o;:::-;;;;;;;;;;12114:256;12204:6;9165:4606;12196:21;;9165:4606;;;12282:13;;;:::i;:::-;9165:4606;;;;;;;;;;;;12114:256;:::o;9165:4606::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;11623:485;;9165:4606;;;;;;;;:::i;:::-;-1:-1:-1;9165:4606:0;;;;;;;;;;;;;11721:6;9165:4606;11713:21;;9165:4606;;;11799:13;;;:::i;:::-;9165:4606;;;;;;;;;;;11876:25;;11872:65;;7804:4;;9165:4606;7804:4;9165:4606;;;11986:11;;;;8029:4;;;;9165:4606;8029:4;;;;9165:4606;;;;;;;:::i;:::-;;;;;;11986:11;7804:4;;9165:4606;;;7804:4;;9165:4606;7804:4;9165:4606;7804:4;;;9165:4606;8029:4;;;9165:4606;8029:4;;;7804;;;;11986:11;7804:4;;;;;;;;;9165:4606;7804:4;;;;;;;11623:485::o;11872:65::-;8327:139;;;7804:4;9165:4606;8327:139;;;
Swarm Source
ipfs://a60e16c7b8228d883bb5f63881cb6fa8de2a87b0e783578462f177e2277edd10
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.