Eine der großen Ankündigungen der neulich umbenannten BSV Global Blockchain Convention, die letzte Woche in Dubai stattfand, war die Einführung eines Smart Contract Transpilers, der in der Lage ist, in Solidity von Ethereum geschriebenen Code in Bitcoin sCrypt zu portieren. sCrypt ist die Sprache, die die meisten Entwickler von Smart Contracts auf BSV verwenden, da sie direkt in Bitcoin-Low-Level-Skript kompiliert wird.
Was dieses Tool verspricht, ist das Potenzial für ETH-Entwickler, die daran interessiert sind, mit BSV zu experimentieren, um ihren in Solidity geschriebenen Smart Contract-Code einfach auf BSV zu portieren und 80 % der Arbeit der Portierung ihrer Anwendung größtenteils für sie erledigen zu lassen.
Batterien nicht enthalten
Auch wenn dies wie eine Wunderlösung klingen mag, die dazu führen wird, dass Tausende von ETH-Projekten über Nacht in die günstige und reichlich vorhandene Transaktionsumgebung von BSV überflutet werden, ist dies nicht wahr. Während es gute Arbeit leistet, den größten Teil des Codes in einer brauchbaren Form in sCrypt umzuwandeln, hat das Tool einige bemerkenswerte Kleinigkeiten, die ein wenig manuelles Hacking durch den Entwickler erfordern. Diese Unterschiede sind nicht auf Probleme mit dem Transpiler zurückzuführen, sondern haben eher mit der Tatsache zu tun, dass ETH und BSV nur zwei verschiedene Blockchain-Modelle sind, von denen jedes seine eigene Art hat, Dinge zu tun, die nicht „automatisch konvertiert“ werden können. Eine solche Ausnahme ist, wie jedes System Loops handhabt. Bei ETH können Loops unbegrenzt sein, und das Limit wird durch das im Vertrag festgelegte Gaslimit impliziert. Bei BSV müssen alle Loops eine explizite Anzahl von Iterationen haben.
Andere Inkompatibilitätspunkte ergeben sich zwischen bestimmten ETH-spezifischen Datenstrukturtypen wie dem Zuordnungstyp, dem Strukturtyp und anderen Verträgen, die nicht in ein UTXO-Verarbeitungsmodell wie das von BSV verwendete (wie Vererbung, Ausnahmebehandlung und Funktionen, die Funktionen für andere Verträge aufrufen) übergehen.
Dies bedeutet, dass die Verwendung des Transpilers wahrscheinlich für 90 % einer Bibliothek wie Smart Contract-Code funktionieren wird, komplexerer Code, der komplexe Callbacks, Fallbacks, Ereignisausgabe, Sichtbarkeit von Funktionen, jede Art von Vererbung und Ausnahmebehandlung erfordert, muss neu geschrieben werden. Obwohl ich den Verdacht habe, dass die meisten Entwickler feststellen werden, dass sie bei einer solchen Neufassung nicht mehr alle diese Funktionen verwenden müssen.
Die Analogie, die ich ziehen würde, ist die Umwandlung eines OOP-Programms in eines, das in einem funktionalen Stil geschrieben ist.
Zunächst stellen Sie fest, dass funktionale Programmiersprachen selten eine Vorstellung von einem Schleifenkonstrukt haben, und dies scheint einschränkend zu sein, aber dann erkennen Sie, dass Schleifen nur eine Grundform eines übergeordneten Konzepts von Map/Reduce sind, wodurch die Notwendigkeit entfällt für explizite Schleifen. Dasselbe gilt für die unveränderlichen Daten in FP, die viele Leute abschrecken, wenn sie zum ersten Mal mit der funktionalen Programmierung beginnen. Viele der ausgefallenen Solidity-Funktionen werden in Bitcoin einfach keinen Sinn machen. (Was würde es zum Beispiel bedeuten, dass ein Smart Contract in BSV eine Ausnahme auslöst? Es ist bedeutungslos. Der Vertrag gibt einfach FALSE zurück, da jedes Bitcoin-Skript immer ein Prädikat wahr/falsch zurückgeben muss).
Vieles, was ETH ihrem EVM hinzugefügt hat, damit sich die Entwicklung von Smart Contracts mehr wie eine traditionelle Entwicklung anfühlt, trägt zu ihrer Attraktivität für Neueinsteiger in die Blockchain-Entwicklung bei, aber genau diese praktischen Funktionen sind es, die es schwierig machen, die EVM global zu skalieren, da jede EVM komplexe Berechnungen durchführen muss, um einen Smart-Contract-Funktionsaufruf zu verarbeiten. Die Beseitigung all dieses zusätzlichen Ballasts ist der Schlüssel dafür, wie Bitcoin auf Millionen von Transaktionen pro Sekunde skalieren kann, während es parallel verarbeitet wird, was für ein globales System erforderlich ist.
Fazit
Als Starthilfe-Entwicklungstool für ETH-Entwickler, die das Schreiben von Smart Contracts auf BSV erkunden möchten, ist dieses Tool unverzichtbar. Es wird wahrscheinlich als „erstes Bad im Pool“ für viele Entwickler sehr beliebt sein, die ihre Karriere mit dem Schreiben von Programmen an der ETH begonnen haben, aber wenn die Leute nach einer „Black-Box- Lösung“ suchen, werden sie möglicherweise enttäuscht sein. Dies ist nur ein Lernwerkzeug, das erfahrenen Programmierern helfen soll, in „Bitcoin-Art“ zu denken, und nicht, um einfach alle ihre Programme automatisch umzuwandeln, wie es ein Transpiler normalerweise tun würde. In diesem Sinne wäre es besser, dieses Tool als Syntaxkonverter zu bezeichnen, und dafür leistet es ziemlich gute Arbeit.
/Jerry Chan
Sehen Sie sich hier Tag 1 der BSV Global Blockchain Convention Dubai 2022 an:
Sehen Sie sich hier Tag 2 der BSV Global Blockchain Convention Dubai 2022 an:
Sehen Sie sich hier Tag 3 der BSV Global Blockchain Convention Dubai 2022 an: