string(abi.encodePacked(baseURI, tokenId.toString())) : ''; } /** * @dev Base URI for computing {tokenURI}. Empty by default, can be overriden * in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721...
This feature came in Solidity version 0.4.19, which states: Code Generator: New ABI decoder which supports structs and arbitrarily nested arrays and checks input size (activate using pragma experimental ABIEncoderV2;). 8 910 24
// 引入Color的abi import Color from '../abis/Color.json' ... // 状态变量 // 存储合约 const [contract, setContract] = useState(null) // 存储总量 const [totalSupply, setTotalSupply] = useState(0) // 存储所有颜色NFT const [colors, setColors] = useState([]) ... setAccount(accounts[...
通过指定的tokenId返回其URI。如果baseURI不为空,则tokenURI应该为abi.encodePacked(baseURI, tokenId.toString()),否则该方法将返回空字符串。注意,通常在其实现类中,会override该方法,当baseURI为空时,直接返回tokenURI。这里,URI 通常指向了符合 ERC721 Metadata 的 Json 格式文件,如下所示: 1 2 3 4 5 6 ...
return string(abi.encodePacked(_baseTokenURI, tokenId.toString(),baseExtension)); } 查询tokenId的URI,使用abi.encodePacked方法将我们在代码中写好的URL跟我们的tokenId拼接起来。这样,我们通过tokenId就能查询到我们相应的代币的元数据了。 function mint() external { ...
(ipfsHash); return tokenId; } function tokenURI(uint256 tokenId) public view override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); return string(abi.encodePacked("data:application/json;base64,", bytes(_tokenData[tokenId].ipfsHash)...
return string(abi.encodePacked(_baseTokenURI, tokenId.toString(),baseExtension)); } 查询tokenId的URI,使用abi.encodePacked方法将我们在代码中写好的URL跟我们的tokenId拼接起来。这样,我们通过tokenId就能查询到我们相应的代币的元数据了。 function mint() external { ...
{//在使用ABI调用合约函数时,传入的ABI会被编码成calldata(一串hash值)。calldata由function signature和argument encoding两部分组成。通过读取call data的内容, EVM可以得知需要执行的函数,以及函数的传入值,并作出相应的操作。 //即形如0x01ffc9a701ffc9a700000000000000000000000000000000000000000000000000000000//额外添加知识...
Find and download ABI for your projects. ERC20 Method (9) Event (3) Read (6) Write (3) [ { "constant": true, "inputs": [], "name": "name", "outputs": [ { "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, {...
return abi.encode(tokenOwner); } function supportsInterface(bytes4 interfaceID) public view virtual override(ERC165) returns (bool) { return interfaceID == type(IExtendedResolver).interfaceId || super.supportsInterface(interfaceID); } // TODO: move to separate library and unit test function _...