Software Canisters – sichere und skalierbare Smart Contracts

Die Funktions- und Leistungsmerkmale von Canisters gehen weit über Smart Contracts hinaus und ermöglichen skalierbare Softwaredienste.

Kategorisiert in Wissen

Der Internet Computer ist die weltweit erste öffentliche Blockchain mit Webgeschwindigkeit im Internet-Maßstab. Es ermöglicht ein nahtloses Software-Ökosystem, in dem verschiedene Apps und Programme miteinander kommunizieren können. Ermöglicht wird dies maßgeblich durch die Software Canisters. Für das einmalige Model dieser Canister Einheiten wurden die Vorteile und Funktionen verschiedener Technologien und Konzepte kombiniert.

Was ist ein Software Canister?

Software Canisters sind die Recheneinheiten des Internet Computers. Er ähnelt zum Teil einem klassischen Canister, wie man sie von anderen Softwarelösungen kennt. Denn beide sind als Softwareeinheiten konzipiert. Diese Lösung erlaubt es dem Internet Computer DApps bereitzustellen, die von ihrer Umgebung unabhängig sind. Auf diese Weise sind Anwendungen einfach und zuverlässig überall zugänglich.

Die Software Canisters von Dfinity enthalten neben dem Programmcode auch den Softwarestatus. Dieser Status enthält alle Informationen der vorangegangenen Ereignisse und Benutzerinteraktionen. Dieses Konzept von Programm- und Statusinformationen ist für den Internet Computer besonders wichtig. Es erlaubt dem Internet Computer eine höhere Skalierbarkeit.

Ein Software Canister ist eine interoperable Recheneinheit. Sie kann sowohl Programmdaten als auch Statusinformationen enthalten.

Quelle: Kai Schiller

Ein Software Canister kann entweder offen, also für alle Nutzer zugänglich, oder privat sein. Für einen privaten Canister müssen mehr Cycles bereitgestellt werden. Ein Cycle ist die Rechenressource des Internet Computers. Denn die Ausführung von Canistern erfordert CPU-Leistung für die Ausführung, Internet Bandbreite für das Routing sowie Speicherplatz für die persistenten Daten. Jeder Canister verfügt über einen eigenen Kontostand, mit dem die Kosten der Anwendung gedeckt werden. Diese kosten werden in Cycle Einheiten ausgedrückt.

Die aktuelle Größe eines Software Canister beträgt 4 GB und wird bald auf 300 GB erhöht. Zur Freude aller Entwickler.

Internet Computer Hierarchie
Internet Computer Hierarchie @dfinity.org

Software Canister sind mehr als Smart Contracts

Wer bereits das Konzept der Blockchain kennengelernt hat, der denkt bei Software Canisters an Smart Contracts. Zum Teil stimmt diese Assoziation auch. Denn ebenso wie die Smart Contracts von Ethereum wird ihre Ausführung durch ein sicheres Protokoll geregelt, dem Internet Computer Protocol (ICP). Außerdem ist ihre Ausführung vollständig deterministisch, sodass der Status eines Canisters auf der Blockchain festgehalten und so kryptografisch sicher überprüft werden kann. Software Canisters verfügen damit über alle Funktionen herkömmlicher Smart Contracts. Doch ihre Funktions- und Leistungsmerkmale gehen weit darüber hinaus und ermöglichen ihnen skalierbare Softwaredienste zu erstellen.

Zum Teil verfügen Software Canisters auch über Eigenschaften eines Actors im Actor Model. Dieses Konzept wurde vom Informatiker Carl Hewitt entwickelt. Es handelt sich dabei um ein mathematisches Modell der gleichzeitigen Berechnung, bei dem ein Akteur als Reaktion auf eine Nachricht seinen lokalen oder privaten Status ändern, Nachrichten senden und weitere Akteure erstellen kann. In den folgenden Punkten ähneln Software Canisters einem Actor:

  • Der private Status eines Canisters kann nur von ihm selbst geändert werden.
  • Es gibt nur einen einzelnen Ausführungsthread, sodass keine lock-based Synchronisation erforderlich ist.
  • Canister können über asynchrone Nachrichten miteinander kommunizieren und neue Software Canisters erstellen.
  • Ähnlich wie ein Actor verfügt auch ein Canister über eine eigene Anschrift zum Empfangen von Nachrichten. Bei einem Software Canister ähnelt sie einer IPv6-Adresse.

Es gibt jedoch auch Unterschiede zwischen einem Actor und einem Software Canister. Der wichtigste Unterschied besteht darin, dass Canister auf der Internet Computer Blockchain Nachrichten in beide Richtungen weiterleiten können. Diese Funktion ist ein wesentlicher Bestandteil für die Skalierbarkeit von Canistern auf dem Internet Computer.

Das Aktoren Model deckt, ebenso wie der Smart Contract Vergleich, nicht alle Funktionen und Merkmale eines Software Canisters ab. Denn in einigen Punkten ist ein Canister auch vergleichbar mit einem Prozess in einem Betriebssystem vergleichbar. Der Internet Computer übernimmt dabei die Aufgaben des Betriebssystem, dazu gehört zum Beispiel:

  • Planung und Ausführung von Canistern, sobald sie benötigt werden.
  • Grenzen setzen für den benötigten Speicherplatz eines Software Canisters
  • Der Internet Computer verwaltet, ähnlich wie ein Betriebssystem, den Status des Canisters. Doch im Gegensatz zum Betriebssystem verfolgt es die Cycles, ausstehende Aufrufe und Berechtigungen des Canisters.
  • Ähnlich wie ein Betriebssystem Funktionen für Prozesse bereitstellt, die es ihnen ermöglicht, spezielle Operationen auszuführen, kann der Internet Computer dem Software Canister APIs zur Verfügung stellen. Das erlaubt es den Software Canisters unter anderem Zahlungen zu tätigen, andere Canister aufzurufen, sie zu erstellen und zu verwalten, die Systemzeit abzurufen und vieles mehr.

Software Canisters unterscheiden sich jedoch in einem wichtigen Punkt von einem Prozess. Denn ein Canister kann sich über verschiedene Knoten innerhalb eines Subnets kopieren. Das bietet einen entscheidenden Vorteil Denn wenn ein Prozess ausfällt oder fehlerhaft ist, stürzt das System ab. Bei einem Canister kann das nicht passieren. Sein Status wird einfach auf den Zustand vor Beginn der Ausführung der aktuellen Nachricht zurückgesetzt. Dies ist ein wichtiger Punkt, um die reibungslose Funktion und Sicherheit von DApps auf der Internet Computer Blockchain zu gewährleisten.

Der ganze Umfang eines Software Canisters ist auch mit dem Vergleich zum Aktoren Model noch nicht vollständig. Denn einige wichtige Funktionen und Möglichkeiten der Canister werden damit noch nicht erklärt. Ein weiterer treffender Vergleich besteht zwischen Canistern und WebAssembly (Wasm) Modulinstanzen. Dabei ist es nicht nur ein Vergleich, denn tatsächlich ist Wasm die Methode, wie Canister auf dem Internet Computer implementiert werden.

Technisch betrachtet, handelt es sich beim Code des Canisters um einen WebAssembly-Modul. Es importiert die System-API und damit die vom Internet Computer bereitgestellte Funktionalität. Außerdem sind Software Canister in der Lage eine eigene API zu exportieren, die von anderen Canistern abgerufen werden können. Die Einführung von Wasm Modulen bietet dem Internet Computer mehrere Vorteile:

  • Software Canisters können in jeder Sprache geschrieben werden, die mit WebAssembly erstellt werden kann. Dabei können Canister mit verschiedenen Sprachen sogar ohne Einschränkungen miteinander interagieren.
  • Wasm ist deterministisch, mit Ausnahme einiger Randfälle, die leicht auszuschließen sind.
  • Es bietet eine formale Semantik.

Dfinity plant außerdem eine Weiterentwicklung der WebAssembly-Spezifikation. Damit sollen noch weitere Funktionen für Software Canisters möglich sein. Unter anderem gehört dazu die Unterstützung mehrerer Module in einem einzigen Canister. Über einen längeren Zeithorizont erwarten wir für zusätzliche Sicherheit durchgängig formell verifizierte WebAssembly-Ausführungsumgebungen.

Video: Introducing Canisters
*Mit dem Laden des Videos akzeptieren Sie die Datenschutzerklärung von YouTube. Mehr erfahren

Software Canisters installieren und steuern

Der erste Schritt besteht darin, einen neuen Canister zu erstellen. Dieser neue Software Canister ist anfangs eine leere Hülle und enthält keinerlei Informationen. Er wird sofort einem Subnet zugeordnet und erhält einen Canister Controller. Dabei kann es sich um eine Person oder auch einen anderen Canister handeln. In diesem Fall spricht man vom Programmatic Canister Management. Der Canister Controller darf als einziger Code auf dem Software Canister installieren oder verwalten. Außerdem ist er in der Lage den Status zurückzusetzen und die Kontrolle über den Canister auf eine andere Person oder Canister zu übertragen.

Sobald ein Software Canister erstellt und einem Subnet zugeordnet wurde, kann der Canister Controller Code installieren. Die Währung der Software Canisters im Internet Computer heißen Cycles. Jeder Canister verfügt über einen eigenen Cycles Account. Er zeichnet auf, wie viele Cycles ein Canister noch besitzt. Diese Informationen werden vom System als Metainformationen für den Kanister verwaltet.

Canisters: Query Calls
Canisters: Query Calls @dfinity.org

Das Konzept von Status- und Programminformationen innerhalb der Software Canisters ist für die Interaktion mit ihnen von besonderer Bedeutung. Denn es erlaubt dem Nutzer auf verschiedene Arten mit den Canistern zu interagieren. Es gibt dabei zwei Arten von Aufrufen: Query Calls und Update Calls.

Der Query Call erlaubt es dem Benutzer, den aktuellen Status oder eine Funktion des Software Canisters abzurufen. Er ruft den Status des Canisters an und verarbeitet ihn, ohne eine Änderung vorzunehmen. Diese Anfrage kann an jeden beliebigen Knoten gesendet werden, der den Canister enthält. Query Calls benötigen keinen Konsens und werden sofort beantwortet.

Canisters: Update Calls
Canisters: Update Calls @dfinity.org

Im Gegensatz dazu erlauben Update Calls dem Benutzer, den Status eines Software Canisters zu ändern. Dabei ist diese Änderung jedoch permanent und wird auf der Blockchain abgespeichert. Diese Anfragen werden asynchron beantwortet und müssen einen Konsens durchlaufen. Aus diesem Grund kann ein Update Call, im Vergleich zum Query Call, etwas mehr Zeit in Anspruch nehmen. Diese Einteilung ermöglicht es den Internet Computer zu entlasten. Dies ist für die Skalierbarkeit der Software Canisters von entscheidender Bedeutung.

Fazit

Software Canisters bieten eine elegante und gleichzeitig sehr effiziente Lösung für die Bereitstellung von DApps, Funktionen und anderen Diensten auf dem Internet Computer. Die Kombination verschiedener Konzepte und technischer Modelle wie dem Aktor Modell, Prozesse, Smart Contracts und WebAssembly bieten viele Vorteile. Der Internet Computer kann mit Webgeschwindigkeit arbeiten und bietet ein gutes Gleichgewicht zwischen Sicherheit und Effizienz. Außerdem erlaubt WebAssembly die Integration verschiedener Programmiersprachen, Benutzeroberflächen und erleichtert damit den Einstieg und die Anwendung von Software Contracts für Benutzer und Software-Entwickler gleichermaßen.

Artikel teilen:

Von Kai Schiller

Kai Schiller ist der Gründer von internet-computer.de - Aufbauend auf seinen Kernkompetenzen Digital-Wirtschaft, Blockchain und DLT - gehört seine Leidenschaft der Planung, Umsetzung und Steuerung von neuen Projekten. Erreichbar über LinkedIn