如何在Moonbeam網(wǎng)絡(luò)中檢查交易確定性

鏈上交易的最終確定性是指一筆鏈上的交易幾乎是確定的,這也意味著交易無法更改,也無法逆轉(zhuǎn)。Moonbeam致力于兼容以太坊Web3 API和EVM,但開發(fā)者仍需了解Moonbem和以太坊在確定性之間的差異。在Moonbeam,我們使用基于提名權(quán)益證明(NPoS)的混合共識協(xié)議提供確定性。
概率確定性代表一個區(qū)塊(及其所有交易)不被恢復(fù)的概率,這個概率會隨著確認的區(qū)塊數(shù)量增加而增加。因此,確認的區(qū)塊數(shù)越多,交易無法恢復(fù)的概率越高,交易就越安全,發(fā)生交易被篡改及重組的可能性也就越低。如Vitalik所撰寫的關(guān)于確定性的博客中所建議的:“您可以等待13次確認以獲得攻擊者100萬分之一攻擊成功的概率?!?/p>
我們將用技術(shù)語言詳細闡述Moonbeam的對總確定性如何實現(xiàn),以及如何查詢交易的確定性。
Moonbeam具有確定性,交易通常在波卡中繼鏈中包含交易的區(qū)塊之后1到2個區(qū)塊內(nèi)最終確定。如要檢查特定交易的確定性,Moonbeam提供兩個自定義的JSON RPC端點讓您可以查看指定區(qū)塊或是交易是否已經(jīng)被確定,該操作將會根據(jù)確定性的狀態(tài)返回是/否的回應(yīng)。
更詳細的說,您可以使用”moon_isBlockFinalized”函數(shù),通過提供區(qū)塊哈希來確認該區(qū)塊是否已經(jīng)被確定。同樣的,您也可以使用”moon_isTxFinalized”,通過提供交易哈希來確認該交易是否已經(jīng)被確定。結(jié)果將如下圖所示:

在執(zhí)行操作的同時,別忘了多檢查一次您輸入的參數(shù)。當(dāng)您在查看指定區(qū)塊確定性時,您需要提供的是該區(qū)塊的哈希而非區(qū)塊編號。與此同時,請確保您使用的RPC URL與您希望查詢的網(wǎng)絡(luò)相關(guān)。
除了經(jīng)由JSON RPC使用函數(shù)查詢區(qū)塊/交易確定性,Moonbeam網(wǎng)絡(luò)區(qū)塊瀏覽器Moonscan提供了更為簡便的查詢渠道,其展示了區(qū)塊以及交易的確定性狀態(tài)。未確定的區(qū)塊/交易將會以沙漏的形式表現(xiàn),而已確定的區(qū)塊/交易將會以綠色的?表示。范例如下圖所示:

如果您想要了解關(guān)于Moonbeam自定義JSON RPC端點如何檢查交易確定性以及相關(guān)的內(nèi)容,您可以導(dǎo)向至Moonbeam官方文檔網(wǎng)站的此頁面:https://docs.moonbeam.network/builders/build/moonbeam-custom-api/