Source Code
Latest 25 from a total of 3,076 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Unstake All | 24393366 | 24 days ago | IN | 0 ETH | 0.00128291 | ||||
| Unstake All | 24303585 | 36 days ago | IN | 0 ETH | 0.00029746 | ||||
| Unstake All | 23937363 | 87 days ago | IN | 0 ETH | 0.00000025 | ||||
| Unstake All | 23914541 | 91 days ago | IN | 0 ETH | 0.00016533 | ||||
| Unstake All | 23876944 | 96 days ago | IN | 0 ETH | 0.00030096 | ||||
| Unstake All | 23817923 | 104 days ago | IN | 0 ETH | 0.00020596 | ||||
| Unstake All | 23814475 | 105 days ago | IN | 0 ETH | 0.00017186 | ||||
| Unstake All | 23805305 | 106 days ago | IN | 0 ETH | 0.00020257 | ||||
| Unstake All | 23799620 | 107 days ago | IN | 0 ETH | 0.0000208 | ||||
| Unstake All | 23772092 | 111 days ago | IN | 0 ETH | 0.00017833 | ||||
| Unstake All | 23706620 | 120 days ago | IN | 0 ETH | 0.00001762 | ||||
| Unstake All | 23685106 | 123 days ago | IN | 0 ETH | 0.00016332 | ||||
| Unstake All | 23644292 | 128 days ago | IN | 0 ETH | 0.00013487 | ||||
| Unstake All | 23570418 | 139 days ago | IN | 0 ETH | 0.00017016 | ||||
| Unstake All | 23486690 | 150 days ago | IN | 0 ETH | 0.00010319 | ||||
| Unstake All | 23429997 | 158 days ago | IN | 0 ETH | 0.00004708 | ||||
| Unstake All | 23429946 | 158 days ago | IN | 0 ETH | 0.00000377 | ||||
| Unstake All | 23220230 | 188 days ago | IN | 0 ETH | 0.00048665 | ||||
| Unstake All | 22671079 | 264 days ago | IN | 0 ETH | 0.00019753 | ||||
| Unstake All | 22532692 | 284 days ago | IN | 0 ETH | 0.0009304 | ||||
| Unstake All | 22518167 | 286 days ago | IN | 0 ETH | 0.00047647 | ||||
| Unstake All | 22492023 | 290 days ago | IN | 0 ETH | 0.00015376 | ||||
| Unstake All | 22044892 | 352 days ago | IN | 0 ETH | 0.0000964 | ||||
| Unstake All | 21894898 | 373 days ago | IN | 0 ETH | 0.00018511 | ||||
| Unstake All | 21771460 | 390 days ago | IN | 0 ETH | 0.00018387 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
TheHumanoidsStaking
Compiler Version
v0.8.11+commit.d7f03943
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
/*
████████╗██╗ ██╗███████╗
╚══██╔══╝██║ ██║██╔════╝
██║ ███████║█████╗
██║ ██╔══██║██╔══╝
██║ ██║ ██║███████╗
╚═╝ ╚═╝ ╚═╝╚══════╝
██╗ ██╗██╗ ██╗███╗ ███╗ █████╗ ███╗ ██╗ ██████╗ ██╗██████╗ ███████╗
██║ ██║██║ ██║████╗ ████║██╔══██╗████╗ ██║██╔═══██╗██║██╔══██╗██╔════╝
███████║██║ ██║██╔████╔██║███████║██╔██╗ ██║██║ ██║██║██║ ██║███████╗
██╔══██║██║ ██║██║╚██╔╝██║██╔══██║██║╚██╗██║██║ ██║██║██║ ██║╚════██║
██║ ██║╚██████╔╝██║ ╚═╝ ██║██║ ██║██║ ╚████║╚██████╔╝██║██████╔╝███████║
╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚═╝╚═════╝ ╚══════╝
The Humanoids Staking Contract
*/
pragma solidity =0.8.11;
import "@openzeppelin/contracts/token/ERC721/IERC721.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "./IStakingReward.sol";
contract TheHumanoidsStaking is Ownable {
bool public canStake;
address public stakingRewardContract;
IERC721 private constant _NFT_CONTRACT = IERC721(0x3a5051566b2241285BE871f650C445A88A970edd);
struct Token {
address owner;
uint64 timestamp;
uint16 index;
}
mapping(uint256 => Token) private _tokens;
mapping(address => uint16[]) private _stakedTokens;
constructor() {}
function setStaking(bool _canStake) external onlyOwner {
canStake = _canStake;
}
function setStakingRewardContract(address newStakingRewardContract) external onlyOwner {
address oldStakingRewardContract = stakingRewardContract;
require(newStakingRewardContract != oldStakingRewardContract, "New staking reward contract is same as old contract");
if (oldStakingRewardContract != address(0)) {
IStakingReward(oldStakingRewardContract).willBeReplacedByContract(newStakingRewardContract);
}
stakingRewardContract = newStakingRewardContract;
if (newStakingRewardContract != address(0)) {
IStakingReward(newStakingRewardContract).didReplaceContract(oldStakingRewardContract);
}
}
function stakedTokensBalanceOf(address account) external view returns (uint256) {
return _stakedTokens[account].length;
}
function stakedTokensOf(address account) external view returns (uint16[] memory) {
return _stakedTokens[account];
}
function ownerOf(uint256 tokenId) external view returns (address) {
address owner = _tokens[tokenId].owner;
require(owner != address(0), "Token not staked");
return owner;
}
function timestampOf(uint256 tokenId) external view returns (uint256) {
uint256 timestamp = uint256(_tokens[tokenId].timestamp);
require(timestamp != 0, "Token not staked");
return timestamp;
}
function stake(uint16[] calldata tokenIds) external {
require(canStake, "Staking not enabled");
uint length = tokenIds.length;
require(length > 0, "tokenIds array is empty");
if (stakingRewardContract != address(0)) {
IStakingReward(stakingRewardContract).willStakeTokens(msg.sender, tokenIds);
}
uint64 timestamp = uint64(block.timestamp);
uint16[] storage stakedTokens = _stakedTokens[msg.sender];
uint16 index = uint16(stakedTokens.length);
unchecked {
for (uint i=0; i<length; i++) {
uint16 tokenId = tokenIds[i];
_NFT_CONTRACT.transferFrom(msg.sender, address(this), tokenId);
Token storage token = _tokens[tokenId];
token.owner = msg.sender;
token.timestamp = timestamp;
token.index = index;
index++;
stakedTokens.push(tokenId);
}
}
}
function unstake(uint16[] calldata tokenIds) external {
uint length = tokenIds.length;
require(length > 0, "tokenIds array is empty");
if (stakingRewardContract != address(0)) {
IStakingReward(stakingRewardContract).willUnstakeTokens(msg.sender, tokenIds);
}
unchecked {
uint16[] storage stakedTokens = _stakedTokens[msg.sender];
for (uint i=0; i<length; i++) {
uint256 tokenId = tokenIds[i];
require(_tokens[tokenId].owner == msg.sender, "Token not staked or not owned");
uint index = _tokens[tokenId].index;
uint lastIndex = stakedTokens.length-1;
if (index != lastIndex) {
uint16 lastTokenId = stakedTokens[lastIndex];
stakedTokens[index] = lastTokenId;
_tokens[lastTokenId].index = uint16(index);
}
stakedTokens.pop();
delete _tokens[tokenId];
_NFT_CONTRACT.transferFrom(address(this), msg.sender, tokenId);
}
}
}
function unstakeAll() external {
uint16[] storage stakedTokens = _stakedTokens[msg.sender];
uint length = stakedTokens.length;
require(length > 0, "Nothing staked");
if (stakingRewardContract != address(0)) {
IStakingReward(stakingRewardContract).willUnstakeTokens(msg.sender, stakedTokens);
}
unchecked {
for (uint i=0; i<length; i++) {
uint256 tokenId = stakedTokens[i];
delete _tokens[tokenId];
_NFT_CONTRACT.transferFrom(address(this), msg.sender, tokenId);
}
}
delete _stakedTokens[msg.sender];
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)
pragma solidity ^0.8.0;
import "../../utils/introspection/IERC165.sol";
/**
* @dev Required interface of an ERC721 compliant contract.
*/
interface IERC721 is IERC165 {
/**
* @dev Emitted when `tokenId` token is transferred from `from` to `to`.
*/
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
/**
* @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
*/
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
/**
* @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
*/
event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
/**
* @dev Returns the number of tokens in ``owner``'s account.
*/
function balanceOf(address owner) external view returns (uint256 balance);
/**
* @dev Returns the owner of the `tokenId` token.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function ownerOf(uint256 tokenId) external view returns (address owner);
/**
* @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
* are aware of the ERC721 protocol to prevent tokens from being forever locked.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function safeTransferFrom(
address from,
address to,
uint256 tokenId
) external;
/**
* @dev Transfers `tokenId` token from `from` to `to`.
*
* WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must be owned by `from`.
* - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address from,
address to,
uint256 tokenId
) external;
/**
* @dev Gives permission to `to` to transfer `tokenId` token to another account.
* The approval is cleared when the token is transferred.
*
* Only a single account can be approved at a time, so approving the zero address clears previous approvals.
*
* Requirements:
*
* - The caller must own the token or be an approved operator.
* - `tokenId` must exist.
*
* Emits an {Approval} event.
*/
function approve(address to, uint256 tokenId) external;
/**
* @dev Returns the account approved for `tokenId` token.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function getApproved(uint256 tokenId) external view returns (address operator);
/**
* @dev Approve or remove `operator` as an operator for the caller.
* Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
*
* Requirements:
*
* - The `operator` cannot be the caller.
*
* Emits an {ApprovalForAll} event.
*/
function setApprovalForAll(address operator, bool _approved) external;
/**
* @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
*
* See {setApprovalForAll}
*/
function isApprovedForAll(address owner, address operator) external view returns (bool);
/**
* @dev Safely transfers `tokenId` token from `from` to `to`.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function safeTransferFrom(
address from,
address to,
uint256 tokenId,
bytes calldata data
) external;
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (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 Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
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
pragma solidity ^0.8.0;
interface IStakingReward {
function willStakeTokens(address account, uint16[] calldata tokenIds) external;
function willUnstakeTokens(address account, uint16[] calldata tokenIds) external;
function willBeReplacedByContract(address stakingRewardContract) external;
function didReplaceContract(address stakingRewardContract) external;
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}// 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": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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"},{"inputs":[],"name":"canStake","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_canStake","type":"bool"}],"name":"setStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newStakingRewardContract","type":"address"}],"name":"setStakingRewardContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16[]","name":"tokenIds","type":"uint16[]"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"stakedTokensBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"stakedTokensOf","outputs":[{"internalType":"uint16[]","name":"","type":"uint16[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingRewardContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"timestampOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16[]","name":"tokenIds","type":"uint16[]"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unstakeAll","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61137f8061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063715018a61161008c578063910730a811610066578063910730a8146101d85780639ed27809146101eb578063ab08d4fc1461020f578063f2fde38b1461022f57600080fd5b8063715018a6146101ac5780637c7db3b3146101b45780638da5cb5b146101c757600080fd5b8063382f57c5116100c8578063382f57c51461013257806357c1af93146101455780636352211e146101585780636731d2f31461018357600080fd5b80632bdcfe72146100ef5780632d9c77e11461010457806335322f371461012a575b600080fd5b6101026100fd366004610e19565b610242565b005b610117610112366004610e8e565b6104b1565b6040519081526020015b60405180910390f35b610102610517565b610102610140366004610ea7565b6106d6565b610102610153366004610e19565b610869565b61016b610166366004610e8e565b610b8b565b6040516001600160a01b039091168152602001610121565b610117610191366004610ea7565b6001600160a01b031660009081526003602052604090205490565b610102610be3565b60015461016b906001600160a01b031681565b6000546001600160a01b031661016b565b6101026101e6366004610ed7565b610c19565b6000546101ff90600160a01b900460ff1681565b6040519015158152602001610121565b61022261021d366004610ea7565b610c61565b6040516101219190610ef9565b61010261023d366004610ea7565b610cf5565b600054600160a01b900460ff166102965760405162461bcd60e51b815260206004820152601360248201527214dd185ada5b99c81b9bdd08195b98589b1959606a1b60448201526064015b60405180910390fd5b80806102de5760405162461bcd60e51b8152602060048201526017602482015276746f6b656e49647320617272617920697320656d70747960481b604482015260640161028d565b6001546001600160a01b031615610356576001546040516389a7c16360e01b81526001600160a01b03909116906389a7c1639061032390339087908790600401610f58565b600060405180830381600087803b15801561033d57600080fd5b505af1158015610351573d6000803e3d6000fd5b505050505b336000908152600360205260408120805442925b848110156104a857600087878381811061038657610386610fb2565b905060200201602081019061039b9190610fc8565b6040516323b872dd60e01b815233600482015230602482015261ffff82166044820152909150733a5051566b2241285be871f650c445a88a970edd906323b872dd90606401600060405180830381600087803b1580156103fa57600080fd5b505af115801561040e573d6000803e3d6000fd5b5050505061ffff9081166000818152600260208181526040832080546001600160e01b0319163367ffffffffffffffff60a01b191617600160a01b67ffffffffffffffff8c16021761ffff60e01b1916600160e01b89881602179055875460018181018a558985529190932060108404018054600f9094169092026101000a9485021990921693909202929092179055918201910161036a565b50505050505050565b600081815260026020526040812054600160a01b900467ffffffffffffffff16806105115760405162461bcd60e51b815260206004820152601060248201526f151bdad95b881b9bdd081cdd185ad95960821b604482015260640161028d565b92915050565b3360009081526003602052604090208054806105665760405162461bcd60e51b815260206004820152600e60248201526d139bdd1a1a5b99c81cdd185ad95960921b604482015260640161028d565b6001546001600160a01b0316156105dc5760015460405163267c5e0f60e21b81526001600160a01b03909116906399f1783c906105a99033908690600401610fe3565b600060405180830381600087803b1580156105c357600080fd5b505af11580156105d7573d6000803e3d6000fd5b505050505b60005b818110156106b95760008382815481106105fb576105fb610fb2565b6000918252602080832060108304015461ffff6002600f90941684026101000a9091041680845291905260409182902080546001600160f01b031916905590516323b872dd60e01b815230600482015233602482015260448101829052909150733a5051566b2241285be871f650c445a88a970edd906323b872dd90606401600060405180830381600087803b15801561069457600080fd5b505af11580156106a8573d6000803e3d6000fd5b5050600190930192506105df915050565b503360009081526003602052604081206106d291610de0565b5050565b6000546001600160a01b031633146107005760405162461bcd60e51b815260040161028d906112fe565b6001546001600160a01b0390811690821681141561077c5760405162461bcd60e51b815260206004820152603360248201527f4e6577207374616b696e672072657761726420636f6e74726163742069732073604482015272185b5948185cc81bdb190818dbdb9d1c9858dd606a1b606482015260840161028d565b6001600160a01b038116156107e757604051630cc6b63160e01b81526001600160a01b038381166004830152821690630cc6b63190602401600060405180830381600087803b1580156107ce57600080fd5b505af11580156107e2573d6000803e3d6000fd5b505050505b600180546001600160a01b0319166001600160a01b038416908117909155156106d257604051635732a8e360e11b81526001600160a01b03828116600483015283169063ae6551c690602401600060405180830381600087803b15801561084d57600080fd5b505af1158015610861573d6000803e3d6000fd5b505050505050565b80806108b15760405162461bcd60e51b8152602060048201526017602482015276746f6b656e49647320617272617920697320656d70747960481b604482015260640161028d565b6001546001600160a01b0316156109295760015460405163267c5e0f60e21b81526001600160a01b03909116906399f1783c906108f690339087908790600401610f58565b600060405180830381600087803b15801561091057600080fd5b505af1158015610924573d6000803e3d6000fd5b505050505b336000908152600360205260408120905b82811015610b8457600085858381811061095657610956610fb2565b905060200201602081019061096b9190610fc8565b61ffff166000818152600260205260409020549091506001600160a01b031633146109d85760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e206e6f74207374616b6564206f72206e6f74206f776e6564000000604482015260640161028d565b6000818152600260205260409020548354600160e01b90910461ffff169060001901808214610aa8576000858281548110610a1557610a15610fb2565b90600052602060002090601091828204019190066002029054906101000a900461ffff16905080868481548110610a4e57610a4e610fb2565b600091825260208083206010830401805461ffff9586166002600f90951685026101000a90810290870219909116179055938316825290925260409091208054918416600160e01b0261ffff60e01b199092169190911790555b84805480610ab857610ab8611333565b60008281526020808220601060001994909401938404018054600f851660029081026101000a61ffff021990911690915592909355858152915260409081902080546001600160f01b0319169055516323b872dd60e01b815230600482015233602482015260448101849052733a5051566b2241285be871f650c445a88a970edd906323b872dd90606401600060405180830381600087803b158015610b5d57600080fd5b505af1158015610b71573d6000803e3d6000fd5b50506001909501945061093a9350505050565b5050505050565b6000818152600260205260408120546001600160a01b0316806105115760405162461bcd60e51b815260206004820152601060248201526f151bdad95b881b9bdd081cdd185ad95960821b604482015260640161028d565b6000546001600160a01b03163314610c0d5760405162461bcd60e51b815260040161028d906112fe565b610c176000610d90565b565b6000546001600160a01b03163314610c435760405162461bcd60e51b815260040161028d906112fe565b60008054911515600160a01b0260ff60a01b19909216919091179055565b6001600160a01b038116600090815260036020908152604091829020805483518184028101840190945280845260609392830182828015610ce957602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610cb05790505b50505050509050919050565b6000546001600160a01b03163314610d1f5760405162461bcd60e51b815260040161028d906112fe565b6001600160a01b038116610d845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161028d565b610d8d81610d90565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b50805460008255600f016010900490600052602060002090810190610d8d91905b80821115610e155760008155600101610e01565b5090565b60008060208385031215610e2c57600080fd5b823567ffffffffffffffff80821115610e4457600080fd5b818501915085601f830112610e5857600080fd5b813581811115610e6757600080fd5b8660208260051b8501011115610e7c57600080fd5b60209290920196919550909350505050565b600060208284031215610ea057600080fd5b5035919050565b600060208284031215610eb957600080fd5b81356001600160a01b0381168114610ed057600080fd5b9392505050565b600060208284031215610ee957600080fd5b81358015158114610ed057600080fd5b6020808252825182820181905260009190848201906040850190845b81811015610f3557835161ffff1683529284019291840191600101610f15565b50909695505050505050565b803561ffff81168114610f5357600080fd5b919050565b6001600160a01b038416815260406020808301829052908201839052600090849060608401835b86811015610fa65761ffff610f9385610f41565b1682529282019290820190600101610f7f565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610fda57600080fd5b610ed082610f41565b6000604080830160018060a01b03861684526020828186015281865461100d818590815260200190565b60008981526020812095509092505b81600f8201101561114c57845461ffff8082168552601082901c81168686015281861c811688860152603082901c8116606080870191909152608061106a81880184868d1c1661ffff169052565b60a0611080818901858760501c1661ffff169052565b60c0611095818a018688871c1661ffff169052565b60e093506110ad848a01868860701c1661ffff169052565b61ffff86841c8616166101008a01526110d26101208a01868860901c1661ffff169052565b61ffff86831c8616166101408a01526110f76101608a01868860b01c1661ffff169052565b61ffff86821c8616166101808a015250505061111f6101a08701838560d01c1661ffff169052565b82901c1661ffff166101c085015260f01c6101e0840152600194909401936102009092019160100161101c565b935493818110156111665761ffff85168352918301916001015b8181101561118157601085901c61ffff168352918301916001015b8181101561119a5784841c61ffff168352918301916001015b818110156111b557603085901c61ffff168352918301916001015b818110156111ce5784861c61ffff168352918301916001015b818110156111e957605085901c61ffff168352918301916001015b8181101561120457606085901c61ffff168352918301916001015b8181101561121f57607085901c61ffff168352918301916001015b8181101561123a57608085901c61ffff168352918301916001015b8181101561125557609085901c61ffff168352918301916001015b818110156112705760a085901c61ffff168352918301916001015b8181101561128b5760b085901c61ffff168352918301916001015b818110156112a65760c085901c61ffff168352918301916001015b818110156112c15760d085901c61ffff168352918301916001015b818110156112dc5760e085901c61ffff168352918301916001015b818110156112f05760f085901c8352918301915b509098975050505050505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603160045260246000fdfea26469706673582212200631a73d59bd44f894c3d90ff85929b4289df7a0074237348e8309e5cccbb75964736f6c634300080b0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063715018a61161008c578063910730a811610066578063910730a8146101d85780639ed27809146101eb578063ab08d4fc1461020f578063f2fde38b1461022f57600080fd5b8063715018a6146101ac5780637c7db3b3146101b45780638da5cb5b146101c757600080fd5b8063382f57c5116100c8578063382f57c51461013257806357c1af93146101455780636352211e146101585780636731d2f31461018357600080fd5b80632bdcfe72146100ef5780632d9c77e11461010457806335322f371461012a575b600080fd5b6101026100fd366004610e19565b610242565b005b610117610112366004610e8e565b6104b1565b6040519081526020015b60405180910390f35b610102610517565b610102610140366004610ea7565b6106d6565b610102610153366004610e19565b610869565b61016b610166366004610e8e565b610b8b565b6040516001600160a01b039091168152602001610121565b610117610191366004610ea7565b6001600160a01b031660009081526003602052604090205490565b610102610be3565b60015461016b906001600160a01b031681565b6000546001600160a01b031661016b565b6101026101e6366004610ed7565b610c19565b6000546101ff90600160a01b900460ff1681565b6040519015158152602001610121565b61022261021d366004610ea7565b610c61565b6040516101219190610ef9565b61010261023d366004610ea7565b610cf5565b600054600160a01b900460ff166102965760405162461bcd60e51b815260206004820152601360248201527214dd185ada5b99c81b9bdd08195b98589b1959606a1b60448201526064015b60405180910390fd5b80806102de5760405162461bcd60e51b8152602060048201526017602482015276746f6b656e49647320617272617920697320656d70747960481b604482015260640161028d565b6001546001600160a01b031615610356576001546040516389a7c16360e01b81526001600160a01b03909116906389a7c1639061032390339087908790600401610f58565b600060405180830381600087803b15801561033d57600080fd5b505af1158015610351573d6000803e3d6000fd5b505050505b336000908152600360205260408120805442925b848110156104a857600087878381811061038657610386610fb2565b905060200201602081019061039b9190610fc8565b6040516323b872dd60e01b815233600482015230602482015261ffff82166044820152909150733a5051566b2241285be871f650c445a88a970edd906323b872dd90606401600060405180830381600087803b1580156103fa57600080fd5b505af115801561040e573d6000803e3d6000fd5b5050505061ffff9081166000818152600260208181526040832080546001600160e01b0319163367ffffffffffffffff60a01b191617600160a01b67ffffffffffffffff8c16021761ffff60e01b1916600160e01b89881602179055875460018181018a558985529190932060108404018054600f9094169092026101000a9485021990921693909202929092179055918201910161036a565b50505050505050565b600081815260026020526040812054600160a01b900467ffffffffffffffff16806105115760405162461bcd60e51b815260206004820152601060248201526f151bdad95b881b9bdd081cdd185ad95960821b604482015260640161028d565b92915050565b3360009081526003602052604090208054806105665760405162461bcd60e51b815260206004820152600e60248201526d139bdd1a1a5b99c81cdd185ad95960921b604482015260640161028d565b6001546001600160a01b0316156105dc5760015460405163267c5e0f60e21b81526001600160a01b03909116906399f1783c906105a99033908690600401610fe3565b600060405180830381600087803b1580156105c357600080fd5b505af11580156105d7573d6000803e3d6000fd5b505050505b60005b818110156106b95760008382815481106105fb576105fb610fb2565b6000918252602080832060108304015461ffff6002600f90941684026101000a9091041680845291905260409182902080546001600160f01b031916905590516323b872dd60e01b815230600482015233602482015260448101829052909150733a5051566b2241285be871f650c445a88a970edd906323b872dd90606401600060405180830381600087803b15801561069457600080fd5b505af11580156106a8573d6000803e3d6000fd5b5050600190930192506105df915050565b503360009081526003602052604081206106d291610de0565b5050565b6000546001600160a01b031633146107005760405162461bcd60e51b815260040161028d906112fe565b6001546001600160a01b0390811690821681141561077c5760405162461bcd60e51b815260206004820152603360248201527f4e6577207374616b696e672072657761726420636f6e74726163742069732073604482015272185b5948185cc81bdb190818dbdb9d1c9858dd606a1b606482015260840161028d565b6001600160a01b038116156107e757604051630cc6b63160e01b81526001600160a01b038381166004830152821690630cc6b63190602401600060405180830381600087803b1580156107ce57600080fd5b505af11580156107e2573d6000803e3d6000fd5b505050505b600180546001600160a01b0319166001600160a01b038416908117909155156106d257604051635732a8e360e11b81526001600160a01b03828116600483015283169063ae6551c690602401600060405180830381600087803b15801561084d57600080fd5b505af1158015610861573d6000803e3d6000fd5b505050505050565b80806108b15760405162461bcd60e51b8152602060048201526017602482015276746f6b656e49647320617272617920697320656d70747960481b604482015260640161028d565b6001546001600160a01b0316156109295760015460405163267c5e0f60e21b81526001600160a01b03909116906399f1783c906108f690339087908790600401610f58565b600060405180830381600087803b15801561091057600080fd5b505af1158015610924573d6000803e3d6000fd5b505050505b336000908152600360205260408120905b82811015610b8457600085858381811061095657610956610fb2565b905060200201602081019061096b9190610fc8565b61ffff166000818152600260205260409020549091506001600160a01b031633146109d85760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e206e6f74207374616b6564206f72206e6f74206f776e6564000000604482015260640161028d565b6000818152600260205260409020548354600160e01b90910461ffff169060001901808214610aa8576000858281548110610a1557610a15610fb2565b90600052602060002090601091828204019190066002029054906101000a900461ffff16905080868481548110610a4e57610a4e610fb2565b600091825260208083206010830401805461ffff9586166002600f90951685026101000a90810290870219909116179055938316825290925260409091208054918416600160e01b0261ffff60e01b199092169190911790555b84805480610ab857610ab8611333565b60008281526020808220601060001994909401938404018054600f851660029081026101000a61ffff021990911690915592909355858152915260409081902080546001600160f01b0319169055516323b872dd60e01b815230600482015233602482015260448101849052733a5051566b2241285be871f650c445a88a970edd906323b872dd90606401600060405180830381600087803b158015610b5d57600080fd5b505af1158015610b71573d6000803e3d6000fd5b50506001909501945061093a9350505050565b5050505050565b6000818152600260205260408120546001600160a01b0316806105115760405162461bcd60e51b815260206004820152601060248201526f151bdad95b881b9bdd081cdd185ad95960821b604482015260640161028d565b6000546001600160a01b03163314610c0d5760405162461bcd60e51b815260040161028d906112fe565b610c176000610d90565b565b6000546001600160a01b03163314610c435760405162461bcd60e51b815260040161028d906112fe565b60008054911515600160a01b0260ff60a01b19909216919091179055565b6001600160a01b038116600090815260036020908152604091829020805483518184028101840190945280845260609392830182828015610ce957602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610cb05790505b50505050509050919050565b6000546001600160a01b03163314610d1f5760405162461bcd60e51b815260040161028d906112fe565b6001600160a01b038116610d845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161028d565b610d8d81610d90565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b50805460008255600f016010900490600052602060002090810190610d8d91905b80821115610e155760008155600101610e01565b5090565b60008060208385031215610e2c57600080fd5b823567ffffffffffffffff80821115610e4457600080fd5b818501915085601f830112610e5857600080fd5b813581811115610e6757600080fd5b8660208260051b8501011115610e7c57600080fd5b60209290920196919550909350505050565b600060208284031215610ea057600080fd5b5035919050565b600060208284031215610eb957600080fd5b81356001600160a01b0381168114610ed057600080fd5b9392505050565b600060208284031215610ee957600080fd5b81358015158114610ed057600080fd5b6020808252825182820181905260009190848201906040850190845b81811015610f3557835161ffff1683529284019291840191600101610f15565b50909695505050505050565b803561ffff81168114610f5357600080fd5b919050565b6001600160a01b038416815260406020808301829052908201839052600090849060608401835b86811015610fa65761ffff610f9385610f41565b1682529282019290820190600101610f7f565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610fda57600080fd5b610ed082610f41565b6000604080830160018060a01b03861684526020828186015281865461100d818590815260200190565b60008981526020812095509092505b81600f8201101561114c57845461ffff8082168552601082901c81168686015281861c811688860152603082901c8116606080870191909152608061106a81880184868d1c1661ffff169052565b60a0611080818901858760501c1661ffff169052565b60c0611095818a018688871c1661ffff169052565b60e093506110ad848a01868860701c1661ffff169052565b61ffff86841c8616166101008a01526110d26101208a01868860901c1661ffff169052565b61ffff86831c8616166101408a01526110f76101608a01868860b01c1661ffff169052565b61ffff86821c8616166101808a015250505061111f6101a08701838560d01c1661ffff169052565b82901c1661ffff166101c085015260f01c6101e0840152600194909401936102009092019160100161101c565b935493818110156111665761ffff85168352918301916001015b8181101561118157601085901c61ffff168352918301916001015b8181101561119a5784841c61ffff168352918301916001015b818110156111b557603085901c61ffff168352918301916001015b818110156111ce5784861c61ffff168352918301916001015b818110156111e957605085901c61ffff168352918301916001015b8181101561120457606085901c61ffff168352918301916001015b8181101561121f57607085901c61ffff168352918301916001015b8181101561123a57608085901c61ffff168352918301916001015b8181101561125557609085901c61ffff168352918301916001015b818110156112705760a085901c61ffff168352918301916001015b8181101561128b5760b085901c61ffff168352918301916001015b818110156112a65760c085901c61ffff168352918301916001015b818110156112c15760d085901c61ffff168352918301916001015b818110156112dc5760e085901c61ffff168352918301916001015b818110156112f05760f085901c8352918301915b509098975050505050505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603160045260246000fdfea26469706673582212200631a73d59bd44f894c3d90ff85929b4289df7a0074237348e8309e5cccbb75964736f6c634300080b0033
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.