|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Move (Programmiersprache)
Was ist Move (Programmiersprache)?
Die Programmiersprache Move wurde ursprünglich zum Aufbau der Diem-Blockchain verwendet. Es wurde von der Diem Association gegründet, einem von Meta unterstützten Technologiekonsortium. Obwohl die Blockchain schließlich verworfen wurde, wird Move noch heute verwendet.
Die Programmiersprache Move ist eine ausführbare Bytecode-Sprache. Es implementiert intelligente Verträge und benutzerdefinierte Transaktionen. Move zielt darauf ab, Probleme zu beheben, die durch andere Blockchain-Programmiersprachen wie Solidity entstehen. Die grundlegenden Ziele der Erreichung digitaler Knappheit und der Kontrolle über digitale Vermögenswerte bleiben jedoch dieselben. Insbesondere zielt es auch darauf ab, doppelte Ausgaben zu verhindern und ermöglicht es den Inhabern digitaler Vermögenswerte, Eigentumsinformationen zu pflegen.
Dadurch maximiert Move die Sicherheit und behält gleichzeitig ein optimiertes Design und deutlich niedrigere Gaskosten bei als Blockchains, die nicht auf Move basieren.
Wie funktioniert die Programmiersprache Move?
Move verwendet lineare Logik, was bedeutet, dass Ressourcen nur einmal verwendet und niemals kopiert oder implizit verworfen werden können. Dadurch können Entwickler benutzerdefinierte Ressourcentypen kodieren, die nicht gelöscht oder dupliziert werden können und besser behandelt werden als andere.
Im statischen Typsystem von Move müssen Variablen als Typ (eine Zahl/ein Wort) definiert werden. Es schützt priorisierte Ressourcen. Dennoch können sie wie reguläre Elemente verwendet und in Datenstrukturen gespeichert oder als Werte in Berechnungen bereitgestellt werden. Auch in Modulen sind Ressourcen transparent und vor dem Abruf durch externe Quellen verborgen.
Darüber hinaus sind Module in Move flexibel und sicher, da die Beziehung zwischen Modulen, Ressourcen und Prozeduren der Beziehung zwischen Klassen, Objekten und Methoden in der objektorientierten Programmierung ähnelt.
Move kann auch alle Sicherheitsmerkmale in der Kette überprüfen und statische Überprüfungstools außerhalb der Kette unterstützen. Dies reduziert die Komplexität der On-Chain-Verifizierung erheblich. Sein Design basiert auf drei Kernentscheidungen:
Das Fehlen eines dynamischen Versands vermeidet die Erstellung von Anrufdiagrammen und ermöglicht die statische Bestimmung des Anrufstandorts. Dadurch kann Move die Auswirkungen eines Prozeduraufrufs einfacher und ohne zusätzliche Komplexität erkennen.
Dank seiner Modularität können Module zur Funktionsüberprüfung isoliert werden und helfen bei der Abstraktion von Daten und der Lokalisierung kritischer Vorgänge auf Ressourcen. Die Sicherheit wird durch die Kapselung des Moduls neben dem Typsystem der Sprache gewährleistet, was bedeutet, dass der Code außerhalb eines Moduls seine Typen nicht verletzen kann. Darüber hinaus wird durch die Untersuchung isolierter Module eine gründliche Funktionsüberprüfung für signifikante Modulinvarianten bereitgestellt.
Schließlich ermöglicht seine begrenzte Veränderbarkeit die Verwendung von Referenztypen ähnlich wie C++. Referenzen sind für die Mutation jedes Move-Werts von entscheidender Bedeutung. Normalerweise werden die temporären Werte innerhalb eines Transkriptionsskripts erstellt und zerstört. Ähnlich wie bei Rust führt der Bytecode-Verifizierer von Move „Borrow-Checks“ durch, um mindestens eine veränderbare Referenz zu bestätigen.
Schließlich lehnt Move Programme ab, die nicht der Typensicherheit, Speichersicherheit und Ressourcensicherheit entsprechen. Stattdessen kann eine höhere Programmiersprache mit einem Compiler verwendet werden, der für die Überprüfung der Eigenschaften zuständig ist. Die Alternative ist eine untypisierte Baugruppe auf niedriger Ebene mit Sicherheitsprüfungen.
Wie unterscheidet sich die Programmiersprache Move?
Die Programmiersprache Move hebt sich in mehrfacher Hinsicht von anderen Blockchain-Programmiersprachen ab:
Es gibt keine Einschränkungen bei der Definition benutzerdefinierter Datentypen von Prozeduren.
Es bettet Zugriffskontrollrichtlinien in die Sprachsemantik ein.
Dadurch wird ein Standardtypsystem für digitale Vermögenswerte abgeschafft (im Gegensatz zu Bitcoin oder Ethereum).
Es ermöglicht das Auffinden einzelner Assets mit Darstellung in der Programmiersprache. Benutzerdefinierte Assets sollten von ihrem Entwickler auf Sicherheitseigenschaften überprüft werden.
Dies ermöglicht es Move, problemlos neue Assets mit Knappheit zu erstellen, ohne Entwickler dazu zu zwingen, diese selbst zu entwickeln. Darüber hinaus können Entwickler die Zugriffskontrolle ändern und anpassen, wodurch die Programmiersprache vielseitiger und skalierbarer wird als ihre Konkurrenten.
Komponenten der Move-Programmiersprache
Die Programmiersprache Move besteht aus mehreren Komponenten, die ihre Grundlage bilden.
Typen
Dies können boolesche, vorzeichenlose Ganzzahlen (64-Bit), Byte-Arrays fester Größe und Adressdatentypen (256-Bit) sein.
Struktur
Zwei spezifische Typen: freundlich und uneingeschränkt. Ersteres bezieht sich auf Ressourcenstrukturen und letzteres auf allgemeine Strukturen.
Verfahren
Methoden, die entweder öffentlich oder intern sind. Die azyklische Modulabhängigkeit hilft bei der Abwehr von Wiedereintrittsangriffen.
Bytecode-Verifizierer
Der Schwerpunkt liegt auf der Überprüfung auf Sicherheitsmerkmale vor der Veröffentlichung des Moduls. Bevor Programme im Netzwerk live geschaltet werden, durchlaufen sie den Verifizierer und durchlaufen mehrere Verifizierungsphasen wie:
Typprüfung
Überprüfung des Stapelsaldos
Referenzprüfung
Entwicklung von Kontrollgraphen
Referenzverlinkung
Ressourcenprüfung
Bytecode-Interpreter
Es folgt der Verifizierung und ähnelt Ethereum, das Gas verwendet. Dadurch werden Endlosschleifenausführungen gewährleistet.
Virtuelle Maschine verschieben
Ähnlich wie bei anderen Blockchains, wobei Blöcke mehrere Transaktionen enthalten und jede Transaktion ausgeführt wird, um einen Transaktionseffekt zu erzeugen. Der Effekt generiert den aktualisierten globalen Zustand der Blockchain, mit einer Trennung zwischen Effekten und Zustandsübergängen.
Welche Blockchains verwenden die Programmiersprache Move?
Move wurde in der verworfenen Diem-Blockchain von Meta verwendet. Zu den aktuellen Blockchains, die auf Move aufbauen, gehören die Aptos-Blockchain und die Sui-Blockchain.
Geleaster Proof of Stake (LPoS)
Leased Proof of Stake (LPoS) ist ein Konsensmechanismus, der es Inhabern von Kryptowährungen ermöglicht, ihre Münzen an Knoten in einem Netzwerk zu leasen. |