2021年NFT流行度迅速上升,诞生了许多项目,社区围绕着它们形成。春节临近,我们何不自己部署一个NFT来奖励自己呢?
作为对项目的忠诚或支持的展示,许多用户选择将他们的个人资料图片(或简称“PFP”)更改为一个NFT集合中的JPG。这使得这些用户很容易被识别为社区成员,并且拥有/展示具有不常见/稀有特征的NFT不仅可以增加该NFT的有形价值,还可以增加社会价值。
事实上,OpenSea——一个受欢迎的NFT交易市场——的用户群和销量呈指数级增长,部分原因是基于艺术的PFP NFT的兴起。
在本教程结束时,你应该了解如何使用层(特别是没有固有效用/价值的NFT,用作PFP项目)以编程方式构建任意数量的图像,列出它们的特征,然后将其放入所有“链上”开始建立你的社区。此外,我将介绍在构建NFT项目时要注意的一些策略和要考虑的一般合约安全。
对于本文,如果你想继续阅读,请参阅409H/sample_nft_project代码库(https://github
区块链浏览器如Etherscan现在将显示我们的合约,因为它已经部署,但将只显示字节代码,直到我们验证了合约。有时这是一个手动过程,但在部署过程中有可用的自动化工具来执行此操作。当我们的合约从OpenZeppelin存储库中导入其他合约时,我们将通过使用一个名为truffle-plugin-verify的强大工具来节省时间。
验证合约将使其更具可读性,因为Solidity代码将发布在区块浏览器上,人们可以更轻松地验证合约的逻辑。这与社区和开发人员建立了内在的信任,因为每个人对项目背后的代码都有相同的看法。
我们将需要创建一个新.env文件并为Etherscan和QuickNode添加API密钥,并提供一个[仅供测试使用!!]秘钥恢复短语,以便我们可以在Rinkeby测试网上部署合约并使用两个验证合约命令。
shelltruffle?migrate?--network?rinkeby?#?Deploy?contract?to?Rinkeby?with?Truffletruffle?run?verify?SampleNftContract?--network?rinkeby?#?Verify?contract?source?code?on?Etherscan5、预部署注意事项如果你正在关注sample_nft_project存储库,则:
图形相关
将更多图层图形添加到images_raw目录并正确命名文件。
阅读PHP脚本以确保最终图形和特征按照您的意愿构建,因为目前没有强制执行稀有性/唯一性。
安全可靠地托管你的图像元数据至关重要。如果它托管在你自己的域中(如本例中,数据托管在harrydenley.com上),则图形存在不持久的风险。一些项目提倡使用在IPFS上存储数据。
智能合约相关
确保将元数据的静态端点更改为托管元数据的位置。
确保将合约名称和符号更改为与你的项目相关的内容。
确保你对每个NFT的成本感到满意,或者如果你不满意,请更改该值。
部署合约时,请确保将maxSupply设置为images_processed目录中最大数字的整数。
考虑使用带有JavascriptVM或注入的web3提供程序的Remix来部署它,指向Rinkeby,这样你就不会使用真钱来测试它。
由于我们可以向合约添加/编辑功能,包括更改BaseURI(保存元数据的位置),最好(为了社区)将此值设置为静态或至少renounceOwnership()稍后调用,如果你想将所有内容指向服务器并更新端点以进行“揭示你的NFT”事件。尤其需要注意的是,如果元数据位于中央服务器上(即不是“不可变”的服务器,例如IPFS、Arweave等),那么任何有权访问该服务器的人都可以更改特征和外观的NFT。
一旦铸造供应达到其最大值(部署合约时在构造函数中设置的值)并且你已从合约中提取 ETH,请考虑调用renounceOwnership()。由于NFT是静态供应的,因此你不再需要对合约拥有任何所有权。
这份NFT智能合约未经修改,将要求支付ETH以换取NFT,这可能会引发“gas战争”,尤其是在高度期待NFT的情况下。
我们还注意到创建者如何收到为NFT支付的ETH。我们没有添加在调用mint()时将ETH付款转发给合约所有者的逻辑,而是添加了另一种方法供所有者调用withdraw(),以便他们可以随时调用。这意味着用户铸造NFT的Gas限制(以及交易成本)会更低。
买卖NFT可能很有趣,但构建自己的NFT项目可能令人生畏。希望这能让你对这个过程有所了解!
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。