Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 27 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Spirits To Exp | 18570019 | 404 days ago | IN | 0 ETH | 0.00296523 | ||||
Spirits To Exp | 18564557 | 405 days ago | IN | 0 ETH | 0.00863919 | ||||
Spirits To Exp | 18545548 | 408 days ago | IN | 0 ETH | 0.0026536 | ||||
Spirits To Exp | 18545087 | 408 days ago | IN | 0 ETH | 0.01940343 | ||||
Spirits To Exp | 18544872 | 408 days ago | IN | 0 ETH | 0.01162379 | ||||
Spirits To Exp | 18544435 | 408 days ago | IN | 0 ETH | 0.01201488 | ||||
Spirits To Exp | 18543769 | 408 days ago | IN | 0 ETH | 0.01914885 | ||||
Spirits To Exp | 18543700 | 408 days ago | IN | 0 ETH | 0.01676586 | ||||
Spirits To Exp | 18543304 | 408 days ago | IN | 0 ETH | 0.01128085 | ||||
Spirits To Exp | 18543167 | 408 days ago | IN | 0 ETH | 0.01243957 | ||||
Spirits To Exp | 18543149 | 408 days ago | IN | 0 ETH | 0.01288796 | ||||
Spirits To Exp | 18543132 | 408 days ago | IN | 0 ETH | 0.01173759 | ||||
Spirits To Exp | 18543121 | 408 days ago | IN | 0 ETH | 0.01290924 | ||||
Spirits To Exp | 18543114 | 408 days ago | IN | 0 ETH | 0.01390894 | ||||
Spirits To Exp | 18543101 | 408 days ago | IN | 0 ETH | 0.01302631 | ||||
Spirits To Exp | 18543090 | 408 days ago | IN | 0 ETH | 0.01370756 | ||||
Spirits To Exp | 18543071 | 408 days ago | IN | 0 ETH | 0.01481131 | ||||
Spirits To Exp | 18543069 | 408 days ago | IN | 0 ETH | 0.01232539 | ||||
Spirits To Exp | 18543042 | 408 days ago | IN | 0 ETH | 0.01226273 | ||||
Spirits To Exp | 18543042 | 408 days ago | IN | 0 ETH | 0.01273037 | ||||
Spirits To Exp | 18543031 | 408 days ago | IN | 0 ETH | 0.01400013 | ||||
Spirits To Exp | 18543011 | 408 days ago | IN | 0 ETH | 0.01191072 | ||||
Spirits To Exp | 18542990 | 408 days ago | IN | 0 ETH | 0.01113111 | ||||
Spirits To Exp | 18542980 | 408 days ago | IN | 0 ETH | 0.02519732 | ||||
Spirits To Exp | 18542980 | 408 days ago | IN | 0 ETH | 0.01413667 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
DarkTalanji
Compiler Version
v0.8.22+commit.4fc1097e
Optimization Enabled:
Yes with 20000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.22; import ".././lib/openzeppelin-contracts/contracts/access/Ownable.sol"; interface IERC721 { function transferFrom(address from, address to, uint256 tokenId) external; function ownerOf(uint256 tokenId) external view returns (address); function balanceOf(address owner) external view returns (uint256); } interface IWrapper { function transferFromBatch(address from, address to, uint256[] calldata tokenId) external; } interface ISoulsLocker { function getSoulsInHero(uint256 heroId) external view returns (uint16[] memory); } interface IExpManager { function creditExperience(uint256 heroId, uint64 expToCredit, uint256 minterIdx) external; } interface IERC721Receiver { function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4); } interface IERC1155 { function mint(address to, uint256 id, uint256 amount, bytes calldata data, uint256 minterIdx) external; } /// @title Dark Talanji /// @author Mauro /// @notice Implementation of Dark Talanji - The Spirit Devourer Contract contract DarkTalanji is Ownable { event SpiritsSacrificed(uint256 indexed heroId, uint256[] tokenId, uint256 expCredited); // Le Anime v2 tokenId offset (tokenId = editionNr + OFFSETAN2) uint256 private constant OFFSETAN2 = 100000; // EXP Minter index in the Experience Manager Contract uint256 public constant EXP_MINTER_IDX = 0; // Editions Minter index in the ERC1155 Contract uint256 public constant EDITIONS_MINTER_IDX = 1; // SuperRare Original Talanji NFT Contract and ID address public constant SUPERRARE = 0xb932a70A57673d89f4acfFBE830E8ed7f75Fb9e0; uint256 public constant TALANJI_ID = 17686; // New Dark Talanji NFT Contract and ID (toomuchlag 1/1s Contract) address public constant TML = 0x0e847aAd9B5b25CEa58613851199484BE3C4Fa13; uint256 public constant DARKTALANJI_ID = 4; // Number of Spirits sacrificed to unlock the original Talanji uint256 public constant OG_UNLOCK_NUM = 2020; // Number of Spirits to cap limited edition mint uint256 public constant PRIME_SACRIFICE = 250; // Le Anime Contracts (Main ERC721, NFT Locker, and Exp Manager, 1155 Editions) address public immutable wrapper; address public immutable locker; address public immutable expManager; address public immutable editions; // Scores of Le Anime characters stored via SSTORE2 address public immutable pointerScores; // Experience start and end timestamps uint64 public immutable expStart; uint64 public immutable expEnd; bool public sacrificeActive; constructor() { // mainnet wrapper = 0x03BEbcf3D62C1e7465f8a095BFA08a79CA2892A1; locker = 0x1eb4490091bd0fFF6c3973623C014D082936EA03; expManager = 0x55124b7C32Ab50932725ec6e34bDB53725e2bbd2; pointerScores = 0xB6c6De2C865bC497A5CF8A9480Dd2e67504425ae; editions = 0xfb0EcD5d5cAD8E498f49000A6CE5423763b039EC; expStart = uint64(1651738261); // 5 May 2022 expEnd = uint64(1735689599); // 31 Dec 2024 } ///////////// // ADMIN FUNCTIONS ///////////// /// @notice Activate the Sacrifice - owner only /// @param activate set true to activate the Sacrifice function activateSacrifice(bool activate) external onlyOwner { sacrificeActive = activate; } /// @notice Withdraw the original Talanji - contract owner only + owner of dark talanji - to be renounced and deactivated function ownerWithdrawTalanji() external onlyOwner { require(IERC721(TML).ownerOf(DARKTALANJI_ID) == msg.sender, "Not the owner of Dark Talanji"); IERC721(SUPERRARE).transferFrom(address(this), msg.sender, TALANJI_ID); } ///////////// // REDEEM TALANJI - DARK TALANJI OWNER ONLY ///////////// /// @notice Redeem the OG SuperRare Talanji. Only if balance of this contract >= threshold (2020 NFTs from the collection) function redeemOGTalanji() external { require(IERC721(wrapper).balanceOf(address(this)) >= OG_UNLOCK_NUM, "Not unlocked"); require(IERC721(TML).ownerOf(DARKTALANJI_ID) == msg.sender, "Not the owner of Dark Talanji"); IERC721(SUPERRARE).transferFrom(address(this), msg.sender, TALANJI_ID); } ///////////// // SPIRIT TO EXP FUNCTIONS ///////////// /// @notice Sacrifice Spirits in exchange for EXP in your Hero /// @param heroId Hero that will receive EXP /// @param tokenId IDs of Spirits to Sacrifice function spiritsToExp(uint256 heroId, uint256[] calldata tokenId) external { require(sacrificeActive, "Not Active"); require(ISoulsLocker(locker).getSoulsInHero(heroId).length > 0, "Not a merged Hero"); // Load on-chain Scores of all 10627 tokenIds // each byte is the score of a Soul/Spirits // allData[id - 1] is the score of Soul/Spirit #id bytes memory allData; // address of the contract storing Scores data address pointer = pointerScores; // efficently load all scores from external storage contract // assembly adapted from SSTORE2 code (https://github.com/0xsequence/sstore2) assembly { // Get the pointer to the free memory and allocate allData := mload(0x40) // Update the free memory pointer to prevent overriding our data. // Allocate enough 32-byte words for the data and the length of the data // This is the new "memory end" including padding // mstore(0x40, add(data, and(add(size, 0x3f), 0xffe0))) mstore(0x40, add(allData, 10688)) // Store the size of the data in the first 32 byte chunk of free memory. mstore(allData, 10627) // Copy the code into memory right after the 32 bytes used to store the size. extcodecopy(pointer, add(allData, 32), 1, 10627) } // total Score of the sacrificed Spirits uint256 totalScore; // temporary variable to store current token Id uint16 currTokenId; // compute totalScore of sacrificed spirits for (uint256 i = 0; i < tokenId.length; ++i) { currTokenId = uint16(tokenId[i] - OFFSETAN2); // needs to be a Spirit NFT (tokenId >= 1574) require(currTokenId > 1573, "Not a Spirit"); // check that the NFT is not a Hero - it needs to contain 0 NFTs require(ISoulsLocker(locker).getSoulsInHero(currTokenId).length == 0, "Cannot sacrifice a Hero"); unchecked { totalScore += uint8(allData[currTokenId - 1]); } } // calculate the redeemable exp from the sacrifice uint64 expToCredit = uint64(calculateRedeemableExp(totalScore)); // Mint a limited edition for each 10 spirits burned in one go, if balance is < 250 uint256 totalSacrifice = IERC721(wrapper).balanceOf(address(this)); // credit the experience to the Hero, via the ExpManager contract IExpManager(expManager).creditExperience(heroId, expToCredit, EXP_MINTER_IDX); // Transfer and lock all the sacrificed spirits into this contract IWrapper(wrapper).transferFromBatch(msg.sender, address(this), tokenId); // Mint a limited editions every 10 Spirits if totalSacrifice < 250 if (totalSacrifice < PRIME_SACRIFICE) { uint256 qtyToMint = tokenId.length / 10; uint256 remaining = (PRIME_SACRIFICE - totalSacrifice) / 10 + 1; if (qtyToMint > 0) { if (remaining < qtyToMint) { qtyToMint = remaining; } IERC1155(editions).mint(msg.sender, 1, qtyToMint, "", EDITIONS_MINTER_IDX); } } emit SpiritsSacrificed(heroId, tokenId, expToCredit); } ///////////// // REEDEMABLE EXP CALCULATIONS ///////////// /// @notice Calculate the bonus EXP given a Score /// @param score Score of a charachter function calculateBonusExp(uint256 score) public pure returns (uint256 bonus) { if (score >= 100000) bonus = 50; else if (score >= 50000) bonus = 45; else if (score >= 25000) bonus = 32; else if (score >= 10000) bonus = 25; else if (score >= 5000) bonus = 20; else if (score >= 2500) bonus = 16; else if (score >= 1000) bonus = 13; else if (score >= 500) bonus = 10; else if (score >= 250) bonus = 8; else if (score >= 100) bonus = 6; else if (score >= 50) bonus = 4; else if (score >= 25) bonus = 2; else bonus = 0; } /// @notice Calculate the EXP currently redeemable by sacrificing Spirits /// @param score Total Score of the Spirits sacrificed function calculateRedeemableExp(uint256 score) public view returns (uint256 claimableExp) { uint256 currentTimestamp = block.timestamp >= expEnd ? expEnd : block.timestamp; // Exp is proportional to the Total Score + bonus uint256 expMultiplier = score * (100 + calculateBonusExp(score)); uint256 deltaT = expEnd - currentTimestamp; uint256 deltaT2 = expEnd - expStart; uint256 deltaT1 = currentTimestamp - expStart; uint256 duration = expEnd - expStart; return expMultiplier * deltaT - (expMultiplier * (deltaT2 * deltaT2 - deltaT1 * deltaT1)) / (duration * 4); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @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. * * By default, the owner account will be the one that deploys the contract. 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; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @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 { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing 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 { require(newOwner != address(0), "Ownable: new owner is the zero address"); _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); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @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; } }
{ "optimizer": { "enabled": true, "runs": 20000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"heroId","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"tokenId","type":"uint256[]"},{"indexed":false,"internalType":"uint256","name":"expCredited","type":"uint256"}],"name":"SpiritsSacrificed","type":"event"},{"inputs":[],"name":"DARKTALANJI_ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EDITIONS_MINTER_IDX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EXP_MINTER_IDX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OG_UNLOCK_NUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRIME_SACRIFICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SUPERRARE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TALANJI_ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TML","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"activate","type":"bool"}],"name":"activateSacrifice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"score","type":"uint256"}],"name":"calculateBonusExp","outputs":[{"internalType":"uint256","name":"bonus","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"score","type":"uint256"}],"name":"calculateRedeemableExp","outputs":[{"internalType":"uint256","name":"claimableExp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"editions","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"expEnd","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"expManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"expStart","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"locker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownerWithdrawTalanji","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pointerScores","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redeemOGTalanji","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sacrificeActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"heroId","type":"uint256"},{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"}],"name":"spiritsToExp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wrapper","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
610160604052348015610010575f80fd5b5061001a336100aa565b7303bebcf3d62c1e7465f8a095bfa08a79ca2892a1608052731eb4490091bd0fff6c3973623c014d082936ea0360a0527355124b7c32ab50932725ec6e34bdb53725e2bbd260c05273b6c6de2c865bc497a5cf8a9480dd2e67504425ae6101005273fb0ecd5d5cad8e498f49000a6ce5423763b039ec60e052636273869561012052636774857f610140526100f9565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60805160a05160c05160e0516101005161012051610140516117556101ba5f395f818161022e01528181610f8b01528181610fc3015281816110200152818161106e01526110fe01525f818161027f0152818161104d015281816110a101526110dd01525f818161040f01526106d601525f81816103880152610bbb01525f81816102a60152610a0c01525f81816103c2015281816105bc01526107d401525f818161035a0152818161095b01528181610ab30152610e5001526117555ff3fe608060405234801561000f575f80fd5b506004361061019a575f3560e01c806387f0b83d116100e8578063b75bd37111610093578063d7b96d4e1161006e578063d7b96d4e146103bd578063e3cfdff5146103e4578063f2fde38b146103f7578063f4ce23571461040a575f80fd5b8063b75bd3711461037c578063b8ddbcb314610383578063cfa84401146103aa575f80fd5b80638da5cb5b116100c35780638da5cb5b1461032f578063a2abdea41461034c578063ac210cc714610355575f80fd5b806387f0b83d1461030457806389d1c1a11461030c5780638aeb697414610314575f80fd5b80635e8f2a5211610148578063706025791161012357806370602579146102a1578063715018a6146102c85780637494f249146102d0575f80fd5b80635e8f2a52146102695780635fbf898e146102715780636a7148d61461027a575f80fd5b80633d68e5bb116101785780633d68e5bb1461020c57806340400c6114610214578063420cd56e14610229575f80fd5b806306b2d07e1461019e57806309e80299146101e357806324d504dd14610204575b5f80fd5b6101b9730e847aad9b5b25cea58613851199484be3c4fa1381565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101f66101f1366004611336565b610431565b6040519081526020016101da565b6101f6600481565b6101f6600181565b61022761022236600461134d565b610503565b005b6102507f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff90911681526020016101da565b6101f660fa81565b6101f661451681565b6102507f000000000000000000000000000000000000000000000000000000000000000081565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b610227610c72565b5f546102f49074010000000000000000000000000000000000000000900460ff1681565b60405190151581526020016101da565b610227610c85565b610227610e1e565b6101b973b932a70a57673d89f4acffbe830e8ed7f75fb9e081565b5f5473ffffffffffffffffffffffffffffffffffffffff166101b9565b6101f66107e481565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b6101f65f81565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b6102276103b83660046113c5565b610f36565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b6101f66103f2366004611336565b610f87565b61022761040536600461140c565b61118b565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b5f620186a0821061044457506032919050565b61c35082106104555750602d919050565b6161a8821061046657506020919050565b612710821061047757506019919050565b611388821061048857506014919050565b6109c4821061049957506010919050565b6103e882106104aa5750600d919050565b6101f482106104bb5750600a919050565b60fa82106104cb57506008919050565b606482106104db57506006919050565b603282106104eb57506004919050565b601982106104fb57506002919050565b505f5b919050565b5f5474010000000000000000000000000000000000000000900460ff1661058b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f74204163746976650000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6040517fd7ab38c0000000000000000000000000000000000000000000000000000000008152600481018490525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d7ab38c0906024015f60405180830381865afa158015610615573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261065a9190810190611465565b51116106c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f742061206d6572676564204865726f0000000000000000000000000000006044820152606401610582565b604080516129c081019091526129838082527f000000000000000000000000000000000000000000000000000000000000000090600160208401833c5f805f5b8581101561090857620186a087878381811061072057610720611537565b905060200201356107319190611591565b91506106258261ffff16116107a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f7420612053706972697400000000000000000000000000000000000000006044820152606401610582565b6040517fd7ab38c000000000000000000000000000000000000000000000000000000000815261ffff831660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d7ab38c0906024015f60405180830381865afa15801561082d573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108729190810190611465565b51156108da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207361637269666963652061204865726f0000000000000000006044820152606401610582565b846001830361ffff16815181106108f3576108f3611537565b016020015160f81c9290920191600101610702565b505f61091383610f87565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091505f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156109a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c491906115aa565b6040517f34d50144000000000000000000000000000000000000000000000000000000008152600481018b905267ffffffffffffffff841660248201525f60448201529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906334d50144906064015f604051808303815f87803b158015610a62575f80fd5b505af1158015610a74573d5f803e3d5ffd5b50506040517f55f48e4600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692506355f48e469150610af090339030908d908d9060040161160a565b5f604051808303815f87803b158015610b07575f80fd5b505af1158015610b19573d5f803e3d5ffd5b5050505060fa811015610c2b575f610b32600a8961164d565b90505f600a610b428460fa611591565b610b4c919061164d565b610b57906001611685565b90508115610c285781811015610b6b578091505b6040517f2a6d9e920000000000000000000000000000000000000000000000000000000081523360048201526001602482018190526044820184905260a060648301525f60a483015260848201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632a6d9e929060c4015f604051808303815f87803b158015610c11575f80fd5b505af1158015610c23573d5f803e3d5ffd5b505050505b50505b887fbd84a40d3e901e494eff8a4bd1b759f006d419982a74d5e9a79a3c18ef2900c2898985604051610c5f93929190611698565b60405180910390a2505050505050505050565b610c7a611242565b610c835f6112c2565b565b610c8d611242565b6040517f6352211e0000000000000000000000000000000000000000000000000000000081526004808201523390730e847aad9b5b25cea58613851199484be3c4fa1390636352211e90602401602060405180830381865afa158015610cf5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d1991906116c5565b73ffffffffffffffffffffffffffffffffffffffff1614610d96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420746865206f776e6572206f66204461726b2054616c616e6a690000006044820152606401610582565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152306004820152336024820152614516604482015273b932a70a57673d89f4acffbe830e8ed7f75fb9e0906323b872dd906064015f604051808303815f87803b158015610e06575f80fd5b505af1158015610e18573d5f803e3d5ffd5b50505050565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526107e4907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610eaa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ece91906115aa565b1015610c8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f7420756e6c6f636b656400000000000000000000000000000000000000006044820152606401610582565b610f3e611242565b5f805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b5f807f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff16421015610fc15742610fed565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff165b90505f610ff984610431565b611004906064611685565b61100e90856116e0565b90505f6110458367ffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016611591565b90505f6110927f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006116f7565b67ffffffffffffffff1690505f7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff16856110d59190611591565b90505f6111227f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006116f7565b67ffffffffffffffff1690506111398160046116e0565b61114383806116e0565b61114d85806116e0565b6111579190611591565b61116190876116e0565b61116b919061164d565b61117585876116e0565b61117f9190611591565b98975050505050505050565b611193611242565b73ffffffffffffffffffffffffffffffffffffffff8116611236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610582565b61123f816112c2565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610c83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610582565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f60208284031215611346575f80fd5b5035919050565b5f805f6040848603121561135f575f80fd5b83359250602084013567ffffffffffffffff8082111561137d575f80fd5b818601915086601f830112611390575f80fd5b81358181111561139e575f80fd5b8760208260051b85010111156113b2575f80fd5b6020830194508093505050509250925092565b5f602082840312156113d5575f80fd5b813580151581146113e4575f80fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461123f575f80fd5b5f6020828403121561141c575f80fd5b81356113e4816113eb565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b805161ffff811681146104fe575f80fd5b5f6020808385031215611476575f80fd5b825167ffffffffffffffff8082111561148d575f80fd5b818501915085601f8301126114a0575f80fd5b8151818111156114b2576114b2611427565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156114f5576114f5611427565b604052918252848201925083810185019188831115611512575f80fd5b938501935b8285101561117f5761152885611454565b84529385019392850192611517565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156115a4576115a4611564565b92915050565b5f602082840312156115ba575f80fd5b5051919050565b8183525f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156115f1575f80fd5b8260051b80836020870137939093016020019392505050565b5f73ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250606060408301526116436060830184866115c1565b9695505050505050565b5f82611680577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b808201808211156115a4576115a4611564565b604081525f6116ab6040830185876115c1565b905067ffffffffffffffff83166020830152949350505050565b5f602082840312156116d5575f80fd5b81516113e4816113eb565b80820281158282048414176115a4576115a4611564565b67ffffffffffffffff82811682821603908082111561171857611718611564565b509291505056fea26469706673582212209f74d914d5daf32fe50c05c014b697bb6f0aa8aa14c9df8630f4e619485daf4b64736f6c63430008160033
Deployed Bytecode
0x608060405234801561000f575f80fd5b506004361061019a575f3560e01c806387f0b83d116100e8578063b75bd37111610093578063d7b96d4e1161006e578063d7b96d4e146103bd578063e3cfdff5146103e4578063f2fde38b146103f7578063f4ce23571461040a575f80fd5b8063b75bd3711461037c578063b8ddbcb314610383578063cfa84401146103aa575f80fd5b80638da5cb5b116100c35780638da5cb5b1461032f578063a2abdea41461034c578063ac210cc714610355575f80fd5b806387f0b83d1461030457806389d1c1a11461030c5780638aeb697414610314575f80fd5b80635e8f2a5211610148578063706025791161012357806370602579146102a1578063715018a6146102c85780637494f249146102d0575f80fd5b80635e8f2a52146102695780635fbf898e146102715780636a7148d61461027a575f80fd5b80633d68e5bb116101785780633d68e5bb1461020c57806340400c6114610214578063420cd56e14610229575f80fd5b806306b2d07e1461019e57806309e80299146101e357806324d504dd14610204575b5f80fd5b6101b9730e847aad9b5b25cea58613851199484be3c4fa1381565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101f66101f1366004611336565b610431565b6040519081526020016101da565b6101f6600481565b6101f6600181565b61022761022236600461134d565b610503565b005b6102507f000000000000000000000000000000000000000000000000000000006774857f81565b60405167ffffffffffffffff90911681526020016101da565b6101f660fa81565b6101f661451681565b6102507f000000000000000000000000000000000000000000000000000000006273869581565b6101b97f00000000000000000000000055124b7c32ab50932725ec6e34bdb53725e2bbd281565b610227610c72565b5f546102f49074010000000000000000000000000000000000000000900460ff1681565b60405190151581526020016101da565b610227610c85565b610227610e1e565b6101b973b932a70a57673d89f4acffbe830e8ed7f75fb9e081565b5f5473ffffffffffffffffffffffffffffffffffffffff166101b9565b6101f66107e481565b6101b97f00000000000000000000000003bebcf3d62c1e7465f8a095bfa08a79ca2892a181565b6101f65f81565b6101b97f000000000000000000000000fb0ecd5d5cad8e498f49000a6ce5423763b039ec81565b6102276103b83660046113c5565b610f36565b6101b97f0000000000000000000000001eb4490091bd0fff6c3973623c014d082936ea0381565b6101f66103f2366004611336565b610f87565b61022761040536600461140c565b61118b565b6101b97f000000000000000000000000b6c6de2c865bc497a5cf8a9480dd2e67504425ae81565b5f620186a0821061044457506032919050565b61c35082106104555750602d919050565b6161a8821061046657506020919050565b612710821061047757506019919050565b611388821061048857506014919050565b6109c4821061049957506010919050565b6103e882106104aa5750600d919050565b6101f482106104bb5750600a919050565b60fa82106104cb57506008919050565b606482106104db57506006919050565b603282106104eb57506004919050565b601982106104fb57506002919050565b505f5b919050565b5f5474010000000000000000000000000000000000000000900460ff1661058b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f74204163746976650000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6040517fd7ab38c0000000000000000000000000000000000000000000000000000000008152600481018490525f907f0000000000000000000000001eb4490091bd0fff6c3973623c014d082936ea0373ffffffffffffffffffffffffffffffffffffffff169063d7ab38c0906024015f60405180830381865afa158015610615573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261065a9190810190611465565b51116106c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f742061206d6572676564204865726f0000000000000000000000000000006044820152606401610582565b604080516129c081019091526129838082527f000000000000000000000000b6c6de2c865bc497a5cf8a9480dd2e67504425ae90600160208401833c5f805f5b8581101561090857620186a087878381811061072057610720611537565b905060200201356107319190611591565b91506106258261ffff16116107a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f7420612053706972697400000000000000000000000000000000000000006044820152606401610582565b6040517fd7ab38c000000000000000000000000000000000000000000000000000000000815261ffff831660048201527f0000000000000000000000001eb4490091bd0fff6c3973623c014d082936ea0373ffffffffffffffffffffffffffffffffffffffff169063d7ab38c0906024015f60405180830381865afa15801561082d573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108729190810190611465565b51156108da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207361637269666963652061204865726f0000000000000000006044820152606401610582565b846001830361ffff16815181106108f3576108f3611537565b016020015160f81c9290920191600101610702565b505f61091383610f87565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091505f9073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000003bebcf3d62c1e7465f8a095bfa08a79ca2892a116906370a0823190602401602060405180830381865afa1580156109a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c491906115aa565b6040517f34d50144000000000000000000000000000000000000000000000000000000008152600481018b905267ffffffffffffffff841660248201525f60448201529091507f00000000000000000000000055124b7c32ab50932725ec6e34bdb53725e2bbd273ffffffffffffffffffffffffffffffffffffffff16906334d50144906064015f604051808303815f87803b158015610a62575f80fd5b505af1158015610a74573d5f803e3d5ffd5b50506040517f55f48e4600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000003bebcf3d62c1e7465f8a095bfa08a79ca2892a11692506355f48e469150610af090339030908d908d9060040161160a565b5f604051808303815f87803b158015610b07575f80fd5b505af1158015610b19573d5f803e3d5ffd5b5050505060fa811015610c2b575f610b32600a8961164d565b90505f600a610b428460fa611591565b610b4c919061164d565b610b57906001611685565b90508115610c285781811015610b6b578091505b6040517f2a6d9e920000000000000000000000000000000000000000000000000000000081523360048201526001602482018190526044820184905260a060648301525f60a483015260848201527f000000000000000000000000fb0ecd5d5cad8e498f49000a6ce5423763b039ec73ffffffffffffffffffffffffffffffffffffffff1690632a6d9e929060c4015f604051808303815f87803b158015610c11575f80fd5b505af1158015610c23573d5f803e3d5ffd5b505050505b50505b887fbd84a40d3e901e494eff8a4bd1b759f006d419982a74d5e9a79a3c18ef2900c2898985604051610c5f93929190611698565b60405180910390a2505050505050505050565b610c7a611242565b610c835f6112c2565b565b610c8d611242565b6040517f6352211e0000000000000000000000000000000000000000000000000000000081526004808201523390730e847aad9b5b25cea58613851199484be3c4fa1390636352211e90602401602060405180830381865afa158015610cf5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d1991906116c5565b73ffffffffffffffffffffffffffffffffffffffff1614610d96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420746865206f776e6572206f66204461726b2054616c616e6a690000006044820152606401610582565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152306004820152336024820152614516604482015273b932a70a57673d89f4acffbe830e8ed7f75fb9e0906323b872dd906064015f604051808303815f87803b158015610e06575f80fd5b505af1158015610e18573d5f803e3d5ffd5b50505050565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526107e4907f00000000000000000000000003bebcf3d62c1e7465f8a095bfa08a79ca2892a173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610eaa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ece91906115aa565b1015610c8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f7420756e6c6f636b656400000000000000000000000000000000000000006044820152606401610582565b610f3e611242565b5f805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b5f807f000000000000000000000000000000000000000000000000000000006774857f67ffffffffffffffff16421015610fc15742610fed565b7f000000000000000000000000000000000000000000000000000000006774857f67ffffffffffffffff165b90505f610ff984610431565b611004906064611685565b61100e90856116e0565b90505f6110458367ffffffffffffffff7f000000000000000000000000000000000000000000000000000000006774857f16611591565b90505f6110927f00000000000000000000000000000000000000000000000000000000627386957f000000000000000000000000000000000000000000000000000000006774857f6116f7565b67ffffffffffffffff1690505f7f000000000000000000000000000000000000000000000000000000006273869567ffffffffffffffff16856110d59190611591565b90505f6111227f00000000000000000000000000000000000000000000000000000000627386957f000000000000000000000000000000000000000000000000000000006774857f6116f7565b67ffffffffffffffff1690506111398160046116e0565b61114383806116e0565b61114d85806116e0565b6111579190611591565b61116190876116e0565b61116b919061164d565b61117585876116e0565b61117f9190611591565b98975050505050505050565b611193611242565b73ffffffffffffffffffffffffffffffffffffffff8116611236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610582565b61123f816112c2565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610c83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610582565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f60208284031215611346575f80fd5b5035919050565b5f805f6040848603121561135f575f80fd5b83359250602084013567ffffffffffffffff8082111561137d575f80fd5b818601915086601f830112611390575f80fd5b81358181111561139e575f80fd5b8760208260051b85010111156113b2575f80fd5b6020830194508093505050509250925092565b5f602082840312156113d5575f80fd5b813580151581146113e4575f80fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461123f575f80fd5b5f6020828403121561141c575f80fd5b81356113e4816113eb565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b805161ffff811681146104fe575f80fd5b5f6020808385031215611476575f80fd5b825167ffffffffffffffff8082111561148d575f80fd5b818501915085601f8301126114a0575f80fd5b8151818111156114b2576114b2611427565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156114f5576114f5611427565b604052918252848201925083810185019188831115611512575f80fd5b938501935b8285101561117f5761152885611454565b84529385019392850192611517565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156115a4576115a4611564565b92915050565b5f602082840312156115ba575f80fd5b5051919050565b8183525f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156115f1575f80fd5b8260051b80836020870137939093016020019392505050565b5f73ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250606060408301526116436060830184866115c1565b9695505050505050565b5f82611680577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b808201808211156115a4576115a4611564565b604081525f6116ab6040830185876115c1565b905067ffffffffffffffff83166020830152949350505050565b5f602082840312156116d5575f80fd5b81516113e4816113eb565b80820281158282048414176115a4576115a4611564565b67ffffffffffffffff82811682821603908082111561171857611718611564565b509291505056fea26469706673582212209f74d914d5daf32fe50c05c014b697bb6f0aa8aa14c9df8630f4e619485daf4b64736f6c63430008160033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.