ETH Price: $2,889.91 (+0.56%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

Advanced mode:
Parent Transaction Hash Block
From
To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EditionsMetadataHelper

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200000 runs

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

/**
 * ░█▄█░▄▀▄▒█▀▒▄▀▄░░░▒░░░▒██▀░█▀▄░█░▀█▀░█░▄▀▄░█▄░█░▄▀▀░░░█▄░█▒█▀░▀█▀
 * ▒█▒█░▀▄▀░█▀░█▀█▒░░▀▀▒░░█▄▄▒█▄▀░█░▒█▒░█░▀▄▀░█▒▀█▒▄██▒░░█▒▀█░█▀░▒█▒
 * 
 * Made with 🧡 by Kreation.tech
 */
pragma solidity ^0.8.6;


import {MetadataHelper} from "./MetadataHelper.sol";

/**
 * Shared NFT logic for rendering metadata associated with editions
 */
contract EditionsMetadataHelper is MetadataHelper {

    /**
     * Generates edition metadata from storage information as base64-json blob
     * Combines the media data and metadata
     * 
     * @param name Name of NFT in metadata
     * @param description Description of NFT in metadata
     * @param contentUrl URL of content to render
     * @param thumbnailUrl optional URL of a thumbnail to render, for animated content only
     * @param tokenOfEdition unique identifier of a token edition
     * @param size total count of editions
     */
    function createTokenURI(string memory name, string memory description, string memory contentUrl, string memory thumbnailUrl, uint256 tokenOfEdition, uint256 size) external pure returns (string memory) {
        string memory _tokenMediaData = tokenMediaData(contentUrl, thumbnailUrl, tokenOfEdition);
        bytes memory json = createMetadata(name, description, _tokenMediaData, tokenOfEdition, size);
        return encodeMetadata(json);
    }

    /** 
     * Function to create the metadata json string for the nft edition
     * 
     * @param name Name of NFT in metadata
     * @param description Description of NFT in metadata
     * @param mediaData Data for media to include in json object
     * @param tokenOfEdition Token ID for specific token
     * @param size Size of entire edition to show
    */
    function createMetadata(string memory name, string memory description, string memory mediaData, uint256 tokenOfEdition, uint256 size) public pure returns (bytes memory) {
        bytes memory sizeText;
        if (size > 0) {
            sizeText = abi.encodePacked("/", numberToString(size));
        }
        return abi.encodePacked('{"name":"', name, " ", numberToString(tokenOfEdition), sizeText, '","description":"', description, '","',
                mediaData, 'properties":{"number":', numberToString(tokenOfEdition), ',"name":"', name, '"}}');
    }

    /** 
     * Generates edition metadata from storage information as base64-json blob
     * Combines the media data and metadata
     * 
     * @param contentUrl URL of image to render for edition
     * @param thumbnailUrl index of the content type to render for edition
     * @param tokenOfEdition token identifier
     */
    function tokenMediaData(string memory contentUrl, string memory thumbnailUrl, uint256 tokenOfEdition) public pure returns (string memory) {
        if (bytes(thumbnailUrl).length == 0) {
            return string(
                abi.encodePacked(
                    'image":"', contentUrl, "?id=", numberToString(tokenOfEdition),'","'));
        } else {
            return string(
                abi.encodePacked(
                    'image":"', thumbnailUrl, "?id=", numberToString(tokenOfEdition),'","animation_url":"', contentUrl, "?id=", numberToString(tokenOfEdition),'","'));
        }
    }
}

File 2 of 4 : MetadataHelper.sol
// SPDX-License-Identifier: MIT

/**
 * ░█▄█░▄▀▄▒█▀▒▄▀▄░░░▒░░░▒██▀░█▀▄░█░▀█▀░█░▄▀▄░█▄░█░▄▀▀░░░█▄░█▒█▀░▀█▀
 * ▒█▒█░▀▄▀░█▀░█▀█▒░░▀▀▒░░█▄▄▒█▄▀░█░▒█▒░█░▀▄▀░█▒▀█▒▄██▒░░█▒▀█░█▀░▒█▒
 * 
 * Made with 🧡 by Kreation.tech
 */
pragma solidity ^0.8.6;

import {StringsUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol";
import {Base64} from "base64-sol/base64.sol";

/**
 * Shared utility functions for rendering on-chain metadata
 */
contract MetadataHelper {
    /**
     * @param unencoded bytes to base64-encode
     */
    function base64Encode(bytes memory unencoded) public pure returns (string memory) {
        return Base64.encode(unencoded);
    }

    /**
     * Encodes the argument json bytes into base64-data uri format
     * 
     * @param json raw json to base64 and turn into a data-uri
     */
    function encodeMetadata(bytes memory json) public pure returns (string memory) {
        return string(abi.encodePacked("data:application/json;base64,", base64Encode(json)));
    }

    /**
     * Proxy to openzeppelin's toString function
     *
     * @param value number to return as a string
     */
    function numberToString(uint256 value) public pure returns (string memory) {
        return StringsUpgradeable.toString(value);
    }
}

File 3 of 4 : StringsUpgradeable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (utils/Strings.sol)

pragma solidity ^0.8.0;

/**
 * @dev String operations.
 */
library StringsUpgradeable {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

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

pragma solidity >=0.6.0;

/// @title Base64
/// @author Brecht Devos - <[email protected]>
/// @notice Provides functions for encoding/decoding base64
library Base64 {
    string internal constant TABLE_ENCODE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
    bytes  internal constant TABLE_DECODE = hex"0000000000000000000000000000000000000000000000000000000000000000"
                                            hex"00000000000000000000003e0000003f3435363738393a3b3c3d000000000000"
                                            hex"00000102030405060708090a0b0c0d0e0f101112131415161718190000000000"
                                            hex"001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132330000000000";

    function encode(bytes memory data) internal pure returns (string memory) {
        if (data.length == 0) return '';

        // load the table into memory
        string memory table = TABLE_ENCODE;

        // multiply by 4/3 rounded up
        uint256 encodedLen = 4 * ((data.length + 2) / 3);

        // add some extra buffer at the end required for the writing
        string memory result = new string(encodedLen + 32);

        assembly {
            // set the actual output length
            mstore(result, encodedLen)

            // prepare the lookup table
            let tablePtr := add(table, 1)

            // input ptr
            let dataPtr := data
            let endPtr := add(dataPtr, mload(data))

            // result ptr, jump over length
            let resultPtr := add(result, 32)

            // run over the input, 3 bytes at a time
            for {} lt(dataPtr, endPtr) {}
            {
                // read 3 bytes
                dataPtr := add(dataPtr, 3)
                let input := mload(dataPtr)

                // write 4 characters
                mstore8(resultPtr, mload(add(tablePtr, and(shr(18, input), 0x3F))))
                resultPtr := add(resultPtr, 1)
                mstore8(resultPtr, mload(add(tablePtr, and(shr(12, input), 0x3F))))
                resultPtr := add(resultPtr, 1)
                mstore8(resultPtr, mload(add(tablePtr, and(shr( 6, input), 0x3F))))
                resultPtr := add(resultPtr, 1)
                mstore8(resultPtr, mload(add(tablePtr, and(        input,  0x3F))))
                resultPtr := add(resultPtr, 1)
            }

            // padding with '='
            switch mod(mload(data), 3)
            case 1 { mstore(sub(resultPtr, 2), shl(240, 0x3d3d)) }
            case 2 { mstore(sub(resultPtr, 1), shl(248, 0x3d)) }
        }

        return result;
    }

    function decode(string memory _data) internal pure returns (bytes memory) {
        bytes memory data = bytes(_data);

        if (data.length == 0) return new bytes(0);
        require(data.length % 4 == 0, "invalid base64 decoder input");

        // load the table into memory
        bytes memory table = TABLE_DECODE;

        // every 4 characters represent 3 bytes
        uint256 decodedLen = (data.length / 4) * 3;

        // add some extra buffer at the end required for the writing
        bytes memory result = new bytes(decodedLen + 32);

        assembly {
            // padding with '='
            let lastBytes := mload(add(data, mload(data)))
            if eq(and(lastBytes, 0xFF), 0x3d) {
                decodedLen := sub(decodedLen, 1)
                if eq(and(lastBytes, 0xFFFF), 0x3d3d) {
                    decodedLen := sub(decodedLen, 1)
                }
            }

            // set the actual output length
            mstore(result, decodedLen)

            // prepare the lookup table
            let tablePtr := add(table, 1)

            // input ptr
            let dataPtr := data
            let endPtr := add(dataPtr, mload(data))

            // result ptr, jump over length
            let resultPtr := add(result, 32)

            // run over the input, 4 characters at a time
            for {} lt(dataPtr, endPtr) {}
            {
               // read 4 characters
               dataPtr := add(dataPtr, 4)
               let input := mload(dataPtr)

               // write 3 bytes
               let output := add(
                   add(
                       shl(18, and(mload(add(tablePtr, and(shr(24, input), 0xFF))), 0xFF)),
                       shl(12, and(mload(add(tablePtr, and(shr(16, input), 0xFF))), 0xFF))),
                   add(
                       shl( 6, and(mload(add(tablePtr, and(shr( 8, input), 0xFF))), 0xFF)),
                               and(mload(add(tablePtr, and(        input , 0xFF))), 0xFF)
                    )
                )
                mstore(resultPtr, shl(232, output))
                resultPtr := add(resultPtr, 3)
            }
        }

        return result;
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"bytes","name":"unencoded","type":"bytes"}],"name":"base64Encode","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"mediaData","type":"string"},{"internalType":"uint256","name":"tokenOfEdition","type":"uint256"},{"internalType":"uint256","name":"size","type":"uint256"}],"name":"createMetadata","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"contentUrl","type":"string"},{"internalType":"string","name":"thumbnailUrl","type":"string"},{"internalType":"uint256","name":"tokenOfEdition","type":"uint256"},{"internalType":"uint256","name":"size","type":"uint256"}],"name":"createTokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"json","type":"bytes"}],"name":"encodeMetadata","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"numberToString","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"contentUrl","type":"string"},{"internalType":"string","name":"thumbnailUrl","type":"string"},{"internalType":"uint256","name":"tokenOfEdition","type":"uint256"}],"name":"tokenMediaData","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"}]

608060405234801561001057600080fd5b50610ef1806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063be6ce8b411610050578063be6ce8b4146100c6578063d5fb1b19146100d9578063eb111ab6146100ec57600080fd5b8063170dc6601461007757806329395d7e146100a0578063a50e6a68146100b3575b600080fd5b61008a61008536600461057e565b6100ff565b6040516100979190610611565b60405180910390f35b61008a6100ae3660046106e7565b610110565b61008a6100c1366004610750565b610141565b61008a6100d436600461080f565b610179565b61008a6100e73660046106e7565b6101f5565b61008a6100fa3660046108a9565b610200565b606061010a8261026b565b92915050565b606061011b826101f5565b60405160200161012b9190610932565b6040516020818303038152906040529050919050565b60606000610150868686610200565b905060006101618989848888610179565b905061016c81610110565b9998505050505050505050565b60608082156101ad5761018b836100ff565b60405160200161019b9190610977565b60405160208183030381529060405290505b866101b7856100ff565b8288886101c3896100ff565b8c6040516020016101da97969594939291906109bc565b60405160208183030381529060405291505095945050505050565b606061010a826103a5565b606082516000141561023d5783610216836100ff565b604051602001610227929190610b6e565b6040516020818303038152906040529050610264565b82610247836100ff565b85610251856100ff565b6040516020016102279493929190610c19565b9392505050565b6060816102ab57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156102d557806102bf81610d50565b91506102ce9050600a83610db8565b91506102af565b60008167ffffffffffffffff8111156102f0576102f0610624565b6040519080825280601f01601f19166020018201604052801561031a576020820181803683370190505b5090505b841561039d5761032f600183610dcc565b915061033c600a86610de3565b610347906030610df7565b60f81b81838151811061035c5761035c610e0f565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610396600a86610db8565b945061031e565b949350505050565b60608151600014156103c557505060408051602081019091526000815290565b6000604051806060016040528060408152602001610e7c60409139905060006003845160026103f49190610df7565b6103fe9190610db8565b610409906004610e3e565b90506000610418826020610df7565b67ffffffffffffffff81111561043057610430610624565b6040519080825280601f01601f19166020018201604052801561045a576020820181803683370190505b509050818152600183018586518101602084015b818310156104c6576003830192508251603f8160121c168501518253600182019150603f81600c1c168501518253600182019150603f8160061c168501518253600182019150603f811685015182535060010161046e565b6003895106600181146104e0576002811461052a57610570565b7f3d3d0000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe830152610570565b7f3d000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301525b509398975050505050505050565b60006020828403121561059057600080fd5b5035919050565b60005b838110156105b257818101518382015260200161059a565b838111156105c1576000848401525b50505050565b600081518084526105df816020860160208601610597565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061026460208301846105c7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff8084111561066e5761066e610624565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156106b4576106b4610624565b816040528093508581528686860111156106cd57600080fd5b858560208301376000602087830101525050509392505050565b6000602082840312156106f957600080fd5b813567ffffffffffffffff81111561071057600080fd5b8201601f8101841361072157600080fd5b61039d84823560208401610653565b600082601f83011261074157600080fd5b61026483833560208501610653565b60008060008060008060c0878903121561076957600080fd5b863567ffffffffffffffff8082111561078157600080fd5b61078d8a838b01610730565b975060208901359150808211156107a357600080fd5b6107af8a838b01610730565b965060408901359150808211156107c557600080fd5b6107d18a838b01610730565b955060608901359150808211156107e757600080fd5b506107f489828a01610730565b9350506080870135915060a087013590509295509295509295565b600080600080600060a0868803121561082757600080fd5b853567ffffffffffffffff8082111561083f57600080fd5b61084b89838a01610730565b9650602088013591508082111561086157600080fd5b61086d89838a01610730565b9550604088013591508082111561088357600080fd5b5061089088828901610730565b9598949750949560608101359550608001359392505050565b6000806000606084860312156108be57600080fd5b833567ffffffffffffffff808211156108d657600080fd5b6108e287838801610730565b945060208601359150808211156108f857600080fd5b5061090586828701610730565b925050604084013590509250925092565b60008151610928818560208601610597565b9290920192915050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161096a81601d850160208701610597565b91909101601d0192915050565b7f2f000000000000000000000000000000000000000000000000000000000000008152600082516109af816001850160208701610597565b9190910160010192915050565b7f7b226e616d65223a2200000000000000000000000000000000000000000000008152600088516109f4816009850160208d01610597565b7f20000000000000000000000000000000000000000000000000000000000000006009918401918201528851610a3181600a840160208d01610597565b8851910190610a4781600a840160208c01610597565b7f222c226465736372697074696f6e223a22000000000000000000000000000000600a92909101918201528651610a8581601b840160208b01610597565b7f222c220000000000000000000000000000000000000000000000000000000000601b92909101918201528551610ac381601e840160208a01610597565b610b5f610b36610b30610b07610b01601e868801017f70726f70657274696573223a7b226e756d626572223a00000000000000000000815260160190565b8a610916565b7f2c226e616d65223a220000000000000000000000000000000000000000000000815260090190565b87610916565b7f227d7d0000000000000000000000000000000000000000000000000000000000815260030190565b9b9a5050505050505050505050565b7f696d616765223a22000000000000000000000000000000000000000000000000815260008351610ba6816008850160208801610597565b7f3f69643d000000000000000000000000000000000000000000000000000000006008918401918201528351610be381600c840160208801610597565b7f222c220000000000000000000000000000000000000000000000000000000000600c9290910191820152600f01949350505050565b7f696d616765223a22000000000000000000000000000000000000000000000000815260008551610c51816008850160208a01610597565b80830190507f3f69643d000000000000000000000000000000000000000000000000000000008060088301528651610c9081600c850160208b01610597565b7f222c22616e696d6174696f6e5f75726c223a2200000000000000000000000000600c93909101928301528551610cce81601f850160208a01610597565b601f9201918201528351610ce9816023840160208801610597565b7f222c220000000000000000000000000000000000000000000000000000000000602392909101918201526026019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d8257610d82610d21565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082610dc757610dc7610d89565b500490565b600082821015610dde57610dde610d21565b500390565b600082610df257610df2610d89565b500690565b60008219821115610e0a57610e0a610d21565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610e7657610e76610d21565b50029056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220e41debca32ed1bb4bd4f2ec54a181e87a9b04eafa3d9fe30f88383abccb070bf64736f6c63430008090033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100725760003560e01c8063be6ce8b411610050578063be6ce8b4146100c6578063d5fb1b19146100d9578063eb111ab6146100ec57600080fd5b8063170dc6601461007757806329395d7e146100a0578063a50e6a68146100b3575b600080fd5b61008a61008536600461057e565b6100ff565b6040516100979190610611565b60405180910390f35b61008a6100ae3660046106e7565b610110565b61008a6100c1366004610750565b610141565b61008a6100d436600461080f565b610179565b61008a6100e73660046106e7565b6101f5565b61008a6100fa3660046108a9565b610200565b606061010a8261026b565b92915050565b606061011b826101f5565b60405160200161012b9190610932565b6040516020818303038152906040529050919050565b60606000610150868686610200565b905060006101618989848888610179565b905061016c81610110565b9998505050505050505050565b60608082156101ad5761018b836100ff565b60405160200161019b9190610977565b60405160208183030381529060405290505b866101b7856100ff565b8288886101c3896100ff565b8c6040516020016101da97969594939291906109bc565b60405160208183030381529060405291505095945050505050565b606061010a826103a5565b606082516000141561023d5783610216836100ff565b604051602001610227929190610b6e565b6040516020818303038152906040529050610264565b82610247836100ff565b85610251856100ff565b6040516020016102279493929190610c19565b9392505050565b6060816102ab57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156102d557806102bf81610d50565b91506102ce9050600a83610db8565b91506102af565b60008167ffffffffffffffff8111156102f0576102f0610624565b6040519080825280601f01601f19166020018201604052801561031a576020820181803683370190505b5090505b841561039d5761032f600183610dcc565b915061033c600a86610de3565b610347906030610df7565b60f81b81838151811061035c5761035c610e0f565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610396600a86610db8565b945061031e565b949350505050565b60608151600014156103c557505060408051602081019091526000815290565b6000604051806060016040528060408152602001610e7c60409139905060006003845160026103f49190610df7565b6103fe9190610db8565b610409906004610e3e565b90506000610418826020610df7565b67ffffffffffffffff81111561043057610430610624565b6040519080825280601f01601f19166020018201604052801561045a576020820181803683370190505b509050818152600183018586518101602084015b818310156104c6576003830192508251603f8160121c168501518253600182019150603f81600c1c168501518253600182019150603f8160061c168501518253600182019150603f811685015182535060010161046e565b6003895106600181146104e0576002811461052a57610570565b7f3d3d0000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe830152610570565b7f3d000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301525b509398975050505050505050565b60006020828403121561059057600080fd5b5035919050565b60005b838110156105b257818101518382015260200161059a565b838111156105c1576000848401525b50505050565b600081518084526105df816020860160208601610597565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061026460208301846105c7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff8084111561066e5761066e610624565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156106b4576106b4610624565b816040528093508581528686860111156106cd57600080fd5b858560208301376000602087830101525050509392505050565b6000602082840312156106f957600080fd5b813567ffffffffffffffff81111561071057600080fd5b8201601f8101841361072157600080fd5b61039d84823560208401610653565b600082601f83011261074157600080fd5b61026483833560208501610653565b60008060008060008060c0878903121561076957600080fd5b863567ffffffffffffffff8082111561078157600080fd5b61078d8a838b01610730565b975060208901359150808211156107a357600080fd5b6107af8a838b01610730565b965060408901359150808211156107c557600080fd5b6107d18a838b01610730565b955060608901359150808211156107e757600080fd5b506107f489828a01610730565b9350506080870135915060a087013590509295509295509295565b600080600080600060a0868803121561082757600080fd5b853567ffffffffffffffff8082111561083f57600080fd5b61084b89838a01610730565b9650602088013591508082111561086157600080fd5b61086d89838a01610730565b9550604088013591508082111561088357600080fd5b5061089088828901610730565b9598949750949560608101359550608001359392505050565b6000806000606084860312156108be57600080fd5b833567ffffffffffffffff808211156108d657600080fd5b6108e287838801610730565b945060208601359150808211156108f857600080fd5b5061090586828701610730565b925050604084013590509250925092565b60008151610928818560208601610597565b9290920192915050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161096a81601d850160208701610597565b91909101601d0192915050565b7f2f000000000000000000000000000000000000000000000000000000000000008152600082516109af816001850160208701610597565b9190910160010192915050565b7f7b226e616d65223a2200000000000000000000000000000000000000000000008152600088516109f4816009850160208d01610597565b7f20000000000000000000000000000000000000000000000000000000000000006009918401918201528851610a3181600a840160208d01610597565b8851910190610a4781600a840160208c01610597565b7f222c226465736372697074696f6e223a22000000000000000000000000000000600a92909101918201528651610a8581601b840160208b01610597565b7f222c220000000000000000000000000000000000000000000000000000000000601b92909101918201528551610ac381601e840160208a01610597565b610b5f610b36610b30610b07610b01601e868801017f70726f70657274696573223a7b226e756d626572223a00000000000000000000815260160190565b8a610916565b7f2c226e616d65223a220000000000000000000000000000000000000000000000815260090190565b87610916565b7f227d7d0000000000000000000000000000000000000000000000000000000000815260030190565b9b9a5050505050505050505050565b7f696d616765223a22000000000000000000000000000000000000000000000000815260008351610ba6816008850160208801610597565b7f3f69643d000000000000000000000000000000000000000000000000000000006008918401918201528351610be381600c840160208801610597565b7f222c220000000000000000000000000000000000000000000000000000000000600c9290910191820152600f01949350505050565b7f696d616765223a22000000000000000000000000000000000000000000000000815260008551610c51816008850160208a01610597565b80830190507f3f69643d000000000000000000000000000000000000000000000000000000008060088301528651610c9081600c850160208b01610597565b7f222c22616e696d6174696f6e5f75726c223a2200000000000000000000000000600c93909101928301528551610cce81601f850160208a01610597565b601f9201918201528351610ce9816023840160208801610597565b7f222c220000000000000000000000000000000000000000000000000000000000602392909101918201526026019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d8257610d82610d21565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082610dc757610dc7610d89565b500490565b600082821015610dde57610dde610d21565b500390565b600082610df257610df2610d89565b500690565b60008219821115610e0a57610e0a610d21565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610e7657610e76610d21565b50029056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220e41debca32ed1bb4bd4f2ec54a181e87a9b04eafa3d9fe30f88383abccb070bf64736f6c63430008090033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.