DOS-attacke durch komplexe "Smart Contracts"?

Hallo an alle,

zunächst entschuldige ich mich falls meine Frage wenig Sinn ergibt, aber ich denke da jetzt schon den ganzen Tag drüber nach.

Ich kann neben einfachen Bitcoin Transaktionen ja auch komplexere Strukturen zusammenbauen. z.B. Timelock mit „Multisig“ und noch beliebig mehr Firlefanz.

Nodes müssen solche Transaktionen natürlich alle validieren, vor allem wenn ich versuche die betroffenen UTXO auszugeben.

Doch was wenn ich meine Transaktion so komplex mache dass Nodes viel zu lange brauchen sie zu validieren?

Ein while(true) Loop der nie aufhört wäre zum beispiel fatal.

Kann mich da jemand beruhigen?

1 „Gefällt mir“

Sehr gute Frage! :smiley:

Das ist völlig richtig aber glücklicherweise auch nicht möglich.

Bitcoin nutzt eine absichtlich eingeschränkte stack-basierte Sprache namens Script, mit der komplexer Kontrollfluss nicht möglich ist. Mit anderen Worten: Es gibt keine Schleifen. Script ist nicht Turing-Complete.

Es wäre etwas sinnlos wenn ich hier weiter den Übersetzer spiele, denn das ist alles sehr ausführlich erklärt in Mastering Bitcoin.


Kapitel 6, Transactions: Transaction Scripts and Script Language:

Hier gibt es auch einen Absatz der 1:1 deine Frage beantwortet:

Turing Incompleteness

The bitcoin transaction script language contains many operators, but is deliberately limited in one important way—​there are no loops or complex flow control capabilities other than conditional flow control. This ensures that the language is not Turing Complete, meaning that scripts have limited complexity and predictable execution times. Script is not a general-purpose language. These limitations ensure that the language cannot be used to create an infinite loop or other form of „logic bomb“ that could be embedded in a transaction in a way that causes a denial-of-service attack against the Bitcoin network. Remember, every transaction is validated by every full node on the Bitcoin network. A limited language prevents the transaction validation mechanism from being used as a vulnerability.

Kapitel 7, Advanced Transactions and Scripting:

2 „Gefällt mir“

Danke für die schnelle Erläuterung. Jetzt müsste man nur noch (gut) Englisch können :bowing_man:

Aber immerhin bin ich jetzt beruhigt ^^

Mastering Bitcoin gibt es auch auf Deutsch:

https://www.amazon.de/Bitcoin-Blockchain-Grundlagen-Programmierung-Anwendungen/dp/3960090714/ref=asc_df_3960090714/?tag=googshopde-21&linkCode=df0&hvadid=310830725207&hvpos=&hvnetw=g&hvrand=16823954868040446592&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9041745&hvtargid=pla-587565221274&psc=1&th=1&psc=1&tag=&ref=&adgrpid=64764278554&hvpone=&hvptwo=&hvadid=310830725207&hvpos=&hvnetw=g&hvrand=16823954868040446592&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9041745&hvtargid=pla-587565221274

1 „Gefällt mir“