Web3.com Ventures Analisi della ricerca originale

0xFishylosopher

introduzione

Con il recente lancio della mainnet di Aptos e il lancio del token su Binance e altri importanti scambi centralizzati, non c'è momento migliore per scrivere un'analisi esplorativa di questo progetto a lungo termine. Figlio orfano dei tentativi di Meta di creare la criptovaluta Libra, Aptos porta avanti l'ideale di Libra di essere la blockchain che accompagnerà il prossimo milione di utenti nelle criptovalute.

L'obiettivo generale di Aptos è fornire una blockchain scalabile, sicura e affidabile [1]. Per fare ciò, Aptos si affida a un nuovo linguaggio per contratti intelligenti, Move, apparentemente un linguaggio “più sicuro” rispetto all’attuale “gold standard” di Solidity di Ethereum. Naturalmente, Aptos non è la prima blockchain L1 che si presenta come "scalabile, sicura e affidabile". Anche altre catene, in particolare Solana, hanno provato a utilizzare questo come slogan in passato, con alterne fortune [2]. In questo saggio, cercherò di partire dagli attributi di base del linguaggio Move, analizzare i fondamenti tecnici di Aptos nel contesto di altri progetti simili e fornire una valutazione critica sul potenziale e sui limiti di questa nuova catena.

Sposta lingua

Non è possibile fare un’analisi di Aptos senza un’analisi del Move Language. In effetti, è probabilmente da qui che deriva la maggior parte del potenziale di Aptos. Move è stato originariamente sviluppato dal Libra Team di Meta (ora chiamato Diem) per fornire un modello di programmazione del contratto intelligente paradigmaticamente diverso rispetto ad altri linguaggi di contratto intelligente; invece di adottare un approccio basato sulle transazioni, Move adotta un approccio basato sulle risorse per definire i modelli di contratto intelligente [3].

Allora cosa significa tutto questo? A partire da Bitcoin, la stragrande maggioranza delle blockchain più importanti ha adottato un approccio “transaction-first”, in cui ogni voce nel blocco di una blockchain è una transazione (ad esempio tra Alice e Bob). Una transazione è un oggetto relativo; affinché ci sia una transazione, è necessario che esistano un indirizzo Alice e un Bob. Per garantire che Alice non stia “spendendo due volte” una moneta in un approccio basato sulla transazione, dobbiamo verificare che non ci siano conflitti con tutte le altre transazioni, una seccatura che inevitabilmente rallenta le transazioni.

D’altra parte, l’approccio “basato sulle risorse” di Move è radicalmente diverso. Invece di registrare le righe delle transazioni da A a B, Move registra l'oggetto (o la risorsa) che cambia di mano e si limita ad aggiornare gli attributi di conseguenza. È importante sottolineare che le risorse sono entità atomiche: una risorsa X esistente non dipende da nessun’altra risorsa esistente, a differenza del caso delle transazioni, dove una transazione T dipende da due agenti precedenti, l’esistenza di A e B. Pertanto, un approccio basato sulle risorse consente una struttura molto più atomica e indipendente, ottimizzata per l'esecuzione parallela.

Le "Risorse" in Move sono essenzialmente oggetti che hanno determinati attributi. In gergo tecnico, sono struct implementate (ovvero una struttura di dati contenitore) [4]. A questo punto, le persone con background di programmazione di Ethereum potrebbero sollevare una domanda: Solidity ha anche strutture, così come altre strutture di dati. Cosa rende speciali le strutture in Move? Credo che la differenza più importante sia che mentre le strutture in Solidity hanno una parte relativamente periferica nel linguaggio (essendo utilizzate principalmente per chiarezza), le strutture sono la base di tutto in Move. Inoltre, le strutture di Move hanno diverse "abilità", tra cui "copia", "rilascia", "memorizza" e "chiave", che definiscono se un oggetto è duplicabile, memorizzabile, cancellabile ecc [5]. Questo tipo di notazione di struttura è completamente diversa da Solidity, o addirittura dalla stragrande maggioranza dei linguaggi di programmazione comuni (ad esempio C/C++). Tuttavia, queste diverse “abilità” sono profondamente intuitive. Alcune cose puoi "copiarle", come una moneta o un gettone. Alcune cose puoi “lasciarle cadere” o buttarle via. Altre cose, come una risorsa digitale unica, potrebbero non essere copiabili. Consideriamo ora la seguente definizione ufficiale di “risorsa” su Move:

"Spesso ci riferiamo ai valori di struttura come risorse se non possono essere copiati o eliminati." — Strutture e risorse, documentazione relativa allo spostamento della lingua [4]

Quindi le “risorse” sono essenzialmente “strutture” uniche che saranno sempre lì per te. Che romantico.

La completa ridefinizione di una "struttura" da parte di Move consente di utilizzare un'unica struttura dati per definire in modo succinto token, NFT, contratti intelligenti e altre risorse digitali in un approccio pulito e modulare [6]. Questo è qualcosa che l’EVM di Ethereum semplicemente non può confrontare; chiunque abbia una certa esperienza nello sviluppo utilizzando l'EVM sa quanto sia frustrante gestire le strutture (e le strutture annidate) in Solidity.

Fondamentalmente, l’approccio basato sulle risorse di Move ne garantisce le garanzie di sicurezza. Come menzionato nel whitepaper di Move, in molti programmi c’è la rappresentazione indiretta delle risorse, il che significa che la scarsità e il controllo degli accessi non sono scalabili. Ad esempio, mentre la scarsità di Ether è codificata e protetta dall'EVM, altri token ERC-20 "non ereditano queste protezioni, devono fare attenzione a non introdurre bug che consentano la duplicazione, il riutilizzo o la perdita di risorse" [4]. Consideriamo il classico attacco di rientro. Questo è qualcosa che affligge da tempo i progetti EVM, spesso causando loro la perdita di milioni e milioni di dollari [7]. A causa dell’approccio basato sulle risorse di Move, l’attacco di rientro è impossibile su Move. Pertanto, la barriera all’ingresso della codifica Move è probabilmente molto più accessibile dell’EVM, un fattore cruciale per l’adozione di massa.

Aptos — Principi tecnici

Probabilmente il risultato più grande di Aptos è stato semplicemente l’immissione sul mercato di Move come linguaggio. ****In effetti, gran parte del design di Aptos è preso direttamente dalla blockchain Diem (Libra) sviluppata da Meta. Ricordiamo che Aptos è una catena che pone l'accento sulla scalabilità e sulla sicurezza. Esistono due principali implementazioni tecniche utilizzate per raggiungere questo obiettivo. Il primo è nel suo livello di consenso, vale a dire il meccanismo di consenso AptosBFT. Il secondo è il livello di esecuzione, o motore di esecuzione Block-STM. Esaminiamoli in ordine.

Innanzitutto, AptosBFT è un meccanismo di consenso bizantino Fault-Tolerant, il che significa essenzialmente che può continuare a garantire la sicurezza fintanto che non più di 1/3 dei nodi della rete sono attori dannosi [8]. Questa è una pratica standard: la Proof of Work di Bitcoin, la Proof-of-Stake di Ethereum ecc. sono tutte tolleranti ai guasti bizantini. Quindi, come fa AptosBFT a implementare effettivamente il suo meccanismo di consenso? Come tutte le altre catene Proof-of-Stake, Aptos si affida a nodi di validazione “staking”. Implementa una variante dell'algoritmo di consenso HotStuff, un moderno algoritmo PoS che offre un protocollo di comunicazione molto più pulito tra i nodi rispetto ai modelli precedenti (ad esempio pBFT) facendo comunicare i nodi con un "leader rotante" anziché con ogni altro nodo [9 ]. Sebbene AptosBFT introduca diverse ottimizzazioni su HotStuff, in particolare un "meccanismo di rotazione delle chiavi" (per migliorare la sicurezza) e una riduzione dei costi generali (per migliorare la scalabilità), non ci sono grandi cambiamenti strutturali nel design PoS di HotStuff [10].

D’altro canto, il motore di esecuzione parallela Block-STM è un progetto molto più originale e probabilmente la principale innovazione tecnica del progetto [11]. Ricordiamo che le risorse sono atomiche: il passaggio di mano di una determinata risorsa X non dipende da nessun'altra risorsa. Raggruppando le transazioni in blocchi (come pezzi LEGO), possiamo sfruttare un enorme parallelismo nell'esecuzione delle transazioni delle risorse, ottenendo un aumento di 20 volte della velocità di calcolo rispetto a Ethereum[11].

Ma come si confronta con Solana e altri motori di esecuzione parallela? L’innovazione principale di Solana è stata quella di codificare tutte le dipendenze dei suoi contratti intelligenti per consentirle di condurre esecuzioni parallele. Con tutte le dipendenze note in anticipo, il motore di esecuzione Solana può quindi bloccare le dipendenze necessarie prima del runtime. D'altra parte, Aptos gestisce le dipendenze al volo, eseguendo prima tutte le transazioni "in modo ottimistico" e, in caso di fallimento, rieseguendo quelle transazioni specifiche che non sono riuscite [12].

Usiamo una semplice analogia per spiegare quanto sopra. Ethereum è una strada a una corsia in cui tutte le auto devono viaggiare in un'unica fila una dietro l'altra, mentre sia Solana che Aptos sono superstrade a quattro corsie. Questo ovviamente accelera le cose. Ma la domanda è: come viaggiano le auto sulla superstrada? Nel caso di Solana, a ciascuna vettura viene essenzialmente assegnata una corsia specifica e guiderà sempre lungo quella corsia. Questo è molto veloce ed efficiente nel migliore dei casi, ma se il processo di assegnazione va storto si ha uno scenario peggiore molto negativo. Nel caso dell’Aptos, invece, alle auto vengono prima assegnate alcune corsie, ma se questo non funziona, allora le auto possono sterzare in altre corsie per evitare incidenti. Pertanto, anche se Aptos potrebbe non funzionare alla stessa velocità di Solana nello scenario migliore, è più affidabile di Solana e presenta uno scenario peggiore migliore [13].

Valutazione: potenziale e limiti

Aptos è attualmente la prima e unica grande catena L1 basata su Move ad aver lanciato una mainnet. In quanto tale, il rilascio della mainnet di Aptos è un evento incredibilmente simbolico; il denaro e l'attenzione dei media che Aptos ha attirato non sono necessariamente commisurati alla sua intrinseca innovazione tecnica.

Come accennato in precedenza, la principale innovazione tecnica apportata dalla stessa Aptos è il suo motore di esecuzione parallela Block-STM. La maggior parte degli altri aspetti tecnici, incluso il meccanismo di consenso e l'uso del linguaggio Move, sono prodotti legacy marginalmente migliorati ereditati da Meta [14]. Per quanto riguarda il motore di esecuzione parallela Block-STM, non è chiaro se ciò causerà una differenza qualitativa tra l'esperienza dell'utente su Aptos rispetto all'esperienza dell'utente su Solana; se l’esperienza utente è la stessa, all’utente non interesserà come viene implementata a livello tecnico.

Come per qualsiasi progetto infrastrutturale, il successo a lungo termine di Aptos dipende da quali progetti scelgono di basarsi su di esso. Attualmente, i progetti nel suo ecosistema, come Liquidswap DEX, il mercato Topaz NFT e il servizio di dominio Aptos Names, sebbene prodotti necessari in qualsiasi ecosistema blockchain, non sono sufficientemente unici per il design di Aptos [15]. Questi progetti sono come un negozio di alimentari, una scuola e un ospedale in un piccolo villaggio. Sebbene siano necessari al funzionamento del villaggio, non conferiscono al villaggio alcun carattere unico che non si trovi in ​​nessun altro villaggio.

Guardando indietro nel tempo, parte del successo di Solana può essere attribuito a progetti come StepN che sono stati effettivamente in grado di sfruttare il vantaggio del parallelismo di Solana. Questi progetti GameFi e SocialFi spesso coinvolgono grandi quantità di dati paralleli relativamente isolati. Pertanto, queste applicazioni sono particolarmente adatte ai motori di esecuzione parallela, come Aptos e Solana, e sono anche in grado di portare un’ampia base di consumatori e un elevato volume di transazioni. Infatti, ad un certo punto, StepN da sola rappresentava circa il 20% circa degli utenti a pagamento di Solana [16].

Pertanto, affinché Aptos abbia successo come progetto infrastrutturale, è necessario che esista una serie unica di progetti che traggano grande vantaggio dal motore di esecuzione parallela di Aptos, progetti che non potrebbero essere realizzati su Ethereum o addirittura su Solana. Con il nuovo design Block-STM di Aptos, questi potrebbero potenzialmente prendere forma sotto forma di una nuova classe di progetti SocialFi in cui gli utenti interagiscono in piccole cricche (come le chat di gruppo). Poiché questi gruppi possono essere fluidi e dinamici, ma anche in qualche modo indipendenti l’uno dall’altro, sono molto più adatti al motore di esecuzione parallela di Aptos rispetto a quello di Solana o Ethereum. Ma ovviamente questa è solo una speculazione astratta.

Tuttavia, il lancio della mainnet di Aptos è ancora un evento incredibilmente importante e simbolico nel mondo delle criptovalute. Rappresenta il culmine di anni di sforzi degli ingegneri Meta nel dare vita a un paradigma qualitativamente diverso per risolvere il collo di bottiglia della scalabilità di Ethereum. Le caratteristiche linguistiche uniche di Move significano che inevitabilmente ci saranno DApp che sono molto migliori da implementare su Move piuttosto che su Solidity o altri linguaggi di contratto intelligente. Ma questi progetti saranno necessariamente implementati nell’ecosistema Aptos? Nessuno sa. Aptos potrebbe godere di alcuni vantaggi del first mover essendo in grado di portare Move in produzione e legare il suo nome al linguaggio Move. Ma allo stesso tempo, potrebbe subire il destino di MySpace di essere il first mover.

Almeno una cosa è certa: Aptos potrebbe essere il primo esperimento sul mercato con Move, ma certamente non sarà l’ultimo [17].

🐦 @0xfishylosopher

📅22 ottobre 2022

Dichiarazione di non responsabilità: questa ricerca è solo a scopo informativo. Non costituisce un consiglio di investimento o una raccomandazione ad acquistare o vendere qualsiasi investimento e non deve essere utilizzato nella valutazione del merito di qualsiasi decisione di investimento.

Riferimenti

[1] Vedi la pagina principale di Aptos Labs: https://aptoslabs.com/

[2] Introduzione a Solana: https://www.forbes.com/advisor/investing/cryptocurrency/what-is-solana/

[3] Whitepaper su Move Language: https://diem-developers-components.netlify.app/papers/diem-move-a-lingual-with-programmable-resources/2020-05-26.pdf

[4] Documentazione per sviluppatori Move per Structs e Resources: https://github.com/move-lingual/move/blob/main/lingual/documentation/book/src/structs-and-resources.md

[5] Dettagli su Struct Abilities: https://move-lingual.github.io/move/abilities.html

[6] Vedi il tutorial su Move Language: https://101blockchains.com/move-programming-lingual-tutorial/

[7] https://blog.chain.link/reentrancy-attacks-and-the-dao-hack/

[8] Dettagli sulla tolleranza agli errori bizantina: https://decrypt.co/resources/byzantine-fault-tolerance-what-is-it-explained

[9] Modello di consenso di HotStuff: https://hackernoon.com/hotstuff-the-consensus-protocol-behind-safestake-and-facebooks-librabft

[10] Consenso AptosBFT: https://blog.pontem.network/aptosbft-all-you-need-to-know-about-the-bft-consensus-in-aptos-ff4cf22c7a80

[11] Vedi il documento tecnico Block-STM: https://arxiv.org/abs/2203.06871

[12] Confronto tra i motori di esecuzione Aptos e Solana: https://www.gofyeo.com/post/aptos-vs-solana-a-technical-comparison-part-1

[13] Analisi del caso peggiore di Aptos come O(n²), Solana come O(n⁴). Dettagli: https://antiape.substack.com/p/cf40447d-d674-4454-9e09-f003517de6de?s=r

[14] Consulta il white paper di Aptos: https://aptos.dev/assets/files/Aptos-Whitepaper-47099b4b907b432f81fc0effd34f3b6a.pdf

[15] Ecosistema Aptos: https://coinmarketcap.com/alexandria/article/what-is-aptos-the-ultimate-guide-to-the-aptos-ecosystem

[16] Dal Twitter di Messari Crypto: https://twitter.com/MessariCrypto/status/1567880625218019333

[17] Vedi Sui, un altro linguaggio basato sui movimenti: https://sui.io/