mintIndex); } } } // 返回每个nft地址的Uri,这里包含了nft的整个信息,包括名字,描述,属性等 function tokenURI if (bytes(base).length == 0) { return _tokenURI; } // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked). if (bytes(_tokenURI).length > 0) { return string(abi.encodePacked(base, _tokenURI)); } // If there is a baseURI but no tokenURI, concatenate the tokenID to the baseURI.
= await contract.tokenURI(i.tokenId) const meta = await axios.get(tokenUri) const price = await marketplaceContract.tokenURI(i.tokenId) const meta = await axios.get(tokenURI) id=${nft.tokenId}&tokenURI=${nft.tokenURI}`) } if (loadingState === 'loaded' && ! = await contract.tokenURI(i.tokenId) const meta = await axios.get(tokenUri) const price id=${nft.tokenId}&tokenURI=${nft.tokenURI}`) } if (loadingState === 'loaded' && !
const token = await BadgeToken.deploy('BadgeToken','BADGE') 任务 2.2: 理解 tokenURI() 让我们解释一下 ERC721 tokenURI ()函数的实现: tokenURI()是 ERC721 标准的一个元数据函数,在 OpenZeppelin 文档中 : tokenURI(uint256 tokenId) → string 返回 tokenId 在我们的tokenURI()中,将 URI 作为一个 base64 编码的对象返回。 首先,构建对象。 = await badge.tokenURI(1) // console.log("tokenURI:") // console.log(tokenUri) const tokenId = await badge.tokenURI(i) const data = base64.decode(tokenUri.slice(29)) const itemInfo
参考 核心源码 //管理员修改tokenuri function setTokenURI(uint256 tokenId, string calldata uri) public onlyOwner =address(0),"tokenId is error"); _setTokenURI(tokenId, uri); } //用户修改tokenuri function
接下来,设置构建映射,把版本号和 tokenURI 联系起来。 最后一点是非常重要的。由于这是一个应用 NFT,我们需要能够更新应用。仅仅指定一个新版本是不够的。 新版本需要指向一个新的 tokenURI。所以,通过builds变量,我们可以历史性地跟踪所有的版本。 说到这里,回到合约函数。有一个叫做updateApp的函数。 这个函数接收一个新的tokenURI,它应该代表更新后应用代码的 IPFS CID。检查调用该函数的人是否是应用的所有者。 回到这个函数。 没错,它将帮助我们为 NFT 制作tokenURI。 不过,这个哈希值并不完全是代币的 URI。还需要为它创建一个元数据文件。我们很快就能在合约目录中做到这一点。 制作一个应用 NFT 我们有了 IPFS 的 CID 来作为tokenURI。现在,我们需要部署合约。
function name() public view returns(string); function symbol() public view returns(string); function tokenURI 生成艺术图 生成艺术图的入口是 "tokenUri "函数。它是 ERC-721 标准中的一个函数,应该是返回 NFT 的元数据(如图片或属性)。下面是tokenUri的实现。 pragma solidity ^ 0.5 .0; function tokenURI(uint256 _tokenId) external view onlyValidTokenId(_tokenId 只要向下翻到到 "tokenURI"。如果我们导航到这个 HTTP 路径,我们会得到这个 JSON 文件。 注意,这个 JSON 文件有一堆不同的特征类型和项目描述的信息。 tokenUri函数然后将tokenId映射到 IPFS 或 HTTP 链接,取决于项目设置。这个链接要么直接指向图片,要么指向一个有属性的 JSON 和一个嵌套的图片链接。
被打印到控制台,在终端运行: node scripts/mint-nft.js 第 4 步:使用 ipfs 为 NFT 配置元数据 如果你还记得第一部分的教程,我们的 mintNFT 智能合约函数接收了一个 tokenURI const nftContract = new web3.eth.Contract(contract.abi, contractAddress); async function mintNFT(tokenURI 'nonce': nonce, 'gas': 500000, 'data': nftContract.methods.mintNFT(PUBLIC_KEY, tokenURI " const nftContract = new web3.eth.Contract(contract.abi, contractAddress) async function mintNFT(tokenURI 使用 mint-nft.js,你可以根据自己的意愿(使用钱包)铸造任意数量的 NFT,只要确保传入一个描述 NFT 元数据的新 tokenURI(否则,你最终只会制造出一堆不同 ID 的相同的 NFT)
view returns (string memory); function symbol() external view returns (string memory); function tokenURI IERC721Receiver.onERC721Received.selector; } else { return true; } } /** * 实现IERC721Metadata的tokenURI */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * 计算{tokenURI}的BaseURI,tokenURI 铸造完成后使用合约地址在opensea的测试链版中查询,可以发现我们刚刚铸造的NFT可以在其中查询出来,由于合约用的是无聊猿的tokenURI地址,所以显示的是无聊猿的信息。
.authorizationUri("https://example.com/oauth2/authorize") .tokenUri 我们需要提供clientId、clientSecret、authorizationGrantType、redirectUri、scope、authorizationUri、tokenUri、userInfoUri
OpenSea上的Bored Ape #969 ERC-721 标准的标准接口 tokenURI()用来返回元数据(metadata),其中包括一个图像链接。 我们可以通过在Etherscan[5]上直接查询 Bored Ape 合约的 tokenURI 来看到这一点。 该链接返回 NFT 的完整元数据,包括图片也在IPFS[6]上。 代替返回链接,tokenURI 返回一个编码的 json 数据,包含可以在浏览器中呈现的 svg 数据。 SVG NFT 最有名的例子是 Loot: 黑色背景上的白色文字。 6ca37df326302b0ec8635b8796a4fdbb _mint(msg.sender, uint256(uint160(msg.sender))); } function tokenURI return _buildTokenURI(id); } // Constructs the encoded svg string to be returned by tokenURI
constructor () public ERC721 ("name", "symbol"){ tokenCounter = 0; } // 外部调用方,调用这个函数,传参数:tokenURI 即物质的id,tokenURI 唯一 function createNFT(string memory tokenURI) public returns (uint256) { tokenCounter; _mint(msg.sender, tokenId); // 将交易发送者和当前的 tokenId 绑定 _setTokenURI(tokenId, tokenURI tokenId; } // _exists 函数判断 tokenId 是否存在,_tokenOwner[tokenId] // 根据 id 读取对应的 url function tokenURI
blacklist[to], "接收地址在黑名单中"); } // 重写tokenURI函数,增强安全性 function tokenURI(uint256 tokenId function setTokenURI(uint256 tokenId, string memory _tokenURI) external onlyOwner { require require(_exists(tokenId), "ERC721Metadata: URI查询不存在的token"); string memory _tokenURI = _tokenURIs[tokenId]; require(bytes(_tokenURI).length > 0, "TokenURI未设置"); return _tokenURI; } // 检查元数据是否冻结 function isMetadataFrozen(uint256 tokenId) public view
= await nft.tokenURI(i.tokenId) let item = { price: i.price.toString(), tokenId : i.tokenId.toString(), seller: i.seller, owner: i.owner, tokenUri } = await tokenContract.tokenURI(i.tokenId) const meta = await axios.get(tokenUri) let price = await tokenContract.tokenURI(i.tokenId) const meta = await axios.get(tokenUri) let price = await tokenContract.tokenURI(i.tokenId) const meta = await axios.get(tokenUri) let price
2.1 OAuth2AccessTokenResponseClient 在该实现中包含了一个OAuth2AccessTokenResponseClient成员变量,它抽象了通过tokenUri端点从认证服务器获取 封装调用tokenUri所需要的请求参数RequestEntity RequestEntity<?
因此,ERC721标准包含一个名为 tokenURI 的方法,人们可以实现这个方法来告诉应用程序在哪里可以找到给定项的元数据。 function tokenURI(uint256 _tokenId) public view returns (string) tokenURI 方法返回一个公有的 URL,通过URL返回一个 JSON Testnet ETH 和 Rinkeby Testnet LINK 才能继续,具体所要做的步骤是: 使用 Chainlink VRF 建立一个可验证的随机 D&D 字符串 使用 IPFS 添加一个 tokenURI 一旦创建了一个NFT,需要给它一个 tokenURI,是向外界展示NFT数据。这使得像图片这样的东西更容易存储,且不必浪费将它们添加到链上存储中的gas。 ,因此我们将修改 set-token-uri.js的 tokenId,并添加IPFS 的tokenURI: truffle exec scripts/set-token-uri.js --network
2.1 OAuth2AccessTokenResponseClient 在该实现中包含了一个OAuth2AccessTokenResponseClient成员变量,它抽象了通过tokenUri端点从认证服务器获取 封装调用tokenUri所需要的请求参数RequestEntity RequestEntity<?
returns (string _name); function symbol() external pure returns (string _symbol); function tokenURI tokenURI(): 返回_tokenId所对应的外部资源文件的URI(通常是IPFS或HTTP(S)路径)。 ", } } } tokenURI通常是被web3调用,以便在应用层做相应的查询和展示。
为了给我们的灵魂绑定代币铸币,我们将调用safeMint函数,它需要用户的地址和 NFT 的 tokenURI,其中包括代币的所有元数据。 4.4 (可选): 如果你不知道如何在 IPFS 上上传 tokenURI,那么你必须跟着做。 IPFS 允许你在区块链上存储你的数据,如图片,和其他数据。 4.5 将你的钱包地址和 tokenURI 传给safeMint函数来铸造你的 Soulbound token。 然后点击写按钮。 现在你可以看到我们的 Soulbound 代币已经被铸造了。
constructor() ERC721("GameItem", "GMI") { tokenCounter = 0; } function createItem(string memory tokenURI uint256 newItemId = tokenCounter; _safeMint(msg.sender, newItemId); _setTokenURI(newItemId, tokenURI
在Spring Security中我们可以使用code通过tokenUri来换取token。那么在微信小程序登录流程中,code最终换取的只是登录态,没有特定的要求。 通过改造tokenUri和userInfoUri可以做到这一点。 3.