BTC
ETH
HTX
SOL
BNB
查看行情
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

如何用科學家的方法搶購NFT?

星球君的朋友们
Odaily资深作者
2022-02-14 11:30
本文約5056字,閱讀全文需要約8分鐘
科學家搶購NFT,就是用各種手段使自己的交易TX 可以先於別人被礦工打包,在售罄前完成NFT mint。
AI總結
展開
科學家搶購NFT,就是用各種手段使自己的交易TX 可以先於別人被礦工打包,在售罄前完成NFT mint。

原文來源:Mirror

原文來源:Mirror

一級標題

原文來源:Mirror

原文來源:Mirror

NFT購買過程一級標題

一級標題

圖片描述

一級標題

NFT購買過程詳解

圖片描述

nonce: nonce, 

gasLimit: '21000', 

maxFeePerGas: '300', 

maxPriorityFeePerGas: '10', 

to: '0x198478f870d97d62d640368d111b979d7ca3c38f', 

value: '176000000000000000', 

data: '0xa0712d680000000000000000000000

 000000000000000000000000000000000000000002'

  • gasLimit圖片描述

  • to NFT購買過程

  • nonce 1、點擊Mint按鈕

  • value 大家登陸項目網站,Chrome上連接自己的錢包,然後點擊mint按鈕。網頁上的JavaScript代碼基於項目的mint價格,合約地址等生成raw transaction數據,主要包含以下幾個關鍵字段

  • data– 交易可以消耗的Gas 的最大數量。單位gwei

    Function: mint(uint256 tokenQuantity)

    MethodID: 0xa0712d68

    [0]: 00000000000000000000000000000

    00000000000000000000000000000000002

  • maxPriorityFeePerGas– 接收地址(這裡是NFT的合約地址,交易將執行合約代碼)

  • maxFeePerGas– 用於跟踪賬戶已執行的交易總數

– 從轉賬ETH 的金額(以WEI 為單位,這裡為0.176 ETH購買NFT)

– 和合約交互,調度mint函數,mint數量2個

- 作為礦工小費包含的最大gas 數量

- 願意為交易支付的最大gas 數量

2、TX簽名

網頁代碼與Metamask交互,會彈出窗口讓你確認本次交易。點擊確認後,Metamask會使用你的錢包私鑰進行簽名,以確保這個交易是你本身授權的,後續以太坊網絡會進行校驗。

4、廣播TX到以太坊網絡

圖片描述

交易TX被發送到以太坊網絡的相鄰節點,然後再相互廣播到相鄰接點。這時你的交易就可以在etherscan.io上查看到,狀態是pending狀態。

Txpool圖片描述

本地提交圖片描述

Txpool代碼流程(借用以太坊源碼分析之txpool的圖)的數據來源主要來自:

本地提交

,也就是第三方應用通過調用本地以太坊節點的RPC服務所提交的交易;

遠程同步

,是指通過廣播同步的形式,將其他以太坊節點的交易數據同步至本地節點;

Txpool中分了Queue和Pending兩個隊列,首先新收到TX會基於規則判斷後先放到Queue這個隊列,然後再添加Pending隊列等待挖礦加入新增的塊。

主要規則如下:

1)優先處理Gasprice高的TX

2)本地TX優先處理,過於遠程同步3)每個節點會設置最低Gasprice,低於這個值的遠程TX會被丟棄

Pending中的TX,被Miner模塊獲取並驗證,用於挖礦;挖礦成功後寫進區塊並被廣播。 Miner取走交易是複制,Txpool中的TX並不減少。 TX被寫進鏈後才從Txpool刪除。

Gas過低的TX,會被一直卡在Txpool得不到處理,需要可以提高Gas讓它被處理。

詳細代碼分析可以參考

死磕以太坊源碼分析之txpool

GasWar:發生熱門交易時,大家為了自己的TX可以被優先處理,爭相提升Gas費的場景

6、礦工出塊TX被打包

在其他礦工節點驗證後,該區塊正式上鍊,這事我們TX結果可以在etherscan.io上查看到。

一級標題

Life Cycle of an Ethereum Transaction

Transaction lifecycle on the Ethereum blockchain

The Influence Factors on Ethereum Transaction Fees

8、TX狀態同步

相關狀態返回本地,可以在Metamask上查詢到。

合約是如何被執行的

一級標題

簡單說我們發送的交易會被轉換成一個Message對像傳入EVM,而EVM則會根據Message生成一個Contract對像以便後續執行。基於我們轉入的Data轉為合約的input調用mint函數。

詳細看EVM介紹參考如下文檔:

一級標題

預售只是針對特定用戶才能購買,公開銷售就是大家都可以搶購。

一級標題

這裡主要需要回答兩個技術問題:

1、如何限制特定錢包才能mint?

一級標題0x6fd053bff10512d743fa36c859e49351a4920df6

白名單現在普遍使用默克爾樹來實現,簡單來說將所有白名單錢包地址作為默克爾樹的葉子節點,生成一個Root hash。在合約中只需要存儲Root hash值,在調用mint函數時網頁的JS代碼基於錢包地址生成proof(地址的上級父節點hash),合約就可以校驗該地址是否屬於白名單。

一級標題

Using Merkle Trees for NFT Whitelists

一級標題

一級標題

一級標題

銷售狀態切換科學家如何搶購NFT

圖片描述

科學家使用程序搶購NFT,就是使用各種手段使自己的交易TX可以先於別人被礦工打包,在售罄前完成NFT mint。同時科學家都是追求完美的,最完美的結果當然是自己的TX出現在第一個滿足公開銷售狀態的區塊裡,也就是

搶Block0

圖片描述

圖片描述

兩種場景下的Block0

科學家用的手段總結大概以下三點:

1)、直接看了上面的TX交互過程,科學家的選擇肯定直接通過程序和NFT的合約進行交互。

3、批量提交交易

一級標題

2)、通過在鏈上部署自己的合約,通過私有合約和NFT合約交互。雖然私有合約需要外部TX觸發,但合約可以批量化購買,特別適合不限制mint數量的NFT。 (現在越來越多的NFT限制調用方是合約)

合約mint

一級標題

神器Flashbots

一個合約搶購的例子,YOKAI公開發售後。科學家利用私有合約,一共搶購了mint750個。詳細見TX 。

一級標題

一級標題

神器Flashbots

Flashbots詳解見偉總這篇精彩介紹和官方文檔

Flashbots:如何從沒有ETH的錢包取出資產或交互合約

使用Flashbots的有幾點好處:block=140209841)可以批量打包TX一起提交,可以自主控制打包TX的先後順序。 2)Flashbots提交的TX不會出現在Txpool,出現在鏈上之後才會被大家看到。這樣就提供了TX的隱秘性,所以很多DeFi量化交易平台宣傳自己接入Flashbots。 (個人認為這只是暫時的,隨著Flashbots廣泛使用,Flashbots提交的TX還是會被監控)

3)通過Flashbots mint失敗了不會被收Gas費

項目方發送的setStatus TX在14020982時在TXpool被監聽到

Flashbots打包一級標題

然後有科學家把setStatus TX和自己的mint tx一起用flashbots打包了,發送給礦工。這里科學家把setStatus TX放到了第一,雖然它Gas低,將自己的mint tx排在後面,最終tx在984塊入鏈。

燒區塊

一級標題錢包

簡單說就是一直不停的發tx,發得多mint成功的概率就大,撞大運還可能會擠進Block0。這個方案問題在於會很消耗Gas費,屬於有錢任性的玩法。燒區塊一般考慮開始時間,每次Tx間隔,發送次數,gas費用等,這個一般都是大家根據項目時間,監控pending tx,鏈上出塊速度等考慮。

一級標題

錢包

一級標題

如何防科學家

隨著科學家搶購的出現,越來越多的項目開始用各種辦法防科學家搶購,這些方法的本質都是限制科學家直接調用合約mint,讓項目方選定的人才能mint

1、只通過白名單方式發售

項目發售全部使用白名單機制,這樣項目方通過規則篩選出認為是真正欣賞項目的人。

2、公售採用驗資抽獎方式

一級標題

如NFT公售時,提前驗證錢包需要一定金額的ETH,然後通過系統抽獎給出中獎名單。但很多項目方為了省事不願意做一個1:1的抽獎系統,最後公售名單大幅超售,最後還是大家搶購。

3、在服務端簽名驗證mint

一級標題

一級標題

NFT未來如何發展

2、京東茅台搶購,京東平台進行賬戶認證、搶購公平性保證等

原文鏈接

原文鏈接

NFT
歡迎加入Odaily官方社群