Programmiersprache Bitcoin

Hey :wink: Habe mich gefragt in welcher Programmiersprache Bitcoin und der 2nd Layer Lightning geschrieben wurde. Weiss das jemand?

Beste Grüsse :slight_smile:

Hallo Janik,
das kann man so einfach nicht beantworten, da es z.B. bei Lightning nicht nur eine Implementierung gibt.

Bitcoin Core ist in C++ geschrieben:

Lightning LND ist z.B. in GoLang geschrieben:

Es gibt aber noch c-lightning das ist in C geschrieben:

Das hier sind nur ein paar bekannte, es gibt aber noch mehr!

1 „Gefällt mir“

Das Protokoll ist Sprachunabhängig.
Jeder der kann, kann einen Client in seiner Lieblingssprache schreiben.

1 „Gefällt mir“

Weil es hier so schön passt…

Wo kann ich Beispiele für Smart Contracts, also Skripte für Bitcoin? Ich würde mir das gern mal ansehen. Die Suchmaschine meines Vertrauens war da nicht so ergiebig.

Es geht hier nicht um die Sprache, in der die Client Software geschrieben ist, sondern um die Skripte die in Bitcoin Transaktionen enthalten sind.

Eine Beschreibung der Skriptsprache findest du hier: Script - Bitcoin Wiki

Die Smart Contracts die du damit implementieren kannst sind begrenzt. Das liegt aber weniger daran, dass die Sprache das nicht könnte, als vielmehr daran, dass es bei Bitcoin fast ausschließlich um die Berechtigung zum Ausgeben von utxos geht.

Gute Blockexplorer zeigen die Skripte an. Wenn du dir eine beliebige Transaktion aufmachst (Bitcoin Explorer - Blockstream.info) und dir die Outputs anschaust, dann siehst du die Ausgabebedingung für diesen Output, z.B.:

OP_DUP OP_HASH160 OP_PUSHBYTES_20 73bb3a746e43a7694a9eb37c0104aff9aab7cfb1 OP_EQUALVERIFY OP_CHECKSIG

1 „Gefällt mir“

Zusätzlich gibt es für Smart Contracts z.B. die Bitcoin Sidechain Rootstock, die soweit ich weiß auch EVM kompatibel ist.

D.h. dort kannst du auch Solidity-basierte Smart Contracts laufen lassen.

1 „Gefällt mir“

Danke @Makowski und @skyrmion

Zum ersten Einlesen war das nett. Ich kann mir leider trotzdem noch nicht vorstellen, WIE das praktisch anzuwenden wäre. Beispielsweise:

Wie sehen fertige SC aus?

Wie werden sie wo eingebunden?

Fragen über Fragen.

(Ich bin kein Programmierer/Informatiker.)

Jedes Script ist ein Smart Contract. Sie sind nur recht primitiv. Das Locking für einen Lightning Channel ist z.B. auch ein Smart Contract.

Hast du lightning Kanäle aufgemacht? Dann schau dir doch mal die öffnende Transaktion im Blockexplorer an. Die Op Codes kannst du dann auf der oben verlinkten Seite nachschlagen.

Ja

Gefunden. Danke.

Welche Seiten meinst Du genau?

:thinking:

Das ist echt der ganze Code? Irgendwie konnte ich das nicht glauben und habe nach mehr gesucht. So mit class, function, if, when, etc.

Das muss so sein. Der Code muss ja schließlich in eine Bitcoin Transaktion passen. Blockspace ist teuer.

Die Ausführung des Codes funktioniert als sogenannte stack machine. Von links nach rechts die token auf einen stack packen. Wenn der oberste token ein op-code ist, wird der ausgeführt. Bei der Ausführung werden ggf. token vom stack verarbeitet und das Ergebnis wieder auf den stack gelegt.

3 „Gefällt mir“