Molte persone confondono i portafogli (anche chiamati wallet EOA) con quelli definiti "Smart Contract Wallet", che teoricamente migliorano l'esperienza dell'utente quando desidera interagire con la blockchain, anche senza conoscere l'argomento.
Per dimostrarlo, ho creato un'applicazione che sfrutta la blockchain per notarizzare i documenti e permette di verificare l'hash dei documenti.
Il processo di notarizzazione implementato segue i seguenti step:
Si converte un documento in una stringa rappresentativa dello stesso, ovvero si produce un hash alfanumerico che è sempre uguale a partire dallo stesso documento.
Questa stringa hash viene salvata all'interno di una transazione sulla blockchain. La stringa salvata rappresenta il documento senza rivelarne il contenuto. La presenza della stringa in una transazione significa che ad una certa data ed ora si sapeva che quel documento conteneva determinate informazioni.
Se il documento viene alterato, è possibile verificarlo confrontando la stringa hash salvata sulla blockchain con quella del documento corrente. Tutte queste operazioni possono essere implementate creando uno smart contract e abilitando un utente ad interrogarlo per eseguire operazioni come la notarizzazione descritta sopra.
Tuttavia, l'adozione degli utenti potrebbe essere bassa se per interagire con lo smart contract di notarizzazione è necessario possedere un wallet chiamato EOA, richiedendo quindi token (gas) per le operazioni.
Fortunatamente, grazie alll'ecosistema tecnologico che sta evolvendo si è implementata la tecnologia "Account Abstraction", per astrarre la logica di un wallet EOA sotto forma di smart contract. L'utente non deve pagare il gas per eseguire operazioni sullo smart contract di notarizzzione
Se sei interessato ad approfondire l'argomento dell'Account Abstraction e capirne le differenze, ho creato una tabella riassuntiva dove cerco di confrontare le definizioni con degli esempi. Altrimenti vai oltre la tabella per leggere la guida su come utilizzare l'applicazione per il test.
Come funziona l’Account Abstraction con standard erc 4337 | Parallelismo con il caso tradizionale di una banca | |
EOA | E’ un normale account che si crea ad esempio con Metamask e NON è creato mediante Account Abstraction. La creazione è per l'utente gratuito, e non si pagano commissioni di reteper generarlo. | Assomiglia al portafoglio fisico nel quale riponi il contante |
Smart Contract Wallet | E’ un account che non crea l’utente ma il contratto di Factory che implementa l' Account Abstraction. La creazione è gratuita per l'utente ma comporta un costo per per il contratto di Factory. | Assomiglia come funzionalità ad un conto corrente e/o una carta con commissioni a carico della banca. |
Contratto di Factory | E’ lo smart contract che implementa lo standard erc4337 di Account Abstraction, ed emette al costo di un certo quantitativo di gas uno Smart Contract Wallet per un utente. | La banca è il soggetto che emette un conto bancario o una carta di debito/credito per un proprio utente |
Firmare una transazione in generale | Un utente desidera scrivere qualcosa di immutabile sulla blockchain e firma ciò che scrive con il proprio wallet EOA o smart contract wallet. | La banca ti mette a disposizione degli strumenti per operare con il tuo conto, ad esempio mandare un bonifico o pagare tramite circuito visa. Quando effettui l’operazione firmi con la tua impronta digitale o un otp. |
Firmare transazione con EOA | Un utente interroga uno smart contract con il proprio wallet scrivendo informazioni sulla blockchain. Questa operazione ha un costo di commissione di rete (gas) ed è a carico dell’utente. | Ogni volta che paghi con la carta di credito e la banca potrebbe decidere di farti pagare un costo di commissione. |
Firmare una transazione con Smart Contract Wallet | Un utente interroga uno smart contract con il proprio wallet scrivendo informazioni sulla blockchain. Ma questa volta lo fa con uno Smart Contract Wallet e il costo dell’operazione è a carico del contratto di Factory. Quindi per l’utente l’operazione risulta gasless , cioè gratuita. | Ogni volta che paghi con la carta di credito e la banca potrebbe decidere di farsi carico del costo di commissione. |
Commissioni di rete EOA | A carico dell’utente . Quindi l’utente paga il gas. | Quando si paga con la carta si pagano delle commissioni |
Commissioni di rete per Smart Contract Wallet | Per l’utente le transazioni sono gasless. | La banca si fa carico delle commissioni , come quando si fanno i bonifici ma sono gratis per l’utente |
Per il caso studio, ho sviluppato un MVP con le seguenti specifiche:
Creazione di uno smart contract "Factory" che implementa Account Abstraction; da questo contratto generiamo gli smart contract account per i nostri utenti.
Creazione di uno smart contract per la Notarizzazione.
Creazione di una dapp deployata in grado di interagire con lo smart contract per la Notarizzazione senza richiedere gas all'utente, poiché il gas viene pagato dallo smart contract Factory.
L'applicazione si trova a questo link: https://notarizza.abeatbeyond.com/ Di seguito troverai la guida su come utilizzarla.
Step 1 : fare il login con il tuo Smart Contract Wallet
Ci sono tre modalità di login con smart wallet account:
login con la mail, disponibile via Google o via mail con otp ( funziona, ma è un po' lento, per questo porta pazienza)
login con Metamask ( se lo hai installato nel browser )
altrimenti login come "guest" (è il metodo di connessione più veloce perchè ti chiede di generare una password generando un wallet EOA salvato localmente nella cache del browser)
Step 2: Notarizzare
Una volta connessi con la modalità di login desiderata, è possibile inserire un documento e dei metadati per identificarlo, e cioè un tag e un codice identificativo a piacere.
Quindi si clicca invia. Attendendo qualche secondo si vedrà comparire nella tabella sotto il documento notarizzato. Il gas è stato speso dal contratto di Factory.
Step3 : verificare che il documento sia notarizzato
Quindi per controllare che i dati sono stati caricati correttamente è possibile verificare se il documento che si ha sul proprio pc corrisponde alla hash caricato su blockchain.
Se c'è corrispondenza si avrà un messaggio di successo, altrimenti uno di errore.
I contratti sono stati deployati su Goerli che è una blockchain di test. Di conseguenza non si deve usare questa dapp per effettuare notarizzazioni vere. Se hai bisogno di implementare la notarizzazione nel tuo processo puoi contattarmi visitando www.abeatbeyond.com