Ereignisüberwachung auf einem VPS-Server mit begrenzten Ressourcen

Ich muss Ereignisse in der Ethereum-Blockchain auf einem kleinen vps-Server mit begrenzten Ressourcen (1 Vcore, 10 GB SSD, 2 GB RAM) abhören. Ist es möglich, dies zu tun, ohne einen vollständigen Ethereum-Knoten auszuführen? Was sind die verschiedenen Optionen und ihre Nachteile?

Nur über einen externen Client, wie infura.io.
Basierend auf dem Link unten scheint es, dass sie die Funktion registerEvents.watch() nicht mehr unterstützen, die das Abhören von Ereignissen ermöglicht: Das Ergebnis dieser Funktion ist nicht deterministisch, da sie einen Load Balancer verwenden. Sie arbeiten noch an einer Lösung => github.com/INFURA/infura/issues/13
Ich habe es zusammen mit web3-engine-provider und deren Filter-Subprovider verwendet. Aber ein Light-Client sollte besser sein.

Antworten (1)

Gemäß dem Protokollabschnitt der Ethereum-Dokumentation: https://solidity.readthedocs.io/en/develop/introduction-to-smart-contracts.html#logs

Da ein Teil der Protokolldaten in Bloom-Filtern gespeichert wird, ist es möglich, auf effiziente und kryptografisch sichere Weise nach diesen Daten zu suchen, sodass Netzwerkpartner, die nicht die gesamte Blockchain herunterladen („Light Clients“), diese Protokolle dennoch finden können .

Hier erfahren Sie mehr über Light-Clients: https://github.com/ethereum/wiki/wiki/Light-client-protocol

  • Light-Clients möchten nach protokollierten Ereignissen „überwachen“. Das Protokoll hier ist das folgende:
    • Ein Light-Client ruft alle Block-Header ab und sucht nach Block-Headern, die Bloom-Filter enthalten, die mit einer gewünschten Liste von Adressen oder Themen übereinstimmen, an denen der Light-Client interessiert ist
    • Beim Auffinden eines potenziell passenden Block-Headers lädt der Light-Client alle Transaktionsbestätigungen herunter und prüft sie auf Transaktionen, deren Bloom-Filter übereinstimmen
    • Beim Auffinden einer möglicherweise übereinstimmenden Transaktion überprüft der Light-Client sein tatsächliches Protokoll-RLP und sieht, ob es tatsächlich übereinstimmt

Sowohl Geth als auch Parity haben einen Light-Modus:

parity --light --no-serve-light( https://github.com/paritytech/parity/wiki/Light-Client )

geth --syncmode "light"( https://www.reddit.com/r/ethereum/comments/6lzw8y/how_to_run_ethereum_wallet_in_light_mode/ )