Das Bitcoin-Scripting-System ist absichtlich nicht Turing-vollständig – warum?

Kann mir jemand erklären, warum das Bitcoin-Skriptsystem absichtlich nicht Turing-vollständig ist? Um die Entwicklung bösartiger Programme zu erschweren (glaube ich)? Oder weil es schwierig war, es Turing-komplett zu machen?

Bitcoin verwendet ein Skriptsystem für Transaktionen. Ähnlich wie bei Forth ist Script einfach, stapelbasiert und wird von links nach rechts verarbeitet. Es ist absichtlich nicht Turing-vollständig, ohne Schleifen.

Abgerufen von: https://en.bitcoin.it/wiki/Script .

Antworten (3)

Wie andere gesagt haben, muss Bitcoin-Skripting nicht unbedingt komplexer sein, als es ist, da seine Komplexität für die beabsichtigten Anwendungen mehr als ausreichend ist; aber der Hauptgrund ist, dass das Nicht-Zulassen einiger Merkmale (wie Schleifen) in einer Sprache sie völlig deterministisch macht: Sie können sicher wissen, wann und wie ein bestimmtes Programm enden wird; Sie können z. B. keine Endlosschleifen haben, wenn Sie überhaupt keine Schleifen haben, daher müssen Sie sich keine Sorgen machen, dass Programme hängen bleiben und den Interpreter blockieren/abstürzen, der sie ausführt (in diesem Fall die Haupt-Bitcoin Software).

Sich nicht mit dem Halteproblem auseinandersetzen zu müssen, ist definitiv ein Plus für eine winzige, eingebettete, zweckspezifische Sprache, wie sie für Bitcoin-Skripte verwendet wird.

Es ist einfacher zu messen und einzuschränken, wenn es nicht Turing-vollständig ist, und denken Sie daran, dass jeder Knoten im Netzwerk jedes Skript ausführen muss, um die Gültigkeit sicherzustellen. Wir möchten, dass es leicht ist. Es ist nicht so, dass es komplizierter sein müsste, niemand nutzt das, was wir haben, um irgendetwas Interessantes zu tun. Die meisten Opcodes sind vollständig deaktiviert und es gab keine Anfragen, sie wieder zu aktivieren.

Es wird so wenig Skript verwendet, dass ich jede einzelne Instanz einer nicht standardmäßigen Transaktion manuell untersucht habe, um zu sehen, was sie tun. Abgesehen von den Hash-Kollisionswettbewerben und vielen kaputten p2pool-Ausgaben hat bis heute niemand auch nur annähernd Interessantes getan.

Mit anderen Worten, es ist nicht komplex, weil es nicht sein muss.

Abgesehen von dem, was Goatse gesagt hat, und wie Ihr Beitrag kommentiert, bedeutet, dass Turing nicht vollständig ist, keine Schleifen, was ein Problem mit fehlerhaften (absichtlich oder nicht) Skripten darstellen könnte.