Move (für Aptos, Sui) Börsenlexikon Vorheriger Begriff: MoonPay Nächster Begriff: Multisignature-Wallet-Technologie

Eine Rust-basierte Programmiersprache, die für sichere und effiziente Smart-Contract-Entwicklung auf Blockchains wie Aptos und Sui optimiert ist, mit Fokus auf Ressourcenknappheit und Zugriffskontrolle

Move ist eine speziell für Blockchain-Anwendungen entwickelte Programmiersprache, die ursprünglich im Kontext des inzwischen eingestellten Projekts Diem (ehemals Libra, Facebook/Meta) entstanden ist. Seit dem Ende von Diem wurde Move von mehreren unabhängigen Blockchain-Projekten übernommen und weiterentwickelt, insbesondere von Aptos und Sui, die jeweils eigene, aber verwandte Versionen der Sprache einsetzen. Move wurde mit dem Ziel entwickelt, sichere, flexible und ressourcenkontrollierte Smart Contracts zu ermöglichen. Die Sprache unterscheidet sich konzeptionell deutlich von bestehenden Smart-Contract-Sprachen wie Solidity (Ethereum) oder Rust (Solana).

Grundprinzipien und Designziele

Move wurde unter folgenden Leitprinzipien entworfen:

  1. Sicherheit durch Typsysteme: Das Move-Typsystem verhindert systematisch Klassen von Programmierfehlern, insbesondere im Umgang mit Ressourcen (z. B. Tokens, NFTs).

  2. Ressourcentypen als First-Class Citizens: Ressourcen sind spezielle Datentypen, die nicht dupliziert oder ohne Weiteres gelöscht werden können, was sie besonders geeignet für digitale Vermögenswerte macht.

  3. Deterministisches Verhalten: Smart Contracts in Move verhalten sich stets vorhersehbar. Zufallsfunktionen oder externe Zustände, die zu Inkonsistenzen führen könnten, sind ausgeschlossen.

  4. Formale Verifizierbarkeit: Die Sprache wurde so konzipiert, dass formale Methoden zur Sicherheitsanalyse und Fehlerfreiheit von Programmen unterstützt werden.

Diese Merkmale machen Move besonders geeignet für Blockchains, die Wert auf hohe Transaktionssicherheit, Auditierbarkeit und effizientes Ressourcenmanagement legen.

Ressourcentypen und Speicherverwaltung

Ein zentrales Konzept von Move ist der sogenannte Ressourcentyp (engl. resource). Eine Ressource in Move:

  • kann nicht kopiert werden (kein „Copy“)

  • kann nicht implizit gelöscht werden

  • muss explizit bewegt („moved“) oder zerstört („destroyed“) werden

  • existiert immer nur einmalig in einem Speicherort

Dies entspricht der ökonomischen Realität digitaler Werte: Eine Münze (z. B. 1 XUS) kann nicht gleichzeitig an zwei Stellen existieren und muss bei einer Transaktion eindeutig übertragen werden. Das Typsystem von Move erzwingt diese Logik auf Codeebene und schützt dadurch vor typischen Fehlern wie Double-Spending, versehentlichem Löschen oder unbeabsichtigtem Duplizieren von Vermögenswerten.

Ressourcen werden im Account Storage eines Nutzers gespeichert. Jeder Account hat eine eigene strukturierte Ablage für Ressourcen, was den Zugriff und die Verwaltung vereinfacht.

Sprachstruktur und Module

Programme in Move bestehen typischerweise aus Modulen, die Funktionen, Datentypen und Ressourcen definieren. Diese Module können in die Blockchain hochgeladen und dann von anderen Programmen oder Nutzern verwendet werden.

Beispielhafte Modulstruktur:

module MyToken::Coin {
    resource struct T {
        value: u64
    }

    public fun mint(account: &signer, amount: u64) {
        move_to(account, T { value: amount });
    }

    public fun balance(account: address): u64 {
        borrow_global<T>(account).value
    }
}

In diesem Beispiel wird eine eigene Coin-Ressource definiert und durch die Funktion mint in einen Nutzeraccount geschrieben. Die Funktion balance ermöglicht das Abfragen des Kontostands.

Besonderheiten der Sprache:

  • &signer: ein spezieller Typ für autorisierte Accounts

  • move_to und borrow_global: Sprachfunktionen für die Manipulation von Ressourcen im globalen Speicher

  • Keine klassische Vererbung oder objektorientierte Konzepte, sondern ein datenzentriertes, modulares System

Unterschiedliche Implementierungen in Aptos und Sui

Sowohl Aptos als auch Sui verwenden Move, verfolgen jedoch unterschiedliche technische Umsetzungen und Erweiterungen:

Aptos Move

Aptos verwendet eine Variante namens Aptos Move, die sich eng an die ursprüngliche Diem-Version anlehnt. Typische Merkmale:

  • Starke Betonung auf Parallelisierung durch Block STM (Software Transactional Memory)

  • Unterstützung für Account-spezifische Module und Upgrades

  • Fokus auf maximale Durchsatzraten und Latenzreduktion

  • Offizielles Tooling über die Aptos CLI und das Move Prover-Verifikationssystem

Aptos Move zielt darauf ab, möglichst sichere, gleichzeitig ausführbare Smart Contracts zu ermöglichen und gleichzeitig eine stabile Grundlage für institutionelle und skalierbare Anwendungen zu bieten.

Sui Move

Sui Move ist eine angepasste Version von Move, die bei der Sui-Blockchain zum Einsatz kommt. Die Unterschiede zu Aptos Move sind strukturell und funktional bedeutsam:

  • Einführung eines objektorientierten Modells: Ressourcen werden als Objekte mit eindeutiger ID behandelt und können einzeln oder in Gruppen manipuliert werden.

  • Direkte Unterstützung für Mutable Ownership, Shared Objects und Upgrades

  • Starke Integration von NFTs, Gaming-Anwendungen und zustandsabhängigen Operationen

  • Transaktionen auf Objektbasis, was eine feinkörnige Parallelisierung erlaubt

Sui nutzt Move vor allem zur Modellierung komplexer Objektbeziehungen, etwa bei In-Game-Assets oder interaktiven Anwendungen mit vielen Zustandsänderungen.

Sicherheitsmechanismen und formale Verifikation

Move wurde gezielt mit Blick auf formale Verifizierbarkeit entworfen. Mit Hilfe des Move Prover können Entwickler mathematisch beweisen, dass bestimmte Eigenschaften ihres Codes unter allen Bedingungen gültig bleiben, z. B.:

  • eine Ressource darf niemals verloren gehen

  • eine Funktion verändert keinen unerlaubten Zustand

  • ein Token kann nicht ohne Berechtigung übertragen werden

Diese Eigenschaften sind besonders relevant für Anwendungen mit finanziellen oder rechtlichen Implikationen, da sie die Sicherheit und Integrität des Codes nachweislich erhöhen.

Tooling und Entwicklungsumgebung

Für Move stehen verschiedene Tools zur Verfügung, darunter:

  • Move CLI: Befehlszeilentool zum Kompilieren, Testen und Verifizieren von Modulen

  • Move Package Manager: Zum Verwalten und Veröffentlichen von Bibliotheken und Modulen

  • Move Prover: Tool zur formalen Verifikation von Programmeigenschaften

  • Aptos CLI / Sui CLI: Blockchain-spezifische Tools für Deployments, Testnet-Interaktionen und Wallet-Verwaltung

  • Move Playground: Online-Editor für das Experimentieren mit Move-Code (für Lernzwecke)

Fazit

Move ist eine moderne, speziell für Blockchain-Anwendungen entwickelte Programmiersprache, die durch ihr einzigartiges Ressourcenmodell, ein starkes Typsystem und formale Verifizierbarkeit überzeugt. In ihrer ursprünglichen Form für das Diem-Projekt entworfen, wurde Move von Aptos und Sui übernommen und weiterentwickelt, wobei beide Blockchains unterschiedliche technische Schwerpunkte setzen. Aptos fokussiert auf Sicherheit und Durchsatz, während Sui die Objektorientierung und Interaktivität betont. Move ist besonders geeignet für Anwendungen, bei denen Sicherheit, Transparenz und präzise Ressourcenkontrolle eine zentrale Rolle spielen.