Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 385 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Batch Burn | 18408356 | 428 days ago | IN | 0 ETH | 0.0158207 | ||||
Batch Burn | 18408234 | 428 days ago | IN | 0 ETH | 0.00126055 | ||||
Batch Burn | 18408037 | 428 days ago | IN | 0 ETH | 0.00111237 | ||||
Batch Burn | 18407416 | 428 days ago | IN | 0 ETH | 0.03394528 | ||||
Batch Burn | 18407089 | 428 days ago | IN | 0 ETH | 0.00549243 | ||||
Batch Burn | 18407068 | 428 days ago | IN | 0 ETH | 0.00517676 | ||||
Batch Burn | 18407051 | 428 days ago | IN | 0 ETH | 0.00263907 | ||||
Batch Burn | 18405556 | 428 days ago | IN | 0 ETH | 0.00080199 | ||||
Batch Burn | 18405544 | 428 days ago | IN | 0 ETH | 0.00258827 | ||||
Batch Burn | 18404810 | 428 days ago | IN | 0 ETH | 0.00066827 | ||||
Batch Burn | 18404374 | 428 days ago | IN | 0 ETH | 0.00085362 | ||||
Batch Burn | 18401381 | 429 days ago | IN | 0 ETH | 0.0012637 | ||||
Batch Burn | 18400701 | 429 days ago | IN | 0 ETH | 0.00279885 | ||||
Burn | 18398630 | 429 days ago | IN | 0 ETH | 0.00045297 | ||||
Batch Burn | 18398542 | 429 days ago | IN | 0 ETH | 0.00834578 | ||||
Batch Burn | 18398061 | 429 days ago | IN | 0 ETH | 0.00642031 | ||||
Batch Burn | 18396555 | 429 days ago | IN | 0 ETH | 0.00056634 | ||||
Batch Burn | 18395656 | 430 days ago | IN | 0 ETH | 0.00181252 | ||||
Batch Burn | 18394900 | 430 days ago | IN | 0 ETH | 0.00058137 | ||||
Batch Burn | 18393121 | 430 days ago | IN | 0 ETH | 0.00097864 | ||||
Burn | 18390330 | 430 days ago | IN | 0 ETH | 0.00041153 | ||||
Batch Burn | 18390297 | 430 days ago | IN | 0 ETH | 0.00114894 | ||||
Batch Burn | 18389570 | 430 days ago | IN | 0 ETH | 0.00057126 | ||||
Batch Burn | 18388466 | 431 days ago | IN | 0 ETH | 0.00067744 | ||||
Batch Burn | 18388338 | 431 days ago | IN | 0 ETH | 0.00182676 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
BurnerContract
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// Layout of Contract: // version // imports // errors // interfaces, libraries, contracts // Type declarations // State variables // Events // Modifiers // Functions // Layout of Functions: // constructor // receive function (if exists) // fallback function (if exists) // external // public // internal // private // view & pure functions // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; import "@thirdweb-dev/contracts/extension/Permissions.sol"; import {INiftyKitCollection} from "../interfaces/INiftyKitCollection.sol"; contract BurnerContract is Permissions { error BurnerContract__NotOwner(); INiftyKitCollection private targetCollection; constructor() { _setupRole(DEFAULT_ADMIN_ROLE, msg.sender); } function setCollection( address _targetCollection ) public onlyRole(DEFAULT_ADMIN_ROLE) { targetCollection = INiftyKitCollection(_targetCollection); } function burn(uint256 tokenId) public { address owner = targetCollection.ownerOf(tokenId); if (owner != msg.sender) { revert BurnerContract__NotOwner(); } targetCollection.burn(tokenId); } function batchBurn(uint256[] calldata tokenIds) public { uint256 length = tokenIds.length; for (uint256 i = 0; i < length; i++) { address owner = targetCollection.ownerOf(tokenIds[i]); if (owner != msg.sender) { revert BurnerContract__NotOwner(); } } for (uint256 i = 0; i < length; i++) { targetCollection.burn(tokenIds[i]); } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.19; interface INiftyKitCollection { function burn(uint256 tokenId) external; function ownerOf(uint256 tokenId) external view returns (address owner); }
// SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.0; /// @author thirdweb import "./interface/IPermissions.sol"; import "../lib/TWStrings.sol"; /** * @title Permissions * @dev This contracts provides extending-contracts with role-based access control mechanisms */ contract Permissions is IPermissions { /// @dev Map from keccak256 hash of a role => a map from address => whether address has role. mapping(bytes32 => mapping(address => bool)) private _hasRole; /// @dev Map from keccak256 hash of a role to role admin. See {getRoleAdmin}. mapping(bytes32 => bytes32) private _getRoleAdmin; /// @dev Default admin role for all roles. Only accounts with this role can grant/revoke other roles. bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; /// @dev Modifier that checks if an account has the specified role; reverts otherwise. modifier onlyRole(bytes32 role) { _checkRole(role, msg.sender); _; } /** * @notice Checks whether an account has a particular role. * @dev Returns `true` if `account` has been granted `role`. * * @param role keccak256 hash of the role. e.g. keccak256("TRANSFER_ROLE") * @param account Address of the account for which the role is being checked. */ function hasRole(bytes32 role, address account) public view override returns (bool) { return _hasRole[role][account]; } /** * @notice Checks whether an account has a particular role; * role restrictions can be swtiched on and off. * * @dev Returns `true` if `account` has been granted `role`. * Role restrictions can be swtiched on and off: * - If address(0) has ROLE, then the ROLE restrictions * don't apply. * - If address(0) does not have ROLE, then the ROLE * restrictions will apply. * * @param role keccak256 hash of the role. e.g. keccak256("TRANSFER_ROLE") * @param account Address of the account for which the role is being checked. */ function hasRoleWithSwitch(bytes32 role, address account) public view returns (bool) { if (!_hasRole[role][address(0)]) { return _hasRole[role][account]; } return true; } /** * @notice Returns the admin role that controls the specified role. * @dev See {grantRole} and {revokeRole}. * To change a role's admin, use {_setRoleAdmin}. * * @param role keccak256 hash of the role. e.g. keccak256("TRANSFER_ROLE") */ function getRoleAdmin(bytes32 role) external view override returns (bytes32) { return _getRoleAdmin[role]; } /** * @notice Grants a role to an account, if not previously granted. * @dev Caller must have admin role for the `role`. * Emits {RoleGranted Event}. * * @param role keccak256 hash of the role. e.g. keccak256("TRANSFER_ROLE") * @param account Address of the account to which the role is being granted. */ function grantRole(bytes32 role, address account) public virtual override { _checkRole(_getRoleAdmin[role], msg.sender); if (_hasRole[role][account]) { revert("Can only grant to non holders"); } _setupRole(role, account); } /** * @notice Revokes role from an account. * @dev Caller must have admin role for the `role`. * Emits {RoleRevoked Event}. * * @param role keccak256 hash of the role. e.g. keccak256("TRANSFER_ROLE") * @param account Address of the account from which the role is being revoked. */ function revokeRole(bytes32 role, address account) public virtual override { _checkRole(_getRoleAdmin[role], msg.sender); _revokeRole(role, account); } /** * @notice Revokes role from the account. * @dev Caller must have the `role`, with caller being the same as `account`. * Emits {RoleRevoked Event}. * * @param role keccak256 hash of the role. e.g. keccak256("TRANSFER_ROLE") * @param account Address of the account from which the role is being revoked. */ function renounceRole(bytes32 role, address account) public virtual override { if (msg.sender != account) { revert("Can only renounce for self"); } _revokeRole(role, account); } /// @dev Sets `adminRole` as `role`'s admin role. function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { bytes32 previousAdminRole = _getRoleAdmin[role]; _getRoleAdmin[role] = adminRole; emit RoleAdminChanged(role, previousAdminRole, adminRole); } /// @dev Sets up `role` for `account` function _setupRole(bytes32 role, address account) internal virtual { _hasRole[role][account] = true; emit RoleGranted(role, account, msg.sender); } /// @dev Revokes `role` from `account` function _revokeRole(bytes32 role, address account) internal virtual { _checkRole(role, account); delete _hasRole[role][account]; emit RoleRevoked(role, account, msg.sender); } /// @dev Checks `role` for `account`. Reverts with a message including the required role. function _checkRole(bytes32 role, address account) internal view virtual { if (!_hasRole[role][account]) { revert( string( abi.encodePacked( "Permissions: account ", TWStrings.toHexString(uint160(account), 20), " is missing role ", TWStrings.toHexString(uint256(role), 32) ) ) ); } } /// @dev Checks `role` for `account`. Reverts with a message including the required role. function _checkRoleWithSwitch(bytes32 role, address account) internal view virtual { if (!hasRoleWithSwitch(role, account)) { revert( string( abi.encodePacked( "Permissions: account ", TWStrings.toHexString(uint160(account), 20), " is missing role ", TWStrings.toHexString(uint256(role), 32) ) ) ); } } }
// SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.0; /// @author thirdweb /** * @dev External interface of AccessControl declared to support ERC165 detection. */ interface IPermissions { /** * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` * * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite * {RoleAdminChanged} not being emitted signaling this. * * _Available since v3.1._ */ event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); /** * @dev Emitted when `account` is granted `role`. * * `sender` is the account that originated the contract call, an admin role * bearer except when using {AccessControl-_setupRole}. */ event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Emitted when `account` is revoked `role`. * * `sender` is the account that originated the contract call: * - if using `revokeRole`, it is the admin role bearer * - if using `renounceRole`, it is the role bearer (i.e. `account`) */ event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) external view returns (bool); /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {AccessControl-_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) external view returns (bytes32); /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) external; /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) external; /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been granted `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) external; }
// SPDX-License-Identifier: Apache 2.0 pragma solidity ^0.8.0; /// @author thirdweb /** * @dev String operations. */ library TWStrings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } }
{ "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "paris", "remappings": [ ":@thirdweb-dev/=node_modules/@thirdweb-dev/", ":ds-test/=lib/forge-std/lib/ds-test/src/", ":forge-std/=lib/forge-std/src/" ], "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"},{"inputs":[],"name":"BurnerContract__NotOwner","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"batchBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRoleWithSwitch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_targetCollection","type":"address"}],"name":"setCollection","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5061001c600033610021565b61007a565b6000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916600117905551339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b610b3c806100896000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806391d148541161006657806391d1485414610124578063a217fddf14610147578063a32fa5b31461014f578063d547741f14610162578063dc8e92ea1461017557600080fd5b8063248a9ca3146100a35780632f2ff15d146100d657806336568abe146100eb57806342966c68146100fe578063768b5fd514610111575b600080fd5b6100c36100b1366004610896565b60009081526001602052604090205490565b6040519081526020015b60405180910390f35b6100e96100e43660046108c7565b610188565b005b6100e96100f93660046108c7565b610225565b6100e961010c366004610896565b610287565b6100e961011f3660046108f7565b610382565b6101376101323660046108c7565b6103b1565b60405190151581526020016100cd565b6100c3600081565b61013761015d3660046108c7565b6103dc565b6100e96101703660046108c7565b61042e565b6100e9610183366004610914565b610447565b6000828152600160205260409020546101a190336105bc565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16156102175760405162461bcd60e51b815260206004820152601d60248201527f43616e206f6e6c79206772616e7420746f206e6f6e20686f6c6465727300000060448201526064015b60405180910390fd5b610221828261063a565b5050565b336001600160a01b0382161461027d5760405162461bcd60e51b815260206004820152601a60248201527f43616e206f6e6c792072656e6f756e636520666f722073656c66000000000000604482015260640161020e565b6102218282610693565b6002546040516331a9108f60e11b8152600481018390526000916001600160a01b031690636352211e90602401602060405180830381865afa1580156102d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f59190610989565b90506001600160a01b03811633146103205760405163199ba92360e01b815260040160405180910390fd5b600254604051630852cd8d60e31b8152600481018490526001600160a01b03909116906342966c6890602401600060405180830381600087803b15801561036657600080fd5b505af115801561037a573d6000803e3d6000fd5b505050505050565b600061038e81336105bc565b50600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000828152602081815260408083206001600160a01b038516845290915290205460ff165b92915050565b60008281526020818152604080832083805290915281205460ff1661042557506000828152602081815260408083206001600160a01b038516845290915290205460ff166103d6565b50600192915050565b60008281526001602052604090205461027d90336105bc565b8060005b8181101561051d576002546000906001600160a01b0316636352211e868685818110610479576104796109a6565b905060200201356040518263ffffffff1660e01b815260040161049e91815260200190565b602060405180830381865afa1580156104bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104df9190610989565b90506001600160a01b038116331461050a5760405163199ba92360e01b815260040160405180910390fd5b5080610515816109d2565b91505061044b565b5060005b818110156105b6576002546001600160a01b03166342966c6885858481811061054c5761054c6109a6565b905060200201356040518263ffffffff1660e01b815260040161057191815260200190565b600060405180830381600087803b15801561058b57600080fd5b505af115801561059f573d6000803e3d6000fd5b5050505080806105ae906109d2565b915050610521565b50505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16610221576105f8816001600160a01b031660146106f3565b6106038360206106f3565b604051602001610614929190610a0f565b60408051601f198184030181529082905262461bcd60e51b825261020e91600401610a7c565b6000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916600117905551339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b61069d82826105bc565b6000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60606000610702836002610aaf565b61070d906002610ac6565b67ffffffffffffffff81111561072557610725610ad9565b6040519080825280601f01601f19166020018201604052801561074f576020820181803683370190505b509050600360fc1b8160008151811061076a5761076a6109a6565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610799576107996109a6565b60200101906001600160f81b031916908160001a90535060006107bd846002610aaf565b6107c8906001610ac6565b90505b6001811115610840576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106107fc576107fc6109a6565b1a60f81b828281518110610812576108126109a6565b60200101906001600160f81b031916908160001a90535060049490941c9361083981610aef565b90506107cb565b50831561088f5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161020e565b9392505050565b6000602082840312156108a857600080fd5b5035919050565b6001600160a01b03811681146108c457600080fd5b50565b600080604083850312156108da57600080fd5b8235915060208301356108ec816108af565b809150509250929050565b60006020828403121561090957600080fd5b813561088f816108af565b6000806020838503121561092757600080fd5b823567ffffffffffffffff8082111561093f57600080fd5b818501915085601f83011261095357600080fd5b81358181111561096257600080fd5b8660208260051b850101111561097757600080fd5b60209290920196919550909350505050565b60006020828403121561099b57600080fd5b815161088f816108af565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016109e4576109e46109bc565b5060010190565b60005b83811015610a065781810151838201526020016109ee565b50506000910152565b7402832b936b4b9b9b4b7b7399d1030b1b1b7bab73a1605d1b815260008351610a3f8160158501602088016109eb565b7001034b99036b4b9b9b4b733903937b6329607d1b6015918401918201528351610a708160268401602088016109eb565b01602601949350505050565b6020815260008251806020840152610a9b8160408501602087016109eb565b601f01601f19169190910160400192915050565b80820281158282048414176103d6576103d66109bc565b808201808211156103d6576103d66109bc565b634e487b7160e01b600052604160045260246000fd5b600081610afe57610afe6109bc565b50600019019056fea2646970667358221220a52372e9ca6522ca1bc2f592c5646e1ab2af1c653102bee5b4996dbf294b7ddb64736f6c63430008140033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061009e5760003560e01c806391d148541161006657806391d1485414610124578063a217fddf14610147578063a32fa5b31461014f578063d547741f14610162578063dc8e92ea1461017557600080fd5b8063248a9ca3146100a35780632f2ff15d146100d657806336568abe146100eb57806342966c68146100fe578063768b5fd514610111575b600080fd5b6100c36100b1366004610896565b60009081526001602052604090205490565b6040519081526020015b60405180910390f35b6100e96100e43660046108c7565b610188565b005b6100e96100f93660046108c7565b610225565b6100e961010c366004610896565b610287565b6100e961011f3660046108f7565b610382565b6101376101323660046108c7565b6103b1565b60405190151581526020016100cd565b6100c3600081565b61013761015d3660046108c7565b6103dc565b6100e96101703660046108c7565b61042e565b6100e9610183366004610914565b610447565b6000828152600160205260409020546101a190336105bc565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16156102175760405162461bcd60e51b815260206004820152601d60248201527f43616e206f6e6c79206772616e7420746f206e6f6e20686f6c6465727300000060448201526064015b60405180910390fd5b610221828261063a565b5050565b336001600160a01b0382161461027d5760405162461bcd60e51b815260206004820152601a60248201527f43616e206f6e6c792072656e6f756e636520666f722073656c66000000000000604482015260640161020e565b6102218282610693565b6002546040516331a9108f60e11b8152600481018390526000916001600160a01b031690636352211e90602401602060405180830381865afa1580156102d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f59190610989565b90506001600160a01b03811633146103205760405163199ba92360e01b815260040160405180910390fd5b600254604051630852cd8d60e31b8152600481018490526001600160a01b03909116906342966c6890602401600060405180830381600087803b15801561036657600080fd5b505af115801561037a573d6000803e3d6000fd5b505050505050565b600061038e81336105bc565b50600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000828152602081815260408083206001600160a01b038516845290915290205460ff165b92915050565b60008281526020818152604080832083805290915281205460ff1661042557506000828152602081815260408083206001600160a01b038516845290915290205460ff166103d6565b50600192915050565b60008281526001602052604090205461027d90336105bc565b8060005b8181101561051d576002546000906001600160a01b0316636352211e868685818110610479576104796109a6565b905060200201356040518263ffffffff1660e01b815260040161049e91815260200190565b602060405180830381865afa1580156104bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104df9190610989565b90506001600160a01b038116331461050a5760405163199ba92360e01b815260040160405180910390fd5b5080610515816109d2565b91505061044b565b5060005b818110156105b6576002546001600160a01b03166342966c6885858481811061054c5761054c6109a6565b905060200201356040518263ffffffff1660e01b815260040161057191815260200190565b600060405180830381600087803b15801561058b57600080fd5b505af115801561059f573d6000803e3d6000fd5b5050505080806105ae906109d2565b915050610521565b50505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16610221576105f8816001600160a01b031660146106f3565b6106038360206106f3565b604051602001610614929190610a0f565b60408051601f198184030181529082905262461bcd60e51b825261020e91600401610a7c565b6000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916600117905551339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b61069d82826105bc565b6000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60606000610702836002610aaf565b61070d906002610ac6565b67ffffffffffffffff81111561072557610725610ad9565b6040519080825280601f01601f19166020018201604052801561074f576020820181803683370190505b509050600360fc1b8160008151811061076a5761076a6109a6565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610799576107996109a6565b60200101906001600160f81b031916908160001a90535060006107bd846002610aaf565b6107c8906001610ac6565b90505b6001811115610840576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106107fc576107fc6109a6565b1a60f81b828281518110610812576108126109a6565b60200101906001600160f81b031916908160001a90535060049490941c9361083981610aef565b90506107cb565b50831561088f5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161020e565b9392505050565b6000602082840312156108a857600080fd5b5035919050565b6001600160a01b03811681146108c457600080fd5b50565b600080604083850312156108da57600080fd5b8235915060208301356108ec816108af565b809150509250929050565b60006020828403121561090957600080fd5b813561088f816108af565b6000806020838503121561092757600080fd5b823567ffffffffffffffff8082111561093f57600080fd5b818501915085601f83011261095357600080fd5b81358181111561096257600080fd5b8660208260051b850101111561097757600080fd5b60209290920196919550909350505050565b60006020828403121561099b57600080fd5b815161088f816108af565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016109e4576109e46109bc565b5060010190565b60005b83811015610a065781810151838201526020016109ee565b50506000910152565b7402832b936b4b9b9b4b7b7399d1030b1b1b7bab73a1605d1b815260008351610a3f8160158501602088016109eb565b7001034b99036b4b9b9b4b733903937b6329607d1b6015918401918201528351610a708160268401602088016109eb565b01602601949350505050565b6020815260008251806020840152610a9b8160408501602087016109eb565b601f01601f19169190910160400192915050565b80820281158282048414176103d6576103d66109bc565b808201808211156103d6576103d66109bc565b634e487b7160e01b600052604160045260246000fd5b600081610afe57610afe6109bc565b50600019019056fea2646970667358221220a52372e9ca6522ca1bc2f592c5646e1ab2af1c653102bee5b4996dbf294b7ddb64736f6c63430008140033
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.