MultiChain 2.1: variabili e librerie

Nodo di origine: 1587135

Rendere i filtri intelligenti molto più intelligenti

Oggi siamo lieti di rilasciare MultiChain 2.1, con due importanti novità per gli sviluppatori MultiChain.

Un anno e mezzo fa è stato introdotto MultiChain 2.0 Filtri intelligenti, che consentono di incorporare la logica personalizzata in una blockchain per la convalida di transazioni e dati. Gli Smart Filter sono concettualmente simili agli "smart contract" forniti da altre piattaforme blockchain, ma hanno un design diverso per adattarsi al modello di transazione più veloce di MultiChain.

I filtri intelligenti sono disponibili in due varietà: filtri di transazione e filtri di flusso. Un filtro delle transazioni convalida le transazioni on-chain nella loro interezza, esaminandone input, output e metadati. Se una transazione non supera il filtro, viene rifiutata da ogni nodo della rete. Un filtro di flusso convalida i singoli elementi scritti in a Flusso multicatena, guardando le loro chiavi, editori e dati on-chain o off-chain, in formato JSON, testo o binario. Se un elemento non supera il filtro, viene contrassegnato come non valido e i suoi dati vengono nascosti da ogni nodo sottoscritto al flusso.

Entrambi i tipi di Smart Filter sono scritti in JavaScript ed eseguiti all'interno di una versione deterministica di Google V8, il velocissimo motore JavaScript che alimenta Chrome, Node.js e molte altre piattaforme. I filtri semplici sono facili da codificare e comprendere, ad esempio, ecco un filtro di flusso che convalida che gli elementi abbiano almeno due chiavi:

function filterstreamitem() { var item=getfilterstreamitem(); // funzione di callback if (item.keys.length2) restituisce "Sono necessarie almeno due chiavi"; }

Nel complesso, abbiamo ricevuto un ottimo feedback sugli Smart Filter, ma abbiamo anche sentito più volte parlare di due modi in cui potremmo renderli ancora migliori. Innanzitutto, molti utenti desiderano filtri in grado di leggere le informazioni che si trovano sulla blockchain ma non all'interno della transazione o dell'elemento del flusso in fase di convalida. I casi d'uso includono un elenco modificabile di paesi consentiti, tassi di cambio forniti da un "oracolo" esterno o un interruttore per attivare determinate regole.

In secondo luogo, alcuni sviluppatori desiderano utilizzare un insieme di funzioni JavaScript in più filtri, senza duplicare il codice. Vogliono anche essere in grado di aggiornare queste funzioni, correggere un bug o coprire alcune nuove situazioni, senza disabilitare i filtri esistenti e crearne di nuovi al loro posto. Ad esempio, il codice condiviso potrebbe contenere la logica specifica dell'applicazione, una libreria di terze parti per la convalida di JSON o l'analisi del contenuto di un PDF.

MultiCatena 2.1 introduce due nuovi tipi di entità on-chain, variabili ed biblioteche, per rispondere a queste esigenze.

Variabili

Iniziamo con le variabili MultiChain. Funzionano come quelli dei normali linguaggi di programmazione, ma con una svolta blockchain. Qualsiasi numero di variabili con nome può essere creato sulla blockchain. Ciascuna variabile ha un insieme dinamico di indirizzi a cui è consentito aggiornarne il valore, e questo insieme è gestito da uno o più amministratori delle variabili (per impostazione predefinita, solo il creatore della variabile). Le variabili vengono create o aggiornate in una transazione blockchain, che può essere inviata utilizzando un semplice comando API di alto livello. In alternativa, le API di livello inferiore possono essere utilizzate per creare transazioni complesse che impostano in modo atomico una o più variabili, scrivono elementi di flusso, trasferiscono risorse, modificano le autorizzazioni e così via.

Il valore della variabile stesso può contenere qualsiasi struttura JSON, inclusi numeri, stringhe, booleane, oggetti nidificati e array, ed è archiviato nella catena nell'efficiente UBJSON formato di serializzazione. Naturalmente, gli Smart Filter possono interrogare il valore corrente di una variabile utilizzando una semplice funzione di callback. Ma poiché si tratta di una blockchain, è disponibile anche la cronologia completa dei valori e degli autori della variabile e può essere recuperata in parte o per intero utilizzando un'altra funzione di callback. Per semplificare lo sviluppo, questi callback sono disponibili anche tramite l'API rivolta all'applicazione.

Biblioteche

Passiamo alle librerie, che sono le sorelle maggiori delle variabili. Come per le variabili, sulla blockchain è possibile creare un numero qualsiasi di librerie con nome. Ma le biblioteche hanno un modello più ricco per l'aggiornamento, con tre modalità disponibili: immutabile, immediatoe soggetto ad approvazione.

Una volta un immutabile viene creata la libreria, il suo codice non può mai essere modificato. Una libreria con immediato gli aggiornamenti possono essere modificati come una variabile, con un insieme di indirizzi che possono sostituirne singolarmente il codice. Ma in una libreria con soggetto ad approvazione aggiornamenti, un aggiornamento viene applicato solo dopo essere stato approvato da una certa percentuale di amministratori globali della blockchain. Quest'ultima modalità offre un ottimo compromesso tra sicurezza e flessibilità.

Il codice per una libreria è scritto in JavaScript normale e definisce una o più funzioni che gli Smart Filter possono utilizzare. Come per le variabili, le librerie vengono create o aggiornate in una transazione speciale, inviata facilmente tramite l'API. Quando viene creato uno Smart Filter, le relative librerie richieste vengono quindi fornite in un parametro facoltativo. Una libreria viene sempre eseguita nel contesto del filtro che lo richiede, quindi può utilizzare i callback di Smart Filter ove appropriato. MultiChain fornisce funzionalità estese per testare (e ripristinare) le librerie e i loro aggiornamenti in locale, prima di apportare modifiche alla blockchain.

Per finire

Come per tutte le funzionalità relative alle regole della blockchain, variabili e librerie sono disponibili sia nelle edizioni Community che Enterprise di MultiChain 2.1. La nostra documentazione per gli sviluppatori fornisce una descrizione dettagliata del nuovo API JSON-RPC ed Richiamate con filtro intelligente a disposizione. Per utilizzare le nuove funzionalità su una blockchain già in esecuzione, migra prima i nodi su MultiChain 2.1, quindi upgrade il protocollo della catena alla versione 20012.

Allora, qual è il prossimo? Nei prossimi mesi, ci concentreremo su alcuni dettagliati e intensi lavori sotto il cofano, per migliorare le prestazioni e la concorrenza di MultiChain mentre è sotto carico significativo. Ciò aumenterà la reattività delle applicazioni che devono interrogare un nodo mentre continua a elaborare centinaia o migliaia di nuove transazioni al secondo.

Nel frattempo, tutti noi del team MultiChain auguriamo ai nostri utenti e clienti salute e sanità mentale per l'anno a venire. Sappiamo che questi sono tempi difficili per tutti e non vediamo l'ora di tornare al normale ritmo di incontri e conferenze non appena sarà sicuro.

Si prega di inviare eventuali commenti LinkedIn.

Timestamp:

Di più da più giri