Bitcoin-Decompiler

Gibt es ein Tool zum Dekompilieren der Bitcoin-Blockchain?

Ich sehe Neuigkeiten über Ethereum Decompiler , aber ist so etwas wie für Bitcoin?

Wenn Sie wie ich hierher gekommen sind und nach etwas gesucht haben, um ein Skript wieder in menschenlesbare Token zu übersetzen (eher ein "Disassembler" für die pedantische Menge), schauen Sie sich bitcoin.stackexchange.com/questions/42576/… an , insbesondere github.com/ kallewoof/btcdeb .

Antworten (1)

Es gibt einen großen Unterschied zwischen der Sprache, die von der Bitcoin-Blockchain verwendet wird, und der, die in Ethereum verwendet wird.

Ethereum-Smart-Contract-Programmierer schreiben ihren Code normalerweise in einer Hochsprache (wie Solidity) und kompilieren ihn dann in schwer lesbaren Bytecode.

Bitcoin-Skript-Programmierer schreiben den Code in einer Sprache, die nicht kompiliert ist, als ob sie den Bytecode selbst schreiben würden (es ist jedoch kein Bytecode).

Es ist also logisch, dass man eine Sprache, die nie kompiliert wurde, nicht dekompilieren kann.

Sie können sich die hexadezimalen Darstellungen von Bytes in einem Bitcoin-Skript ansehen und prüfen, welche Operation sie darstellen.

Diese Seite enthält die Liste aller Befehle und deren Hex-Wert.

Bearbeiten

Wenn Sie ein Skript in Bitcoin schreiben, ist es bereits vollständig transparent. Es wird nie kompiliert, NIE . Es ist bereits vollständig transparent, weil Sie es nie kompilieren. Sie müssen es nicht dekompilieren, weil es nie kompiliert wurde, genauso wie Sie ein Haus, das nie gebaut wurde, nicht zerstören können.

Habe ich schon erwähnt, dass Sie nicht dekompilieren müssen, weil der Code nie kompiliert wird ?

Weil es wirklich wichtig ist zu verstehen, dass es nie kompiliert wird . Sie können es einfach so lesen, wie es ist.

Wenn Sie ein 0x6aim Code sehen, liest es sich wie OP_RETURNfür den Link, den ich Ihnen oben gegeben habe. Sie können die gesamte Liste der Hex-Zeichen in einem Skript durchlesen und so entschlüsseln. Du kannst nichts mehr tun

Ich hoffe es wird jetzt klar.

So it is logical that you can't decompile a language that was never compiled in the first place.Warum denkst du so? Es ist unmöglich oder unpraktisch?
@Denis, Kompilieren bedeutet, Quellcode in einen anderen, einfacheren (aber weniger menschenlesbaren) Code umzuwandeln. Zum Beispiel das Konvertieren von C++ in x86-Anweisungen. Ethereum hat seinen eigenen Befehlssatz, aber die meisten Leute verwenden eine höhere Sprache und einen Compiler, um ihn in die Ethereum-Befehle umzuwandeln. Das Bitcoin-Skript ist so einfach und begrenzt, dass niemand eine höhere Sprache verwendet. Daher gibt es keinen Compiler, um diese nicht vorhandene Sprache in Bitcoin-Skript zu konvertieren, und es gibt keinen Decomplier, um sie zurückzukonvertieren.
@Denis, wie kannst du etwas rückgängig machen, das nie getan wurde?? Es ist nicht unmöglich oder unpraktisch, es ist einfach nie passiert.
@IvanoDonadi Ich brauche volle Transparenz für meine Aufgaben
@Denis du verstehst es einfach nicht. Lies bitte meine Bearbeitung und versuche zu verstehen
Ich meine nicht nur das Skript, sondern die Struktur der vollständigen Datenbank, alle Strukturabhängigkeiten und Werteflussbäume und so weiter. Das Skript hier ist ein kleiner Teil der Frage.
Der Link, den Sie über den Ethereum-Decompiler gepostet haben, bezieht sich ausschließlich auf das Skript. Bitte lesen Sie einige grundlegende Dokumentationen über Bitcoin und die Blockchain.
@IvanoDonadi vielen Dank! •Sarkasmus•
Ich schlage vor, dass Sie, bevor Sie Ihren wunderbaren Sarkasmus verwenden, die Wikipedia-Definition für Decompiler lesen: Ein Decompiler ist ein Computerprogramm, das eine ausführbare Datei als Eingabe verwendet und versucht, eine Quelldatei auf hoher Ebene zu erstellen, die erfolgreich neu kompiliert werden kann. Es ist also das Gegenteil eines Compilers, der aus einer Quelldatei eine ausführbare Datei macht. und lesen Sie dann den Artikel, den Sie als Referenz gepostet haben. Für den Code wird ein Decompiler verwendet
@IvanoDonadi Ich denke, es gibt eine Sprachbarriere. Ich meine nicht ganz, was du mir antwortest. Aber ich akzeptiere deine Antwort, danke für die Hilfe!