簡體   English   中英

如何防止任何人創建鏈接到同一個 URI 的智能合約/NFT?

[英]How to to prevent anyone from creating an smart contract/ NFT linking to the same URI?

下面是一個允許注冊 URI 以創建 NFT 的智能合約的最小示例(為了便於論證,這是高度簡化的並且不允許與合約進行任何交互,即沒有人可以注冊自己的鏈接, ETC。):

pragma solidity ^0.6.0

contract ExampleToken {
string public name = "example token"
string public uri = "http://example-link.com/123examplelink"
address public owner_of_token = 0x1234567890...

}

除了高度簡化之外,這就是我們創建 NFT 的方式(我忽略了 ERC 標准等),也就是說,我們創建了一個智能合約,允許將地址連接到存儲文件的鏈接(再次,高度簡化,我是不使用映射或任何東西)。

但是如何確保該地址確實是該鏈接文件的所有者? 我不能只創建第二份合同,聲稱不同的地址是同一鏈接的所有者嗎?

您可以創建一個映射來存儲 URI

 mapping(string=>bool) private _usedTokenURIs;

然后編寫一個函數來查詢這個數據結構:

function tokenURIExists(string memory tokenURI) public view returns(bool){
    return _usedTokenURIs[tokenURI]==true;
  }

然后在你的 mint 函數中添加一個require語句

  require(!tokenURIExists(tokenURI),"Token URI already exists")
  • 人們可能會使用相同的 uri 並制作假的 nft,但請記住,人們會從知名藝術家那里購買,而不是從您不認識的隨機用戶那里購買。 您不能阻止某人使用相同的 uri 並創建重復的令牌。 但是這篇文章談到了一個公司的系統來防止這種情況:

https://cointelegraph.com/news/there-is-a-way-to-protect-nfts-from-being-replicated-or-lost-this-company-does-just-that

Pastel Network 開發了一種獨特的解決方案,為收集者提供額外的保證,確保 NFT 不是盜版或偽造的。 使用 Pastel NFT 指紋機制,創作者可以確保其原始 NFT 的真實性得以維持。 雖然 Pastel 使用創建者的數字簽名(就像所有正在使用的 NFT 系統一樣)驗證真實性和出處,但它走得更遠,評估了 NFT 數據的底層像素模式的稀有程度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM