MultiChain 2.1: Variabile și biblioteci

Nodul sursă: 1587135

Efectuarea filtrelor inteligente mult mai inteligente

Astăzi, suntem încântați să lansăm MultiChain 2.1, cu două funcții noi importante pentru dezvoltatorii MultiChain.

Acum un an și jumătate, MultiChain 2.0 a fost introdus Filtre inteligente, care permit logica personalizată să fie încorporată într-un blockchain pentru validarea tranzacțiilor și a datelor. Filtrele inteligente sunt similare conceptual cu „contractele inteligente” oferite de alte platforme blockchain, dar au un design diferit pentru a se potrivi modelului de tranzacție mai rapid al MultiChain.

Filtrele inteligente sunt disponibile în două variante – filtre de tranzacții și filtre de flux. Un filtru de tranzacții validează tranzacțiile în lanț în întregime, examinându-le intrările, ieșirile și metadatele. Dacă o tranzacție nu trece de filtru, aceasta este respinsă de fiecare nod din rețea. Un filtru de flux validează elementele individuale scrise în a Flux MultiChain, uitându-se la cheile, editorii și datele în lanț sau în afara lanțului, în format JSON, text sau binar. Dacă un articol nu trece de filtru, este marcat ca nevalid și datele sale sunt ascunse de fiecare nod abonat la flux.

Ambele tipuri de filtru inteligent sunt scrise în JavaScript și rulează într-o versiune deterministă a Google V8, motorul JavaScript super-rapid care alimentează Chrome, Node.js și multe alte platforme. Filtrele simple sunt ușor de codat și de înțeles – de exemplu, iată un filtru de flux care validează faptul că articolele au cel puțin două chei:

function filterstreamitem() { var item=getfilterstreamitem(); // funcția de apel invers dacă (item.keys.length2) returnează „Cel puțin două chei necesare”; }

În general, am primit feedback grozav cu privire la filtrele inteligente, dar am auzit și în mod repetat despre două moduri în care le-am putea îmbunătăți și mai bine. În primul rând, mulți utilizatori doresc filtre care pot citi informațiile care se află în blockchain, dar nu în cadrul tranzacției sau al elementului de flux care este validat. Cazurile de utilizare includ o listă în schimbare a țărilor permise, ratele de schimb furnizate de un „oracol” extern sau o schimbare pentru a comuta anumite reguli.

În al doilea rând, unii dezvoltatori doresc să folosească un set de funcții JavaScript în mai multe filtre, fără a duplica codul. De asemenea, vor să poată actualiza aceste funcții, să remedieze un bug sau să acopere unele situații noi, fără a-și dezactiva filtrele existente și a crea altele noi în locul lor. De exemplu, codul partajat poate conține logica specifică aplicației, o bibliotecă terță parte pentru validarea JSON-urilor sau analizarea conținutului unui PDF.

MultiChain 2.1 introduce două noi tipuri de entități în lanț, variabile și biblioteci, pentru a răspunde acestor nevoi.

Variabile

Să începem cu variabilele MultiChain. Acestea funcționează destul de ca cele din limbaje de programare obișnuite, dar cu o întorsătură de tip blockchain. Pe blockchain pot fi create orice număr de variabile numite. Fiecare variabilă are un set dinamic de adrese cărora le este permis să-și actualizeze valoarea, iar acest set este gestionat de unul sau mai mulți administratori de variabile (în mod implicit, doar creatorul variabilei). Variabilele sunt create sau actualizate într-o tranzacție blockchain, care poate fi trimisă folosind o comandă API simplă de nivel înalt. Alternativ, API-urile de nivel inferior pot fi folosite pentru a construi tranzacții complexe care setează atomic una sau mai multe variabile, scrie elemente de flux, transferă active, modifică permisiunile și așa mai departe.

Valoarea variabilă în sine poate conține orice structură JSON, inclusiv numere, șiruri, boolean, obiecte imbricate și matrice și este stocată în lanț în sistemul eficient. UBJSON format de serializare. Desigur, Filtrele inteligente pot interoga valoarea curentă a unei variabile folosind o funcție simplă de apel invers. Dar, deoarece acesta este un blockchain, este disponibil și istoricul complet al valorilor și al scriitorilor variabilei și poate fi preluat parțial sau integral folosind o altă funcție de apel invers. Pentru a facilita dezvoltarea, aceste apeluri inverse sunt disponibile și prin intermediul API-ului orientat către aplicații.

Biblioteci

Să trecem la biblioteci, care sunt fratele mai mare al variabilelor. Ca și în cazul variabilelor, pe blockchain pot fi create orice număr de biblioteci numite. Dar bibliotecile au un model mai bogat de actualizare, cu trei moduri disponibile - imuabil, clipă, și supuse-aprobării.

Odată ce imuabil biblioteca este creată, codul acesteia nu poate fi schimbat niciodată. O bibliotecă cu clipă actualizările pot fi modificate ca o variabilă, cu un set de adrese care pot înlocui individual codul acestuia. Dar într-o bibliotecă cu supuse-aprobării actualizări, o actualizare se aplică numai după ce a fost aprobată de o anumită proporție din administratorii globali ai blockchain-ului. Acest ultim mod oferă un compromis excelent între securitate și flexibilitate.

Codul pentru o bibliotecă este scris în JavaScript obișnuit și definește una sau mai multe funcții pe care să le folosească Filtrele inteligente. Ca și în cazul variabilelor, bibliotecile sunt create sau actualizate într-o tranzacție specială, trimisă cu ușurință folosind API-ul. Când este creat un filtru inteligent, bibliotecile sale necesare sunt apoi furnizate într-un parametru opțional. O bibliotecă rulează întotdeauna în contextul filtrului care o necesită, astfel încât poate utiliza apeluri inverse ale filtrului inteligent, acolo unde este cazul. MultiChain oferă o funcționalitate extinsă pentru testarea (și derularea înapoi) a bibliotecilor și a actualizărilor acestora la nivel local, înainte de a face o schimbare în blockchain.

Încheindu-l

Ca și în cazul tuturor caracteristicilor legate de regulile blockchain-ului, variabilele și bibliotecile sunt disponibile atât în ​​ediția Community, cât și în ediția Enterprise a MultiChain 2.1. Documentația noastră pentru dezvoltatori oferă o descriere detaliată a noului API-uri JSON-RPC și Reapeluri cu Filtru inteligent disponibil. Pentru a utiliza noile funcții pe un blockchain care rulează deja, mai întâi migrați nodurile la MultiChain 2.1, apoi upgrade-ul protocolul lanțului la versiunea 20012.

Deci ce urmeaza? În lunile următoare, ne vom concentra pe niște lucrări detaliate și intense sub capotă, pentru a îmbunătăți performanța și concurența MultiChain în timp ce acesta se află sub o sarcină semnificativă. Acest lucru va crește capacitatea de răspuns a aplicațiilor care trebuie să interogheze un nod în timp ce acesta continuă să proceseze sute sau mii de tranzacții noi pe secundă.

Între timp, toți cei din echipa MultiChain le dorim utilizatorilor și clienților noștri sănătate și sănătate mentală pentru anul următor. Știm că sunt vremuri dificile pentru toată lumea și așteptăm cu nerăbdare să revenim la ritmul normal de întâlniri și conferințe de îndată ce va fi în siguranță.

Vă rugăm să postați comentarii pe LinkedIn.

Timestamp-ul:

Mai mult de la multicatenari