木星链 木星链
Ctrl+D收藏木星链
首页 > 火必下载 > 正文

NFT:金色硬核|怎么部署一个JPG NFT项目?

作者:

时间:1900/1/1 0:00:00

NFT今年的流行度迅速上升,诞生了许多项目,社区围绕着它们形成。

作为对项目的忠诚或支持的展示,许多用户选择将他们的个人资料图片更改为一个NFT集合中的JPG。这使得这些用户很容易被识别为社区成员,并且拥有/展示具有不常见/稀有特征的NFT不仅可以增加该NFT的有形价值,还可以增加社会价值。

事实上,OpenSea——一个受欢迎的NFT交易市场——的用户群和销量呈指数级增长,部分原因是基于艺术的PFPNFT的兴起。

在本教程结束时,你应该了解如何使用层以编程方式构建任意数量的图像,列出它们的特征,然后将其放入所有“链上”开始建立你的社区。此外,我将介绍在构建NFT项目时要注意的一些策略和要考虑的一般合约安全。

对于本文,如果你想继续阅读,请参阅409H/sample_nft_project代码库。

1、构建层

首先,我们需要描述我们想要在我们的项目中使用哪些层/特征,以便我们知道要制作什么样的图形。对于这个示例项目,我们将创建一个具有一些基本不同层/特征的简单项目:

头型

头部颜色

眼睛的颜色

眼睛形状

嘴巴颜色

嘴型

我们将首先构建不同类型的头部:圆形、方形和三角形选项,带有颜色变化。

首先,你需要一个图形创建软件。对于这个项目,我使用“?8位画家”,画布大小为16x16。

比特币Ordinals协议已上线0.6.0版本,支持名为“诅咒铭文”的负数铭文:6月5日消息,比特币协议Ordinals新任首席维护者Raph在推特上宣布,Ordinals协议已上线0.6.0版本,该版本实现了识别更多类型铭文,包括诅咒铭文。

根据Ord.io开发者的解读,许多以前未被识别的铭文现在被Ordinals协议索引为“诅咒铭文”。市场升级到0.6.0后,用户就可以交易他们(在该版本上线前有7万个无效铭文)。正常的铭文被分配一个正编号,而诅咒铭文被分配了一个负编号。第一个诅咒铭文是-1,现在是-71,508。该协议设置了一个区块激活高度,可以将特定类型的诅咒铭文索引为正常的正数铭文,虽然正数铭文数字永远不会改变,但负数铭文的数字可以且将会改变。如果发现新的特殊情况并添加新类型的诅咒铭文,现有的诅咒铭文将被重新索引,新的诅咒铭文将被插入,这将导致负数铭文编号的移动。[2023/6/5 21:16:24]

参考0,0坐标作为面的中间。这样我们就可以在画布上创建相对于头部有间距的其他层。

在上面的图片,你会发现三个目录:00head,01eyes和02mouth。头部将是图形的基础层,眼睛和嘴巴将以编程方式覆盖在头部层的顶部,因此我们不必手动创建带有所有不同层的每个图像。

请记住,这是一个示例项目——没有做太多的艺术工作来让它看起来很漂亮,也没有准备许多不同的特征类型——这只是为了让你对我们可以完成的工作有一个小小的了解。

需要注意的是每一个层具有一个透明的背景,并且在同一画布大小,因此图像可以在彼此的顶部容易且均匀地覆盖。

Balancer:约1190万美元资金受Euler攻击事件影响,其他流动性池安全:金色财经报道,去中心化交易协议 Balancer 发推表示,在 Euler Finance 攻击事件中,约 1190 万美元从 bbeUSD 流动性池中被发送给 Eule,占了整个该流动性池 TVL 的 65%,bbeUSD 代币也被存入了其他 4 个流动性池:wstETH/bbeUSD、rETH/bbeUSD、TEMPLE/bbeUSD、DOLA/bbeUSD,所有其他的 Balancer 流动性池都是安全的。

由于采取了保护剩余资金的措施,UI 目前不支持现有 LP 退出这些 bbeUSD 池中的头寸,但不存在资金进一步损失的风险,bbeUSD 池用户可以使用 UI 按比例提取代币和 bbeUSD,但在 Euler 恢复 eTokens(例如 eDAI/DAI)的可转让性之前,无法从 bbeUSD 撤回资金。[2023/3/14 13:02:28]

一旦所有不同的层和变体都完成了,我们就可以开始编写代码来构建最终图像并记录每个图像各自的特征映射。请注意,我们将每个层命名为

<layer>_<trait_shape>_<trait_color>.png

这是有意为之,因为它将有助于以编程方式为每个图形构建特征映射。如果你使用相同的代码构建自己的项目,请确保运行“composerruntest”以针对图像文件名运行测试。

2、合并图层

众议院金融服务委员会主席:质疑听证会前夕逮捕SBF,对SBF无法出席听证会感到“失望”:12月13日消息,众议院金融服务委员会主席、加利福尼亚州民主党人Maxine Waters表示,她对前FTX首席执行官Sam Bankman-Fried(SBF)被捕的时间感到“失望”和“惊讶”,因为他计划于明天参加众议院金融服务委员会主席就FTX崩盘所召开的听证会。

Waters在针对 Bankman-Fried被捕发表的声明中表示,“现在是时候开始将 Bankman-Fried 先生绳之以法了,然而,公众所知,在过去的一个月里,我和我的同时一直在努力工作,以确保 Bankman-Fried先生明天早上在我们的委员会面前作证。”

Waters接着批评了Bankman-Fried的逮捕时间,这次逮捕不同寻常地发生在Bankman-Fried在国会就FTX倒闭问题作证的前夕。[2022/12/13 21:40:51]

现在我们的项目包含输出最终图形所需的层,我们需要编写一些代码将这些层组合在一起并强制将某种稀有性添加到项目中-例如,一些项目喜欢制作僵尸/骨架变体他们的角色是“罕见的”,这意味着只有一小部分最终图像会有这些“皮肤”。在我们的例子中,我们不会强制任何类型的稀有度,并且层将被随机挑选。

为此,我们将编写一些PHP代码并使用图像处理GD库进行图像处理。最终代码可能看起来不太漂亮但它可以按预期工作来构建图像。

我们总共有4种头部类型、4种头部颜色、3种眼睛颜色、2种眼睛类型、2种嘴巴颜色和1种嘴型,并且可以自由编写代码来描述它们的稀有性——但首先,让我们把代码放在一起合并每一层。

美联储戴利:9月绝对(至少)加息50个基点,需要持开放态度:8月8日消息,美联储戴利表示,通胀水平过高,美联储致力于降低通胀。美联储在对抗通胀方面“远未完成”。9月绝对(至少)加息50个基点,需要持开放态度。[2022/8/8 12:08:30]

一旦代码将层合并到我们的规则集,代码将生成接口所需的JSON对象以显示每个图像的特征,这些特征将从在合约级别存储在baseURI中的端点。

3、创建NFT智能合约

在大多数情况下,NFT合约使用广泛接受的EIP-721标准,这是一些代码的一套规则。这些规则概述了函数名称、函数参数和函数返回类型,然后允许合约的实现/消费顺利进行,因为产品只需要按照这些标准编写代码,而不必担心任何项目——渲染图形的特定调用。

有各种框架和工具可以帮助将合约部署到基于EVM的区块链;我们将使用Remix部署NFT合约并设置合约以允许购买NFT。因为它符合EIP-721,所以它可以在OpenSea等二级市场上开箱即用。

要自定义合约逻辑,我们可以使用OpenZepplinWizard和Remix。要部署该项目的Rinkebytestnet,我们将遵循由AndrewBCoathup提供的教程。

因为我们希望允许用户铸造一些的NFT,我们可以添加一个功能合约.

我们需要修改向导生成的代码以设置mint可以调用的次数限制,不应有比我们之前创建的独特图形数量更多的铸造次数。注意:由于基于零的索引,我们需要从数字中减去1。

Playful Studios成立Web3子公司,并获由Paradigm领投的4600万美元融资:6月14日消息,游戏Wordswith Friends联合创始人PaulBettner的独立游戏工作室Playful Studios宣布成立Web3子公司The Wildcard Alliance,同时,The Wildcard Alliance还完成4600万美元A轮融资,Paradigm领投,其他投资方包括Griffin Gaming Partners和SabrinaHahn等。

The Wildcard Alliance联合创始人兼首席执行官PaulBettner表示,Wildcard首先关注的是乐趣,将打造下一代观众运动来欢迎整个社区的竞争者、收藏家、赞助商和粉丝一起娱乐。(prnewswire)[2022/6/14 4:26:26]

sol

uint?immutable?maxSupply;

constructor(uint?_maxSupply)?ERC721("Sample?NFT?Project",?"SNP")?{

maxSupply?=?_maxSupply?-?1;

}

部署合约时,我们必须在构造函数参数中输入可以铸造的最大供应量。这意味着每个mint()都会有一个图像和属性。

NFT的铸造功能通常由铸造它的用户支付,这意味着铸造者需要向合约发送一些ETH才能接收他们的NFT。为此,我们将在我们的合约中添加一个新功能,以0.01ETH的成本进行铸造。ETH将留在合约中,直到合约的所有者调用另一个新方法:`withdraw()`。请注意,你可以将其设置为你想要的任何价格,有些项目甚至允许免费铸币,铸造者只需要支付gas!

sol

function?mint()?public?payable?{

require(_tokenIdCounter.current()?<=?maxSupply,?"Sold?out");?//?NFT?project?sold?out

require(msg.value?==?0.01?ether,?"Incorrect?amount");?//?Cost?to?mint?1?NFT?is?0.01?ETH?(10000000000000000?wei)

_safeMint(msg.sender,?_tokenIdCounter.current());

_tokenIdCounter.increment();

}

function?withdraw()?public?onlyOwner?{?//?Owner?can?withdraw?all?the?eth?that?was?paid?to?mint?NFTs

address?payable?recipient?=?payable(address(msg.sender));

recipient.transfer(address(this).balance);

}

一旦我们使用init参数将合约部署到Rinkeby,我们就可以调用mint铸造NFT。

合约创建:https://rinkeby.etherscan.io/tx/0x46ce4ad1cacae757ee12252b5e214509d829bcc0626aaf325965ae99b5249f74

铸造NFT:https://rinkeby.etherscan.io/tx/0x4d4102264edfe4aee9a58d1cbc405b0e5b308708c92ffce5413d80459e0e7c1c

申领ETH:https://rinkeby.etherscan.io/tx/0xb6eb339e065c9cb573af2496cef3d2ca67e9b9852c08b2492e9eaed11cbc3bbd

现在我们有链上合约并且NFT已经生成,我们可以使用OpenSea的验证端点来验证元数据。

然后我们可以在OpenSea上查看NFT及其所有特征!

4、验证合约

区块链浏览器如Etherscan现在将显示我们的合约,因为它已经部署,但将只显示字节代码,直到我们验证了合约。有时这是一个手动过程,但在部署过程中有可用的自动化工具来执行此操作。当我们的合约从OpenZeppelin存储库中导入其他合约时,我们将通过使用一个名为truffle-plugin-verify的强大工具来节省时间。

验证合约将使其更具可读性,因为Solidity代码将发布在区块浏览器上,人们可以更轻松地验证合约的逻辑。这与社区和开发人员建立了内在的信任,因为每个人对项目背后的代码都有相同的看法。

我们将需要创建一个新.env文件并为Etherscan和QuickNode添加API密钥,并提供一个秘钥恢复短语,以便我们可以在Rinkeby测试网上部署合约并使用两个验证合约命令。

shell

truffle?migrate?--network?rinkeby?#?Deploy?contract?to?Rinkeby?with?Truffle

truffle?run?verify?SampleNftContract?--network?rinkeby?#?Verify?contract?source?code?on?Etherscan

5、预部署注意事项

如果你正在关注sample_nft_project存储库,则:

图形相关

将更多图层图形添加到images_raw目录并正确命名文件。

阅读PHP脚本以确保最终图形和特征按照您的意愿构建,因为目前没有强制执行稀有性/唯一性。

安全可靠地托管你的图像元数据至关重要。如果它托管在你自己的域中,则图形存在不持久的风险。一些项目提倡使用在IPFS上存储数据。

智能合约相关

确保将元数据的静态端点更改为托管元数据的位置。

确保将合约名称和符号更改为与你的项目相关的内容。

确保你对每个NFT的成本感到满意,或者如果你不满意,请更改该值。

部署合约时,请确保将maxSupply设置为images_processed目录中最大数字的整数。

考虑使用带有JavascriptVM或注入的web3提供程序的Remix来部署它,指向Rinkeby,这样你就不会使用真钱来测试它。

5、部署后注意事项

由于我们可以向合约添加/编辑功能,包括更改BaseURI,最好将此值设置为静态或至少renounceOwnership()稍后调用,如果你想将所有内容指向服务器并更新端点以进行“揭示你的NFT”事件。尤其需要注意的是,如果元数据位于中央服务器上,那么任何有权访问该服务器的人都可以更改特征和外观的NFT。

一旦铸造供应达到其最大值并且你已从合约中提取ETH,请考虑调用renounceOwnership()。由于NFT是静态供应的,因此你不再需要对合约拥有任何所有权。

这份NFT智能合约未经修改,将要求支付ETH以换取NFT,这可能会引发“gas战争”,尤其是在高度期待NFT的情况下。

我们还注意到创建者如何收到为NFT支付的ETH。我们没有添加在调用mint()时将ETH付款转发给合约所有者的逻辑,而是添加了另一种方法供所有者调用withdraw(),以便他们可以随时调用。这意味着用户铸造NFT的Gas限制会更低。

买卖NFT可能很有趣,但构建自己的NFT项目可能令人生畏。希望这能让你对这个过程有所了解!

来源:金色财经

标签:NFTETHTHERINOpenLive NFTEtherlandtogetherbnb仓库薇拉greatsanhedrin

火必下载热门资讯
OPT:Optimism是否真的乐观?一文深度解读OP生态布局

据多家媒体12月17日消息,Layer2解决方案Optimism宣布取消白名单机制,即日起任何用户都可以在Optimism上自由部署合约、构建应用程序.

1900/1/1 0:00:00
DAO:明年最值得关注的方向?全面梳理游戏公会组织架构

原文标题:《AFigurativePaintingonGameGuilds:Varietiesofecosystembehindsimilarprojects》原文作者:AIKO原文编译:Kxp.

1900/1/1 0:00:00
VAD:Coinbase参投 域名项目Unstoppable能否再造空投盛宴(附教程)

还在为错过ENS空投耿耿于怀?TNS空投又来了!12月22日,Terra生态域名服务TerraNameService宣布发行TNS,总量1亿枚,计划将17.7%空投给符合条件的参与者.

1900/1/1 0:00:00
EFI:DeFi领域各赛道新晋的头部项目 也许能看出各公链的未来 你认识几个?

作者:北辰前段时间整个行业热点都集中在DAO、Gamefi领域,DeFi领域或多或少被忽视。我们通常把Gamefi、Layer2等热门领域比作「赛道」,在这条赛道上,有大量同类型的项目可供比较.

1900/1/1 0:00:00
NFT:盘点NFT公链FLOW生态代表应用:NBATopShot、Chainmonsters与Genies

公链竞争进入白热化,既有兼容以太坊EVM的交易所公链BSC,也有本轮牛市崛起的新生代公链Solana、雪崩协议、Luna、Polygon等,以太坊自身生态也不甘落后.

1900/1/1 0:00:00
CIR:数据所有权经济代表Cirus平台加入BSC生态系统

12月23日,Cirus官方宣布已加入BSC生态系统!目前已经可以通过MultiChain将$CIRUS从ETH桥接到BSC,未来将进一步与BSC集成.

1900/1/1 0:00:00