从本地开发到全球部署,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 代币基础资产的唯一标识符。
Fleek Storage SDK 提供了类似于 Amazon S3 的界面,可用于与 IPFS 上的文件进行交互。
让我们看看它如何在 Crypto Museum dapp 中以编程方式工作。
// We initialize the S3 client const s3 = new AWS.S3({ apiVersion: '2006-03-01', accessKeyId: <access-key-id>, secretAccessKey: <secret-access-key>, endpoint: 'https://storageapi.fleek.co', region: 'us-east-1', 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: 'public-read', }; const request = s3.putObject(params); request.on('httpHeaders', (statusCode, headers) => { const ipfsHash = headers['x-fleek-ipfs-hash']; // 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 变得更好!
End
非常感谢您对 IPFS&Filecoin 项目的持续支持。我们很高兴继续与您一起,为人类信息建立一个强大的,去中心化和高效的基础。
#专栏作家#
本文来自人人都懂区块链专栏作家filcloud,公众号:filcloud。帮你透视浩瀚的IPFS数字世界。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
Fleek Storage SDK:将NFT资产存储在IPFS上!
相关文章阅读
留言与评论(共有 0 条评论) |