Tutto è un oggetto
Sui non memorizza una tabella di saldi. Memorizza oggetti, ciascuno con un identificatore unico, un tipo, una versione e un proprietario. Il suo SUI è detenuto in oggetti moneta. Il suo NFT è un oggetto. Una posizione di staking è un oggetto. Il codice che li definisce tutti vive in oggetti package.
Una transazione prende oggetti come input e produce oggetti come output, il che è più vicino al modello UTXO di Bitcoin che ai conti di Ethereum — eccetto che gli oggetti sono tipizzati e portano dati strutturati arbitrari piuttosto che solo valore.
Questo ha una conseguenza diretta sulle prestazioni e spiega la progettazione di Sui. Le transazioni che toccano insiemi disgiunti di oggetti non possono entrare in conflitto, quindi possono essere eseguite in parallelo senza ordinamento per consenso. Un semplice trasferimento di un oggetto che possiede esclusivamente non ha bisogno dell'accordo di tutta la rete sull'ordinamento, motivo per cui si finalizza in ben meno di un secondo.
Suiscan mostra questa struttura direttamente — ID di oggetto, tipi, versioni e proprietà — piuttosto che calcolare un saldo e presentarlo come la verità. Il saldo è una cifra derivata; gli oggetti sono lo stato.
Tre tipi di proprietà
Sui distingue la proprietà in un modo che la maggior parte delle chain non fa, e la distinzione determina come una transazione viene processata.
Gli oggetti posseduti appartengono a un singolo indirizzo. Solo quell'indirizzo può usarli, quindi le transazioni che toccano solo oggetti posseduti saltano il consenso completo e si finalizzano quasi immediatamente.
Gli oggetti condivisi possono essere usati da chiunque — un pool di liquidità, un libro degli ordini, un registro condiviso. Poiché più parti potrebbero cercare di modificarli simultaneamente, queste transazioni richiedono ordinamento per consenso e sono corrispondentemente più lente.
Gli oggetti immutabili non possono essere cambiati affatto. I package pubblicati sono immutabili, motivo per cui gli aggiornamenti di contratto Sui funzionano diversamente dai pattern di proxy EVM.
Suiscan etichetta il tipo di proprietà su ogni oggetto. Quel campo spiega perché una transazione è stata istantanea e un'altra ha richiesto più tempo, cosa altrimenti misteriosa.
Package Move, e perché gli aggiornamenti differiscono
Sui usa Move, un linguaggio progettato attorno a risorse che non possono essere copiate o scartate accidentalmente. Quella proprietà è imposta dal sistema di tipi piuttosto che dalla disciplina dello sviluppatore, il che elimina una categoria di bug che è stata costosa su altre chain.
Suiscan le permette di sfogliare i package pubblicati: moduli, funzioni pubbliche, definizioni di struct e firme di tipo. Per chiunque valuti cosa può fare un package, è l'equivalente di leggere una fonte verificata su Etherscan — ed è disponibile per default, perché i package sono pubblicati come bytecode leggibile con informazioni di tipo.
Il modello di aggiornamento vale la pena capirlo. Poiché i package sono oggetti immutabili, aggiornare significa pubblicare una nuova versione con un link alla precedente, piuttosto che sostituire un'implementazione dietro un proxy. Il percorso di aggiornamento è esplicito e sulla chain, il che è più trasparente dell'approccio EVM — anche se significa che deve controllare quale versione un'applicazione sta effettivamente chiamando.
Usarlo in pratica
Due cose che vale la pena sapere quando apre una pagina di indirizzo.
Il suo saldo SUI è la somma dei suoi oggetti moneta, e potrebbero essercene molti. I portafogli li uniscono automaticamente, ma una pagina che mostra diversi oggetti moneta piuttosto che un saldo è normale piuttosto che un segno di qualcosa di sbagliato.
E i rimborsi di storage sono reali. Sui addebita per lo storage e ne rimborsa parte quando un oggetto viene eliminato, il che significa che una transazione che fa pulizia dietro di sé può costare meno di quanto si aspetti, occasionalmente vicino a nulla. Suiscan mostra il costo di storage e il rimborso separatamente, l'unico modo per capire una commissione inaspettatamente piccola.
Per il controllo incrociato, 3xpl indicizza Sui e si rende più velocemente se ha solo bisogno di confermare che una transazione esiste. Per qualsiasi cosa coinvolga oggetti, package o proprietà, Suiscan è lo strumento che modella la chain correttamente.
Cosa hanno mostrato i nostri test di riferimento
I nostri elementi di riferimento Sui sono stati scelti per esercitare il modello a oggetti: un semplice trasferimento di oggetto posseduto, una transazione che tocca un oggetto condiviso, un trasferimento di NFT, una pubblicazione di package, e una transazione che ha eliminato un oggetto per innescare un rimborso di storage.
Il trasferimento di oggetto posseduto si è finalizzato quasi istantaneamente e Suiscan lo ha mostrato come tale, con il tipo di proprietà etichettato. La transazione con oggetto condiviso ha richiesto visibilmente più tempo e la presentazione dell'explorer ha reso evidente la ragione — l'ordinamento per consenso era richiesto perché l'oggetto poteva essere conteso.
Quel contrasto è la cosa più utile che abbiamo imparato dai test. Due transazioni che appaiono identiche a un utente hanno richiesto tempi marcatamente diversi, e la spiegazione era un singolo campo sulla pagina. Senza un explorer che mostra il tipo di proprietà, la differenza è semplicemente latenza imprevedibile.
Il trasferimento di NFT si è reso con provenienza completa, perché su Sui un NFT è un oggetto con una cronologia di versioni piuttosto che una voce nel mapping di un contratto. Seguire i proprietari precedenti non ha richiesto query aggiuntive.
La vista di pubblicazione del package ha mostrato moduli, funzioni pubbliche e le loro firme di tipo senza che dovessimo sottomettere la fonte per la verifica — le informazioni di tipo sono pubblicate con il bytecode, un vantaggio strutturale rispetto al modello EVM di verifica a posteriori.
Il test del rimborso di storage ha prodotto una transazione con un costo netto inferiore al suo gas lordo, e Suiscan ha mostrato il costo di storage e il rimborso come righe separate. Senza quella scomposizione la cifra finale sembra un errore.