Holen Sie sich den echten letzten Block

Ich habe diesen Code:

from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
import logging
rpc_user='-------' #User name is hidden
rpc_password='-------' #Password hidden
logging.basicConfig()
logging.getLogger("BitcoinRPC").setLevel(logging.DEBUG)
rpc_connection = AuthServiceProxy("http://%s:%s@127.0.0.1:8332"%(rpc_user, rpc_password))
blockcount=rpc_connection.getblockcount()
print(blockcount)

Das Ergebnis:

DEBUG:BitcoinRPC:-1-> getblockcount []
DEBUG:BitcoinRPC:<-1- 94768
94768

Natürlich ist dies der letzte Block in meinem Gerät, aber ich möchte den echten letzten Block.

Gibt es einen „externen Server oder eine Website“, die ich anstelle des lokalen Servers „127.0.0.1“ aufrufen kann? (zum Senden der Bitcoin-RBC-Methode)

Antworten (3)

Anstelle von getblockcountkönnen Sie getblockchaininfodas Feld aufrufen und lesen headers.

Obwohl Sie dadurch möglicherweise viel mehr Blöcke als die lokale Blockanzahl erhalten, erhalten Sie dennoch nur eine Zählung bis zu dem Punkt, an dem Ihr Knoten synchronisierte Header hat (was durch Zeit, Netzwerk und die Synchronisation Ihrer Peers begrenzt sein kann). )

Es gibt keine Möglichkeit, immer zuverlässig die neueste Blockhöhe von einem nicht synchronisierten Knoten zu erhalten.

Man könnte zusätzlich den Zeitstempel prüfen, um zumindest zu wissen, ob es sich um einen neueren Block handelt.

Sie müssten versuchen, Live-Knoten zu verbinden, um diese Informationen zu erhalten.

https://bitnodes.earn.com/nodes/?q=United%20States

Listet aktive Knoten des BTC-Netzwerks auf.

Sie sollten einen Knoten finden, der eine RPC-Verbindung auf dem Port zulässt.

Natürlich ist dies der letzte Block in meinem Gerät, aber ich möchte den echten letzten Block.

Es gibt keine solche Sache. Gäbe es einen „echten letzten Block“, der klar und eindeutig bestimmbar wäre, bräuchten wir keine Blockchain.

Das Beste, was Sie tun können, ist, einen Knoten auszuführen und den Knoten zu fragen, was der beste Block ist, den er kennt. Oder Sie können jemandem vertrauen, der einen solchen Knoten betreibt, und ihn fragen.

Vielleicht eine andere Sichtweise: Es gibt keinen Unterschied zwischen einem synchronisierten oder nicht synchronisierten Knoten. Ihr Knoten versucht immer , sich mit dem zu synchronisieren, was andere Knoten im Netzwerk ihm sagen. Es kann nicht wissen, was der tatsächlich neueste/beste Block im Netzwerk ist, da zumindest die Lichtgeschwindigkeit rund um den Globus begrenzt ist.