Dieser Artikel konzentriert sich auf Aptos und befasst sich mit den Funktionen von Move/MoveVM, die es verwendet, und wie es im Vergleich zu ausgereiften Programmiersprachen und Zustandsautomaten wie Solidity/EVM und Rust/WASM abschneidet.

Geschrieben von: DongHyun Kang, Xangle

Zusammengestellt von: Peng SUN, die chinesische Version von Foresight News darf ausschließlich zusammengestellt und veröffentlicht werden

I. Einleitung

Bei Web3 ist ein nahtloses Benutzererlebnis äußerst wichtig. In gewissem Maße ist es viel wichtiger, sicherzustellen, dass Benutzer eine reibungslose Interoperabilität zwischen verschiedenen Blockchains erleben, als die Blockchain, auf der die DApp aufbaut. In den Jahren 2021 und 2022 gibt es in der Branche eine heftige Debatte um monolithische Blockchains und Multi-Chains. Es ist erwähnenswert, dass Solana und Luna an Bedeutung gewannen, dann aber nachließen, was Aptos und Sui den Weg ebnete, die Aufmerksamkeit des Marktes auf sich zu ziehen.

Aptos und Sui stammen beide aus dem Meta-Blockchain-Projekt Diem (ehemals Libra) und haben eines gemeinsam: Sie verwenden beide die Programmiersprache Move. Dieser Artikel konzentriert sich auf Aptos, geht auf die Eigenschaften seiner Move-Sprache und seines MoveVM-Zustandsautomaten ein und vergleicht ihn mit ausgereiften Programmiersprachen und Zustandsautomaten wie Solidity/EVM und Rust/WASM.

2. Was ist Move?

(1) Woher kommt Move?

Das Diem-Team bei Facebook (jetzt Meta) entdeckte zwei Einschränkungen der in der Blockchain-Branche weit verbreiteten Programmiersprache Solidity. Erstens weist Solidity Schwachstellen wie Re-Entrency-Angriffe und Double-Spend-Angriffe auf. Während Blockchain-Netzwerke, die Solidity verwenden, wie Ethereum, diese Angriffe durch Konsensalgorithmen abschwächen, ist es unbestreitbar, dass es in der Sprache selbst potenzielle Angriffsvektoren gibt.

Zweitens ist Solidity mit Engpässen konfrontiert, da es nicht in der Lage ist, Transaktionen parallel zu verarbeiten. Um doppelte Ausgaben zu verhindern, verlangt Solidity, dass Transaktionen wie Smart Contracts in der richtigen Reihenfolge ausgeführt werden. Dadurch wird die Geschwindigkeit der Transaktionsverarbeitung eingeschränkt, was wiederum die Skalierbarkeit der Blockchain beeinträchtigt.

Auf dieser Grundlage entwickelte das Diem-Team die von Rust beeinflusste Move-Sprache, um die oben genannten Probleme zu lösen. Die Programmiersprache Rust ist großartig, kann jedoch zu ausführlichem Code führen, wenn sie zum Schreiben intelligenter Verträge verwendet wird. Anschließend behielt Aptos die ursprüngliche Move-Sprache bei, integrierte jedoch ein objektorientiertes Programmiermodell und entwickelte es zu Aptos Move weiter. Sui hingegen verwendet eine objektorientierte Sprache namens Sui Move.

(2) Welche Funktionen hat Aptos Move/MoveVM?

Aptos‘ Move/MoveVM wurde sorgfältig mit einem primären Fokus auf Sicherheit entwickelt. Darüber hinaus vereinfacht Aptos den Move-Vertragscode und ermöglicht eine parallele Verarbeitung, wodurch die Möglichkeit von Blockchain-Angriffen minimiert und die Skalierbarkeit erhöht wird. In diesem Abschnitt werfen wir einen genaueren Blick darauf, wie Move diese Funktionen implementiert.

Erhöhen Sie die Sicherheit mit Move Prover und Resource Model

Bei der formalen Verifizierung geht es um den mathematischen Nachweis, dass Softwarecode bestimmten Regeln oder Eigenschaften entspricht. Aptos nutzt die formelle Verifizierung durch das Move Prover-Tool, um die Sicherheit seiner Smart Contracts zu überprüfen. Move Prover kann potenzielle Angriffsvektoren in Smart Contracts wie Double-Spend- und Re-Entrency-Angriffe abwehren, indem es eine formale Verifizierung anwendet, während es gleichzeitig andere Codefehler identifiziert und die Stabilität gewährleistet. Im Gegensatz zu anderen Blockchains, die auf Konsensalgorithmen basieren, um Double-Spending- und Re-Entrance-Angriffe zu verhindern, gehen die Sprache und die Tools von Move diese Probleme direkt an.

Darüber hinaus übernimmt MoveVM eine statische Planung zum Aufrufen von Funktionen, um Wiedereintrittsangriffe auf Funktionsaufrufe zu verhindern. Im Gegensatz dazu verwendet herkömmliches EVM eine dynamische Planung. Diese beiden Methoden unterscheiden sich im Timing der Funktionsaufrufe in der Programmausführungsreihenfolge. Die übliche Reihenfolge ist: Kompilieren → Verknüpfen → Laden → Ausführen → Beenden. Bei der statischen Planung werden Funktionen zur Kompilierungszeit aufgerufen. In dieser Phase kann eine erste Fehlerprüfung des Smart Contracts durchgeführt werden. Daher treten Smart Contracts in MoveVM im Voraus in die Verifizierungsphase ein, wodurch Wiedereintrittsangriffe von der Quelle wirksam verhindert werden.

Parallelverarbeitung von Transaktionen

Aptos MoveVM verbessert die Skalierbarkeit durch transaktionsparallele Verarbeitung. Um dieses Ziel zu erreichen, verwendet MoveVM Block-STM (Block-Level Software Transaction Memory), das Datenbanktransaktionen zur parallelen Ausführung auf mehrere Threads verteilt. Ein genauerer Blick auf Block-STM zeigt die folgenden Hauptmerkmale:

  • Block-STM nutzt Optimistic Concurrency Control (OCC), um Transaktionen parallel auszuführen, die dann überprüft werden und Transaktionen, bei denen Konflikte auftreten, erneut ausgeführt werden.

  • Block-STM verwendet eine Datenstruktur mit mehreren Versionen, um Schreib-Schreib-Konflikte zu verhindern. Alle Schreibvorgänge werden zusammen mit der Transaktions-ID und der Anzahl der erneuten Ausführungen am selben Ort gespeichert. Dadurch wird sichergestellt, dass Transaktionen auch bei erneuter Ausführung in der vorgesehenen Reihenfolge verarbeitet werden.

  • Block-STM führt einen kollaborativen Scheduler für die priorisierte Ausführung und Überprüfung von Untertransaktionen ein und legt so die Verarbeitungsreihenfolge zwischen Transaktionsthreads fest. Move verwendet diesen kooperativen Scheduler, um Konflikte zwischen Transaktionen zu verhindern und zu verhindern, dass sie ungültig werden.

  • Schließlich gruppiert die dynamische Abhängigkeitsschätzung Transaktionen, indem ihre Abhängigkeiten geschätzt und verwandte Transaktionen identifiziert werden.

Durch Block-STM kann Aptos auf folgende Weise eine parallele Transaktionsverarbeitung erreichen. Während die Verifizierung über alle Validatoren hinweg einheitlich ist, wird die Ausführung zwischen den einzelnen Validatoren parallelisiert, was die Skalierbarkeit weiter verbessert. Die Transaktionsparallelverarbeitung von Aptos lässt sich wie folgt zusammenfassen:

  • Benutzer generieren Transaktionen und senden sie an das Netzwerk.

  • Validatoren validieren Transaktionen.

  • Validierte Transaktionen werden auf der Grundlage dynamischer Abhängigkeitsschätzungen gruppiert, während jede Transaktionsgruppe vom Validator parallel verarbeitet wird.

  • Verarbeitete Transaktionen werden in Blöcken zusammengefasst und im gesamten Netzwerk verbreitet.

Erhöhen Sie den Entwickler- und Benutzerkomfort mit dem Aptos-Token-Standard

Aptos nutzt Move auch, um seinen eigenen Token-Standard zu entwickeln, den Aptos Coin Standard, der die mit herkömmlichen EVMs verbundenen Einschränkungen überwindet. MoveVM muss keine separaten Smart Contracts für die Token-Ausgabe veröffentlichen und muss lediglich eine geringe Gasgebühr für die Ausgabe von Token zahlen. Da aber auch Nicht-EVM-Blockchains wie Solana und Algorand über eigene Token-Standards verfügen, ist dieses Feature nicht besonders herausragend.

Im August 2023 führte Aptos jedoch zwei neue Standards ein: FT und NFT. Insbesondere ermöglicht der neue FT-Standard Entwicklern, abhängig von ihren Entwicklungszielen eines der folgenden Elemente auszuwählen und auszugeben: reguläre Token-Assets, tokenisierte RWA oder In-Game-Token. Dies scheint mit der Strategie von Aptos zusammenzufallen, den wachsenden RWA-bezogenen Markt zu erschließen. Konkret streben Web 2.0-Unternehmen bei der Tokenisierung von RWA oft nach Kontrolle über Vermögenswerte, doch auf Ethereum ist dies nicht einfach zu erreichen, sodass viele Unternehmen damit beginnen, ihre eigenen Blockchains aufzubauen. Im Gegensatz dazu ermöglicht Aptos dies auf Protokollebene durch Token-Standardeinstellungen.

3. Vergleich mit anderen Sprachen und VM

(Viertel) Bewegung vs. Solidität

Move/MoveVM wurde entwickelt, um die Einschränkungen von Solidity auszugleichen und es sicherer und skalierbarer als Solidity zu machen. Wie bereits erwähnt, verbessern die Move/MoveVM-Funktionen die Sicherheit und Skalierbarkeit von Aptos. MoveVM verhindert Reentrancy- und Double-Spending-Angriffe auf der Sprachebene, und Solidity/EVM hat mehrere Reentrancy-Angriffe erlebt. Der DAO-Angriff auf Ethereum im Jahr 2016 ist das beste Beispiel. Obwohl die Ethereum Foundation viel Prävention geleistet hat, gibt es immer noch eine große Anzahl von Wiedereintrittsangriffen in DeFi. Hacker hören nie auf, fehlerhafte Verträge in DeFi innerhalb des EVM-Ökosystems einzusetzen.

Das <EVM-Ökosystem leidet immer noch unter Reentrancy-Angriffen, Quelle: Google>

Wie oben erwähnt, ist Move/MoveVM außerdem hoch skalierbar. Aufgrund der Fähigkeit, Transaktionen parallel zu verarbeiten, kann es theoretisch bis zu 160.000 TPS erreichen, was bedeutet, dass die Effizienz der Transaktionsverarbeitung nicht eingeschränkt ist. Gleichzeitig muss die EVM Transaktionen in der richtigen Reihenfolge verarbeiten, da das Risiko von Doppelausgaben und Wiedereintrittsangriffen besteht. Daher wird die EVM-Kette dadurch stark eingeschränkt. Wenn eine große Anzahl von Transaktionen gleichzeitig übermittelt wird, steigen die Gaskosten schnell an und Transaktionen werden in die Warteschlange gestellt und ins Stocken geraten.

Hinsichtlich der Flexibilität hat Solidity/EVM einen Vorteil gegenüber Move/MoveVM. Solidity/EVM verwendet dynamische Planung, während Move/MoveVM statische Planung verwendet. Im Vergleich zu Solidity verwendet Move eine statische Planung, um die Sicherheit intelligenter Verträge zu erhöhen, aber deren Funktionalität einzuschränken. Darüber hinaus ermöglicht Solidity die jederzeitige Aktualisierung des Protokolls und des Vertragscodes, während Move diesbezüglich einige Einschränkungen aufweist. Im Hinblick auf die Interoperabilität zwischen Blockchains ist Solidity flexibler und skalierbarer als Move. Dies liegt vor allem daran, dass EVM-Teams wie Ethereum modulare Blockchains bevorzugen, während das Move-Team monolithische Bereiche bevorzugt.

(Zwei) Move gegen Rust

Move ist von Rust abgeleitet und weist hinsichtlich Leistung und Funktionalität, wie Effizienz und Sicherheit, viele Ähnlichkeiten mit Rust auf. Der Hauptunterschied liegt im beabsichtigten Zweck: Rust ist eine universelle Programmiersprache, während Move sich auf die Entwicklung intelligenter Verträge konzentriert. Rust ist für ein breiteres Anwendungsspektrum konzipiert und wird in einer Vielzahl von Entwicklungsumgebungen eingesetzt, auch solchen, die nicht mit der Blockchain zu tun haben. Daher kann das Schreiben von Smart-Contract-Code in Rust zu längerem und komplexerem Code führen. Im Gegensatz dazu ist Move eine Blockchain-spezifische Sprache, die speziell auf Smart Contracts zugeschnitten ist. Während dies den Einsatz in der Blockchain-Entwicklung einschränkt, führt es beim Schreiben von Smart Contracts zu relativ prägnantem und weniger komplexem Code.

<Move vs. Rust: Vergleich von Smart Contracts, Quelle: Krešimir Klas>

Oben sind die Codelängen-Tokens für Solana und Sui bei der Entwicklung desselben Smart Contracts aufgeführt. Längerer Code bedeutet natürlich, dass Smart Contracts häufiger angegriffen werden und Entwickler eher Fehler machen, die bei der Code-Inspektion möglicherweise auch übersehen werden. Im Gegensatz dazu besteht der Vorteil von Move darin, dass die Codeentwicklung einfacher ist, die Wahrscheinlichkeit von Fehlern durch Entwickler verringert werden kann und die Codeüberprüfung effektiver ist.

(三)Aptos Move vs. Sui Move

Aptos Move und Sui Move stammen beide vom Diem-Team und weisen daher viele Gemeinsamkeiten auf. Beide basieren ursprünglich auf Rust und haben daher eine ähnliche Syntax und Funktionalität. Darüber hinaus nutzen beide Projekte Move Prover, um Smart Contracts zu verifizieren.

Aptos Move behält jedoch die ursprüngliche Diem-Blockchain bei und übernimmt ein objektorientiertes Programmiermodell, während Sui Move die objektorientierte Sui-Blockchain als weiterentwickelte Version von Diem einführt. Suis Übergang zu einer objektorientierten Blockchain besteht darin, Parallelität zu unterstützen, die von der Kenntnis der zu lesenden und zu schreibenden Daten abhängt. Daher übernimmt Aptos ein Ressourcenmodell, das Anwendungsbausteine ​​in drei verschiedene Einheiten unterteilt: eindeutige Bezeichner, Eigenschaften und Methoden. Sui hingegen verwendet ein objektorientiertes Modell, das Anwendungskomponenten in Zustände und Verhaltensweisen unterteilt. Dies führt dazu, dass Aptos Move Entwicklern eine erhebliche Flexibilität bietet, die Sui Move nicht bietet.

Es gibt auch Unterschiede in der Funktionsweise von Aptos Move und Sui Move auf der Blockchain. Erstens unterstützen beide Blockchains die Parallelverarbeitung, wenn auch auf unterschiedliche Weise. Wie bereits erwähnt, implementiert Aptos die parallele Transaktionsverarbeitung durch Block-STM, während Sui eine gerichtete azyklische Graphenstruktur (DAG) zum Speichern von Transaktionen verwendet. Die DAG-Struktur unterbricht die Verbindungen zwischen Transaktionen und ermöglicht so eine parallele Transaktionsverarbeitung.

Ein weiterer Unterschied besteht darin, wie Wiedereintrittsangriffe verhindert werden. Wie bereits erwähnt, verwendet Aptos den statischen Versand, um den Status intelligenter Verträge vor der Ausführung zu überprüfen und so Wiedereintrittsangriffe zu verhindern. Im Gegensatz dazu verhindert Sui Wiedereintrittsangriffe, indem es den Status eines Smart Contracts nur einmal während der Transaktionsausführung aktualisiert und so sicherstellt, dass sich der Status auch dann nicht ändert, wenn ein Angreifer die Transaktion unterbricht. Da die DAG-Struktur von Sui außerdem nicht auf der Transaktionsreihenfolge basiert, hat die Unterbrechung einer Transaktion keinen Einfluss auf die unabhängige Verarbeitung anderer Transaktionen und bietet somit zusätzlichen Schutz vor Wiedereintrittsangriffen.

4. Nächster Schritt: Aufbau eines starken Entwickler-Ökosystems und einer Killer-DApp

Move/MoveVM ist eine vielversprechende Blockchain-Entwicklungsplattform, steht aber auch vor zwei großen Herausforderungen. (1) Move verfügt noch nicht über ein ausgereiftes Entwickler-Ökosystem und kann in dieser Hinsicht nicht mit Solidity verglichen werden. Aptos gibt es seit fast einem Jahr, während Sui das Mainnet erst kürzlich gestartet hat. Daher hat Move im Vergleich zu Solidity, das über eine ausgereifte Entwickler-Community verfügt, noch einen langen Weg vor sich. Solidity blickt auf eine achtjährige Geschichte zurück und bietet eine breite Palette an Entwicklungstools und speziellen Schulungsprogrammen. Für Entwickler ist es von entscheidender Bedeutung, eine unterstützende Community zu haben, die Feedback zu ihrer Arbeit gibt. Solidity verfügt bereits über eine große Entwickler-Community und veranstaltet Hackathons auf der ganzen Welt. Turing schätzt, dass die Solidity-Entwicklergemeinschaft etwa 200.000 Menschen umfasst.

Im Gegensatz dazu befindet sich Move seit dem Start von Facebook in der Entwicklung, war jedoch größtenteils eine interne Anstrengung des Diem-Teams. Infolgedessen ist das Entwickler-Ökosystem von Move weder so ausgereift noch so weit verbreitet wie das von Solidity. Zwar gibt es inzwischen eine Aptos-Entwicklergemeinschaft, einschließlich des Aptos-Forums, ihr fehlen jedoch die strukturierten Schulungsprogramme, Entwicklertools und offenen Feedbackmechanismen des Solidity-Ökosystems. Das Sui-Entwicklungsunternehmen Mysten Labs schätzt die Zahl der Move-Entwickler auf 10.000, offizielle Statistiken liefert Aptos jedoch nicht.

Zweitens fehlt (2) Move eine Killer-DApp. Auf vielen EVM-Ketten (wie Ethereum und Arbitrum) gibt es eine große Anzahl von DApps, die von Benutzern häufig genutzt werden. Allerdings hat das Move-Ökosystem noch keine ähnlichen Anwendungen hervorgebracht. Am 26. September lag der TVL von Aptos Network bei 43,5 Millionen US-Dollar und damit deutlich unter dem Mainstream-Layer2.

<Aptos Move Tutorial erstellt von der Aptos Foundation, Quelle: Aptos Move Github>

Die Aptos Foundation ist sich der aktuellen Herausforderungen bewusst und ergreift aktiv Schritte, um diese zu bewältigen. Erstens legt die Aptos Foundation großen Wert auf Entwicklertools, um ein florierendes Entwicklerökosystem zu fördern. Sie haben das Aptos-Tutorial ins Leben gerufen, um frühen Entwicklern den Einstieg zu erleichtern, und erstellen Bildungsprojekte wie Move Spider. Darüber hinaus stärkt die Aptos Foundation das Entwickler-Ökosystem weiter, indem sie die Entwicklung der Entwickler-Community durch die Organisation von Meetups auf der ganzen Welt, darunter in den USA, Südkorea und China, fördert.

Auf geschäftlicher Seite baut Aptos aktiv Partnerschaften mit namhaften Unternehmen und Unternehmen mit großen Vertriebskanälen in verschiedenen Branchen auf, wie BBCUniversal, Microsoft, Google, Netmarble (Marblex), Neowiz und Chingari usw. Andererseits implementiert Aptos Onchain Randomness über AIP-41, um die Integration von Gaming-Unternehmen zu erleichtern. Aptos nutzt AIP-41, um Gaming-Unternehmen eine kostengünstige Middleware-Alternative wie Chainlink VRF bereitzustellen, die die Zufälligkeit von EVM-Projekten gewährleistet und so mehr Projekte anzieht, Produkte auf Aptos zu entwickeln.

5. Schlussfolgerung

<Eine Illustration, die Blockchain-Entwicklungssprachen mit der Evolution vergleicht, Quelle: Krešimir Klas>

Dieser Artikel konzentriert sich auf Aptos‘ Move/MoveVM und führt einen Funktionsvergleich mit bestehenden Blockchain-Entwicklungssprachen durch. Die Forschungsergebnisse zeigen, dass Move speziell für die Entwicklung von Blockchain-Smart Contracts konzipiert ist und klare technische Vorteile gegenüber bestehenden Sprachen aufweist. Allerdings steckt Move im Hinblick auf Entwickler und das DApp-Ökosystem noch in den Kinderschuhen. Derzeit hat Solidity etwa 20-mal so viele Entwickler wie Move und seine Position ist in Bezug auf TVL und Killer-DApps solider. Allerdings ist Move erst ein Jahr alt und eine der wenigen Programmiersprachen, die sich der Blockchain-Entwicklung widmen, was zeigt, dass sie noch großes ungenutztes Potenzial hat.

Darüber hinaus wird Move vom Diem-Team von Facebook entwickelt, was ebenfalls zu den Entwicklungsaussichten des Move-Ökosystems beiträgt. Wie in der Abbildung oben gezeigt, verdient daher unsere Aufmerksamkeit, ob Move als umfassende Blockchain-Programmiersprache in Zukunft mit Solidity konkurrieren kann.