Welche Schritte unternimmt ein SPV-Client, um zu synchronisieren?
Offensichtlich sind die obigen Schritte falsch, da es keinen Sinn macht, zuerst alle Blockheader herunterzuladen, um die richtige Kette zu bestimmen, und dann alle Blöcke erneut anzufordern, um das Guthaben der Brieftasche zu berechnen.
Aber wie ist das richtige Vorgehen?
Das ist was ich mache:
Beachten Sie, dass „getblocks“ eine Liste von Blockchain-Hashes ab dem angegebenen Startpunkt zurückgibt, nicht die Blöcke selbst. Dann gibt 'getdata' 'merkleblock'-Nachrichten anstelle von vollständigen Blöcken zurück. Der Peer folgt der „merkleblock“-Nachricht mit allen Transaktionen, die dem Bloom-Filter als separate „tx“-Nachrichten entsprechen.
Weitere Einzelheiten finden Sie in BIP0037
Wenn Sie ein Beispiel möchten, finden Sie meine Java-Wallet auf GitHub
Ein paar Beispiele können Ihnen helfen:
https://code.google.com/p/bitcoinj/
Mein Projekt https://github.com/richardkiss/pycoinnet ist nicht vollständig (insbesondere gibt es zum jetzigen Zeitpunkt keine Bloom-Filter-Implementierung), aber es kann letztendlich das tun, was Sie brauchen.