從本地開發到全球部署,Fleek 都是構建基於 IPFS 的快速現代網站所需的一切,歡迎使用新的網際網路。
我們新的 Fleek Storage 產品透過簡單的拖放介面將網路資產儲存在 IPFS 上,並獲得了令人讚歎的積極反饋!
但是您知道我們的 SDK 可以透過程式設計方式上傳檔案到 Web 嗎?它的許多用例之一是用於儲存 NFT(不可替代令牌)資產。
在接下來的幾分鐘中,我們將透過 NFT 資產儲存瞭解 Fleek Storage SDK。
當今許多 NFT 的問題
問題就在這裡。NFT 代表不可替代令牌,它們通常用於將數字藝術的所有權授予使用者。令牌可以透過 ERC-721 介面以分散方式進行傳輸。鏈上後設資料可跟蹤其他資訊,例如名稱,描述,甚至是數字藝術中的影象 URL。
使用散式 NFT 中的數字資產永生不衰,但透過連結到集中式伺服器的 URL 儲存到這些資產的連結既矛盾又自欺欺人。
Pinata 的精彩演講進一步描述了這個問題。
解決方案?將資產儲存在 IPFS 中,並透過 IPFS 雜湊(也稱為CID)進行標識。
雜湊確保識別符號永遠不會改變,並且 IPFS 上的託管確保檔案儲存具有抗審查性,並且與產生 NFT 的值保持一致。
實際情況如何?讓我們看一下 Fleek Storage 可以做什麼的演示。
演示應用:加密博物館
加密博物館是完全分散的 dapp。由於我們的Fleek網站產品,它託管在 IPFS 上,但更重要的是,它使用 Fleek Storage SDK 允許使用者將其數字作品的副本上載到 IPFS。
親自看一下演示!
Dapp 在 Ropsten 測試網路上執行,因此您將需要 Metamask 和一些免費的 Ropsten Ether。如果您需要上傳一些藝術品,請檢視此隨機藝術品生成器。
讓我們快速瞭解引擎蓋下正在發生的事情。上傳到加密博物館的 ERC-721 資產儲存在 IPFS 中,並透過不可變的 IPFS 雜湊進行標識
當使用者單擊 Create NFT 按鈕時,由於我們的SDK,檔案被上傳到 Fleek Storage。然後,Fleek 返回 IPFS 雜湊或 CID,該雜湊用於使用令牌後設資料中的 CID 鑄造新令牌。
該資料(包括所有權和CID的登錄檔)位於以太坊區塊鏈上。
您可以在下面查閱 ERC-721 令牌的智慧合約程式碼,並檢視鑄造和 CID 設定的工作方式。該合同基於 OpenZeppelin 庫。
pragma solidity >=0.5.0;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
contract CryptoMuseum is ERC721 {
constructor() ERC721("CryptoMuseum", "CM") public {
}
mapping(uint256 => string) private _CIDS;
function CID(uint256 tokenId) public view returns (string memory) {
require(_exists(tokenId), "ERC721Metadata: CID query for nonexistent token");
string memory _CID = _CIDS[tokenId];
return _CID;
}
function _setTokenCID(uint256 tokenId, string memory _CID) internal virtual {
require(_exists(tokenId), "ERC721Metadata: CID set of nonexistent token");
_CIDS[tokenId] = _CID;
}
function mint(string memory _CID) public {
uint256 _newId = totalSupply() + 1;
_safeMint(msg.sender, _newId);
_setTokenCID(_newId, _CID);
}
}
dapp“收集”部分搜尋屬於該使用者的所有令牌,然後讀取包含 IPFS 雜湊的後設資料並顯示作品。
修復 NFT 向前發展
NFT 向前發展的一個很好的解決方案是使用 CID 和 CID 本身作為單獨的後設資料儲存 URL 到 IPFS 閘道器。該 URL 將允許平滑過渡到僅 CID 的分散式生態系統,而僅儲存 CID 的實踐變得更加普遍。
最終目標是讓 CID 成為 NFT 代幣基礎資產的唯一識別符號。
讓我們看看它如何在 Crypto Museum dapp 中以程式設計方式工作。Fleek Storage SDK 提供了類似於 Amazon S3 的介面,可用於與 IPFS 上的檔案進行互動。
// We initialize the S3 client
const s3 = new AWS.S3({
apiVersion: ,
accessKeyId: ,
secretAccessKey: ,
endpoint: ,
region: ,
s3ForcePathStyle: true
});
// We defined the params
// including the bucket which can be created either
// programatically or on the Fleek Web app
const params = {
Bucket: bucket,
Key: `nft/${newTokenId}-${timestamp}`,
ContentType: artwork.type,
// Body contains the uploaded file
Body: artwork,
ACL: ,
};
const request = s3.putObject(params);
request.on(, (statusCode, headers) => {
const ipfsHash = headers[];
// Do stuff with the IPFS hash. E.G.: Create an Ethereum Transaction...
}).send();
上面的程式碼是從 Crypto Museum 程式碼中複製貼上的。就這麼簡單。
AWS s3 SDK 和 fleek storage 的文件提供了有關如何使用SDK的更多資訊。
讓我們修復 NFT!
Fleek Storage 是在 IPFS 中儲存資產的絕佳解決方案。它透過識別透過 IPFS 雜湊表示的檔案,解決了不可替代令牌的持久問題。
藉助 IPFS,可以使 NFT 變得更好!