Contract Overview
Contract Name:
DoubleLibV1
Compiler Version
v0.8.10+commit.fc410830
// File @openzeppelin/contracts/utils/introspection/[email protected] // // 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); } // File @openzeppelin/contracts/utils/introspection/[email protected] // // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165Checker.sol) pragma solidity ^0.8.0; /** * @dev Library used to query support of an interface declared via {IERC165}. * * Note that these functions return the actual result of the query: they do not * `revert` if an interface is not supported. It is up to the caller to decide * what to do in these cases. */ library ERC165Checker { // As per the EIP-165 spec, no interface should ever match 0xffffffff bytes4 private constant _INTERFACE_ID_INVALID = 0xffffffff; /** * @dev Returns true if `account` supports the {IERC165} interface, */ function supportsERC165(address account) internal view returns (bool) { // Any contract that implements ERC165 must explicitly indicate support of // InterfaceId_ERC165 and explicitly indicate non-support of InterfaceId_Invalid return _supportsERC165Interface(account, type(IERC165).interfaceId) && !_supportsERC165Interface(account, _INTERFACE_ID_INVALID); } /** * @dev Returns true if `account` supports the interface defined by * `interfaceId`. Support for {IERC165} itself is queried automatically. * * See {IERC165-supportsInterface}. */ function supportsInterface(address account, bytes4 interfaceId) internal view returns (bool) { // query support of both ERC165 as per the spec and support of _interfaceId return supportsERC165(account) && _supportsERC165Interface(account, interfaceId); } /** * @dev Returns a boolean array where each value corresponds to the * interfaces passed in and whether they're supported or not. This allows * you to batch check interfaces for a contract where your expectation * is that some interfaces may not be supported. * * See {IERC165-supportsInterface}. * * _Available since v3.4._ */ function getSupportedInterfaces(address account, bytes4[] memory interfaceIds) internal view returns (bool[] memory) { // an array of booleans corresponding to interfaceIds and whether they're supported or not bool[] memory interfaceIdsSupported = new bool[](interfaceIds.length); // query support of ERC165 itself if (supportsERC165(account)) { // query support of each interface in interfaceIds for (uint256 i = 0; i < interfaceIds.length; i++) { interfaceIdsSupported[i] = _supportsERC165Interface(account, interfaceIds[i]); } } return interfaceIdsSupported; } /** * @dev Returns true if `account` supports all the interfaces defined in * `interfaceIds`. Support for {IERC165} itself is queried automatically. * * Batch-querying can lead to gas savings by skipping repeated checks for * {IERC165} support. * * See {IERC165-supportsInterface}. */ function supportsAllInterfaces(address account, bytes4[] memory interfaceIds) internal view returns (bool) { // query support of ERC165 itself if (!supportsERC165(account)) { return false; } // query support of each interface in _interfaceIds for (uint256 i = 0; i < interfaceIds.length; i++) { if (!_supportsERC165Interface(account, interfaceIds[i])) { return false; } } // all interfaces supported return true; } /** * @notice Query if a contract implements an interface, does not check ERC165 support * @param account The address of the contract to query for support of an interface * @param interfaceId The interface identifier, as specified in ERC-165 * @return true if the contract at account indicates support of the interface with * identifier interfaceId, false otherwise * @dev Assumes that account contains a contract that supports ERC165, otherwise * the behavior of this method is undefined. This precondition can be checked * with {supportsERC165}. * Interface identification is specified in ERC-165. */ function _supportsERC165Interface(address account, bytes4 interfaceId) private view returns (bool) { bytes memory encodedParams = abi.encodeWithSelector(IERC165.supportsInterface.selector, interfaceId); (bool success, bytes memory result) = account.staticcall{gas: 30000}(encodedParams); if (result.length < 32) return false; return success && abi.decode(result, (bool)); } } // File @openzeppelin/contracts/token/ERC721/[email protected] // // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; /** * @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; } // File @openzeppelin/contracts/token/ERC721/extensions/[email protected] // // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol) pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); } // File @openzeppelin/contracts/token/ERC721/extensions/[email protected] // // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol) pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); } // File contracts/lib/DoubleLibV1.sol pragma solidity ^0.8.0; // SPDX-License-Identifier: SEE LICENSE IN LICENSE contract DoubleLibV1 { function getNftOwnerAndTokenURI(address nftAddr, uint256 nftId) public view returns (address owner, string memory uri) { IERC721Metadata nft = IERC721Metadata(nftAddr); try nft.ownerOf(nftId) returns (address ownerAddr) { owner = ownerAddr; } catch {} try nft.tokenURI(nftId) returns (string memory tokenURI) { uri = tokenURI; } catch {} } function getNftOwnerAndIdByIndex(address nftAddr, uint256 index) public view returns (address owner, uint256 tokenId) { IERC721Enumerable nft = IERC721Enumerable(nftAddr); try nft.tokenByIndex(index) returns (uint256 _id) { tokenId = _id; } catch {} try nft.ownerOf(tokenId) returns (address _owner) { owner = _owner; } catch {} } function getNftOwner(address nftAddr, uint256 nftId) public view returns (address owner){ IERC721Metadata nft = IERC721Metadata(nftAddr); try nft.ownerOf(nftId) returns (address _owner) { owner = _owner; } catch {} return owner; } function batchGetNftOwner(address nftAddr, uint256[] memory nftIds) public view returns (address[] memory) { address[] memory owners = new address[](uint(nftIds.length)); for(uint i=0;i<nftIds.length;i++){ owners[i] = getNftOwner(nftAddr, nftIds[i]); } return owners; } function getNftNameAndSymbol(address nftAddr) public view returns (string memory name, string memory symbol){ IERC721Metadata nft = IERC721Metadata(nftAddr); try nft.name() returns (string memory _name) { name = _name; } catch {} try nft.symbol() returns (string memory _symbol) { symbol = _symbol; } catch {} } /** * @dev Returns true if `account` supports the interface defined by * `interfaceId`. Support for {IERC165} itself is queried automatically. * * See {IERC165-supportsInterface}. */ function supportsInterface(address account, bytes4 interfaceId) public view returns (bool) { return ERC165Checker.supportsInterface(account,interfaceId); } function supportsInterfaceArray(address account, bytes4[] memory interfaceIds) external view returns (bool[] memory) { bool[] memory checkResults = new bool[](uint(interfaceIds.length)); for(uint i=0;i<interfaceIds.length;i++){ checkResults[i] = ERC165Checker.supportsInterface(account, interfaceIds[i]); } return checkResults; } function supportsInterfaceMultiAccounts(address[] memory accounts, bytes4 interfaceId) external view returns (bool[] memory) { bool[] memory checkResults = new bool[](uint(accounts.length)); for(uint i=0;i<accounts.length;i++){ checkResults[i] = ERC165Checker.supportsInterface(accounts[i],interfaceId); } return checkResults; } function multiStaticCall(address[] calldata addr, bytes[] calldata data) external view returns (bool[] memory bools,bytes[] memory results) { require(addr.length==data.length); bools = new bool[](data.length); results = new bytes[](data.length); for (uint256 i = 0; i < data.length; i++) { (bool success, bytes memory result) = address(addr[i]).staticcall( data[i] ); bools[i] = success; if(success) results[i] = result; } } function singleContractMultiStaticCall(address addr, bytes[] calldata data) external view returns (bool[] memory bools,bytes[] memory results) { bools = new bool[](data.length); results = new bytes[](data.length); for (uint256 i = 0; i < data.length; i++) { (bool success, bytes memory result) = addr.staticcall( data[i] ); bools[i] = success; if(success) results[i] = result; } } function isContract(address account) external view returns(bool ){ return account.code.length >0; } function isContractAndCheckInterface(address account, bytes4[] memory interfaceIds) external view returns (bool , bool[] memory ) { bool ifContract; bool[] memory checkResults = new bool[](uint(interfaceIds.length)); if(account.code.length>0){ifContract =true;} if(!ifContract){ return(ifContract,checkResults); } for(uint i=0;i<interfaceIds.length;i++){ checkResults[i] = ERC165Checker.supportsInterface(account, interfaceIds[i]); } return(ifContract,checkResults); } }
[{"inputs":[{"internalType":"address","name":"nftAddr","type":"address"},{"internalType":"uint256[]","name":"nftIds","type":"uint256[]"}],"name":"batchGetNftOwner","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"nftAddr","type":"address"}],"name":"getNftNameAndSymbol","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"nftAddr","type":"address"},{"internalType":"uint256","name":"nftId","type":"uint256"}],"name":"getNftOwner","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"nftAddr","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getNftOwnerAndIdByIndex","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"nftAddr","type":"address"},{"internalType":"uint256","name":"nftId","type":"uint256"}],"name":"getNftOwnerAndTokenURI","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"string","name":"uri","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes4[]","name":"interfaceIds","type":"bytes4[]"}],"name":"isContractAndCheckInterface","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool[]","name":"","type":"bool[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addr","type":"address[]"},{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multiStaticCall","outputs":[{"internalType":"bool[]","name":"bools","type":"bool[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"singleContractMultiStaticCall","outputs":[{"internalType":"bool[]","name":"bools","type":"bool[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes4[]","name":"interfaceIds","type":"bytes4[]"}],"name":"supportsInterfaceArray","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterfaceMultiAccounts","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50600436106100b45760003560e01c80639c5367dc116100715780639c5367dc1461018f578063c3f8794f146101a2578063d9057007146101c3578063f21c30d2146101d6578063fc462fdb146101f7578063fc7ce7011461021757600080fd5b806303cb66e0146100b957806316279055146100e357806318233d84146101105780633c3b548114610131578063504461361461015157806367f07a351461017c575b600080fd5b6100cc6100c7366004610d55565b610249565b6040516100da929190610e42565b60405180910390f35b6101006100f1366004610eb4565b6001600160a01b03163b151590565b60405190151581526020016100da565b61012361011e366004610eb4565b6103d3565b6040516100da929190610ed1565b61014461013f366004610f85565b6104b7565b6040516100da9190611036565b61016461015f366004611049565b61056d565b6040516001600160a01b0390911681526020016100da565b61014461018a366004611075565b6105e6565b6100cc61019d366004611120565b610692565b6101b56101b0366004611049565b61084f565b6040516100da92919061118b565b6101006101d13660046111b7565b61093e565b6101e96101e4366004610f85565b610951565b6040516100da9291906111ec565b61020a610205366004611207565b610a25565b6040516100da919061129d565b61022a610225366004611049565b610ad9565b604080516001600160a01b0390931683526020830191909152016100da565b606080826001600160401b0381111561026457610264610eff565b60405190808252806020026020018201604052801561028d578160200160208202803683370190505b509150826001600160401b038111156102a8576102a8610eff565b6040519080825280602002602001820160405280156102db57816020015b60608152602001906001900390816102c65790505b50905060005b838110156103ca57600080876001600160a01b0316878785818110610308576103086112ea565b905060200281019061031a9190611300565b604051610328929190611346565b600060405180830381855afa9150503d8060008114610363576040519150601f19603f3d011682016040523d82523d6000602084013e610368565b606091505b509150915081858481518110610380576103806112ea565b9115156020928302919091019091015281156103b557808484815181106103a9576103a96112ea565b60200260200101819052505b505080806103c290611356565b9150506102e1565b50935093915050565b6060806000839050806001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa92505050801561043a57506040513d6000823e601f3d908101601f19168201604052610437919081019061137f565b60015b61044357610446565b92505b806001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa9250505080156104a557506040513d6000823e601f3d908101601f191682016040526104a2919081019061137f565b60015b6104ae576104b1565b91505b50915091565b6060600082516001600160401b038111156104d4576104d4610eff565b6040519080825280602002602001820160405280156104fd578160200160208202803683370190505b50905060005b83518110156105635761052f85858381518110610522576105226112ea565b6020026020010151610bc1565b828281518110610541576105416112ea565b911515602092830291909101909101528061055b81611356565b915050610503565b5090505b92915050565b6040516331a9108f60e11b81526004810182905260009083906001600160a01b03821690636352211e90602401602060405180830381865afa9250505080156105d3575060408051601f3d908101601f191682019092526105d091810190611412565b60015b6105dc576105df565b91505b5092915050565b6060600083516001600160401b0381111561060357610603610eff565b60405190808252806020026020018201604052801561062c578160200160208202803683370190505b50905060005b84518110156105635761065e858281518110610650576106506112ea565b602002602001015185610bc1565b828281518110610670576106706112ea565b911515602092830291909101909101528061068a81611356565b915050610632565b6060808483146106a157600080fd5b826001600160401b038111156106b9576106b9610eff565b6040519080825280602002602001820160405280156106e2578160200160208202803683370190505b509150826001600160401b038111156106fd576106fd610eff565b60405190808252806020026020018201604052801561073057816020015b606081526020019060019003908161071b5790505b50905060005b8381101561084557600080888884818110610753576107536112ea565b90506020020160208101906107689190610eb4565b6001600160a01b0316878785818110610783576107836112ea565b90506020028101906107959190611300565b6040516107a3929190611346565b600060405180830381855afa9150503d80600081146107de576040519150601f19603f3d011682016040523d82523d6000602084013e6107e3565b606091505b5091509150818584815181106107fb576107fb6112ea565b9115156020928302919091019091015281156108305780848481518110610824576108246112ea565b60200260200101819052505b5050808061083d90611356565b915050610736565b5094509492505050565b6040516331a9108f60e11b81526004810182905260009060609084906001600160a01b03821690636352211e90602401602060405180830381865afa9250505080156108b8575060408051601f3d908101601f191682019092526108b591810190611412565b60015b6108c1576108c4565b92505b60405163c87b56dd60e01b8152600481018590526001600160a01b0382169063c87b56dd90602401600060405180830381865afa92505050801561092a57506040513d6000823e601f3d908101601f19168201604052610927919081019061137f565b60015b61093357610936565b91505b509250929050565b600061094a8383610bc1565b9392505050565b6000606060008084516001600160401b0381111561097157610971610eff565b60405190808252806020026020018201604052801561099a578160200160208202803683370190505b5090506001600160a01b0386163b156109b257600191505b816109c1579092509050610a1e565b60005b8551811015610a17576109e387878381518110610522576105226112ea565b8282815181106109f5576109f56112ea565b9115156020928302919091019091015280610a0f81611356565b9150506109c4565b5090925090505b9250929050565b6060600082516001600160401b03811115610a4257610a42610eff565b604051908082528060200260200182016040528015610a6b578160200160208202803683370190505b50905060005b835181101561056357610a9d85858381518110610a9057610a906112ea565b602002602001015161056d565b828281518110610aaf57610aaf6112ea565b6001600160a01b039092166020928302919091019091015280610ad181611356565b915050610a71565b604051634f6ccce760e01b815260048101829052600090819084906001600160a01b03821690634f6ccce790602401602060405180830381865afa925050508015610b41575060408051601f3d908101601f19168201909252610b3e9181019061142f565b60015b610b4a57610b4d565b91505b6040516331a9108f60e11b8152600481018390526001600160a01b03821690636352211e90602401602060405180830381865afa925050508015610bae575060408051601f3d908101601f19168201909252610bab91810190611412565b60015b610bb757610936565b9250509250929050565b6000610bcc83610bdd565b801561094a575061094a8383610c10565b6000610bf0826301ffc9a760e01b610c10565b80156105675750610c09826001600160e01b0319610c10565b1592915050565b604080516001600160e01b0319831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166301ffc9a760e01b179052905160009190829081906001600160a01b0387169061753090610c77908690611448565b6000604051808303818686fa925050503d8060008114610cb3576040519150601f19603f3d011682016040523d82523d6000602084013e610cb8565b606091505b5091509150602081511015610cd35760009350505050610567565b818015610cef575080806020019051810190610cef9190611464565b9695505050505050565b6001600160a01b0381168114610d0e57600080fd5b50565b60008083601f840112610d2357600080fd5b5081356001600160401b03811115610d3a57600080fd5b6020830191508360208260051b8501011115610a1e57600080fd5b600080600060408486031215610d6a57600080fd5b8335610d7581610cf9565b925060208401356001600160401b03811115610d9057600080fd5b610d9c86828701610d11565b9497909650939450505050565b600081518084526020808501945080840160005b83811015610ddb578151151587529582019590820190600101610dbd565b509495945050505050565b60005b83811015610e01578181015183820152602001610de9565b83811115610e10576000848401525b50505050565b60008151808452610e2e816020860160208601610de6565b601f01601f19169290920160200192915050565b604081526000610e556040830185610da9565b6020838203818501528185518084528284019150828160051b85010183880160005b83811015610ea557601f19878403018552610e93838351610e16565b94860194925090850190600101610e77565b50909998505050505050505050565b600060208284031215610ec657600080fd5b813561094a81610cf9565b604081526000610ee46040830185610e16565b8281036020840152610ef68185610e16565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715610f3d57610f3d610eff565b604052919050565b60006001600160401b03821115610f5e57610f5e610eff565b5060051b60200190565b80356001600160e01b031981168114610f8057600080fd5b919050565b60008060408385031215610f9857600080fd5b8235610fa381610cf9565b91506020838101356001600160401b03811115610fbf57600080fd5b8401601f81018613610fd057600080fd5b8035610fe3610fde82610f45565b610f15565b81815260059190911b8201830190838101908883111561100257600080fd5b928401925b828410156110275761101884610f68565b82529284019290840190611007565b80955050505050509250929050565b60208152600061094a6020830184610da9565b6000806040838503121561105c57600080fd5b823561106781610cf9565b946020939093013593505050565b6000806040838503121561108857600080fd5b82356001600160401b0381111561109e57600080fd5b8301601f810185136110af57600080fd5b803560206110bf610fde83610f45565b82815260059290921b830181019181810190888411156110de57600080fd5b938201935b838510156111055784356110f681610cf9565b825293820193908201906110e3565b95506111149050868201610f68565b93505050509250929050565b6000806000806040858703121561113657600080fd5b84356001600160401b038082111561114d57600080fd5b61115988838901610d11565b9096509450602087013591508082111561117257600080fd5b5061117f87828801610d11565b95989497509550505050565b6001600160a01b03831681526040602082018190526000906111af90830184610e16565b949350505050565b600080604083850312156111ca57600080fd5b82356111d581610cf9565b91506111e360208401610f68565b90509250929050565b82151581526040602082015260006111af6040830184610da9565b6000806040838503121561121a57600080fd5b823561122581610cf9565b91506020838101356001600160401b0381111561124157600080fd5b8401601f8101861361125257600080fd5b8035611260610fde82610f45565b81815260059190911b8201830190838101908883111561127f57600080fd5b928401925b8284101561102757833582529284019290840190611284565b6020808252825182820181905260009190848201906040850190845b818110156112de5783516001600160a01b0316835292840192918401916001016112b9565b50909695505050505050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261131757600080fd5b8301803591506001600160401b0382111561133157600080fd5b602001915036819003821315610a1e57600080fd5b8183823760009101908152919050565b600060001982141561137857634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561139157600080fd5b81516001600160401b03808211156113a857600080fd5b818401915084601f8301126113bc57600080fd5b8151818111156113ce576113ce610eff565b6113e1601f8201601f1916602001610f15565b91508082528560208285010111156113f857600080fd5b611409816020840160208601610de6565b50949350505050565b60006020828403121561142457600080fd5b815161094a81610cf9565b60006020828403121561144157600080fd5b5051919050565b6000825161145a818460208701610de6565b9190910192915050565b60006020828403121561147657600080fd5b8151801515811461094a57600080fdfea2646970667358221220b1b2cd3f8dfd4550b76dcf37c8b900f35edebe25fb6669a4b8c92587b3ca543464736f6c634300080a0033
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for
interesting conversations.