Wie Sie Datenbankänderungen in Echtzeit durchführen können, wenn Transaktionen von allen anderen akzeptiert werden müssen

Ich versuche, die aktuelle Implementierung von Smart Contracts und Transaktionen zu verstehen und frage mich über das Echtzeitverhalten. Ich habe gelesen, dass es bis zu 10 Minuten dauern kann, bis eine Transaktion Teil eines Blocks wird, und habe hier gelesen , dass "Sie eine sogenannte Transaktion erstellen müssen, die von allen anderen akzeptiert werden muss". Ich sehe also nicht, wie Sie Echtzeittransaktionen haben und beispielsweise eine Todo-Listenanwendung erstellen könnten, bei der jedes Mal, wenn Sie ein Todo erstellt haben, es sofort in der Datenbank gespeichert und nach der Aktualisierung dort wäre und dem Benutzer pro Todo eine Gebühr berechnet würde (sagen wir) sofort. Fragen Sie sich, ob dies möglich ist oder ob es in Betracht gezogen wurde oder warum es nicht möglich ist oder wie Sie mit einer solchen Situation umgehen würden.

Antworten (1)

Ich bin mir nicht sicher, wo Sie herausgefunden haben, dass es 10 Minuten dauern würde, bis eine Transaktion in einem Block ist. Es dauert keine 10 Minuten. Derzeit beträgt die durchschnittliche Zeit etwas weniger als 20 Sekunden ( https://ethstats.net/ ).

Laut dem Netzwerk ist alles bereit, sobald eine Transaktion in einem Block abgebaut wurde, aber das Konsenssystem schreibt vor, dass ein Block eigentlich nie endgültig ist. Theoretisch könnte sogar der erste Block des Netzwerks aufgrund der Reorganisation der Konsenskette zurückgesetzt werden. In der Praxis ist ein Block jedoch endgültig, nachdem einige andere Blöcke darauf abgebaut wurden.

Es liegt im Grunde an Ihnen, zu entscheiden, wann Sie mit ausreichend großer Sicherheit akzeptieren, dass eine Sperre endgültig genug ist . Einige Börsen erfordern zum Beispiel 10 Blöcke (10 Bestätigungen) zusätzlich zum Block, um ihn als endgültig genug zu betrachten, um als nicht umkehrbare Transaktion akzeptiert zu werden.

Theoretisch ist die Blockchain also etwa „20 Sekunden von der Echtzeit entfernt“. 20 Sekunden sind vielleicht kein zu langes Intervall für eine Todo-Anwendung. Aber Sie müssen immer daran denken, dass es einen Konsens-Tradeoff gibt: Wie viele Blöcke möchten Sie warten, bevor Sie darauf vertrauen, dass der Block endgültig genug ist.

ABHILFE

Es gibt Möglichkeiten, diese "langsame" Transaktionszeit zu umgehen. Zum Beispiel:

1) Führen Sie einen Teil der Verarbeitung außerhalb der Blockchain durch. Offensichtlich ist all diese Verarbeitung viel schneller. Dann aktualisieren Sie einfach die Daten in der Blockchain in bestimmten Abständen oder so.

2) Seitenketten / Zustandskanäle. Dies sind ziemlich neue Ansätze, aber sie verwenden teilweise die erste Methode; Ein Teil der Verarbeitung erfolgt beispielsweise in einer Seitenkette, die viel schneller arbeitet. Diese Lösungen gelten meistens nur für Transaktionen zwischen bekannten Teilnehmern (also viele Transaktionen hin und her zwischen bekannten Teilnehmern) und nicht für "zufällige" Transaktionen an zufällige Teilnehmer.

Ich frage mich also, ob es Beispiel-Apps gibt, die zeigen, wie man mit dieser Latenz umgeht. Ich habe Spiele gesehen ( a und b ), ich sehe nicht, wie sie funktionieren könnten, wenn sie eine Verzögerung von 20 Sekunden haben.
Ihr Link handelt von Bitcoin. Das ist Ethereum, eine ganz andere Blockchain. Ich habe meine Antwort bearbeitet, um einige Abhilfemaßnahmen hinzuzufügen. Weitere Informationen zu den vorgeschlagenen Abhilfemaßnahmen finden Sie im Internet.
Interessante Gedanken zu den Heilmitteln. Wenn Sie sich fragen, ob Sie eine Blockchain oder Forschung kennen, bei der es keine Verzögerung gibt ( Echtzeit ), würde mich interessieren, wie sie es gemacht haben.
Typischerweise ist es ein Kompromiss zwischen Dezentralisierung + vertrauenswürdiger Natur vs. (teilweise) zentralisiert + vertrauenswürdig. Je zentralisierter also etwas ist, desto schneller ist es normalerweise. Zentralisierte Datenbanken sind sehr schnell. Dezentrale Blockchains sind „sehr“ langsam. Es kommt also nur darauf an, was man sucht. Verwenden Sie aus Geschwindigkeitsgründen einfach zentralisierte Datenbanken. Verwenden Sie für vertrauenswürdige Eigenschaften Ethereum. Und dann gibt es noch jede Menge Optionen dazwischen (zum Beispiel Ripple, Neo oder BigChainDB)