Mempool: Transaktionen unterscheiden sich

Hallo,

das Thema ist vielleicht ein wenig zu speziell, aber es gibt ja auch Programmierer hier, deswegen versuche ich die Frage dennoch zu stellen.
Ich habe mempool auf meiner Node installiert (von GitHub - mempool/mempool: Explore the full Bitcoin ecosystem with mempool.space, or self-host your own instance with one-click installation on popular Raspberry Pi fullnode distros including Umbrel, Raspiblitz, Start9, and more!) und kann da die aktuellen Transaktionen sehen.
Aus Lust und Laune und um ein wenig Phyton zu lernen, habe ich mir auch ein Script gebastelt dass über bitcoin-cli (‚getrawmempool‘) jede Sekunde den mempool abfragt und die neuen Transaktionen ausspuckt.
ALLERDINGS unterscheiden sich die Daten der beiden Methoden. (mempool / Phyton-Script)
Das Phyton-Script spuckt weniger Transaktionen als mempool aus, und die Transaktionen haben auch eine ganz andere ID.
Sorry, wenn das jetzt ein wenig zu speziell für das Forum hier ist.
Vielleicht hat ja dennoch jemand eine Idee.
VG

Zeig einfach mal das Script, woher sollen wir sonst wissen wo die Unterschiede her kommen bzw. was du überhaupt gemacht hast? :slight_smile:

Du meinst die Anzahl der Transaktionen die in der mempool Instanz unbestätigt angezeigt werden unterscheiden sich mit der Anzahl von getrawmempool?

Wie groß ist dieser Unterschied?

Ach, das könnte ich auch mal überprüfen.
Ich meinte eigentlich die Geschwindigkeit, mit der neue transaktionen reinkommen. Das ist bei mempool ja doch relativ „gleichmässig“ (jede Sekunde), bei mir alle 10, 15 oder 30 Sekunden

Zeig am besten Mal deinen Python Code. Eigentlich bekommst du mit getrawmempool immer in Echtzeit die frischen Werte aus dem Mempool. Eine so große Verzögerung gibt es da eigentlich nicht.

Also die Idee mit der Anzahl war gut, Ich sehe dass die Anzahl der Transaktionen ständig zunimmt, aber das Script spuckt nur ab und zu mal was aus. Entweder liegts an der Art wie ich ständig den mempool abfrage, und zwar mit:


if __name__ == '__main__':
    mempool_old=''
    for interval in IntervalTimer(0.5):        
      check_mempool()

oder wie ich immer die letzte Transaktion aus dem mempool raushole:

def check_mempool():
 global mempool_old
 rpcport = 8332
 rpcuser = 'soapp'
 rpcpassword = 'supersecurepassword'
 rpcip = '192.168.0.91'
 serverURL = 'http://' + str(rpcuser) + ':' + str(rpcpassword) + '@' + str(rpcip) + ":" + str(rpcport)
 host = RPCHost(serverURL)
 mempool_full= host.call('getrawmempool')
 mempool = mempool_full[len(mempool_full) - 1]
 print (len(mempool_full))

 if mempool != mempool_old:
  
  string1 = host.call('getrawtransaction', str(mempool))
  raw_tx = host.call('decoderawtransaction', string1)
  ........
  Sender und EMpfänger Adressen holen und in eine Tabelle verpacken und printen
  ........
  mempool_old=mempool

Bin hier fündig geworden: