Wie ergibt (aktuelle Blocknummer - Blocknummer einer bestimmten Transaktion) den Bestätigungszähler?

Ich habe hier eine Diskussion gefunden . Wie erhalte ich die Anzahl der Bestätigungen für eine Transaktion in Geth oder einem anderen Tool? die die Lösung geben als:

web3.eth.blockNumber-web3.eth.getTransaction(<txhash>).blockNumber

Ich habe diese Formel ausprobiert und den Wert mit der von http://testnet.etherscan.io/api?module=account&action=txlist&address=0x4c zurückgegebenen Bestätigungszahl verglichen ... Beide scheinen zu stimmen.

Meine Frage ist, wie kann diese Nummer als Bestätigung angesehen werden? Gilt „je länger es bleibt, desto größer ist das Vertrauen, dass es echt ist“?

Je länger es bleibt, desto mehr Hashing-Leistung würde benötigt, um es umzukehren, und desto sicherer wird es. (Eher als ein Fall, in dem es echt ist.)

Antworten (1)

Blockchains verwenden ein Proof-of-x -System, um die Gültigkeit einer Transaktion durch einen zufälligen Miner zu bestätigen. Der Miner bestätigt, dass die Quelle der Transaktion gültig ist. Er tut dies, indem er sich den Block vor dem eigentlichen Block ansieht und prüft, ob die Transaktion gültig ist. Nachdem der Block abgebaut wurde, wird er von allen folgenden Minern bestätigt, und solange die Mehrheit nicht konspiriert, steigt die Wahrscheinlichkeit, dass der Block gültig ist, mit jedem folgenden abgebauten Block. Je älter eine Transaktion in Bezug auf die Blocknummer ist, desto valider ist sie.

Es ist also ungefähr so ​​- Die Idee ist, dass, wenn meine Transaktion in Block Nummer 100 enthalten war (nehmen Sie einfach an) und die aktuelle Blocknummer 160 ist, dies bedeutet, dass 60 zufällige Miner den Block 100 als gültig akzeptiert und dieser Kette hinzugefügt haben und Sie können also sagen, dass ich 60 Bestätigungen habe. Hier dreht sich alles um Konsens. Siehe auch [Ethereum Network Transaction Confirmation Coverage] ( ethereum.stackexchange.com/questions/6453/… )
genau, das meine ich
Von Wie kann eine DApp eine Fork- oder Chain-Reorganisation mit web3.js oder zusätzlichen Bibliotheken erkennen? , ich denke, man sollte getTransactionReceipt()einfach anrufen, um sich zu vergewissern, dass die Transaktion noch da ist. Wenn ja, dann können wir sicher sein, dass es keinen Fork gab und da weitere Blöcke hinzugefügt wurden, ist es jetzt fast unmöglich, die Transaktion zu löschen, und wir können sie akzeptieren.
Kann das Konfidenzniveau als Funktion der Anzahl der seit der Transaktion abgebauten Blöcke gemessen werden? Wenn ja, was genau ist die Funktion?