ERC-20
Overview
Max Total Supply
50,009.476597117 BLKD
Holders
36
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.000011681 BLKDValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BlackDAOERC20Token
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: AGPL-3.0 pragma solidity ^0.7.5; import "./libraries/SafeMath.sol"; import "./interfaces/IERC20.sol"; import "./interfaces/IBLKD.sol"; import "./interfaces/IERC20Permit.sol"; import "./types/ERC20Permit.sol"; import "./types/BlackDAOAccessControlled.sol"; contract BlackDAOERC20Token is ERC20Permit, IBLKD, BlackDAOAccessControlled { using SafeMath for uint256; constructor(address _authority) ERC20("BlackDAO", "BLKD", 9) ERC20Permit("BlackDAO") BlackDAOAccessControlled(IBlackDAOAuthority(_authority)) {} function mint(address account_, uint256 amount_) external override onlyVault { _mint(account_, amount_); } function burn(uint256 amount) external override { _burn(msg.sender, amount); } function burnFrom(address account_, uint256 amount_) external override { _burnFrom(account_, amount_); } function _burnFrom(address account_, uint256 amount_) internal { uint256 decreasedAllowance_ = allowance(account_, msg.sender).sub( amount_, "ERC20: burn amount exceeds allowance" ); _approve(account_, msg.sender, decreasedAllowance_); _burn(account_, amount_); } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.7.5; import "../interfaces/IBlackDAOAuthority.sol"; abstract contract BlackDAOAccessControlled { /* ========== EVENTS ========== */ event AuthorityUpdated(IBlackDAOAuthority indexed authority); string UNAUTHORIZED = "UNAUTHORIZED"; // save gas /* ========== STATE VARIABLES ========== */ IBlackDAOAuthority public authority; /* ========== Constructor ========== */ constructor(IBlackDAOAuthority _authority) { authority = _authority; emit AuthorityUpdated(_authority); } /* ========== MODIFIERS ========== */ modifier onlyGovernor() { require(msg.sender == authority.governor(), UNAUTHORIZED); _; } modifier onlyGuardian() { require(msg.sender == authority.guardian(), UNAUTHORIZED); _; } modifier onlyPolicy() { require(msg.sender == authority.policy(), UNAUTHORIZED); _; } modifier onlyVault() { require(msg.sender == authority.vault(), UNAUTHORIZED); _; } /* ========== GOV ONLY ========== */ function setAuthority(IBlackDAOAuthority _newAuthority) external onlyGovernor { authority = _newAuthority; emit AuthorityUpdated(_newAuthority); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.7.5; import "../interfaces/IERC20Permit.sol"; import "./ERC20.sol"; import "../cryptography/EIP712.sol"; import "../cryptography/ECDSA.sol"; import "../libraries/Counters.sol"; /** * @dev Implementation of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. * * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by * presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't * need to send a transaction, and thus is not required to hold Ether at all. * * _Available since v3.4._ */ abstract contract ERC20Permit is ERC20, IERC20Permit, EIP712 { using Counters for Counters.Counter; mapping(address => Counters.Counter) private _nonces; // solhint-disable-next-line var-name-mixedcase bytes32 private immutable _PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); /** * @dev Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `"1"`. * * It's a good idea to use the same `name` that is defined as the ERC20 token name. */ constructor(string memory name) EIP712(name, "1") {} /** * @dev See {IERC20Permit-permit}. */ function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) public virtual override { require(block.timestamp <= deadline, "ERC20Permit: expired deadline"); bytes32 structHash = keccak256(abi.encode(_PERMIT_TYPEHASH, owner, spender, value, _useNonce(owner), deadline)); bytes32 hash = _hashTypedDataV4(structHash); address signer = ECDSA.recover(hash, v, r, s); require(signer == owner, "ERC20Permit: invalid signature"); _approve(owner, spender, value); } /** * @dev See {IERC20Permit-nonces}. */ function nonces(address owner) public view virtual override returns (uint256) { return _nonces[owner].current(); } /** * @dev See {IERC20Permit-DOMAIN_SEPARATOR}. */ // solhint-disable-next-line func-name-mixedcase function DOMAIN_SEPARATOR() external view override returns (bytes32) { return _domainSeparatorV4(); } /** * @dev "Consume a nonce": return the current value and increment. * * _Available since v4.1._ */ function _useNonce(address owner) internal virtual returns (uint256 current) { Counters.Counter storage nonce = _nonces[owner]; current = nonce.current(); nonce.increment(); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.7.5; /** * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. * * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't * need to send a transaction, and thus is not required to hold Ether at all. */ interface IERC20Permit { /** * @dev Sets `value` as th xe allowance of `spender` over ``owner``'s tokens, * given ``owner``'s signed approval. * * IMPORTANT: The same issues {IERC20-approve} has related to transaction * ordering also apply here. * * Emits an {Approval} event. * * Requirements: * * - `spender` cannot be the zero address. * - `deadline` must be a timestamp in the future. * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` * over the EIP712-formatted function arguments. * - the signature must use ``owner``'s current nonce (see {nonces}). * * For more information on the signature format, see the * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP * section]. */ function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; /** * @dev Returns the current nonce for `owner`. This value must be * included whenever a signature is generated for {permit}. * * Every successful call to {permit} increases ``owner``'s nonce by one. This * prevents a signature from being used multiple times. */ function nonces(address owner) external view returns (uint256); /** * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}. */ // solhint-disable-next-line func-name-mixedcase function DOMAIN_SEPARATOR() external view returns (bytes32); }
// SPDX-License-Identifier: AGPL-3.0 pragma solidity >=0.7.5; import "./IERC20.sol"; interface IBLKD is IERC20 { function mint(address account_, uint256 amount_) external; function burn(uint256 amount) external; function burnFrom(address account_, uint256 amount_) external; }
// SPDX-License-Identifier: AGPL-3.0 pragma solidity >=0.7.5; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: AGPL-3.0 pragma solidity ^0.7.5; // TODO(zx): Replace all instances of SafeMath with OZ implementation library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; assert(a == b * c + (a % b)); // There is no case in which this doesn't hold return c; } // Only used in the BondingCalculator.sol function sqrrt(uint256 a) internal pure returns (uint256 c) { if (a > 3) { c = a; uint256 b = add(div(a, 2), 1); while (b < c) { c = b; b = div(add(div(a, b), b), 2); } } else if (a != 0) { c = 1; } } }
// SPDX-License-Identifier: AGPL-3.0 pragma solidity ^0.7.5; import "./SafeMath.sol"; library Counters { using SafeMath for uint256; struct Counter { // This variable should never be directly accessed by users of the library: interactions must be restricted to // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add // this feature: see https://github.com/ethereum/solidity/issues/4637 uint256 _value; // default: 0 } function current(Counter storage counter) internal view returns (uint256) { return counter._value; } function increment(Counter storage counter) internal { // The {SafeMath} overflow check can be skipped here, see the comment at the top counter._value += 1; } function decrement(Counter storage counter) internal { counter._value = counter._value.sub(1); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.7.5; /** * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations. * * These functions can be used to verify that a message was signed by the holder * of the private keys of a given address. */ library ECDSA { enum RecoverError { NoError, InvalidSignature, InvalidSignatureLength, InvalidSignatureS, InvalidSignatureV } function _throwError(RecoverError error) private pure { if (error == RecoverError.NoError) { return; // no error: do nothing } else if (error == RecoverError.InvalidSignature) { revert("ECDSA: invalid signature"); } else if (error == RecoverError.InvalidSignatureLength) { revert("ECDSA: invalid signature length"); } else if (error == RecoverError.InvalidSignatureS) { revert("ECDSA: invalid signature 's' value"); } else if (error == RecoverError.InvalidSignatureV) { revert("ECDSA: invalid signature 'v' value"); } } /** * @dev Returns the address that signed a hashed message (`hash`) with * `signature` or error string. This address can then be used for verification purposes. * * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures: * this function rejects them by requiring the `s` value to be in the lower * half order, and the `v` value to be either 27 or 28. * * IMPORTANT: `hash` _must_ be the result of a hash operation for the * verification to be secure: it is possible to craft signatures that * recover to arbitrary addresses for non-hashed data. A safe way to ensure * this is by receiving a hash of the original message (which may otherwise * be too long), and then calling {toEthSignedMessageHash} on it. * * Documentation for signature generation: * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js] * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers] * * _Available since v4.3._ */ function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) { // Check the signature length // - case 65: r,s,v signature (standard) // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._ if (signature.length == 65) { bytes32 r; bytes32 s; uint8 v; // ecrecover takes the signature parameters, and the only way to get them // currently is to use assembly. assembly { r := mload(add(signature, 0x20)) s := mload(add(signature, 0x40)) v := byte(0, mload(add(signature, 0x60))) } return tryRecover(hash, v, r, s); } else if (signature.length == 64) { bytes32 r; bytes32 vs; // ecrecover takes the signature parameters, and the only way to get them // currently is to use assembly. assembly { r := mload(add(signature, 0x20)) vs := mload(add(signature, 0x40)) } return tryRecover(hash, r, vs); } else { return (address(0), RecoverError.InvalidSignatureLength); } } /** * @dev Returns the address that signed a hashed message (`hash`) with * `signature`. This address can then be used for verification purposes. * * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures: * this function rejects them by requiring the `s` value to be in the lower * half order, and the `v` value to be either 27 or 28. * * IMPORTANT: `hash` _must_ be the result of a hash operation for the * verification to be secure: it is possible to craft signatures that * recover to arbitrary addresses for non-hashed data. A safe way to ensure * this is by receiving a hash of the original message (which may otherwise * be too long), and then calling {toEthSignedMessageHash} on it. */ function recover(bytes32 hash, bytes memory signature) internal pure returns (address) { (address recovered, RecoverError error) = tryRecover(hash, signature); _throwError(error); return recovered; } /** * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately. * * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures] * * _Available since v4.3._ */ function tryRecover( bytes32 hash, bytes32 r, bytes32 vs ) internal pure returns (address, RecoverError) { bytes32 s; uint8 v; assembly { s := and(vs, 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) v := add(shr(255, vs), 27) } return tryRecover(hash, v, r, s); } /** * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately. * * _Available since v4.2._ */ function recover( bytes32 hash, bytes32 r, bytes32 vs ) internal pure returns (address) { (address recovered, RecoverError error) = tryRecover(hash, r, vs); _throwError(error); return recovered; } /** * @dev Overload of {ECDSA-tryRecover} that receives the `v`, * `r` and `s` signature fields separately. * * _Available since v4.3._ */ function tryRecover( bytes32 hash, uint8 v, bytes32 r, bytes32 s ) internal pure returns (address, RecoverError) { // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most // signatures from current libraries generate a unique signature with an s-value in the lower half order. // // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept // these malleable signatures as well. if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) { return (address(0), RecoverError.InvalidSignatureS); } if (v != 27 && v != 28) { return (address(0), RecoverError.InvalidSignatureV); } // If the signature is valid (and not malleable), return the signer address address signer = ecrecover(hash, v, r, s); if (signer == address(0)) { return (address(0), RecoverError.InvalidSignature); } return (signer, RecoverError.NoError); } /** * @dev Overload of {ECDSA-recover} that receives the `v`, * `r` and `s` signature fields separately. */ function recover( bytes32 hash, uint8 v, bytes32 r, bytes32 s ) internal pure returns (address) { (address recovered, RecoverError error) = tryRecover(hash, v, r, s); _throwError(error); return recovered; } /** * @dev Returns an Ethereum Signed Message, created from a `hash`. This * produces hash corresponding to the one signed with the * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] * JSON-RPC method as part of EIP-191. * * See {recover}. */ function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) { // 32 is the length in bytes of hash, // enforced by the type signature above return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)); } /** * @dev Returns an Ethereum Signed Typed Data, created from a * `domainSeparator` and a `structHash`. This produces hash corresponding * to the one signed with the * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`] * JSON-RPC method as part of EIP-712. * * See {recover}. */ function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) { return keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.7.5; import "./ECDSA.sol"; /** * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data. * * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible, * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding * they need in their contracts using a combination of `abi.encode` and `keccak256`. * * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA * ({_hashTypedDataV4}). * * The implementation of the domain separator was designed to be as efficient as possible while still properly updating * the chain id to protect against replay attacks on an eventual fork of the chain. * * NOTE: This contract implements the version of the encoding known as "v4", as implemented by the JSON RPC method * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask]. * * _Available since v3.4._ */ abstract contract EIP712 { /* solhint-disable var-name-mixedcase */ // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to // invalidate the cached domain separator if the chain id changes. bytes32 private immutable _CACHED_DOMAIN_SEPARATOR; uint256 private immutable _CACHED_CHAIN_ID; bytes32 private immutable _HASHED_NAME; bytes32 private immutable _HASHED_VERSION; bytes32 private immutable _TYPE_HASH; /* solhint-enable var-name-mixedcase */ /** * @dev Initializes the domain separator and parameter caches. * * The meaning of `name` and `version` is specified in * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]: * * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol. * - `version`: the current major version of the signing domain. * * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart * contract upgrade]. */ constructor(string memory name, string memory version) { uint256 chainID; assembly { chainID := chainid() } bytes32 hashedName = keccak256(bytes(name)); bytes32 hashedVersion = keccak256(bytes(version)); bytes32 typeHash = keccak256( "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" ); _HASHED_NAME = hashedName; _HASHED_VERSION = hashedVersion; _CACHED_CHAIN_ID = chainID; _CACHED_DOMAIN_SEPARATOR = _buildDomainSeparator(typeHash, hashedName, hashedVersion); _TYPE_HASH = typeHash; } /** * @dev Returns the domain separator for the current chain. */ function _domainSeparatorV4() internal view returns (bytes32) { uint256 chainID; assembly { chainID := chainid() } if (chainID == _CACHED_CHAIN_ID) { return _CACHED_DOMAIN_SEPARATOR; } else { return _buildDomainSeparator(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION); } } function _buildDomainSeparator( bytes32 typeHash, bytes32 nameHash, bytes32 versionHash ) private view returns (bytes32) { uint256 chainID; assembly { chainID := chainid() } return keccak256(abi.encode(typeHash, nameHash, versionHash, chainID, address(this))); } /** * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this * function returns the hash of the fully encoded EIP712 message for this domain. * * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example: * * ```solidity * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode( * keccak256("Mail(address to,string contents)"), * mailTo, * keccak256(bytes(mailContents)) * ))); * address signer = ECDSA.recover(digest, signature); * ``` */ function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) { return ECDSA.toTypedDataHash(_domainSeparatorV4(), structHash); } }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity >=0.7.5; import "../libraries/SafeMath.sol"; import "../interfaces/IERC20.sol"; abstract contract ERC20 is IERC20 { using SafeMath for uint256; // TODO comment actual hash value. bytes32 private constant ERC20TOKEN_ERC1820_INTERFACE_ID = keccak256("ERC20Token"); mapping(address => uint256) internal _balances; mapping(address => mapping(address => uint256)) internal _allowances; uint256 internal _totalSupply; string internal _name; string internal _symbol; uint8 internal immutable _decimals; constructor( string memory name_, string memory symbol_, uint8 decimals_ ) { _name = name_; _symbol = symbol_; _decimals = decimals_; } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view virtual returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(msg.sender, spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance") ); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve( msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue, "ERC20: decreased allowance below zero") ); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from_, address to_, uint256 amount_ ) internal virtual {} }
// SPDX-License-Identifier: AGPL-3.0 pragma solidity >=0.7.5; interface IBlackDAOAuthority { /* ========== EVENTS ========== */ event GovernorPushed(address indexed from, address indexed to, bool _effectiveImmediately); event GuardianPushed(address indexed from, address indexed to, bool _effectiveImmediately); event PolicyPushed(address indexed from, address indexed to, bool _effectiveImmediately); event VaultPushed(address indexed from, address indexed to, bool _effectiveImmediately); event GovernorPulled(address indexed from, address indexed to); event GuardianPulled(address indexed from, address indexed to); event PolicyPulled(address indexed from, address indexed to); event VaultPulled(address indexed from, address indexed to); /* ========== VIEW ========== */ function governor() external view returns (address); function guardian() external view returns (address); function policy() external view returns (address); function vault() external view returns (address); }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_authority","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IBlackDAOAuthority","name":"authority","type":"address"}],"name":"AuthorityUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"authority","outputs":[{"internalType":"contract IBlackDAOAuthority","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IBlackDAOAuthority","name":"_newAuthority","type":"address"}],"name":"setAuthority","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9610140526101a0604052600c6101608190526b15539055551213d49256915160a21b61018090815262000057916006919062000244565b503480156200006557600080fd5b5060405162001a3538038062001a35833981810160405260208110156200008b57600080fd5b5051604080518082018252600880825267426c61636b44414f60c01b60208381018290528451808601865260018152603160f81b818301528551808701875293845283820192835285518087019096526004865263109312d160e21b91860191909152825186958594929390916009916200010a916003919062000244565b5081516200012090600490602085019062000244565b5060f81b7fff00000000000000000000000000000000000000000000000000000000000000166080525050815160208084019190912082519183019190912060e08290526101008190524660c081905291907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620001a0818484620001ff565b60a052610120525050600780546001600160a01b0319166001600160a01b0387169081179091556040519094507f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9350600092509050a25050620002f0565b604080516020808201959095528082019390935260608301919091524660808301523060a0808401919091528151808403909101815260c09092019052805191012090565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200027c5760008555620002c7565b82601f106200029757805160ff1916838001178555620002c7565b82800160010185558215620002c7579182015b82811115620002c7578251825591602001919060010190620002aa565b50620002d5929150620002d9565b5090565b5b80821115620002d55760008155600101620002da565b60805160f81c60a05160c05160e0516101005161012051610140516116ee62000347600039806109de525080610e63525080610ea5525080610e84525080610e0f525080610e3752508061058f52506116ee6000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806370a08231116100ad578063a457c2d711610071578063a457c2d714610376578063a9059cbb146103a2578063bf7e214f146103ce578063d505accf146103f2578063dd62ed3e1461044357610121565b806370a08231146102d057806379cc6790146102f65780637a9e5e4b146103225780637ecebe001461034857806395d89b411461036e57610121565b8063313ce567116100f4578063313ce567146102335780633644e51514610251578063395093511461025957806340c10f191461028557806342966c68146102b357610121565b806306fdde0314610126578063095ea7b3146101a357806318160ddd146101e357806323b872dd146101fd575b600080fd5b61012e610471565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610168578181015183820152602001610150565b50505050905090810190601f1680156101955780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101cf600480360360408110156101b957600080fd5b506001600160a01b038135169060200135610508565b604080519115158252519081900360200190f35b6101eb61051e565b60408051918252519081900360200190f35b6101cf6004803603606081101561021357600080fd5b506001600160a01b03813581169160208101359091169060400135610524565b61023b61058d565b6040805160ff9092168252519081900360200190f35b6101eb6105b1565b6101cf6004803603604081101561026f57600080fd5b506001600160a01b0381351690602001356105c0565b6102b16004803603604081101561029b57600080fd5b506001600160a01b0381351690602001356105f6565b005b6102b1600480360360208110156102c957600080fd5b503561072a565b6101eb600480360360208110156102e657600080fd5b50356001600160a01b0316610737565b6102b16004803603604081101561030c57600080fd5b506001600160a01b038135169060200135610752565b6102b16004803603602081101561033857600080fd5b50356001600160a01b031661075c565b6101eb6004803603602081101561035e57600080fd5b50356001600160a01b0316610892565b61012e6108b9565b6101cf6004803603604081101561038c57600080fd5b506001600160a01b03813516906020013561091a565b6101cf600480360360408110156103b857600080fd5b506001600160a01b038135169060200135610969565b6103d6610976565b604080516001600160a01b039092168252519081900360200190f35b6102b1600480360360e081101561040857600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610985565b6101eb6004803603604081101561045957600080fd5b506001600160a01b0381358116916020013516610b01565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104fd5780601f106104d2576101008083540402835291602001916104fd565b820191906000526020600020905b8154815290600101906020018083116104e057829003601f168201915b505050505090505b90565b6000610515338484610b2c565b50600192915050565b60025490565b6000610531848484610c18565b610583843361057e856040518060600160405280602881526020016115de602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190610d73565b610b2c565b5060019392505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006105bb610e0a565b905090565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161051591859061057e9086610ed1565b600760009054906101000a90046001600160a01b03166001600160a01b031663fbfa77cf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561064457600080fd5b505afa158015610658573d6000803e3d6000fd5b505050506040513d602081101561066e57600080fd5b50516006906001600160a01b0316331461071b5760405162461bcd60e51b815260206004820190815282546002600019610100600184161502019091160460248301819052909182916044909101908490801561070c5780601f106106e15761010080835404028352916020019161070c565b820191906000526020600020905b8154815290600101906020018083116106ef57829003601f168201915b50509250505060405180910390fd5b506107268282610f32565b5050565b6107343382611022565b50565b6001600160a01b031660009081526020819052604090205490565b610726828261111e565b600760009054906101000a90046001600160a01b03166001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b1580156107aa57600080fd5b505afa1580156107be573d6000803e3d6000fd5b505050506040513d60208110156107d457600080fd5b50516006906001600160a01b031633146108475760405162461bcd60e51b815260206004820190815282546002600019610100600184161502019091160460248301819052909182916044909101908490801561070c5780601f106106e15761010080835404028352916020019161070c565b50600780546001600160a01b0319166001600160a01b0383169081179091556040517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad90600090a250565b6001600160a01b03811660009081526005602052604081206108b39061116a565b92915050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104fd5780601f106104d2576101008083540402835291602001916104fd565b6000610515338461057e85604051806060016040528060258152602001611694602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190610d73565b6000610515338484610c18565b6007546001600160a01b031681565b834211156109da576040805162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015290519081900360640190fd5b60007f0000000000000000000000000000000000000000000000000000000000000000888888610a098c61116e565b8960405160200180878152602001866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012090506000610a72826111a0565b90506000610a82828787876111b3565b9050896001600160a01b0316816001600160a01b031614610aea576040805162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015290519081900360640190fd5b610af58a8a8a610b2c565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b038316610b715760405162461bcd60e51b81526004018080602001828103825260248152602001806116706024913960400191505060405180910390fd5b6001600160a01b038216610bb65760405162461bcd60e51b81526004018080602001828103825260228152602001806115526022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610c5d5760405162461bcd60e51b815260040180806020018281038252602581526020018061164b6025913960400191505060405180910390fd5b6001600160a01b038216610ca25760405162461bcd60e51b815260040180806020018281038252602381526020018061150d6023913960400191505060405180910390fd5b610cad838383611165565b610cea81604051806060016040528060268152602001611574602691396001600160a01b0386166000908152602081905260409020549190610d73565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610d199082610ed1565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610e025760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610dc7578181015183820152602001610daf565b50505050905090810190601f168015610df45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000467f0000000000000000000000000000000000000000000000000000000000000000811415610e5e577f0000000000000000000000000000000000000000000000000000000000000000915050610505565b610ec97f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006111db565b915050610505565b600082820183811015610f2b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610f8d576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610f9960008383611165565b600254610fa69082610ed1565b6002556001600160a01b038216600090815260208190526040902054610fcc9082610ed1565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b0382166110675760405162461bcd60e51b815260040180806020018281038252602181526020018061162a6021913960400191505060405180910390fd5b61107382600083611165565b6110b081604051806060016040528060228152602001611530602291396001600160a01b0385166000908152602081905260409020549190610d73565b6001600160a01b0383166000908152602081905260409020556002546110d69082611220565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600061114e82604051806060016040528060248152602001611606602491396111478633610b01565b9190610d73565b905061115b833383610b2c565b6111658383611022565b505050565b5490565b6001600160a01b038116600090815260056020526040812061118f8161116a565b915061119a81611262565b50919050565b60006108b36111ad610e0a565b8361126b565b60008060006111c4878787876112a6565b915091506111d18161139b565b5095945050505050565b604080516020808201959095528082019390935260608301919091524660808301523060a0808401919091528151808403909101815260c09092019052805191012090565b6000610f2b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d73565b80546001019055565b6040805161190160f01b6020808301919091526022820194909452604280820193909352815180820390930183526062019052805191012090565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156112dd5750600090506003611392565b8460ff16601b141580156112f557508460ff16601c14155b156113065750600090506004611392565b600060018787878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611362573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661138b57600060019250925050611392565b9150600090505b94509492505050565b60008160048111156113a957fe5b14156113b457610734565b60018160048111156113c257fe5b1415611415576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b600281600481111561142357fe5b1415611476576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b600381600481111561148457fe5b14156114c15760405162461bcd60e51b815260040180806020018281038252602281526020018061159a6022913960400191505060405180910390fd5b60048160048111156114cf57fe5b14156107345760405162461bcd60e51b81526004018080602001828103825260228152602001806115bc6022913960400191505060405180910390fdfe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c756545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202ae1fb1fa8e42cb12549d0e4161cd749e14393b26e0ecedf2d8d6d3acd46f22b64736f6c6343000706003300000000000000000000000080f00c9a5782be6c3c899e68e61504b6a7bed5f6
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101215760003560e01c806370a08231116100ad578063a457c2d711610071578063a457c2d714610376578063a9059cbb146103a2578063bf7e214f146103ce578063d505accf146103f2578063dd62ed3e1461044357610121565b806370a08231146102d057806379cc6790146102f65780637a9e5e4b146103225780637ecebe001461034857806395d89b411461036e57610121565b8063313ce567116100f4578063313ce567146102335780633644e51514610251578063395093511461025957806340c10f191461028557806342966c68146102b357610121565b806306fdde0314610126578063095ea7b3146101a357806318160ddd146101e357806323b872dd146101fd575b600080fd5b61012e610471565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610168578181015183820152602001610150565b50505050905090810190601f1680156101955780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101cf600480360360408110156101b957600080fd5b506001600160a01b038135169060200135610508565b604080519115158252519081900360200190f35b6101eb61051e565b60408051918252519081900360200190f35b6101cf6004803603606081101561021357600080fd5b506001600160a01b03813581169160208101359091169060400135610524565b61023b61058d565b6040805160ff9092168252519081900360200190f35b6101eb6105b1565b6101cf6004803603604081101561026f57600080fd5b506001600160a01b0381351690602001356105c0565b6102b16004803603604081101561029b57600080fd5b506001600160a01b0381351690602001356105f6565b005b6102b1600480360360208110156102c957600080fd5b503561072a565b6101eb600480360360208110156102e657600080fd5b50356001600160a01b0316610737565b6102b16004803603604081101561030c57600080fd5b506001600160a01b038135169060200135610752565b6102b16004803603602081101561033857600080fd5b50356001600160a01b031661075c565b6101eb6004803603602081101561035e57600080fd5b50356001600160a01b0316610892565b61012e6108b9565b6101cf6004803603604081101561038c57600080fd5b506001600160a01b03813516906020013561091a565b6101cf600480360360408110156103b857600080fd5b506001600160a01b038135169060200135610969565b6103d6610976565b604080516001600160a01b039092168252519081900360200190f35b6102b1600480360360e081101561040857600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610985565b6101eb6004803603604081101561045957600080fd5b506001600160a01b0381358116916020013516610b01565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104fd5780601f106104d2576101008083540402835291602001916104fd565b820191906000526020600020905b8154815290600101906020018083116104e057829003601f168201915b505050505090505b90565b6000610515338484610b2c565b50600192915050565b60025490565b6000610531848484610c18565b610583843361057e856040518060600160405280602881526020016115de602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190610d73565b610b2c565b5060019392505050565b7f000000000000000000000000000000000000000000000000000000000000000990565b60006105bb610e0a565b905090565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161051591859061057e9086610ed1565b600760009054906101000a90046001600160a01b03166001600160a01b031663fbfa77cf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561064457600080fd5b505afa158015610658573d6000803e3d6000fd5b505050506040513d602081101561066e57600080fd5b50516006906001600160a01b0316331461071b5760405162461bcd60e51b815260206004820190815282546002600019610100600184161502019091160460248301819052909182916044909101908490801561070c5780601f106106e15761010080835404028352916020019161070c565b820191906000526020600020905b8154815290600101906020018083116106ef57829003601f168201915b50509250505060405180910390fd5b506107268282610f32565b5050565b6107343382611022565b50565b6001600160a01b031660009081526020819052604090205490565b610726828261111e565b600760009054906101000a90046001600160a01b03166001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b1580156107aa57600080fd5b505afa1580156107be573d6000803e3d6000fd5b505050506040513d60208110156107d457600080fd5b50516006906001600160a01b031633146108475760405162461bcd60e51b815260206004820190815282546002600019610100600184161502019091160460248301819052909182916044909101908490801561070c5780601f106106e15761010080835404028352916020019161070c565b50600780546001600160a01b0319166001600160a01b0383169081179091556040517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad90600090a250565b6001600160a01b03811660009081526005602052604081206108b39061116a565b92915050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104fd5780601f106104d2576101008083540402835291602001916104fd565b6000610515338461057e85604051806060016040528060258152602001611694602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190610d73565b6000610515338484610c18565b6007546001600160a01b031681565b834211156109da576040805162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015290519081900360640190fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610a098c61116e565b8960405160200180878152602001866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012090506000610a72826111a0565b90506000610a82828787876111b3565b9050896001600160a01b0316816001600160a01b031614610aea576040805162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015290519081900360640190fd5b610af58a8a8a610b2c565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b038316610b715760405162461bcd60e51b81526004018080602001828103825260248152602001806116706024913960400191505060405180910390fd5b6001600160a01b038216610bb65760405162461bcd60e51b81526004018080602001828103825260228152602001806115526022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610c5d5760405162461bcd60e51b815260040180806020018281038252602581526020018061164b6025913960400191505060405180910390fd5b6001600160a01b038216610ca25760405162461bcd60e51b815260040180806020018281038252602381526020018061150d6023913960400191505060405180910390fd5b610cad838383611165565b610cea81604051806060016040528060268152602001611574602691396001600160a01b0386166000908152602081905260409020549190610d73565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610d199082610ed1565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610e025760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610dc7578181015183820152602001610daf565b50505050905090810190601f168015610df45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000467f0000000000000000000000000000000000000000000000000000000000000001811415610e5e577f8bcf7a0a5731b3227a0304ca3ba0b6a7067e2c20239203b98cc98969490eef77915050610505565b610ec97f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7fc5b660e68517e921df5092745ce77bdd24318e8a467512f3a12ffd7a81a9b9ee7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66111db565b915050610505565b600082820183811015610f2b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610f8d576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610f9960008383611165565b600254610fa69082610ed1565b6002556001600160a01b038216600090815260208190526040902054610fcc9082610ed1565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b0382166110675760405162461bcd60e51b815260040180806020018281038252602181526020018061162a6021913960400191505060405180910390fd5b61107382600083611165565b6110b081604051806060016040528060228152602001611530602291396001600160a01b0385166000908152602081905260409020549190610d73565b6001600160a01b0383166000908152602081905260409020556002546110d69082611220565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600061114e82604051806060016040528060248152602001611606602491396111478633610b01565b9190610d73565b905061115b833383610b2c565b6111658383611022565b505050565b5490565b6001600160a01b038116600090815260056020526040812061118f8161116a565b915061119a81611262565b50919050565b60006108b36111ad610e0a565b8361126b565b60008060006111c4878787876112a6565b915091506111d18161139b565b5095945050505050565b604080516020808201959095528082019390935260608301919091524660808301523060a0808401919091528151808403909101815260c09092019052805191012090565b6000610f2b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d73565b80546001019055565b6040805161190160f01b6020808301919091526022820194909452604280820193909352815180820390930183526062019052805191012090565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156112dd5750600090506003611392565b8460ff16601b141580156112f557508460ff16601c14155b156113065750600090506004611392565b600060018787878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611362573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661138b57600060019250925050611392565b9150600090505b94509492505050565b60008160048111156113a957fe5b14156113b457610734565b60018160048111156113c257fe5b1415611415576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b600281600481111561142357fe5b1415611476576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b600381600481111561148457fe5b14156114c15760405162461bcd60e51b815260040180806020018281038252602281526020018061159a6022913960400191505060405180910390fd5b60048160048111156114cf57fe5b14156107345760405162461bcd60e51b81526004018080602001828103825260228152602001806115bc6022913960400191505060405180910390fdfe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c756545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202ae1fb1fa8e42cb12549d0e4161cd749e14393b26e0ecedf2d8d6d3acd46f22b64736f6c63430007060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000080f00c9a5782be6c3c899e68e61504b6a7bed5f6
-----Decoded View---------------
Arg [0] : _authority (address): 0x80f00c9A5782be6c3C899e68E61504B6a7BEd5f6
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000080f00c9a5782be6c3c899e68e61504b6a7bed5f6
Deployed Bytecode Sourcemap
300:991:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;841:83:10;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1709:167;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1709:167:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1126:100;;;:::i;:::-;;;;;;;;;;;;;;;;1884:401;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1884:401:10;;;;;;;;;;;;;;;;;:::i;1027:91::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2469:115:11;;;:::i;2293:214:10:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2293:214:10;;;;;;;;:::i;602:120:0:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;602:120:0;;;;;;;;:::i;:::-;;730:92;;;;;;;;;;;;;;;;-1:-1:-1;730:92:0;;:::i;1234:127:10:-;;;;;;;;;;;;;;;;-1:-1:-1;1234:127:10;-1:-1:-1;;;;;1234:127:10;;:::i;830:118:0:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;830:118:0;;;;;;;;:::i;1176:169:9:-;;;;;;;;;;;;;;;;-1:-1:-1;1176:169:9;-1:-1:-1;;;;;1176:169:9;;:::i;2211:128:11:-;;;;;;;;;;;;;;;;-1:-1:-1;2211:128:11;-1:-1:-1;;;;;2211:128:11;;:::i;932:87:10:-;;;:::i;2515:315::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2515:315:10;;;;;;;;:::i;1369:173::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1369:173:10;;;;;;;;:::i;390:35:9:-;;;:::i;:::-;;;;-1:-1:-1;;;;;390:35:9;;;;;;;;;;;;;;1500:645:11;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1500:645:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1550:151:10:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1550:151:10;;;;;;;;;;:::i;841:83::-;911:5;904:12;;;;;;;;-1:-1:-1;;904:12:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;878:13;;904:12;;911:5;;904:12;;911:5;904:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;841:83;;:::o;1709:167::-;1792:4;1809:37;1818:10;1830:7;1839:6;1809:8;:37::i;:::-;-1:-1:-1;1864:4:10;1709:167;;;;:::o;1126:100::-;1206:12;;1126:100;:::o;1884:401::-;2024:4;2041:36;2051:6;2059:9;2070:6;2041:9;:36::i;:::-;2088:167;2111:6;2132:10;2157:87;2193:6;2157:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2157:19:10;;;;;;:11;:19;;;;;;;;2177:10;2157:31;;;;;;;;;:87;:35;:87::i;:::-;2088:8;:167::i;:::-;-1:-1:-1;2273:4:10;1884:401;;;;;:::o;1027:91::-;1101:9;1027:91;:::o;2469:115:11:-;2529:7;2556:20;:18;:20::i;:::-;2549:27;;2469:115;:::o;2293:214:10:-;2407:10;2381:4;2428:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;2428:32:10;;;;;;;;;;2381:4;;2398:79;;2419:7;;2428:48;;2465:10;2428:36;:48::i;602:120:0:-;1072:9:9;;;;;;;;;-1:-1:-1;;;;;1072:9:9;-1:-1:-1;;;;;1072:15:9;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1072:17:9;1091:12;;-1:-1:-1;;;;;1058:31:9;:10;:31;1050:54;;;;-1:-1:-1;;;1050:54:9;;;;;;;;;;;;-1:-1:-1;;1050:54:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;690:24:0::1;696:8;706:7;690:5;:24::i;:::-;602:120:::0;;:::o;730:92::-;789:25;795:10;807:6;789:5;:25::i;:::-;730:92;:::o;1234:127:10:-;-1:-1:-1;;;;;1335:18:10;1308:7;1335:18;;;;;;;;;;;;1234:127::o;830:118:0:-;912:28;922:8;932:7;912:9;:28::i;1176:169:9:-;719:9;;;;;;;;;-1:-1:-1;;;;;719:9:9;-1:-1:-1;;;;;719:18:9;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;719:20:9;741:12;;-1:-1:-1;;;;;705:34:9;:10;:34;697:57;;;;-1:-1:-1;;;697:57:9;;;;;;;;;;;;-1:-1:-1;;697:57:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1265:9:9::1;:25:::0;;-1:-1:-1;;;;;;1265:25:9::1;-1:-1:-1::0;;;;;1265:25:9;::::1;::::0;;::::1;::::0;;;1306:31:::1;::::0;::::1;::::0;-1:-1:-1;;1306:31:9::1;1176:169:::0;:::o;2211:128:11:-;-1:-1:-1;;;;;2307:14:11;;2280:7;2307:14;;;:7;:14;;;;;:24;;:22;:24::i;:::-;2300:31;2211:128;-1:-1:-1;;2211:128:11:o;932:87:10:-;1004:7;997:14;;;;;;;;-1:-1:-1;;997:14:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;971:13;;997:14;;1004:7;;997:14;;1004:7;997:14;;;;;;;;;;;;;;;;;;;;;;;;2515:315;2608:4;2625:175;2648:10;2673:7;2695:94;2732:15;2695:94;;;;;;;;;;;;;;;;;2707:10;2695:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;2695:32:10;;;;;;;;;;;:94;:36;:94::i;1369:173::-;1455:4;1472:40;1482:10;1494:9;1505:6;1472:9;:40::i;390:35:9:-;;;-1:-1:-1;;;;;390:35:9;;:::o;1500:645:11:-;1744:8;1725:15;:27;;1717:69;;;;;-1:-1:-1;;;1717:69:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;1799:18;1841:16;1859:5;1866:7;1875:5;1882:16;1892:5;1882:9;:16::i;:::-;1900:8;1830:79;;;;;;;;;;;-1:-1:-1;;;;;1830:79:11;;;;;;-1:-1:-1;;;;;1830:79:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1820:90;;;;;;1799:111;;1923:12;1938:28;1955:10;1938:16;:28::i;:::-;1923:43;;1979:14;1996:28;2010:4;2016:1;2019;2022;1996:13;:28::i;:::-;1979:45;;2053:5;-1:-1:-1;;;;;2043:15:11;:6;-1:-1:-1;;;;;2043:15:11;;2035:58;;;;;-1:-1:-1;;;2035:58:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;2106:31;2115:5;2122:7;2131:5;2106:8;:31::i;:::-;1500:645;;;;;;;;;;:::o;1550:151:10:-;-1:-1:-1;;;;;1666:18:10;;;1639:7;1666:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;1550:151::o;4227:380::-;-1:-1:-1;;;;;4363:19:10;;4355:68;;;;-1:-1:-1;;;4355:68:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4442:21:10;;4434:68;;;;-1:-1:-1;;;4434:68:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4515:18:10;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;4567:32;;;;;;;;;;;;;;;;;4227:380;;;:::o;2838:573::-;-1:-1:-1;;;;;2978:20:10;;2970:70;;;;-1:-1:-1;;;2970:70:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3059:23:10;;3051:71;;;;-1:-1:-1;;;3051:71:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3135:47;3156:6;3164:9;3175:6;3135:20;:47::i;:::-;3215:71;3237:6;3215:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3215:17:10;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;3195:17:10;;;:9;:17;;;;;;;;;;;:91;;;;3320:20;;;;;;;:32;;3345:6;3320:24;:32::i;:::-;-1:-1:-1;;;;;3297:20:10;;;:9;:20;;;;;;;;;;;;:55;;;;3368:35;;;;;;;3297:20;;3368:35;;;;;;;;;;;;;2838:573;;;:::o;493:226:8:-;613:7;649:12;641:6;;;;633:29;;;;-1:-1:-1;;;633:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;685:5:8;;;493:226::o;3143:368:2:-;3196:7;3277:9;3324:16;3313:27;;3309:195;;;3364:24;3357:31;;;;;3309:195;3428:64;3450:10;3462:12;3476:15;3428:21;:64::i;:::-;3421:71;;;;;160:181:8;218:7;250:5;;;274:6;;;;266:46;;;;;-1:-1:-1;;;266:46:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;332:1;160:181;-1:-1:-1;;;160:181:8:o;3419:374:10:-;-1:-1:-1;;;;;3503:21:10;;3495:65;;;;;-1:-1:-1;;;3495:65:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;3571:49;3600:1;3604:7;3613:6;3571:20;:49::i;:::-;3646:12;;:24;;3663:6;3646:16;:24::i;:::-;3631:12;:39;-1:-1:-1;;;;;3702:18:10;;:9;:18;;;;;;;;;;;:30;;3725:6;3702:22;:30::i;:::-;-1:-1:-1;;;;;3681:18:10;;:9;:18;;;;;;;;;;;:51;;;;3748:37;;;;;;;3681:18;;:9;;3748:37;;;;;;;;;;3419:374;;:::o;3801:418::-;-1:-1:-1;;;;;3885:21:10;;3877:67;;;;-1:-1:-1;;;3877:67:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3957:49;3978:7;3995:1;3999:6;3957:20;:49::i;:::-;4040:68;4063:6;4040:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4040:18:10;;:9;:18;;;;;;;;;;;;:68;:22;:68::i;:::-;-1:-1:-1;;;;;4019:18:10;;:9;:18;;;;;;;;;;:89;4134:12;;:24;;4151:6;4134:16;:24::i;:::-;4119:12;:39;4174:37;;;;;;;;4200:1;;-1:-1:-1;;;;;4174:37:10;;;;;;;;;;;;3801:418;;:::o;956:332:0:-;1030:27;1060:121;1110:7;1060:121;;;;;;;;;;;;;;;;;:31;1070:8;1080:10;1060:9;:31::i;:::-;:35;:121;:35;:121::i;:::-;1030:151;;1194:51;1203:8;1213:10;1225:19;1194:8;:51::i;:::-;1256:24;1262:8;1272:7;1256:5;:24::i;:::-;956:332;;;:::o;539:114:7:-;631:14;;539:114::o;2722:207:11:-;-1:-1:-1;;;;;2843:14:11;;2782:15;2843:14;;;:7;:14;;;;;2878:15;2843:14;2878:13;:15::i;:::-;2868:25;;2904:17;:5;:15;:17::i;:::-;2722:207;;;;:::o;4511:167:2:-;4588:7;4615:55;4637:20;:18;:20::i;:::-;4659:10;4615:21;:55::i;7571:279:1:-;7699:7;7720:17;7739:18;7761:25;7772:4;7778:1;7781;7784;7761:10;:25::i;:::-;7719:67;;;;7797:18;7809:5;7797:11;:18::i;:::-;-1:-1:-1;7833:9:1;7571:279;-1:-1:-1;;;;;7571:279:1:o;3519:350:2:-;3793:67;;;;;;;;;;;;;;;;;;;;;;;;;3744:9;3793:67;;;;3854:4;3793:67;;;;;;;;;;;;;;;;;;;;;;;;3783:78;;;;;;3519:350::o;349:136:8:-;407:7;434:43;438:1;441;434:43;;;;;;;;;;;;;;;;;:3;:43::i;661:181:7:-;815:19;;833:1;815:19;;;661:181::o;8769:196:1:-;8899:57;;;-1:-1:-1;;;8899:57:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8889:68;;;;;;8769:196::o;5800:1632::-;5931:7;;6865:66;6852:79;;6848:163;;;-1:-1:-1;6964:1:1;;-1:-1:-1;6968:30:1;6948:51;;6848:163;7025:1;:7;;7030:2;7025:7;;:18;;;;;7036:1;:7;;7041:2;7036:7;;7025:18;7021:102;;;-1:-1:-1;7076:1:1;;-1:-1:-1;7080:30:1;7060:51;;7021:102;7220:14;7237:24;7247:4;7253:1;7256;7259;7237:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7237:24:1;;-1:-1:-1;;7237:24:1;;;-1:-1:-1;;;;;;;7276:20:1;;7272:103;;7329:1;7333:29;7313:50;;;;;;;7272:103;7395:6;-1:-1:-1;7403:20:1;;-1:-1:-1;5800:1632:1;;;;;;;;:::o;462:643::-;540:20;531:5;:29;;;;;;;;;527:571;;;577:7;;527:571;638:29;629:5;:38;;;;;;;;;625:473;;;684:34;;;-1:-1:-1;;;684:34:1;;;;;;;;;;;;;;;;;;;;;;;;;;;625:473;749:35;740:5;:44;;;;;;;;;736:362;;;801:41;;;-1:-1:-1;;;801:41:1;;;;;;;;;;;;;;;;;;;;;;;;;;;736:362;873:30;864:5;:39;;;;;;;;;860:238;;;920:44;;-1:-1:-1;;;920:44:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;860:238;995:30;986:5;:39;;;;;;;;;982:116;;;1042:44;;-1:-1:-1;;;1042:44:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Swarm Source
ipfs://2ae1fb1fa8e42cb12549d0e4161cd749e14393b26e0ecedf2d8d6d3acd46f22b
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.