ETH Price: $3,307.06 (+1.76%)
Gas: 4 Gwei

ShardVault 2 (SAPE)
 

Overview

TokenID

11

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ShardVaultProxy

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 12 : OwnableStorage.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.8;

library OwnableStorage {
    struct Layout {
        address owner;
    }

    bytes32 internal constant STORAGE_SLOT =
        keccak256('solidstate.contracts.storage.Ownable');

    function layout() internal pure returns (Layout storage l) {
        bytes32 slot = STORAGE_SLOT;
        assembly {
            l.slot := slot
        }
    }
}

File 2 of 12 : EnumerableSet.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.8;

/**
 * @title Set implementation with enumeration functions
 * @dev derived from https://github.com/OpenZeppelin/openzeppelin-contracts (MIT license)
 */
library EnumerableSet {
    error EnumerableSet__IndexOutOfBounds();

    struct Set {
        bytes32[] _values;
        // 1-indexed to allow 0 to signify nonexistence
        mapping(bytes32 => uint256) _indexes;
    }

    struct Bytes32Set {
        Set _inner;
    }

    struct AddressSet {
        Set _inner;
    }

    struct UintSet {
        Set _inner;
    }

    function at(
        Bytes32Set storage set,
        uint256 index
    ) internal view returns (bytes32) {
        return _at(set._inner, index);
    }

    function at(
        AddressSet storage set,
        uint256 index
    ) internal view returns (address) {
        return address(uint160(uint256(_at(set._inner, index))));
    }

    function at(
        UintSet storage set,
        uint256 index
    ) internal view returns (uint256) {
        return uint256(_at(set._inner, index));
    }

    function contains(
        Bytes32Set storage set,
        bytes32 value
    ) internal view returns (bool) {
        return _contains(set._inner, value);
    }

    function contains(
        AddressSet storage set,
        address value
    ) internal view returns (bool) {
        return _contains(set._inner, bytes32(uint256(uint160(value))));
    }

    function contains(
        UintSet storage set,
        uint256 value
    ) internal view returns (bool) {
        return _contains(set._inner, bytes32(value));
    }

    function indexOf(
        Bytes32Set storage set,
        bytes32 value
    ) internal view returns (uint256) {
        return _indexOf(set._inner, value);
    }

    function indexOf(
        AddressSet storage set,
        address value
    ) internal view returns (uint256) {
        return _indexOf(set._inner, bytes32(uint256(uint160(value))));
    }

    function indexOf(
        UintSet storage set,
        uint256 value
    ) internal view returns (uint256) {
        return _indexOf(set._inner, bytes32(value));
    }

    function length(Bytes32Set storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function length(AddressSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function length(UintSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function add(
        Bytes32Set storage set,
        bytes32 value
    ) internal returns (bool) {
        return _add(set._inner, value);
    }

    function add(
        AddressSet storage set,
        address value
    ) internal returns (bool) {
        return _add(set._inner, bytes32(uint256(uint160(value))));
    }

    function add(UintSet storage set, uint256 value) internal returns (bool) {
        return _add(set._inner, bytes32(value));
    }

    function remove(
        Bytes32Set storage set,
        bytes32 value
    ) internal returns (bool) {
        return _remove(set._inner, value);
    }

    function remove(
        AddressSet storage set,
        address value
    ) internal returns (bool) {
        return _remove(set._inner, bytes32(uint256(uint160(value))));
    }

    function remove(
        UintSet storage set,
        uint256 value
    ) internal returns (bool) {
        return _remove(set._inner, bytes32(value));
    }

    function toArray(
        Bytes32Set storage set
    ) internal view returns (bytes32[] memory) {
        return set._inner._values;
    }

    function toArray(
        AddressSet storage set
    ) internal view returns (address[] memory) {
        bytes32[] storage values = set._inner._values;
        address[] storage array;

        assembly {
            array.slot := values.slot
        }

        return array;
    }

    function toArray(
        UintSet storage set
    ) internal view returns (uint256[] memory) {
        bytes32[] storage values = set._inner._values;
        uint256[] storage array;

        assembly {
            array.slot := values.slot
        }

        return array;
    }

    function _at(
        Set storage set,
        uint256 index
    ) private view returns (bytes32) {
        if (index >= set._values.length)
            revert EnumerableSet__IndexOutOfBounds();
        return set._values[index];
    }

    function _contains(
        Set storage set,
        bytes32 value
    ) private view returns (bool) {
        return set._indexes[value] != 0;
    }

    function _indexOf(
        Set storage set,
        bytes32 value
    ) private view returns (uint256) {
        unchecked {
            return set._indexes[value] - 1;
        }
    }

    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }

    function _add(
        Set storage set,
        bytes32 value
    ) private returns (bool status) {
        if (!_contains(set, value)) {
            set._values.push(value);
            set._indexes[value] = set._values.length;
            status = true;
        }
    }

    function _remove(
        Set storage set,
        bytes32 value
    ) private returns (bool status) {
        uint256 valueIndex = set._indexes[value];

        if (valueIndex != 0) {
            unchecked {
                bytes32 last = set._values[set._values.length - 1];

                // move last value to now-vacant index

                set._values[valueIndex - 1] = last;
                set._indexes[last] = valueIndex;
            }
            // clear last index

            set._values.pop();
            delete set._indexes[value];

            status = true;
        }
    }
}

File 3 of 12 : IDiamondReadable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.8;

/**
 * @title Diamond proxy introspection interface
 * @dev see https://eips.ethereum.org/EIPS/eip-2535
 */
interface IDiamondReadable {
    struct Facet {
        address target;
        bytes4[] selectors;
    }

    /**
     * @notice get all facets and their selectors
     * @return diamondFacets array of structured facet data
     */
    function facets() external view returns (Facet[] memory diamondFacets);

    /**
     * @notice get all selectors for given facet address
     * @param facet address of facet to query
     * @return selectors array of function selectors
     */
    function facetFunctionSelectors(
        address facet
    ) external view returns (bytes4[] memory selectors);

    /**
     * @notice get addresses of all facets used by diamond
     * @return addresses array of facet addresses
     */
    function facetAddresses()
        external
        view
        returns (address[] memory addresses);

    /**
     * @notice get the address of the facet associated with given selector
     * @param selector function selector to query
     * @return facet facet address (zero address if not found)
     */
    function facetAddress(
        bytes4 selector
    ) external view returns (address facet);
}

File 4 of 12 : IProxy.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.8;

interface IProxy {
    error Proxy__ImplementationIsNotContract();

    fallback() external payable;
}

File 5 of 12 : Proxy.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.8;

import { AddressUtils } from '../utils/AddressUtils.sol';
import { IProxy } from './IProxy.sol';

/**
 * @title Base proxy contract
 */
abstract contract Proxy is IProxy {
    using AddressUtils for address;

    /**
     * @notice delegate all calls to implementation contract
     * @dev reverts if implementation address contains no code, for compatibility with metamorphic contracts
     * @dev memory location in use by assembly may be unsafe in other contexts
     */
    fallback() external payable virtual {
        address implementation = _getImplementation();

        if (!implementation.isContract())
            revert Proxy__ImplementationIsNotContract();

        assembly {
            calldatacopy(0, 0, calldatasize())
            let result := delegatecall(
                gas(),
                implementation,
                0,
                calldatasize(),
                0,
                0
            )
            returndatacopy(0, 0, returndatasize())

            switch result
            case 0 {
                revert(0, returndatasize())
            }
            default {
                return(0, returndatasize())
            }
        }
    }

    /**
     * @notice get logic implementation address
     * @return implementation address
     */
    function _getImplementation() internal virtual returns (address);
}

File 6 of 12 : ERC721MetadataStorage.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.8;

library ERC721MetadataStorage {
    bytes32 internal constant STORAGE_SLOT =
        keccak256('solidstate.contracts.storage.ERC721Metadata');

    struct Layout {
        string name;
        string symbol;
        string baseURI;
        mapping(uint256 => string) tokenURIs;
    }

    function layout() internal pure returns (Layout storage l) {
        bytes32 slot = STORAGE_SLOT;
        assembly {
            l.slot := slot
        }
    }
}

File 7 of 12 : AddressUtils.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.8;

import { UintUtils } from './UintUtils.sol';

library AddressUtils {
    using UintUtils for uint256;

    error AddressUtils__InsufficientBalance();
    error AddressUtils__NotContract();
    error AddressUtils__SendValueFailed();

    function toString(address account) internal pure returns (string memory) {
        return uint256(uint160(account)).toHexString(20);
    }

    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function sendValue(address payable account, uint256 amount) internal {
        (bool success, ) = account.call{ value: amount }('');
        if (!success) revert AddressUtils__SendValueFailed();
    }

    function functionCall(
        address target,
        bytes memory data
    ) internal returns (bytes memory) {
        return
            functionCall(target, data, 'AddressUtils: failed low-level call');
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory error
    ) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, error);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                value,
                'AddressUtils: failed low-level call with value'
            );
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory error
    ) internal returns (bytes memory) {
        if (value > address(this).balance)
            revert AddressUtils__InsufficientBalance();
        return _functionCallWithValue(target, data, value, error);
    }

    /**
     * @notice execute arbitrary external call with limited gas usage and amount of copied return data
     * @dev derived from https://github.com/nomad-xyz/ExcessivelySafeCall (MIT License)
     * @param target recipient of call
     * @param gasAmount gas allowance for call
     * @param value native token value to include in call
     * @param maxCopy maximum number of bytes to copy from return data
     * @param data encoded call data
     * @return success whether call is successful
     * @return returnData copied return data
     */
    function excessivelySafeCall(
        address target,
        uint256 gasAmount,
        uint256 value,
        uint16 maxCopy,
        bytes memory data
    ) internal returns (bool success, bytes memory returnData) {
        returnData = new bytes(maxCopy);

        assembly {
            // execute external call via assembly to avoid automatic copying of return data
            success := call(
                gasAmount,
                target,
                value,
                add(data, 0x20),
                mload(data),
                0,
                0
            )

            // determine whether to limit amount of data to copy
            let toCopy := returndatasize()

            if gt(toCopy, maxCopy) {
                toCopy := maxCopy
            }

            // store the length of the copied bytes
            mstore(returnData, toCopy)

            // copy the bytes from returndata[0:toCopy]
            returndatacopy(add(returnData, 0x20), 0, toCopy)
        }
    }

    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory error
    ) private returns (bytes memory) {
        if (!isContract(target)) revert AddressUtils__NotContract();

        (bool success, bytes memory returnData) = target.call{ value: value }(
            data
        );

        if (success) {
            return returnData;
        } else if (returnData.length > 0) {
            assembly {
                let returnData_size := mload(returnData)
                revert(add(32, returnData), returnData_size)
            }
        } else {
            revert(error);
        }
    }
}

File 8 of 12 : UintUtils.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.8;

/**
 * @title utility functions for uint256 operations
 * @dev derived from https://github.com/OpenZeppelin/openzeppelin-contracts/ (MIT license)
 */
library UintUtils {
    error UintUtils__InsufficientHexLength();

    bytes16 private constant HEX_SYMBOLS = '0123456789abcdef';

    function add(uint256 a, int256 b) internal pure returns (uint256) {
        return b < 0 ? sub(a, -b) : a + uint256(b);
    }

    function sub(uint256 a, int256 b) internal pure returns (uint256) {
        return b < 0 ? add(a, -b) : a - uint256(b);
    }

    function toString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return '0';
        }

        uint256 temp = value;
        uint256 digits;

        while (temp != 0) {
            digits++;
            temp /= 10;
        }

        bytes memory buffer = new bytes(digits);

        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }

        return string(buffer);
    }

    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return '0x00';
        }

        uint256 length = 0;

        for (uint256 temp = value; temp != 0; temp >>= 8) {
            unchecked {
                length++;
            }
        }

        return toHexString(value, length);
    }

    function toHexString(
        uint256 value,
        uint256 length
    ) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = '0';
        buffer[1] = 'x';

        unchecked {
            for (uint256 i = 2 * length + 1; i > 1; --i) {
                buffer[i] = HEX_SYMBOLS[value & 0xf];
                value >>= 4;
            }
        }

        if (value != 0) revert UintUtils__InsufficientHexLength();

        return string(buffer);
    }
}

File 9 of 12 : MarketPlaceHelperProxy.sol
// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.0;

import { OwnableStorage } from '@solidstate/contracts/access/ownable/OwnableStorage.sol';
import { Proxy } from '@solidstate/contracts/proxy/Proxy.sol';

contract MarketPlaceHelperProxy is Proxy {
    address private immutable MARKETPLACE_HELPER_IMPLEMENTATION;

    constructor(address marketplaceHelperImplementation) {
        MARKETPLACE_HELPER_IMPLEMENTATION = marketplaceHelperImplementation;

        OwnableStorage.layout().owner = msg.sender;
    }

    /**
     * @inheritdoc Proxy
     */
    function _getImplementation() internal view override returns (address) {
        return MARKETPLACE_HELPER_IMPLEMENTATION;
    }

    receive() external payable {}
}

File 10 of 12 : IShardVaultProxy.sol
// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.0;

interface IShardVaultProxy {
    /**
     * @notice emitted upon MarketPlaceHelperProxy deployment
     */
    event MarketPlaceHelperProxyDeployed(address marketPlacerHelperProxy);

    /**
     * @param shardVaultDiamond the address of the shard vault diamond\
     * @param marketPlaceHelper the address of the marketplace helper implementation
     * @param collection the address of the NFT collection contract
     * @param jpegdVault the jpeg'd NFT vault corresponding to the collection
     * @param jpegdVaultHelper the jpeg'd NFT Vault helper contract used for
       non-ERC721/1155 compiant collections
     * @param authorized array of authorized addresses for loan health maintenance
     */
    struct ShardVaultAddresses {
        address shardVaultDiamond;
        address marketPlaceHelper;
        address collection;
        address jpegdVault;
        address jpegdVaultHelper;
        address whitelist;
        address[] authorized;
    }

    /**
     * @param shardValue the ETH value of each shard
     * @param maxSupply maximum shards to be minted by vault
     * @param maxMintBalance maximum amount of shards allowed per user
     * @param saleFeeBP sale fee in basis points
     * @param acquisitionFeeBP acquisition fee in basis points
     * @param yieldFeeBP yield fee in basis points
     * @param ltvBufferBP loan to value buffer in basis points
     * @param ltvDeviationBP loan to value buffer deviation in basis points
     */
    struct ShardVaultUints {
        uint256 shardValue;
        uint64 maxSupply;
        uint64 maxMintBalance;
        uint16 saleFeeBP;
        uint16 acquisitionFeeBP;
        uint16 yieldFeeBP;
        uint16 ltvBufferBP;
        uint16 ltvDeviationBP;
    }
}

File 11 of 12 : ShardVaultProxy.sol
// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.0;

import { ERC721MetadataStorage } from '@solidstate/contracts/token/ERC721/metadata/ERC721MetadataStorage.sol';
import { IDiamondReadable } from '@solidstate/contracts/proxy/diamond/readable/IDiamondReadable.sol';
import { OwnableStorage } from '@solidstate/contracts/access/ownable/OwnableStorage.sol';
import { Proxy } from '@solidstate/contracts/proxy/Proxy.sol';

import { MarketPlaceHelperProxy } from '../helpers/MarketPlaceHelperProxy.sol';
import { IShardVaultProxy } from './IShardVaultProxy.sol';
import { ShardVaultStorage } from './ShardVaultStorage.sol';

/**
 * @title Upgradeable proxy with externally controlled ShardVault implementation
 */
contract ShardVaultProxy is Proxy, IShardVaultProxy {
    address private immutable SHARD_VAULT_DIAMOND;

    constructor(
        ShardVaultAddresses memory addresses,
        ShardVaultUints memory uints,
        string memory name,
        string memory symbol,
        string memory baseURI,
        bool isPUSDVault
    ) {
        SHARD_VAULT_DIAMOND = addresses.shardVaultDiamond;

        OwnableStorage.layout().owner = msg.sender;

        ERC721MetadataStorage.Layout storage metadata = ERC721MetadataStorage
            .layout();
        metadata.name = name;
        metadata.symbol = symbol;
        metadata.baseURI = baseURI;

        ShardVaultStorage.Layout storage l = ShardVaultStorage.layout();

        address marketPlaceHelperProxy = address(
            new MarketPlaceHelperProxy(addresses.marketPlaceHelper)
        );
        emit MarketPlaceHelperProxyDeployed(marketPlaceHelperProxy);

        l.marketPlaceHelper = marketPlaceHelperProxy;
        l.collection = addresses.collection;
        l.jpegdVault = addresses.jpegdVault;
        l.jpegdVaultHelper = addresses.jpegdVaultHelper;
        l.whitelist = addresses.whitelist;
        l.shardValue = uints.shardValue;
        l.maxSupply = uints.maxSupply;
        l.maxMintBalance = uints.maxMintBalance;

        l.saleFeeBP = uints.saleFeeBP;
        l.acquisitionFeeBP = uints.acquisitionFeeBP;
        l.yieldFeeBP = uints.yieldFeeBP;
        l.ltvBufferBP = uints.ltvBufferBP;
        l.ltvDeviationBP = uints.ltvDeviationBP;
        l.isPUSDVault = isPUSDVault;

        uint256 authorizedLength = addresses.authorized.length;
        unchecked {
            for (uint256 i; i < authorizedLength; ++i) {
                l.authorized[addresses.authorized[i]] = true;
            }
        }
    }

    /**
     * @inheritdoc Proxy
     * @notice fetch logic implementation address from external diamond proxy
     */
    function _getImplementation() internal view override returns (address) {
        return IDiamondReadable(SHARD_VAULT_DIAMOND).facetAddress(msg.sig);
    }

    receive() external payable {}
}

File 12 of 12 : ShardVaultStorage.sol
// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.0;

import { EnumerableSet } from '@solidstate/contracts/data/EnumerableSet.sol';

library ShardVaultStorage {
    struct Layout {
        uint256 shardValue;
        uint256 accruedFees;
        uint256 accruedJPEG;
        uint256 cumulativeETHPerShard;
        uint256 cumulativeJPEGPerShard;
        mapping(uint256 => uint256) claimedETHPerShard;
        mapping(uint256 => uint256) claimedJPEGPerShard;
        address collection;
        uint48 whitelistEndsAt;
        uint16 saleFeeBP;
        uint16 acquisitionFeeBP;
        uint16 yieldFeeBP;
        uint64 maxSupply;
        uint64 maxMintBalance;
        uint64 reservedSupply;
        uint16 ltvBufferBP;
        uint16 ltvDeviationBP;
        bool isInvested;
        bool isEnabled;
        bool isPUSDVault;
        bool isYieldClaiming;
        address marketPlaceHelper;
        address jpegdVault;
        address jpegdVaultHelper;
        address jpegdLP;
        EnumerableSet.UintSet ownedTokenIds;
        mapping(address => bool) authorized;
        uint64 totalMintCount;
        address whitelist;
    }

    bytes32 internal constant STORAGE_SLOT =
        keccak256('insrt.contracts.storage.ShardVault');

    function layout() internal pure returns (Layout storage l) {
        bytes32 slot = STORAGE_SLOT;
        assembly {
            l.slot := slot
        }
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "viaIR": true,
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"components":[{"internalType":"address","name":"shardVaultDiamond","type":"address"},{"internalType":"address","name":"marketPlaceHelper","type":"address"},{"internalType":"address","name":"collection","type":"address"},{"internalType":"address","name":"jpegdVault","type":"address"},{"internalType":"address","name":"jpegdVaultHelper","type":"address"},{"internalType":"address","name":"whitelist","type":"address"},{"internalType":"address[]","name":"authorized","type":"address[]"}],"internalType":"struct IShardVaultProxy.ShardVaultAddresses","name":"addresses","type":"tuple"},{"components":[{"internalType":"uint256","name":"shardValue","type":"uint256"},{"internalType":"uint64","name":"maxSupply","type":"uint64"},{"internalType":"uint64","name":"maxMintBalance","type":"uint64"},{"internalType":"uint16","name":"saleFeeBP","type":"uint16"},{"internalType":"uint16","name":"acquisitionFeeBP","type":"uint16"},{"internalType":"uint16","name":"yieldFeeBP","type":"uint16"},{"internalType":"uint16","name":"ltvBufferBP","type":"uint16"},{"internalType":"uint16","name":"ltvDeviationBP","type":"uint16"}],"internalType":"struct IShardVaultProxy.ShardVaultUints","name":"uints","type":"tuple"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"baseURI","type":"string"},{"internalType":"bool","name":"isPUSDVault","type":"bool"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"Proxy__ImplementationIsNotContract","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketPlacerHelperProxy","type":"address"}],"name":"MarketPlaceHelperProxyDeployed","type":"event"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]

60a060405234610ae257610f028038038061001981610aff565b9283398181810103906101a08212610ae25782516001600160401b038111610ae25783019160e0838386010312610ae2576040519260e084016001600160401b0381118582101761076c5760405261007081610b24565b845261007e60208201610b24565b602085015261008f60408201610b24565b60408501526100a060608201610b24565b60608501526100b160808201610b24565b60808501526100c260a08201610b24565b60a085015260c08101516001600160401b038111610ae257838601601f828401011215610ae25781810151916001600160401b03831161076c578260051b9060208061010f818501610aff565b8096815201928483010101928689018411610ae25701602001905b828210610ae75750505060c0840152610100601f1990910112610ae25760405161010081016001600160401b0381118282101761076c576040526020840151815261017760408501610b38565b602082015261018860608501610b38565b604082015261019960808501610b4c565b60608201526101aa60a08501610b4c565b60808201526101bb60c08501610b4c565b60a08201526101cc60e08501610b4c565b60c08201526101de6101008501610b4c565b60e08201526101208401516001600160401b038111610ae25761020690838601908601610b5b565b6101408501519092906001600160401b038111610ae25761022c90828701908701610b5b565b61016086015190916001600160401b038211610ae25761018091610254918801908801610b5b565b950151928315158403610ae25784516001600160a01b03166080527f8a22373512790c48b83a1fe2efdd2888d4a917bcdc24d0adf63e60f67168046080546001600160a01b031916331790558051906001600160401b03821161076c57600080516020610ee28339815191525490600182811c92168015610ad8575b60208310146108805781601f849311610a5e575b50602090601f83116001146109ba576000926109af575b50508160011b916000199060031b1c191617600080516020610ee2833981519152555b8051906001600160401b03821161076c57600080516020610ea28339815191525490600182811c921680156109a5575b60208310146108805781601f84931161093d575b50602090601f83116001146108ab576000926108a0575b50508160011b916000199060031b1c191617600080516020610ea2833981519152555b83516001600160401b03811161076c57600080516020610ec283398151915254600181811c91168015610896575b602082101461088057601f8111610812575b506020601f821160011461078d578192939495600092610782575b50508160011b916000199060031b1c191617600080516020610ec2833981519152555b6020830151604051906001600160a01b031661014c8083016001600160401b0381118482101761076c576020928492610d36843981520301906000f080156107605760018060a01b03167f78ad3022e163b1ba4f1d5c83bd40108dbe36a9fd059505b9d6baf6f6132873cd6020604051838152a17fdedc0b0ea925c753d8677443dc96845a92583a76e89998d12fc610c8bd2549f380546001600160a01b031990811690921790556040848101517fdedc0b0ea925c753d8677443dc96845a92583a76e89998d12fc610c8bd2549f180546060808901517fdedc0b0ea925c753d8677443dc96845a92583a76e89998d12fc610c8bd2549f4805488166001600160a01b039283161790556080808b01517fdedc0b0ea925c753d8677443dc96845a92583a76e89998d12fc610c8bd2549f580549099169083161790975560a08a8101517fdedc0b0ea925c753d8677443dc96845a92583a76e89998d12fc610c8bd2549fa8054600160401b600160e01b03191691891b600160401b600160e01b031691909117905588517fdedc0b0ea925c753d8677443dc96845a92583a76e89998d12fc610c8bd2549ea5560208901517fdedc0b0ea925c753d8677443dc96845a92583a76e89998d12fc610c8bd2549f280548b8a0151958c01519a8c0151938c015160d09b8c1b61ffff60d01b90811665ffffffffffff60a01b9099169a909616999099179690961760e093841b61ffff60e01b161760f098891b6001600160f01b0319161790965560c0808b015192909a01517fff00ffff00000000ffffffffffffffff000000000000000000000000000000009095166001600160401b0391909116179290961b6fffffffffffffffff0000000000000000169190911794871b61ffff60c01b1694909417941b9092169290921793151590911b60ff60f01b1692909217909155810151519060005b8281106106eb5760405161016f9081610bc782396080518160310152f35b60c082015190815181101561074a576001916020838060a01b03918360051b010151166000527fdedc0b0ea925c753d8677443dc96845a92583a76e89998d12fc610c8bd2549f960205260406000208260ff19825416179055016106cd565b634e487b7160e01b600052603260045260246000fd5b6040513d6000823e3d90fd5b634e487b7160e01b600052604160045260246000fd5b0151905038806103f7565b600080516020610ec283398151915260005260206000209060005b601f19841681106107fa575060019394959683601f198116106107e1575b505050811b01600080516020610ec28339815191525561041a565b015160001960f88460031b161c191690553880806107c6565b9091602060018192858b0151815501930191016107a8565b600080516020610ec28339815191526000527f67cc5f5749495f491c1f67fb661125e4e485874b321951d3c0fa07bc42f111ec601f830160051c810160208410610879575b601f830160051c8201811061086d5750506103dc565b60008155600101610857565b5080610857565b634e487b7160e01b600052602260045260246000fd5b90607f16906103ca565b015190503880610379565b600080516020610ea283398151915260009081529350600080516020610e8283398151915291905b601f1984168510610922576001945083601f19811610610909575b505050811b01600080516020610ea28339815191525561039c565b015160001960f88460031b161c191690553880806108ee565b818101518355602094850194600190930192909101906108d3565b600080516020610ea2833981519152600052909150600080516020610e82833981519152601f840160051c81016020851061099e575b90849392915b601f830160051c8201811061098f575050610362565b60008155859450600101610979565b5080610973565b91607f169161034e565b0151905038806102fb565b600080516020610ee2833981519152600090815293507f9da0b376ea5eac987e00ddf645ea1acba63ab64b37f9d745b363c22385ad39cb91905b601f1984168510610a43576001945083601f19811610610a2a575b505050811b01600080516020610ee28339815191525561031e565b015160001960f88460031b161c19169055388080610a0f565b818101518355602094850194600190930192909101906109f4565b600080516020610ee28339815191526000529091507f9da0b376ea5eac987e00ddf645ea1acba63ab64b37f9d745b363c22385ad39cb601f840160051c810160208510610ad1575b90849392915b601f830160051c82018110610ac25750506102e4565b60008155859450600101610aac565b5080610aa6565b91607f16916102d0565b600080fd5b60208091610af484610b24565b81520191019061012a565b6040519190601f01601f191682016001600160401b0381118382101761076c57604052565b51906001600160a01b0382168203610ae257565b51906001600160401b0382168203610ae257565b519061ffff82168203610ae257565b919080601f84011215610ae25782516001600160401b03811161076c57602090610b8d601f8201601f19168301610aff565b92818452828287010111610ae25760005b818110610bb357508260009394955001015290565b8581018301518482018401528201610b9e56fe608060405236156100d7576366ffd66360e11b6080908152600080356001600160e01b031916608452906020906024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156100ca57819061009e575b803b1561008c57818091368280378136915af43d82803e15610088573d90f35b3d90fd5b6040516321f27f0d60e21b8152600490fd5b5060203d81116100c3575b806100b66100be926100d9565b608001610112565b610068565b503d6100a9565b50604051903d90823e3d90fd5b005b601f80199101166080016080811067ffffffffffffffff8211176100fc57604052565b634e487b7160e01b600052604160045260246000fd5b602090607f190112610134576080516001600160a01b03811681036101345790565b600080fdfea2646970667358221220ae4f73d3441df119e785f22d8edf6c8deb1c25db4e9015fbfeec8843968b011264736f6c6343000811003360a03461009957601f61014c38819003918201601f19168301916001600160401b0383118484101761009e5780849260209460405283398101031261009957516001600160a01b0381168103610099576080527f8a22373512790c48b83a1fe2efdd2888d4a917bcdc24d0adf63e60f67168046080546001600160a01b03191633179055604051609790816100b5823960805181600b0152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe60806040523615605f577f0000000000000000000000000000000000000000000000000000000000000000803b15604e576000808092368280378136915af43d82803e15604a573d90f35b3d90fd5b6321f27f0d60e21b60805260046080fd5b00fea264697066735822122011795d2b973ad091dfc290ebbe4d760dd6145a1d0a72ec5879520355ffb1fa7964736f6c634300081100334d5a81d91ab5d0eb928391f3fb432d708f1a8a13471720d8e842441f4faa79d699574a7094154bb123ae6ae102096f0bf9679b85a5cd1e727aaa0ae5f132e6b299574a7094154bb123ae6ae102096f0bf9679b85a5cd1e727aaa0ae5f132e6b399574a7094154bb123ae6ae102096f0bf9679b85a5cd1e727aaa0ae5f132e6b100000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000214e8348c4f000000000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fd5e9d05acecdca794f3beed21cffd343e7be3fa0000000000000000000000000df1df34b4586905e662caf79e7a28aff8ca58bb000000000000000000000000bc4ca0eda7647a8ab7c2061c2e118a18a936f13d000000000000000000000000af5e4c1bfac63e355cf093eea3d4aba138ea40890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a09a0950b2e5ec673dc406edb3811c021d049b6300000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000ceff1d8584d61634da95b239e349392c2ee8cbd1000000000000000000000000000000000000000000000000000000000000000c53686172645661756c742032000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045341504500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c544f5f42455f46494c4c45440000000000000000000000000000000000000000

Deployed Bytecode

0x608060405236156100d7576366ffd66360e11b6080908152600080356001600160e01b031916608452906020906024817f000000000000000000000000fd5e9d05acecdca794f3beed21cffd343e7be3fa6001600160a01b03165afa80156100ca57819061009e575b803b1561008c57818091368280378136915af43d82803e15610088573d90f35b3d90fd5b6040516321f27f0d60e21b8152600490fd5b5060203d81116100c3575b806100b66100be926100d9565b608001610112565b610068565b503d6100a9565b50604051903d90823e3d90fd5b005b601f80199101166080016080811067ffffffffffffffff8211176100fc57604052565b634e487b7160e01b600052604160045260246000fd5b602090607f190112610134576080516001600160a01b03811681036101345790565b600080fdfea2646970667358221220ae4f73d3441df119e785f22d8edf6c8deb1c25db4e9015fbfeec8843968b011264736f6c63430008110033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000214e8348c4f000000000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fd5e9d05acecdca794f3beed21cffd343e7be3fa0000000000000000000000000df1df34b4586905e662caf79e7a28aff8ca58bb000000000000000000000000bc4ca0eda7647a8ab7c2061c2e118a18a936f13d000000000000000000000000af5e4c1bfac63e355cf093eea3d4aba138ea40890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a09a0950b2e5ec673dc406edb3811c021d049b6300000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000ceff1d8584d61634da95b239e349392c2ee8cbd1000000000000000000000000000000000000000000000000000000000000000c53686172645661756c742032000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045341504500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c544f5f42455f46494c4c45440000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : addresses (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
Arg [1] : uints (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
Arg [2] : name (string): ShardVault 2
Arg [3] : symbol (string): SAPE
Arg [4] : baseURI (string): TO_BE_FILLED
Arg [5] : isPUSDVault (bool): False

-----Encoded View---------------
28 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000001a0
Arg [1] : 0000000000000000000000000000000000000000000000000214e8348c4f0000
Arg [2] : 00000000000000000000000000000000000000000000000000000000000001f4
Arg [3] : 00000000000000000000000000000000000000000000000000000000000001f4
Arg [4] : 00000000000000000000000000000000000000000000000000000000000001f4
Arg [5] : 00000000000000000000000000000000000000000000000000000000000003e8
Arg [6] : 00000000000000000000000000000000000000000000000000000000000001f4
Arg [7] : 00000000000000000000000000000000000000000000000000000000000001f4
Arg [8] : 00000000000000000000000000000000000000000000000000000000000000c8
Arg [9] : 00000000000000000000000000000000000000000000000000000000000002c0
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000300
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000340
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [13] : 000000000000000000000000fd5e9d05acecdca794f3beed21cffd343e7be3fa
Arg [14] : 0000000000000000000000000df1df34b4586905e662caf79e7a28aff8ca58bb
Arg [15] : 000000000000000000000000bc4ca0eda7647a8ab7c2061c2e118a18a936f13d
Arg [16] : 000000000000000000000000af5e4c1bfac63e355cf093eea3d4aba138ea4089
Arg [17] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [18] : 000000000000000000000000a09a0950b2e5ec673dc406edb3811c021d049b63
Arg [19] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [20] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [21] : 000000000000000000000000ceff1d8584d61634da95b239e349392c2ee8cbd1
Arg [22] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [23] : 53686172645661756c7420320000000000000000000000000000000000000000
Arg [24] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [25] : 5341504500000000000000000000000000000000000000000000000000000000
Arg [26] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [27] : 544f5f42455f46494c4c45440000000000000000000000000000000000000000


Loading...
Loading
Loading...
Loading
[ 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.