Solidity
我可以根據 gas 價格將 NFT 分配給在同一塊中執行鑄幣功能的地址嗎?
想像一下,一個智能合約能夠鑄造代表自然數的 NFT:
0
,1
,2
, … 只需通過它們的代幣 id。每個人都可以訪問鑄造新 NFT 的功能,並將鑄造的 NFT 歸因於交易的發送者:
function safeMint(uint256 naturalNumber) public { require(_exists(naturalNumber) == false, "This natural number was already minted"); _safeMint(msg.sender(), naturalNumber); }
例如,這意味著第一個呼叫該
safeMint(3)
函式的人將是代表自然數的 NFT 的第一個所有者3
。如果其他人再次嘗試鑄幣3
,交易將被撤銷。如果兩個地址嘗試
3
在兩個不同的區塊中鑄造該數字,NFT 當然將歸因於在第一個區塊中鑄造 NFT 的地址。但是,兩個地址可能會嘗試
3
在同一個塊中鑄造數字。如果是這種情況,乙太坊將如何決定首先執行哪個交易,因為這將有效地定義誰將成為 NFT 的所有者。我們可以考慮先執行提議支付最高gas價格的交易嗎?Polygon PoS 鏈上的這種邏輯會改變嗎?
這由礦工決定。礦工決定交易在一個區塊中的排序順序——甚至決定哪些交易包含在一個區塊中。
通常,礦工根據它為礦工提供的氣體獎勵量對訂單進行排序,並選擇盡可能多的區塊。
因此,本質上,支付最高gas價格的人首先得到它。但請記住,這不是規則,結果可能會有所不同。