ETH Price: $3,399.67 (+1.95%)
Gas: 3.42 Gwei

Contract

0xE77233Caa8Dc054d24487D2840CEA895d35135e2
 

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:
TokenURIRenderer

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion
File 1 of 3 : TokenURIRenderer.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./ITokenURIRenderer.sol";
import "@openzeppelin/contracts/utils/Strings.sol";

contract TokenURIRenderer is ITokenURIRenderer {
    using Strings for uint256;

    function tokenURI(uint256 tokenId, string memory baseURI) public view virtual override returns (string memory) {
        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : "";
    }
}

File 2 of 3 : ITokenURIRenderer.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface ITokenURIRenderer {
    function tokenURI(uint256 tokenId, string memory baseURI) external view returns (string memory);
}

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

pragma solidity ^0.8.0;

/**
 * @dev String operations.
 */
library Strings {
    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);
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"baseURI","type":"string"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b5061050a806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806341dcf45414610030575b600080fd5b61004361003e366004610233565b610059565b6040516100509190610336565b60405180910390f35b6060600082511161007957604051806020016040528060008152506100a4565b81610083846100ab565b604051602001610094929190610307565b6040516020818303038152906040525b9392505050565b6060816100eb57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561011557806100ff816103fa565b915061010e9050600a8361039f565b91506100ef565b60008167ffffffffffffffff811115610157577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610181576020820181803683370190505b5090505b841561022b576101966001836103b3565b91506101a3600a86610433565b6101ae906030610387565b60f81b8183815181106101ea577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610224600a8661039f565b9450610185565b949350505050565b60008060408385031215610245578182fd5b82359150602083013567ffffffffffffffff80821115610263578283fd5b818501915085601f830112610276578283fd5b813581811115610288576102886104a5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156102ce576102ce6104a5565b816040528281528860208487010111156102e6578586fd5b82602086016020830137856020848301015280955050505050509250929050565b600083516103198184602088016103ca565b83519083019061032d8183602088016103ca565b01949350505050565b60208152600082518060208401526103558160408501602087016103ca565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000821982111561039a5761039a610447565b500190565b6000826103ae576103ae610476565b500490565b6000828210156103c5576103c5610447565b500390565b60005b838110156103e55781810151838201526020016103cd565b838111156103f4576000848401525b50505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561042c5761042c610447565b5060010190565b60008261044257610442610476565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea264697066735822122060db239261ea1730a07d46f3d297564231d8a2e9ced075e6959892a548b16f0564736f6c63430008040033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061002b5760003560e01c806341dcf45414610030575b600080fd5b61004361003e366004610233565b610059565b6040516100509190610336565b60405180910390f35b6060600082511161007957604051806020016040528060008152506100a4565b81610083846100ab565b604051602001610094929190610307565b6040516020818303038152906040525b9392505050565b6060816100eb57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561011557806100ff816103fa565b915061010e9050600a8361039f565b91506100ef565b60008167ffffffffffffffff811115610157577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610181576020820181803683370190505b5090505b841561022b576101966001836103b3565b91506101a3600a86610433565b6101ae906030610387565b60f81b8183815181106101ea577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610224600a8661039f565b9450610185565b949350505050565b60008060408385031215610245578182fd5b82359150602083013567ffffffffffffffff80821115610263578283fd5b818501915085601f830112610276578283fd5b813581811115610288576102886104a5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156102ce576102ce6104a5565b816040528281528860208487010111156102e6578586fd5b82602086016020830137856020848301015280955050505050509250929050565b600083516103198184602088016103ca565b83519083019061032d8183602088016103ca565b01949350505050565b60208152600082518060208401526103558160408501602087016103ca565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000821982111561039a5761039a610447565b500190565b6000826103ae576103ae610476565b500490565b6000828210156103c5576103c5610447565b500390565b60005b838110156103e55781810151838201526020016103cd565b838111156103f4576000848401525b50505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561042c5761042c610447565b5060010190565b60008261044257610442610476565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea264697066735822122060db239261ea1730a07d46f3d297564231d8a2e9ced075e6959892a548b16f0564736f6c63430008040033

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.