Source Code
Overview
S Balance
More Info
ContractCreator
Latest 8 from a total of 8 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Register CA | 22700905 | 4 days ago | IN | 0 S | 0.00007076 | ||||
Register CA | 22696071 | 4 days ago | IN | 0 S | 0.00007076 | ||||
Register CA | 22695385 | 4 days ago | IN | 0 S | 0.00029239 | ||||
Fire Random | 22327886 | 5 days ago | IN | 0 S | 0.00005122 | ||||
Clean Queue | 22327357 | 5 days ago | IN | 0 S | 0.00008555 | ||||
Register CA | 22327066 | 5 days ago | IN | 0 S | 0.00009446 | ||||
Unregister CA | 22327017 | 5 days ago | IN | 0 S | 0.00011203 | ||||
Register CA | 22326881 | 5 days ago | IN | 0 S | 0.00009446 |
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/games/pure_vrf.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(msg.sender) { 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)))); } 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"); cleanQueue(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 queue; function pushFront(Commit memory value) internal { unchecked { uint128 frontIndex = queue._begin - 1; if (frontIndex == queue._end) Panic.panic(Panic.RESOURCE_ERROR); queue._data[frontIndex] = value; queue._begin = frontIndex; } } function popBack() internal returns (Commit memory value) { unchecked { 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() public view returns (uint256) { unchecked { return uint256(queue._end - queue._begin); } } // 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(Commit(uniqueId, CA, salt)); return uniqueId; } // Reveal. function fireRandom(uint256 len) public onlyOwner { require(queueLen() > 0, 'nothing to launch'); require(len<=queueLen(), 'bad len'); for (uint256 i=0; i<len; i++) { Commit memory c = popBack(); uint256 random = uint256(keccak256(abi.encodePacked(c.salt, nonceOne, c.uniqueId, uniqueId, block.prevrandao, msg.sender, nonceTwo))); c.addr.onRandomCallback(c.uniqueId, random); } } // clean. function cleanQueue(sdeamon0xRandomCallback CA) public { require(registrars[msg.sender] == CA, "not your CA"); uint256 len = queueLen(); for (uint256 i=0; i<len; i++) { popBack(); } } // 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" ] } } }
[{"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":[{"internalType":"contract sdeamon0xRandomCallback","name":"CA","type":"address"}],"name":"cleanQueue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"len","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":[],"name":"queueLen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"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
6080806040523461013b57331561012557600180546001600160a01b03199081169091556000805491821633908117825560405191926001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08480a3610666908160065560208101924484523360601b918260408201524260548201528360748201526074815260a081019260018060401b0395828510878611176101115760408590528251902060045560c082019485524260e08301524461010083015261012082015260456101348201526094835261016001938411828510176100fd57508260405251902060055561108b90816101418239f35b634e487b7160e01b81526041600452602490fd5b634e487b7160e01b84526041600452602484fd5b631e4fbdf760e01b815260006004820152602490fd5b600080fdfe60406080815260048036101561001457600080fd5b600091823560e01c9081630d97ca3114610ca45781631d59e159146109f45781632e1a7d4d146108f357816355a08231146107be578163629c52a914610781578163715018a6146106d957816379ba5097146105f9578163863c51ac1461059e57816389aeca76146105365781638d6d8477146104cc5781638da5cb5b1461047b578163ac6c14711461041d578163ca28204e146101cd578163e30c39781461017a575063f2fde38b146100c757600080fd5b346101765760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610176573573ffffffffffffffffffffffffffffffffffffffff8082168092036101725761011e610d7a565b817fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001558254167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b8280fd5b5080fd5b83903461017657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101765760209073ffffffffffffffffffffffffffffffffffffffff600154169051908152f35b90503461017257602091827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104195780359073ffffffffffffffffffffffffffffffffffffffff918281168091036104155780865260038552600160ff85882054161515036103b957600d8254019081835560076005540180600555610258600654610e30565b928360065586519188830191825242888401524460608401523360601b608084015260948301526094825260c082019482861067ffffffffffffffff87111761038d5750906101009185885281519020936102b286610e8c565b855260e0810192835201918252600754936fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81871601169460801c851461037c579060029291868987815260088a522094518555600185019151167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055519101557fffffffffffffffffffffffffffffffff0000000000000000000000000000000060075416176007556006549051908152f35b604187634e487b718a52526024601cfd5b8960416024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b606482868651917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601760248201527f636f6e7472616374206e6f7420726567697374657265640000000000000000006044820152fd5b8580fd5b8380fd5b83903461017657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610176576020906104746007546fffffffffffffffffffffffffffffffff908181169060801c031690565b9051908152f35b83903461017657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101765773ffffffffffffffffffffffffffffffffffffffff60209254169051908152f35b919050346101725760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610172573573ffffffffffffffffffffffffffffffffffffffff811680910361017257818360ff92602095526003855220541690519015158152f35b919050346101725760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610172573573ffffffffffffffffffffffffffffffffffffffff908181168091036104195783839160209552600285522054169051908152f35b5050346101765760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610176573573ffffffffffffffffffffffffffffffffffffffff81168103610176576105f690610fda565b80f35b90503461017257827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610172576001549173ffffffffffffffffffffffffffffffffffffffff9133838516036106a95750507fffffffffffffffffffffffff0000000000000000000000000000000000000000809216600155825491339083161783553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024925051907f118cdaa70000000000000000000000000000000000000000000000000000000082523390820152fd5b833461077e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261077e57610710610d7a565b8073ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffff0000000000000000000000000000000000000000806001541660015582549081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b80fd5b83903461017657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610176576020906006549051908152f35b91905060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101725780359073ffffffffffffffffffffffffffffffffffffffff8083168093036108ef578454163303610880575b503383526002602052818320817fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905582526003602052812060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905580f35b6969e10de76676d08000003410156108175760649060208451917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601260248201527f4e6f2073756666696369656e742066756e6400000000000000000000000000006044820152fd5b8480fd5b919050346101725760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101725761092d610d7a565b828080808435335af1913d156109ed573d9067ffffffffffffffff908183116109c157603f601f9151937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe092839101160116820191821091111761099557505b1561077e5780f35b8260416024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b6024866041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b505061098d565b90503461017257602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261041957823590610a32610d7a565b610a566007546fffffffffffffffffffffffffffffffff908181169060801c031690565b15610c4857610a7f6007546fffffffffffffffffffffffffffffffff908181169060801c031690565b8211610bec57909133606090811b9291865b858110610a9c578780f35b610aa4610ed7565b848101518854918051600654600554918951958887019586528a8701528886015260808501524460a08501528860c085015260d49081850152835261010083019267ffffffffffffffff8411928185108417610bc057848952815190208683015192518d9373ffffffffffffffffffffffffffffffffffffffff1692833b156108ef578693604493610124879387957fa4b1d16800000000000000000000000000000000000000000000000000000000875261010482015201525af18015610bb657610b7b575b5050610b7690610e30565b610a91565b610b8a578452610b7638610b6b565b60248960418a7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b86513d8c823e3d90fd5b60248d60418e7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b838360649251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152600760248201527f626164206c656e000000000000000000000000000000000000000000000000006044820152fd5b838360649251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601160248201527f6e6f7468696e6720746f206c61756e63680000000000000000000000000000006044820152fd5b919050346101725760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610172573573ffffffffffffffffffffffffffffffffffffffff808216918281036108ef57610d1283610d17933388526002602052868820541614610dcb565b610fda565b825260036020528082207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008154169055338252600260205281207fffffffffffffffffffffffff0000000000000000000000000000000000000000815416905580f35b73ffffffffffffffffffffffffffffffffffffffff600054163303610d9b57565b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fd5b15610dd257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e6f7420796f75722043410000000000000000000000000000000000000000006044820152fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e5d5760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6060810190811067ffffffffffffffff821117610ea857604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604090818051610ee681610e8c565b600091818380935282602082015201526007548060801c6fffffffffffffffffffffffffffffffff8092168114610fc8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0191600282841695868352600860205280832082825191610f5883610e8c565b8054835273ffffffffffffffffffffffffffffffffffffffff60018201541660208401520154828201529683526008602052822082815582600182015501557fffffffffffffffffffffffffffffffff000000000000000000000000000000006007549260801b16911617600755565b634e487b71835260316020526024601cfd5b61100c9033600052600260205273ffffffffffffffffffffffffffffffffffffffff8060406000205416911614610dcb565b6110306007546fffffffffffffffffffffffffffffffff908181169060801c031690565b60005b81811061103e575050565b6110509061104a610ed7565b50610e30565b61103356fea2646970667358221220099beeb3bb91da7e4e9fb2fd2b8739b45c66d04d362a8a50f15019718610b8d164736f6c63430008130033
Deployed Bytecode
0x60406080815260048036101561001457600080fd5b600091823560e01c9081630d97ca3114610ca45781631d59e159146109f45781632e1a7d4d146108f357816355a08231146107be578163629c52a914610781578163715018a6146106d957816379ba5097146105f9578163863c51ac1461059e57816389aeca76146105365781638d6d8477146104cc5781638da5cb5b1461047b578163ac6c14711461041d578163ca28204e146101cd578163e30c39781461017a575063f2fde38b146100c757600080fd5b346101765760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610176573573ffffffffffffffffffffffffffffffffffffffff8082168092036101725761011e610d7a565b817fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001558254167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b8280fd5b5080fd5b83903461017657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101765760209073ffffffffffffffffffffffffffffffffffffffff600154169051908152f35b90503461017257602091827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104195780359073ffffffffffffffffffffffffffffffffffffffff918281168091036104155780865260038552600160ff85882054161515036103b957600d8254019081835560076005540180600555610258600654610e30565b928360065586519188830191825242888401524460608401523360601b608084015260948301526094825260c082019482861067ffffffffffffffff87111761038d5750906101009185885281519020936102b286610e8c565b855260e0810192835201918252600754936fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81871601169460801c851461037c579060029291868987815260088a522094518555600185019151167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055519101557fffffffffffffffffffffffffffffffff0000000000000000000000000000000060075416176007556006549051908152f35b604187634e487b718a52526024601cfd5b8960416024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b606482868651917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601760248201527f636f6e7472616374206e6f7420726567697374657265640000000000000000006044820152fd5b8580fd5b8380fd5b83903461017657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610176576020906104746007546fffffffffffffffffffffffffffffffff908181169060801c031690565b9051908152f35b83903461017657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101765773ffffffffffffffffffffffffffffffffffffffff60209254169051908152f35b919050346101725760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610172573573ffffffffffffffffffffffffffffffffffffffff811680910361017257818360ff92602095526003855220541690519015158152f35b919050346101725760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610172573573ffffffffffffffffffffffffffffffffffffffff908181168091036104195783839160209552600285522054169051908152f35b5050346101765760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610176573573ffffffffffffffffffffffffffffffffffffffff81168103610176576105f690610fda565b80f35b90503461017257827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610172576001549173ffffffffffffffffffffffffffffffffffffffff9133838516036106a95750507fffffffffffffffffffffffff0000000000000000000000000000000000000000809216600155825491339083161783553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024925051907f118cdaa70000000000000000000000000000000000000000000000000000000082523390820152fd5b833461077e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261077e57610710610d7a565b8073ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffff0000000000000000000000000000000000000000806001541660015582549081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b80fd5b83903461017657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610176576020906006549051908152f35b91905060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101725780359073ffffffffffffffffffffffffffffffffffffffff8083168093036108ef578454163303610880575b503383526002602052818320817fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905582526003602052812060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905580f35b6969e10de76676d08000003410156108175760649060208451917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601260248201527f4e6f2073756666696369656e742066756e6400000000000000000000000000006044820152fd5b8480fd5b919050346101725760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101725761092d610d7a565b828080808435335af1913d156109ed573d9067ffffffffffffffff908183116109c157603f601f9151937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe092839101160116820191821091111761099557505b1561077e5780f35b8260416024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b6024866041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b505061098d565b90503461017257602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261041957823590610a32610d7a565b610a566007546fffffffffffffffffffffffffffffffff908181169060801c031690565b15610c4857610a7f6007546fffffffffffffffffffffffffffffffff908181169060801c031690565b8211610bec57909133606090811b9291865b858110610a9c578780f35b610aa4610ed7565b848101518854918051600654600554918951958887019586528a8701528886015260808501524460a08501528860c085015260d49081850152835261010083019267ffffffffffffffff8411928185108417610bc057848952815190208683015192518d9373ffffffffffffffffffffffffffffffffffffffff1692833b156108ef578693604493610124879387957fa4b1d16800000000000000000000000000000000000000000000000000000000875261010482015201525af18015610bb657610b7b575b5050610b7690610e30565b610a91565b610b8a578452610b7638610b6b565b60248960418a7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b86513d8c823e3d90fd5b60248d60418e7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b838360649251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152600760248201527f626164206c656e000000000000000000000000000000000000000000000000006044820152fd5b838360649251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601160248201527f6e6f7468696e6720746f206c61756e63680000000000000000000000000000006044820152fd5b919050346101725760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610172573573ffffffffffffffffffffffffffffffffffffffff808216918281036108ef57610d1283610d17933388526002602052868820541614610dcb565b610fda565b825260036020528082207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008154169055338252600260205281207fffffffffffffffffffffffff0000000000000000000000000000000000000000815416905580f35b73ffffffffffffffffffffffffffffffffffffffff600054163303610d9b57565b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fd5b15610dd257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e6f7420796f75722043410000000000000000000000000000000000000000006044820152fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e5d5760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6060810190811067ffffffffffffffff821117610ea857604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604090818051610ee681610e8c565b600091818380935282602082015201526007548060801c6fffffffffffffffffffffffffffffffff8092168114610fc8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0191600282841695868352600860205280832082825191610f5883610e8c565b8054835273ffffffffffffffffffffffffffffffffffffffff60018201541660208401520154828201529683526008602052822082815582600182015501557fffffffffffffffffffffffffffffffff000000000000000000000000000000006007549260801b16911617600755565b634e487b71835260316020526024601cfd5b61100c9033600052600260205273ffffffffffffffffffffffffffffffffffffffff8060406000205416911614610dcb565b6110306007546fffffffffffffffffffffffffffffffff908181169060801c031690565b60005b81811061103e575050565b6110509061104a610ed7565b50610e30565b61103356fea2646970667358221220099beeb3bb91da7e4e9fb2fd2b8739b45c66d04d362a8a50f15019718610b8d164736f6c63430008130033
Deployed Bytecode Sourcemap
9150:3771:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2488:65;;:::i;:::-;9150:3771;;5769:24;9150:3771;;;5769:24;9150:3771;;;;5809:43;;;;9150:3771;;;;;;;;;;;;;;;;;;;;;;;;;;5461:13;9150:3771;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11596:11;9150:3771;;11615:4;9150:3771;;;;;;;;11596:23;9150:3771;;11695:2;9150:3771;;;;;;;11724:1;11712:13;9150:3771;;;11712:13;9150:3771;11747:10;;9150:3771;11747:10;:::i;:::-;9150:3771;;11747:10;9150:3771;;;11801:83;;;;9150:3771;;;11828:15;9150:3771;;;;11845:16;9150:3771;;;;11863:10;9150:3771;;;;;;;;;;;11801:83;;9150:3771;;;;;;;;;;;;;;;11907:26;9150:3771;;;;;;11791:94;;9150:3771;;;;:::i;:::-;;;;11907:26;;9150:3771;;;11907:26;9150:3771;;;11724:1;9150:3771;;;;;;;;;;;;10787:24;;10783:63;;8029:4;;;;;;;;;10861:11;8029:4;;;;;9150:3771;;11615:4;8029;;;;9150:3771;;;;;;;;8029:4;;;9150:3771;8029:4;11724:1;8029:4;;;11724:1;8029:4;11747:10;9150:3771;;;;;;;10783:63;8029:4;8327:139;;;;;;;;9150:3771;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11439:5;9150:3771;;;;;;;;;;;11338:146;;9150:3771;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9591:62;9150:3771;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9523:61;9150:3771;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;5461:13;9150:3771;;;740:10;;9150:3771;;;6384:24;6380:98;;9150:3771;;;;;;5461:13;9150:3771;;;740:10;;9150:3771;;;;;;740:10;9150:3771;;4080:40;;;;9150:3771;;6380:98;9150:3771;;;;6432:34;;;;740:10;6432:34;;;9150:3771;6432:34;9150:3771;;;;;;;;;;;;2488:65;;:::i;:::-;9150:3771;;;;6131:20;9150:3771;;6131:20;9150:3771;;;;;;;;;4080:40;;;;9150:3771;;;;;;;;;;;;;;;;;;;;10285:31;9150:3771;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9740:10;:21;9736:139;;9150:3771;9740:10;;9150:3771;;9885:10;9150:3771;;;;;;;;;;;;;;;9923:11;9150:3771;;;;9941:4;9150:3771;;;;;;;;;9736:139;9799:13;9786:9;:26;9150:3771;9736:139;9150:3771;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2488:65;;:::i;:::-;9150:3771;;;;;;12848:10;12840:43;;9150:3771;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2488:65;;;:::i;:::-;12059:10;11439:5;9150:3771;;;;;;;;;;;11338:146;;12059:10;:14;9150:3771;;12119:10;11439:5;9150:3771;;;;;;;;;;;11338:146;;12119:10;12114:15;;9150:3771;;12157:11;;12349:10;9150:3771;;;;;-1:-1:-1;12157:11:0;12170:5;;;;;;9150:3771;;;12177:3;12215:9;;:::i;:::-;12291:6;;;8029:4;9150:3771;;8029:4;;;12321:8;9150:3771;12361:8;9150:3771;;;;12274:96;;;;9150:3771;;;;;;;;;;;;;;;12331:16;9150:3771;;;;;;;;;;;;;;;12274:96;;9150:3771;;;;;;;;;;;;;;;;;;;;12264:107;;12387:6;;;8029:4;;;9150:3771;;;;;12387:43;;;;;;;9150:3771;12387:43;9150:3771;12387:43;;;;9150:3771;12387:43;;;;;9150:3771;;;12387:43;;;;;;;;12177:3;;;;;;:::i;:::-;12157:11;;12387:43;9150:3771;;;;12177:3;12387:43;;;9150:3771;;;;;;;;;;12387:43;9150:3771;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10027:52;10046:10;10101:2;10046:10;;9150:3771;;10035:10;9150:3771;;;;;;;10035:28;10027:52;:::i;:::-;10101:2;:::i;:::-;9150:3771;;10115:11;9150:3771;;;;;;;;;;;10046:10;9150:3771;;10035:10;9150:3771;;;;;;;;;;;;2795:166;9150:3771;2705:6;9150:3771;;740:10;2855:23;2851:103;;2795:166::o;2851:103::-;9150:3771;;;2902:40;;;740:10;2902:40;;;9150:3771;2902:40;9150:3771;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;10957:375;9150:3771;;;;;;;;:::i;:::-;-1:-1:-1;9150:3771:0;;;;;;;;;;;;;11071:5;9150:3771;;;;;;;;11100:25;;11096:65;;7804:4;;9150:3771;7804:4;9150:3771;;;8029:4;;;;11210:11;9150:3771;8029:4;;;;9150:3771;;;;;;;:::i;:::-;;;;;;7804:4;;;9150:3771;;;7804:4;;9150:3771;7804:4;9150:3771;7804:4;;;9150:3771;8029:4;;;11210:11;9150:3771;8029:4;;;7804;;;;;;;;;;;11071:5;7804:4;;9150:3771;7804:4;;;;;11071:5;7804:4;10957:375::o;11096:65::-;8327:139;;;7804:4;9150:3771;8327:139;;;;12471:237;12537:52;12471:237;12556:10;-1:-1:-1;9150:3771:0;12545:10;9150:3771;;;;;-1:-1:-1;9150:3771:0;;;;;12545:28;12537:52;:::i;:::-;12614:10;11439:5;9150:3771;;;;;;;;;;;11338:146;;12614:10;-1:-1:-1;12653:5:0;;;;;;12471:237;;:::o;12660:3::-;;12680:9;;;:::i;:::-;;12660:3;:::i;:::-;12640:11;
Swarm Source
ipfs://099beeb3bb91da7e4e9fb2fd2b8739b45c66d04d362a8a50f15019718610b8d1
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 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.