Grundlegendes: WASM vs. EVM und warum Aleph Zero die neue Grenze erforscht

Shelby
7 min readJun 3, 2023

Nun, da Smart Contracts im Aleph Zero Mainnet funktionieren, wollen wir uns mit WASM und EVM beschäftigen, den beiden beliebtesten Laufzeitumgebungen, die die Implementierung dieser Technologie auf der Blockchain ermöglichen.

Intelligente Verträge (Smart Contracts) sind eine der aufregendsten Entwicklungen der letzten Jahre. Sie ermöglichen es Nutzern, personalisierte Anwendungsfälle zu schaffen, deren Ausführung ohne jede Art von institutionellem Vermittler oder Zwischenhändler erfolgt. Bei diesen Verträgen handelt es sich um spezialisierte Codes, die von den Nutzern bei Bedarf ausgeführt werden können. So können beispielsweise zwei Parteien mit Hilfe eines intelligenten Vertrags einen Immobilientausch vornehmen.

In diesem Szenario legt der Smart Contract alle Bedingungen für den Abschluss des Geschäfts fest. Sobald die im Voraus festgelegten Bedingungen erfüllt sind, wird die Immobilie den Besitzer wechseln. Der gesamte Prozess wird durch die Anwendung des Smart Contracts abgeschlossen, ohne dass Immobilienmakler, Rechtsanwälte oder Banken involviert sind. Um Smart Contracts zu ermöglichen, ist eine Laufzeitumgebung erforderlich, die als virtuelle Maschinen bekannt ist und in der sie ausgeführt werden können. Wir werden uns die beiden populärsten ansehen, die Ethereum Virtual Machine (EVM) und WebAssembly (WASM).

Die Bausteine von Smart Contracts

Bevor wir uns in die ganze Debatte über EVM versus WASM stürzen, sollten wir den Mechanismus erklären, der intelligente Verträge möglich macht. Dieser Mechanismus besteht aus den folgenden Elementen:

  1. Die Smart Contract Sprache, in der der Contract geschrieben ist, z. B. Solidity, Vyper, ink!
  2. Der Compiler übersetzt den Code in den eigentlichen Smart Contract. Diese Liste von Anweisungen, die den Smart Contract enthält, wird Bytecode genannt und muss einem bestimmten Standard entsprechen, um ausführbar zu sein. Diese Regeln sind im Standard der virtuellen Maschine festgelegt;
  3. Dieser Bytecode wird schließlich in die Blockchain hochgeladen, wo er gespeichert wird. Wenn ein Nutzer einen Smart Contract aufruft, wird das entsprechende Stück Bytecode in die Ausführungsumgebung geladen (eine virtuelle Maschine, die in der Lage ist, diese bestimmte Art von Bytecode auszuführen), in der die Anweisungen, die diesen Aufruf bilden, ausgeführt werden.

Die Sprachen hinter Smart Contracts

Solidity

Solidity ist eine der Programmiersprachen, mit der wir intelligente Verträge programmieren können. Sie ist die Grundlage, auf der die Ethereum-Blockchain aufgebaut ist, und ist die beliebteste Smart-Contract-Sprache, die derzeit verwendet wird. Einige der Vorteile von Solidity sind folgende:

  • Solidity bietet Vererbungseigenschaften für ihre Verträge, einschließlich Vererbungseigenschaften auf mehreren Ebenen;
  • Es ist im Vergleich zu einer eDSL (eingebetteten domänenspezifischen Sprache) wie ink! aufgrund der Ähnlichkeit von Solidity mit anderen beliebten Hochsprachen wohl einfacher zu erlernen.
  • Solidity unterstützt eine große Auswahl an typsicheren Funktionen, indem es eine ABI (Application Binary Interface) ermöglicht;
  • Solidity ist die Standardprogrammiersprache für Smart Contracts in der Ethereum-Blockchain, da sie ausschließlich für die Arbeit mit Ethereum entwickelt wurde. Dies führt zu einer beträchtlichen Unterstützung durch eine große Gemeinschaft, die viele der anfänglichen Fehler behoben und eine benutzerfreundlichere / entwicklungsfreundliche Umgebung geschaffen hat.

ink!

Die Aleph-Zero-Smart-Contract-Palette nutzt ink!, eine in Rust eingebettete domänenspezifische Sprache (eDSL), die nach WASM kompiliert wird. Diese Sprache wurde speziell für das Schreiben von Smart Contracts für die von Parity Technologies entwickelte FRAME Contracts-Palette entwickelt.

Der Hauptvorteil von ink! ist, dass es ein sehr offenes Ökosystem für Entwickler bietet, da es einfach auf Rust aufbaut, anstatt eine neue Sprache von Grund auf zu schaffen. Dies macht es für Veteranen und Neulinge einfacher, ohne Verzögerung mit der Erstellung von Smart Contracts zu beginnen. Neben ink! verwendet Aleph Zero auch die von Parity Technologies vorgeschlagene cargo-contracts-Lösung, ein CLI-Tool, das Ihnen bei der Entwicklung von Smart Contracts in ink! hilft.

Hier sind die Hauptgründe, warum wir uns für ink! entschieden haben:

  • Ink! verfügt über Typ- und Speichersicherheit, was Überläufe verhindert;
  • Vorhandene Werkzeuge für Rust funktionieren für ink!
  • Bestehende Bibliotheken können verwendet werden, wenn sie mit dem no_std-Feature kompiliert werden können — dies ist einer der großen Vorteile von ink!
  • Vererbung durch Verwendung von Rust’s Traits.

Was ist EVM?

EVM ist eine von Dr. Gavin Wood entwickelte Lösung, die es der Ethereum-Blockchain ermöglicht, Smart-Contract-Funktionen zu hosten. Aus technischer Sicht hat der EVM-Aufrufstapel eine Tiefe von 1024 Elementen, und jedes Element ist ein 256-Bit-Wort. Diese Zahlen haben weitreichende Auswirkungen, denn die Obergrenze von 1024 Elementen bedeutet, dass der Komplexität von EVM-Smart Contracts Grenzen gesetzt sind. Was die Sache noch komplizierter macht, ist die Tatsache, dass alle Operationen 256-Bit sind, was bedeutet, dass unsere Prozessoren, die in der Regel 32- oder 64-Bit sind, diese 256-Bit-Anweisungen unter Verwendung ihrer tatsächlichen Registergrößen (32/64-Bit) simulieren müssen. Die wichtigste Folge dieser Tatsache ist der Leistungsverlust, der mit der Notwendigkeit einer solchen Simulation einhergeht.

Eine weitere Herausforderung für EVM ist die Tatsache, dass es außer Solidity nur eine Handvoll Sprachen gibt, die sich in EVM-Bytecode kompilieren lassen, und keine von ihnen hat nennenswerte Popularität erlangt. Da der EVM-Bytecode von Grund auf entwickelt und bereitgestellt wurde, bedeutet dies, dass jeder, der eine andere Sprache für die Arbeit in diesem Ökosystem einsetzen möchte, einen Compiler von Grund auf neu entwickeln müsste. Dies schränkt die Erweiterbarkeit der von EVM vorgeschlagenen Lösung ein. Außerhalb der grundlegendsten Smart-Contract-Anwendungen hat die native Auflösung von Ethereum in den letzten Jahren begonnen, ihre Grenzen aufzuzeigen. Positiv zu vermerken ist, dass Ethereum nach wie vor das zweitgrößte Blockchain-Ökosystem der Welt ist, mit unzähligen Anwendungen, die auf dem Netzwerk aufbauen. Dies hat zu einem gesunden Ökosystem für Entwickler geführt, die mit EVM und Solidity arbeiten.

Einführung in die WASM

Der Hauptkonkurrent von EVM ist WASM, ein portables Binärcodeformat und ein entsprechendes Textformat für ausführbare Programme. Es wurde als offener Standard und hochgradig modulare Umgebung für die Erstellung von Anwendungen auf Webseiten entwickelt, mit dem Vorbehalt, dass das System keine webspezifischen Annahmen macht oder webspezifische Funktionen bietet. Dies macht es perfekt für die Anwendung in einer Vielzahl von Szenarien.

Ein Beweis für die Qualität dieser Umgebung ist die kontinuierliche Unterstützung und Weiterentwicklung durch die Mitglieder der W3C-Arbeitsgruppe, zu der so bekannte Namen wie Google, Mozilla, Apple und andere gehören.

Die Gründe für die Verwendung von ink! und WASM durch Aleph Zero

Eine technische Analyse — WASM

Einer der Hauptvorteile von WASM ist die Flexibilität, die es hinsichtlich der Sprachauswahl bietet, die ein Entwickler von Smart Contracts beim Programmieren verwenden kann. Diese beeindruckende Liste umfasst Rust, C/C++, C#, Typescript, Haxe und Kotlin. Diese Auswahl ermöglicht es Entwicklern, Smart Contracts in der Sprache zu schreiben, mit der sie sich am wohlsten fühlen. Ein interessanter Aspekt ist die Tatsache, dass es Tools (Solang) gibt, die Solidity nach WASM kompilieren können, sodass man im Prinzip Solidity-Verträge auf Aleph Zero schreiben könnte. Das Team hinter Aleph Zero hat aus mehreren Gründen in Rust gearbeitet, unter anderem wegen des fehlenden Laufzeit-Overheads und der inhärenten Sicherheitseigenschaften.

Die Vorteile von WASM sind folgende:

  • Es ist memory-safe, sandboxed und plattformunabhängig;
  • Die Umgebung unterstützt 64- und 32-Bit-Integer-Operationen, die eins-zu-eins auf CPU-Befehle abgebildet werden;
  • Floating point operations wurden entfernt, was notwendig ist, um eine deterministische Ausführung zu erzwingen;
  • Es wird vom LLVM-Compiler-Infrastrukturprojekt unterstützt. Das bedeutet, dass WASM die Vorteile von mehr als einem Jahrzehnt der LLVM-Compileroptimierung nutzt.

Warum WASM und ink! Ideal für Smart Contracts sind?

Es gibt mehrere wichtige Gründe, warum wir uns bei Aleph Zero für das Tandem aus WASM und ink! entschieden haben. Die wachsende Popularität von WASM und ink! hat zu einem gesunden, wachsenden Ökosystem geführt, das sich ständig weiterentwickelt und seine Funktionalität verbessert, wodurch es einfacher und schneller wird, Smart Contracts zu implementieren. Die schlanke Natur dieser beiden Systeme macht sie frei von undefinierten Verhaltensweisen, und ihr geringes Gewicht macht sie leichtgewichtig und CPU-freundlich. Sie verfügen auch über Funktionen, die toten Code entfernen, und durch Compiler-Flags können sie sich vor Integer-Überlauf schützen. Außerdem verfügen sie über zahlreiche Tools, die die Programmierung vereinfachen, wie rustfmt, clippy und rust-analyzer.

Aleph Zero und Smart Contracts

Smart Contracts sind eine der Grundlagen des dezentralisierten Internets, daher ist es von größter Bedeutung, dass der technologische Stack, der sie unterstützt, sowohl flexibel als auch gastfreundlich für Entwickler aller Hintergründe ist, die daran interessiert sind, den Web3-Raum zu erkunden. Das Team hinter Aleph Zero ist zuversichtlich, dass unsere Entscheidung, den WASM-Standard in Kombination mit Rust und ink! zu nutzen, zu einem Ökosystem führen wird, das in den kommenden Jahren eine aufregende Spielwiese für innovative Smart-Contract-Anwendungsfälle bieten wird — und damit einen erheblichen realen Wert.

Original: https://alephzero.org/blog/fundamentals-wasm-evm-aleph-zero-explores-new-frontier/

--

--