主页 > imtoken安卓官方下载 > 如何生成nft(NFT铸造及购买流程技术详解)

如何生成nft(NFT铸造及购买流程技术详解)

imtoken安卓官方下载 2023-04-20 07:27:51

这篇文章是根据我最近的学习和与群友的讨论得出的。 作为记录,我终于想到了NFT行业的现状。 刚接触区块链和以太坊编程难免会犯错误。 欢迎指正和交流。

NFT购买流程

以太坊钱包地址_以太坊挖矿钱包地址哪里注册_批量生成以太坊钱包地址

购买过程简单来说就是你的钱包和NFT合约交互,从你的钱包转0.176ETH到合约,调用合约的mint方法,生成两个NFT token,转入你的钱包,然后你得到这个 NFT。

关于NFT合约的更多信息,请参考以下文章:NFT与OpenSea交易背后的技术分享——镜像

NFT购买流程详解

点击项目方官网的铸币按钮,详细开启从浏览器到以太网络的端到端交互过程:

以太坊钱包地址_以太坊挖矿钱包地址哪里注册_批量生成以太坊钱包地址

NFT购买流程

1.点击铸币按钮

大家登录项目网站,在Chrome上连接钱包,点击铸币按钮。网页上的JavaScript代码根据项目的铸币价格、合约地址等生成原始交易数据,主要包括以下关键领域

以太坊钱包地址_批量生成以太坊钱包地址_以太坊挖矿钱包地址哪里注册

批量生成以太坊钱包地址_以太坊钱包地址_以太坊挖矿钱包地址哪里注册

2.TX签名

网页代码与 Metamask 交互,会弹出一个窗口让你确认交易。 点击Confirm后,Metamask会使用你的钱包私钥进行签名,确保交易是经过你授权的,后续以太坊网络会进行验证。

3.发送TX给节点验证

交易 TX 由 Metamask 发送到 Metamask 的以太坊节点(默认配置),节点验证 TX 以确保交易不被伪造。

4. 将 TX 广播到以太坊网络

交易TX被发送到以太坊网络的相邻节点,然后广播到相邻节点。 此时您的交易可以在etherscan.io上查看,状态为pending。

5.矿工节点收到TX

批量生成以太坊钱包地址_以太坊钱包地址_以太坊挖矿钱包地址哪里注册

矿工节点会将同步的tx放到一个叫做Txpool/Mempool的地方。 这个地方是许多事情的关键。 它需要扩展:

批量生成以太坊钱包地址_以太坊挖矿钱包地址哪里注册_以太坊钱包地址

Txpool代码流程(借用以太坊源码分析的txpool图)

Txpool的数据来源主要来自:

本地提交,即第三方应用通过调用本地以太坊节点的RPC服务提交的交易;

远程同步是指通过广播同步将其他以太坊节点的交易数据同步到本地节点;

Txpool分为两个队列,Queue和Pending。 首先,新收到的TX会根据规则进行判断,放入Queue队列,然后加入Pending队列,等待挖矿添加新区块。

主要规则如下:

1) 优先考虑 Gasprice 高的 TX

2)本地TX优先于远程同步

3)每个节点都会设置最小的Gasprice,低于该值的远程TX将被丢弃

Pending中的TX被Miner模块获取并验证后进行挖矿; 挖矿成功后写入区块并广播。 矿工拿着交易复制,Txpool中的TX不会减少。 TX写入链后从Txpool中删除。

Gas过低的TX会卡在Txpool中无法处理。 需要增加 Gas 才能对其进行处理。

详细的代码分析可以参考思肯以太坊源码分析的txpool

GasWar:当交易火爆时,每个人都可以优先获得自己的TX并竞争增加Gas费

6. 矿工出块,打包TX

矿工选择TX后开始挖矿,然后找到出块方案广播到以太坊网络。

7.区块被验证

经过其他矿工节点验证后,该区块正式上传到链上,我们的TX结果可以在etherscan.io上查看。

8. TX状态同步

以太坊钱包地址_以太坊挖矿钱包地址哪里注册_批量生成以太坊钱包地址

相关状态在本地返回,可以在 Metamask 上查询。

参考文件:

以太坊交易的生命周期

以太坊区块链上的交易生命周期

以太坊交易手续费的影响因素

合约如何执行

简单的说,我们发送的交易会被转换成一个Message对象传递给EVM,EVM会根据这个Message生成一个Contract对象供后续执行。 根据我们传输到合约中的数据的输入调用 mint 函数。

详见EVM介绍,参考以下文档:

简单的EVM

学习区块链

NFT预售和公开发售

预售只能针对特定用户进行购买,公募意味着所有人都可以抢购。

这里有两个主要的技术问题需要回答:

1、如何限制特定钱包的铸币?

2.预售和公售状态如何切换?

白名单机制

白名单现在一般都是用 Merkle 树来实现的。 简单来说,就是将所有的白名单钱包地址作为Merkle树的叶子节点,生成一个Root hash。 合约中只需要存储 Root 哈希值。 调用mint函数时,网页的JS代码根据钱包地址(地址父节点的hash)生成证明,合约可以验证地址是否属于白名单。

以C01合约为例:

0x6fd053bff10512d743fa36c859e49351a4920df6

以太坊钱包地址_以太坊挖矿钱包地址哪里注册_批量生成以太坊钱包地址

以太坊钱包地址_以太坊挖矿钱包地址哪里注册_批量生成以太坊钱包地址

预售和公募时通过SetRoot更新hash(C01两次售卖均采用白名单方式,公募采用验资抽签的方式)

以太坊钱包地址_以太坊挖矿钱包地址哪里注册_批量生成以太坊钱包地址

详细原理和代码可以参考以下文章:NFT白名单使用Merkle Trees

销售状态切换

常用的方法有两种:

1)通过判断合约中的时间点,比如2022-01-01 18:00 UTC开始公开发售

2)判断状态,设置合约中的状态变量,例如以XRC合约为例,判断Status.PublicSale的状态,通过调用合约中的SetStatus设置。

以太坊钱包地址_以太坊挖矿钱包地址哪里注册_批量生成以太坊钱包地址

科学家如何获取足够的 NFT

科学家通过程序抢购NFT,也就是通过各种手段让自己的交易TX先于别人被矿工打包,在NFT卖完之前完成铸币。 与此同时批量生成以太坊钱包地址,科学家们都在追求完美。 最完美的结果当然是他们的TX出现在第一个符合公卖状态的区块,也就是抢到Block0。

两种场景的Block0如下图所示。 同时,Block0也可以避免后续抢购中出现的Gaswar,降低抢购成本。 但是现在越来越复杂了,Gaswar也会出现在Block0。 比如XRC公开发售不到200个,进入Block0的科学家数量就有200多个TX。

以太坊钱包地址_以太坊挖矿钱包地址哪里注册_批量生成以太坊钱包地址

两种场景下的Block0

科学家们使用的方法可以概括为以下三点:

1. 更低的信息获取延迟

与金融量化交易类似,基金期望其服务器和交易所之间的延迟更低。 区块链类似。 比如在CEX,大家就近连接中心化交易所的服务器。 NFT mint 和 DeFi 的交易发生在以太坊网络中。 大家都追求更快的以太坊节点或者接入大型矿池的网络,以便更快的监控到Txpool的未决TX,及时获取到让程序执行所需的信息。

2、交易路径更短

1)直接看了上面的TX交互过程,科学家的选择肯定是通过程序直接与NFT合约进行交互。

2)通过在链上部署自己的合约,可以通过私有合约与NFT合约进行交互。 私密合约虽然需要外部TX触发,但可以批量购买合约,特别适合不限制铸币数量的NFT。 (现在越来越多的NFT限制调用者是合约)

3.批量提交交易

批量生成以太坊钱包地址_以太坊挖矿钱包地址哪里注册_以太坊钱包地址

除了上面提到的私有合约铸币,如果项目限制了每个地址的铸币数量,可以通过Flashbots将多个TX打包一起提交。

合同造币厂

YOKAI 公开发售后的合同抢购示例。 科学家们通过私人合同抢购了 750 枚薄荷糖。 有关详细信息,请参阅 TX。

YOKAI 合约代码不限制一个地址可以有多少个铸币,但每个 tx 只能有 2 个铸币。 所以被科学家预定了。

以太坊挖矿钱包地址哪里注册_以太坊钱包地址_批量生成以太坊钱包地址

神器闪光机器人

Flashbots的详细讲解见魏老师的精彩介绍和官方文档:Flashbots:如何在没有ETH的情况下从钱包中提取资产或交互合约——镜像

使用 Flashbots 有几个好处:

1)您可以批量打包TX一起提交,您可以自主控制打包TX的顺序。

2) Flashbots提交的TX不会出现在Txpool中,出现在链上后会被所有人看到。 这提供了 TX 的隐私性,因此许多 DeFi 量化交易平台宣传他们可以访问 Flashbots。 (我个人认为这只是暂时的,随着Flashbots的广泛使用,Flashbots提交的TX仍然会被监控)

3)Flashbots铸币失败不收取gas费

Flashbots抢购让我们以冷图XRC的公开发售为例:

批量生成以太坊钱包地址_以太坊挖矿钱包地址哪里注册_以太坊钱包地址

易大佬发推称公开发售不会是科学家公开发售,结果是在block=14020984 Block0解决了battle,所有科学家都被保留了。

项目方发送的setStatus TX在TXpool中监听到14020982

批量生成以太坊钱包地址_以太坊钱包地址_以太坊挖矿钱包地址哪里注册

然后一些科学家将setStatus TX和他们自己的mint tx用flashbots打包发送给矿工。 这里科学家把setStatus TX放在第一位,虽然它的Gas低,但是把自己的铸币tx排在后面,最后tx在984区块进链。

Flashbots 打包查询链接

以太坊钱包地址_以太坊挖矿钱包地址哪里注册_批量生成以太坊钱包地址

燃烧块

批量生成以太坊钱包地址_以太坊钱包地址_以太坊挖矿钱包地址哪里注册

简单来说,就是一直不停地发送tx,发送的mint越多,成功的概率就越高,运气好的话,还有可能挤进Block0。 这种方案的问题是会消耗大量的Gas费,属于有钱任性的玩法。 烧块一般会考虑开始时间,每次Tx间隔,发送次数,gas费用等,这个一般大家根据项目时间,监控pending tx,链上出块速度来考虑。

冷图公募期间,大量科学家通过烧块购买成功。 你可以检查这个钱包

如何防御科学家

随着科学家抢购行为的出现,越来越多的项目开始使用各种方法来防止科学家抢购。 这些方式的本质是限制科学家直接调用合约铸币,让项目方选定的人铸币

1. 只通过白名单销售

所有项目销售均采用白名单机制,让项目方通过规则筛选出真正欣赏项目的人。

但有规律,就有对策。 等级+受邀人数,有聊天机器人和工作室养号卖邀请; 创作艺术,淘宝找人画画; 现在它已经发展到在有限的时间内邀请人们加入 Discord; 让大家猜灯谜、做任务等多种玩法。

项目方与绞尽脑汁上白名单的工作室斗智斗勇,普通NFT玩家也被各种规则玩弄。

2、公募采用验资摇号的方式

例如,NFT 对外发售时,需要预先投入一定数量的 ETH 验证钱包批量生成以太坊钱包地址,然后通过系统抽签给出中奖名单。 但是很多项目方都不愿意做1:1的抽签制来图省事。 最后,公募单子大大超卖,大家争相抢购。

3.服务端签名验证mint

类似于最近大热的 HAPE 方式,公开的 NFT 合约仅限于私有闭源合约来铸造。 闭源合约后,项目方后台服务器交互。 从技术上来说,这个方案还是沿用了web2中心化的思想和web3去中心化的概念,这似乎是冲突的。

批量生成以太坊钱包地址_以太坊钱包地址_以太坊挖矿钱包地址哪里注册

NFT未来将如何发展

通过白名单的人都觉得现在NFT行业很不健康,但是NFT行业还处于早期阶段,有问题市场会有人出来解决问题.

NFT 销售需要公开、公证和透明。 我个人认为解决方案还是可以基于现实生活中两个熟悉的场景:

1、对于新股发行,交易所将进行账户交易时间、验资等门槛,然后进行摇号抽签。

2、京东茅台抢购,京东平台进行账户认证,保证抢购的公平性等。

这两种场景都是通过平台的权限来保证公平性,但是web3中应该会有新的基于区块链合约的解决方案来实现类似的功能,就像现在DeFi市场上的各种交易协议,可能在不久的将来会实现NFT 出售协议似乎提供了一种公平、公证和透明的出售模式。 具体怎么做我还在学习和思考中,欢迎大家指导和讨论。

未来NFT项目方应该接入一个NFT启动平台。 项目方更关注艺术创作的演进和路线图,投资方更关注项目的内容和前景。 上线平台利用技术解决当前NFT销售中的各种问题。