Stateful Smart Contracts mit Bitcoin SV

Bitcoin, heißt es, sei nur begrenzt für Smart Contracts nützlich. Deswegen gibt es ja Ethereum. Eine der angeblichen Begrenzung ist die Unfähigkeit der Bitcoin-Skripte, mit dem eigenen Zustand zu arbeiten. Die Macher von sCrypt widerlegen diese Legende.

Wissen Sie, was op_Codes, Scripts in Bitcoin und Stateful Smart Contracts sind? Wenn ja, können Sie die folgenden zwei Absätze überspringen und gleich zum Kern dieses Artikels kommen. Wenn nein, werden Sie gleich einiges lernen. Es lohnt sich, versprochen.

Bitcoin-Skripte, Ethereum und Zustände

Bitcoin schiebt nicht einfach nur Geld von einem Account zum anderen. Das mag man auf den ersten Moment denken, aber wenn man sich tiefer mit dem System beschäftigt, erfährt man, dass im Herzen jeder Transaktion ein Script steckt, das verschiedene Codes (sogenannte Op_Codes) abarbeitet. Diese Op_Codes wirken auf den ersten Moment primitiv, wurden aber von Satoshi absichtlich so konstruiert, dass man mit ihnen jede Art von Transaktion konstruieren kann. Allerdings waren sie die meiste Zeit über extrem beschränkt: Viele Codes waren abgeschaltet, und das Netzwerk erlaubte nur gewisse Templates, also Standard-Transaktionen, anstatt dass Entwickler aus der Skriptsprache ihre eigenen Transaktionen bilden können. Wenn Bitcoin wie ein Taschenrechner anstatt eines Computers gewirkt hat, dann deswegen, weil Satoshis Erfindung absichtlich in diese begrenzte Form gepresst wurde.

Die zweitgrößte Kryptowährung, Ethereum, hatte von Anfang an den Anspruch, diese Begrenzungen von Bitcoin zu sprengen. Im Whitepaper erklären die Ethereum-Entwickler, weshalb die Skriptsprache von Bitcoin nicht weit genug geht. Unter anderem fehlt es ihr an einem “State”. Was das meint, ist nicht einfach zu erklären. Eine Bitcoin-Münze, so das Ethereum-Whitepaper, könne entweder ausgegeben oder nicht ausgegeben sein, dazwischen gäbe es nichts. Keine internen Zustände dazwischen, keine Operationen, die mehrere Zustände zwischen nicht ausgegeben und ausgegeben abarbeiten. Die Begrenzung auf einen binären Zustand macht es unmöglich, mit Bitcoin komplexe und interessante Smart Contracts wie für Dezentrale Organisationen (DAO) zu bilden.

Die meisten “Bitcoin-Experten” würden dem Befund der Ethereum-Entwickler zustimmen. So wie es aussieht, haben sie aber alle unrecht.

Bitcoin-Skripte können doch Stateful sein

Die sCrypt-Entwickler haben vor kurzem “einen generellen Mechanismus für Smart Contracts, die einen Zustand erhalten” aufgezeigt. Sie haben zudem mit ihrem Werkzeug sCrypt, einer High-Level-Programmiersprache für Bitcoin-Skripte, einen solchen Smart Contract gebildet.

Dazu haben die Entwickler einen “Pseudo-Op_Code” namens “OP_PUSH_TX” entwickelt. Das ist ein Pseudo-Opcode, weil er nicht nativ im Bitcoin-Script auftritt, sondern sCrypt ihn aus einer Kombination von Op_Codes zusammensetzt. Er setzt die gegenwärtige Transaktion in das Stack, von wo aus sie in der Operation später wieder aufgegriffen werden kann. Damit wäre eigentlich schon die Grundvoraussetzung für Statefulness erfüllt.

Ein Smart Contract in einem Bitcoin-Skript kann nun mit den Inputs und Outputs der Transaktion arbeiten. Er kann Daten und Code trennen, und dann beispielsweise die Daten als Zustand und den Code als Logik betrachten und dann die Daten nach den Regeln der Logik verändern. Da diese vorher definiert ist, wird die Transaktion nur gültig sein, wenn die Daten auf eine bestimmte Weise geändert wurden.

Eine Transaktion kann sich so wie ein Objekt in anderen Programmiersprachen verhalten: Es kann seinen Zustand beliebig ändern, dabei aber auf nachvollziehbare Weise den Anordnungen des Codes gehorchen. Als Beispiel zeigen die sCrypt-Entwickler ein Skript auf, das zählt, wie oft die “Erhöhen”-Funktion aufgerufen wurde. Dabei bleibt der Code des Smart-Contracts – der in der Transaktion steht – gleich, lediglich eine Zahl an seinem Ende ändert sich. Das Blogpost von sCrypt verlinkt zu zehn Transaktionen in dieser Reihe, hier die erste, hier die zweite (Sie müssen im Blockexplorer den Reiter ‘Script’ anklicken und dann im Unterfenster ganz runterscrollen).

Wer versteht, was hier gerade passiert ist, dürfte das folgende begreifen: All das, was man mit Ethereum macht – die Token, die dezentralen Börsen, die Smart Contracts, die DAOs, die Spiele – ist auch auf Bitcoin möglich. Das Beispiel von sCrypt ist alles, was man als Grundlage braucht. Wer immer Ihnen erzählt hat, dass die Bitcoin-Skriptsprache unvollständig und unzureichend ist, hat sich entweder geirrt oder gelogen.

 

2 Kommentare