ink! 3.0: Paritys Rust-basierte Sprache für WASM Smart Contracts erhält ein großes Update

ink!, die Rust-basierte Programmiersprache von Parity zum Schreiben von Web Assembly (Wasm) Smart Contracts, hat gerade ihr bisher größtes Update veröffentlicht. ink! wird von Entwicklern im Polkadot- und Substrate-Ökosystem verwendet, um effiziente, leistungsstarke Smart Contracts und dezentralisierte Anwendungen für virtuelle Maschinen basierend auf Wasm zu erstellen, die eine Alternative zu Ethereum-basierten (EVM/Solidity) Smart-Contract-Systemen darstellen.

Substrate, das Framework für den Aufbau eigener Polkadot-kompatibler und eigenständiger Blockchains, enthält modulare Bausteine typischer Blockchain-Komponenten, die den Aufbau einer Blockchain für Entwickler einfacher und schneller gestalten. Diese Bausteine werden als Paletten bezeichnet. Die Palettenbibliothek von Substrate enthält die Palette "Contracts", die es Entwicklern ermöglicht, Wasm-basierte Smart-Contract-Funktionen in ihre Blockchain einzubauen. ink!, eine Erweiterung der Programmiersprache Rust, ermöglicht es Entwicklern, Smart Contracts für Blockchains zu schreiben, die die Contracts-Palette nutzen.

Für die neueste Version von ink! wurden alle wichtigen Komponenten der Vorgängerversion ink! 2.0 weiterentwickelt. In diesem Zeitraum haben viele Teams Wasm Smart Contracts mit ink! entwickelt, und dank ihrer Beiträge und ihres Feedbacks hat sich das Projekt im Vergleich zu früheren Versionen deutlich weiterentwickelt.

Abgesehen von der Bereitstellung von ink! 3.0 haben wir auch die Contracts-Palette verbessert, um die Parachain-Leistung zu steigern, und einige neue Funktionen hinzugefügt, um die vertragsübergreifenden Aufrufe und die Leistung zu verbessern, so dass es für Entwickler viel einfacher geworden ist, komplexere Logik zu schreiben. Schließlich wurden durch die Veröffentlichung von cargo-contract 1.0 auch einige Änderungen an den Entwickler-Tools vorgenommen.

Warum Rust und Wasm?

Wir bei Parity sind große Fans von Rust und haben es verwendet, um die erste Implementierung von Polkadot zu schreiben. Rust ist eine fortschrittliche und hocheffiziente Programmiersprache, bei der Korrektheit im Vordergrund steht und die dabei hilft, Softwarefehler zu vermeiden. Sie wird von einer starken Community und großen Unternehmen wie Mozilla, Google, Microsoft und Amazon unterstützt.

Die Verwendung von Rust als Basis für ink! bietet uns die garantierte Korrektheit durch die Stringenz des Rust-Compilers und ermöglicht es uns, alle Verbesserungen, die im Rust-Ökosystem vorgenommen werden, kostenlos zu integrieren. Diese Verbesserungen können von weiteren Optimierungen im Compiler bis hin zu nützlichen Bibliotheken von Drittanbietern reichen. Erfahren Sie hier mehr darüber, warum Rust besonders für Smart Contracts geeignet ist.

Wasm ist eine weitere Technologie, die aus mehreren Gründen eine Schlüsselrolle im Design von Polkadot spielt. Wasm ist schnell, sicher, leichtgewichtig, leistungsstark und effizient in der Ausführung, da es so nah wie möglich am Maschinencode entwickelt wurde. Es ist in Webbrowsern ausführbar und erleichtert so die Innovation dezentraler Anwendungen, die auf Benutzerfreundlichkeit und breite Akzeptanz ausgelegt sind. Wasm ermöglicht es uns, von der breiten Akzeptanz zu profitieren, da es auch von großen Unternehmen genutzt wird und eine große Community von Programmierern hat. Dadurch können wir auch alle Vorteile von Verbesserungen am Compiler und ein ganzes Ökosystem an Tools nutzen, das mit der Zeit wachsen wird.

Wasm erweitert die Anzahl der Sprachen, in denen Smart Contracts geschrieben werden können, einschließlich Go, C/C++ und natürlich Rust. Wir glauben, dass Wasm die Zukunft der Smart-Contract-Infrastruktur und -Anwendungen darstellt und eine Verbesserung gegenüber den Systemen der vorherigen Generation ist, da es all diese Vorteile bietet.

Erfahren Sie hier mehr darüber, warum Wasm besonders für Smart Contracts geeignet ist.

ink! 3.0

Die Hauptidee hinter ink! 3.0 ist, dass es genau wie Rust aussieht und sich auch so verhält. Die Syntax von ink! wurde leicht verändert, um den generierten Rust-Code besser abzubilden. Was die Benutzer sehen, ist größtenteils das, was von ink! generiert wird. Die Syntax ist nun so gut wie identisch mit der Rust-Programmiersprache. Das hat den Vorteil, dass alle Tools, die die Rust-Entwickler kennen und lieben - wie rust-analyzer und Clippy - sofort funktionieren.

Abgesehen davon, dass es sich wie Rust verhält, wollen wir einen Blick auf die wichtigsten Änderungen werfen, die mit der Version 3.0 in ink! eingeführt wurden.

  • Trait-Unterstützung - Eine der am meisten erwarteten Funktionen von ink! 3.0 ist die Unterstützung von Rust-Traits, die eine noch bessere “Rusty-Entwicklungserfahrung” ermöglicht . Durch das neue prozedurale Makro #[ink::trait_definition] ist es nun möglich, eigene Trait-Definitionen zu definieren, die dann von ink! Smart Contracts implementiert werden können. Dies ermöglicht die Definition gemeinsamer Smart-Contract-Schnittstellen zu verschiedenen konkreten Implementierungen. Dies kann für die Definition von gemeinschaftlich definierten Vertragsstandards nützlich sein. Beachten Sie, dass diese ink! Trait-Definition überall definiert werden kann, sogar in einer anderen Gruppe!
  • Kleinere Vertragsgrößen - Kleinere Vertragsgrößen bedeuten bessere Leistung und weniger Gas-Kosten. Die bisherigen von ink! generierten Smart Contracts erreichten eine enorme Wasm-Codegröße, was dazu führte, dass der Transaktionsdurchsatz von Parachains eher durch die Bandbreite als durch die Rechenkomplexität begrenzt wurde. Eine der vielen Lösungen, die zur Verringerung der Größe von Smart Contracts in Betracht gezogen wurden, war die Verringerung der Größe der kompilierten Verträge.
  • Delegate Call - Die Erweiterung von delegate_call ermöglicht es Verträgen, einen Auftrag, den sie erhalten haben, an einen anderen Vertrag weiterzuleiten. Ein Anwendungsfall hierfür ist die Implementierung eines Proxy Upgrade Patterns für Smart Contracts.
  • Chain Extensions - Diese Funktion ermöglicht es Entwicklern, direkt von ihren Verträgen aus Substrate-Paletten aufzurufen und so das reichhaltige Ökosystem der Substrate-Entwicklung zu nutzen.

cargo-contract 1.0

Neben der Veröffentlichung von ink! 3.0 geben wir auch cargo-contract 1.0 frei. cargo-contract ist ein praktisches Entwickler-Tool zum Erstellen, Testen und Bereitstellen von ink!-Verträgen. Einige bemerkenswerte Aktualisierungen in dieser Version beinhalten:

  • Neue CLI-Befehle für die Interaktion mit Verträgen auf der Blockchain: upload, instantiate und call!

Das bedeutet, dass Benutzer nicht mehr durch eine Browser-UI klicken müssen, um mit ihrem Vertrag auf einer Blockchain zu interagieren, sondern sie können jetzt auch die Befehlszeile verwenden. Dies ebnet auch den Weg für Skripting und Integrationen in Continuous Integration-Umgebungen.

  • Linting-Regeln für ink! Smart Contracts - Durch die automatisierte Überprüfung des Quellcodes auf programmatische und stilistische Fehler erhalten ink!-Entwickler Warnungen vor häufigen Fehlern. In Zukunft wollen wir sukzessive eine Sammlung von Linting-Regeln für ink!-Verträge aufbauen. Wir denken dabei an Regeln, die Ihnen helfen, die Gas-Kosten zu senken, den Fußabdruck von Verträgen zu verkleinern, API-Nutzungsmuster zu korrigieren und auf Sicherheitslücken hinzuweisen.

Contracts-Palette von Substrate

Die Contracts-Palette ist die Ausführungsumgebung von Substrate für Wasm-Smart Contracts. Sie kann Smart Contracts in jeder Programmiersprache ausführen, die sich mit Wasm kompilieren lässt, solange die API der Contracts-Palette implementiert ist. ink! ist eine Sprache, die dies für Rust tut.

Frühere Versionen der Palette verwendeten State Rent als Mechanismus, um mit State Bloat umzugehen. In der letzten Iteration wurde die State Rent durch eine automatische Einforderung von Kautionen ersetzt. Zuvor musste ein Vertrag sicherstellen, dass er immer genug Guthaben hatte, um für seine Lagerung zu bezahlen. Andernfalls wurde er in einen deaktivierten Zustand versetzt, bis ihn jemand wieder aktivierte. Dies bedeutete eine Menge zusätzlicher Arbeit und Überlegungen bei der Vertragserstellung.

Im Rahmen des Systems, das wir "automatisches Einzugsverfahren" nennen, werden diese Kosten automatisch vom Abrufer eines Vertrags und nicht vom Vertrag selbst getragen. Der Abrufer eines Vertrags zahlt eine Kaution für jeden Vertrag, in dem aufgrund des ausgeführten Abrufs neuer Speicherplatz geschaffen wurde. In ähnlicher Weise erhält ein Abrufer eine Rückerstattung von allen Verträgen, auf denen der Auftrag Speicherplatz belegt hat.

Mit diesem neuen System wird die Möglichkeit, dass Verträge in einen inaktiven Zustand versetzt werden, vollständig beseitigt. Die Entwickler der Verträge sind jedoch nach wie vor bestrebt, so wenig Speicherplatz wie möglich zu verwenden und Wege zu finden, den Speicherplatz zu löschen, wenn er nicht mehr benötigt wird, um die Kosten für die Nutzung des Vertrags niedrig zu halten.

Dank an die ink! Community

Über viele Jahre und mehrere Versionen hinweg hat sich ink! weiterentwickelt, um das Ziel zu erreichen, wie Rust auszusehen und sich so zu verhalten. Zum jetzigen Zeitpunkt verfügt es über alle Funktionen, die Rust-Programmierer kennen und benötigen, um ihre Fähigkeiten zum Schreiben, Aktualisieren und Analysieren komplexer Smart Contracts weiter zu verbessern. Obwohl ink! nun eine umfassende Sprache ist, ist sie immer noch eine Sprache in der Entwicklung und vor allem ein auf die Community ausgerichtetes Projekt.

Dank der Beiträge der ink! Community hat sich ink! zu einer Sprache entwickelt, die den Anforderungen unserer gemeinsamen Zukunft gerecht wird.

Verfolgen Sie das Geschehen

Also, worauf warten Sie noch? Schauen Sie sich an, was es Neues gibt, und finden Sie heraus, was Ihnen an ink! gefällt.

Entwickler, die mehr über die Erstellung von Wasm Smart Contracts erfahren möchten, sollten sich die erste Wasm-Smart-Contracts-Konferenz ansehen, die am 31. Mai 2022 stattfindet und von der Community organisiert wird.

Regelmäßige Updates zum Thema Parity Smart Contracts finden Sie hier, und das ink! Repo hier. Sie können sich auch eine Anleitung für die ersten Schritte mit ink! ansehen, die ausführliche ink!-Dokumentation lesen und sich einige Live-Präsentationen über ink! (Video 1, Video 2) anschauen.

Erfahren Sie mehr über die Entwicklung im Substrate-Ökosystem unter substrate.dev, melden Sie sich für den Substrate Developer Newsletter an, nehmen Sie an den Substrate Seminar Community Calls teil und folgen Sie Substrate auf Twitter.


Original Artikel

0
aemonkPost author

Web3 is the future!

Das ist der offizielle WagMedia Space Germany! Hier werden interessante und lesenswerte DotSama-Artikel durch die Wag-Media community übersetzt und öffentlich zur Verfügung gestellt. Mitmachen? Trete unserem Discord bei und werde Teil der größten News Community im DotSama Universum.

0 comments

Das ist der offizielle WagMedia Space Germany! Hier werden interessante und lesenswerte DotSama-Artikel durch die... Show More