MultiChain 2.1: Variabler og biblioteker

Gør smarte filtre meget smartere

I dag er vi glade for at frigive MultiChain 2.1 med to vigtige nye funktioner for MultiChain-udviklere.

For halvandet år siden introducerede MultiChain 2.0 Smarte filtre, som gør det muligt at indlejre tilpasset logik i en blockchain til validering af transaktioner og data. Smart-filtre ligner konceptuelt de "smarte kontrakter", der leveres af andre blockchain-platforme, men har et andet design, der passer til MultiChains hurtigere transaktionsmodel.

Smartfiltre findes i to varianter - transaktionsfiltre og streamfiltre. Et transaktionsfilter validerer on-chain transaktioner i deres helhed ved at undersøge deres input, output og metadata. Hvis en transaktion ikke passerer filteret, afvises den af ​​hver node i netværket. Et strømfilter validerer individuelle elementer skrevet til en MultiChain stream, ser på deres nøgle(r), udgiver(e) og on-chain eller off-chain data, i JSON, tekst eller binært format. Hvis et element ikke passerer filteret, markeres det som ugyldigt, og dets data skjules af hver node, der abonnerer på strømmen.

Begge typer Smart Filter er skrevet i JavaScript og kører i en deterministisk version af Googles V8, den superhurtige JavaScript-motor, som driver Chrome, Node.js og mange andre platforme. Simple filtre er nemme at kode og forstå – her er for eksempel et streamfilter, der validerer, at varer har mindst to nøgler:

function filterstreamitem() { var item=getfilterstreamitem(); // tilbagekaldsfunktion hvis (item.keys.length2) returnerer "Mindst to nøgler påkrævet"; }

Samlet set har vi fået god feedback på Smart Filters, men vi har også gentagne gange hørt om to måder, vi kunne gøre dem endnu bedre på. For det første ønsker mange brugere filtre, der kan læse information, som er på blockchain, men ikke inden for transaktionen eller stream-elementet, der valideres. Brugstilfælde omfatter en skiftende liste over tilladte lande, valutakurser leveret af et eksternt "orakel" eller en switch til at skifte til bestemte regler.

For det andet ønsker nogle udviklere at bruge et sæt JavaScript-funktioner i flere filtre uden at duplikere kode. De ønsker også at kunne opdatere disse funktioner, rette en fejl eller dække nogle nye situationer uden at deaktivere deres eksisterende filtre og oprette nye i deres sted. For eksempel kan delt kode indeholde applikationsspecifik logik, et tredjepartsbibliotek til validering af JSON'er eller parsing af indholdet af en PDF.

MultiChain 2.1 introducerer to nye typer af on-chain-enheder, variabler , biblioteker, for at imødekomme disse behov.

Variabler

Lad os starte med MultiChain-variabler. Disse fungerer ganske som dem i almindelige programmeringssprog, men med et blockchain-twist. Et hvilket som helst antal navngivne variabler kan oprettes på blockchain. Hver variabel har et dynamisk sæt adresser, som har tilladelse til at opdatere dens værdi, og dette sæt administreres af en eller flere variabeladministratorer (som standard kun variablens skaber). Variabler oprettes eller opdateres i en blockchain-transaktion, som kan sendes ved hjælp af en simpel API-kommando på højt niveau. Alternativt kan API'er på lavere niveau bruges til at bygge komplekse transaktioner, som atomisk indstiller en eller flere variabler, skriver strømelementer, overfører aktiver, ændrer tilladelser og så videre.

Selve variabelværdien kan indeholde en hvilken som helst JSON-struktur, inklusive tal, strenge, booleaner, indlejrede objekter og arrays, og lagres på kæden i den effektive UBJSON serialiseringsformat. Selvfølgelig kan Smart Filters forespørge på en variabels aktuelle værdi ved hjælp af en simpel tilbagekaldsfunktion. Men fordi dette er en blockchain, er den fulde historie af variablens værdier og skribenter også tilgængelig og kan hentes helt eller delvist ved hjælp af en anden tilbagekaldsfunktion. For at gøre udviklingen nemmere er disse tilbagekald også tilgængelige via den applikationsvendte API.

Biblioteker

Lad os gå videre til biblioteker, som er variables større søskende. Som med variabler kan et hvilket som helst antal navngivne biblioteker oprettes på blockchain. Men biblioteker har en rigere model til opdatering med tre tilgængelige tilstande – uforanderlige, øjeblikkeligog betinget af godkendelse.

Når en uforanderlige biblioteket er oprettet, dets kode kan aldrig ændres. Et bibliotek med øjeblikkelig opdateringer kan ændres som en variabel med et sæt adresser, der individuelt kan erstatte dens kode. Men i et bibliotek med betinget af godkendelse opdateringer, anvendes en opdatering først efter at være blevet godkendt af en vis andel af blockchains globale administratorer. Denne sidste tilstand giver en god afvejning mellem sikkerhed og fleksibilitet.

Koden til et bibliotek er skrevet i almindelig JavaScript, og definerer en eller flere funktioner, som Smart-filtre kan bruge. Som med variabler oprettes eller opdateres biblioteker i en speciel transaktion, der nemt sendes ved hjælp af API'en. Når et smart filter er oprettet, leveres dets nødvendige biblioteker i en valgfri parameter. Et bibliotek kører altid i sammenhæng med det filter, som kræver det, så det kan bruge Smart Filter-tilbagekald, hvor det er relevant. MultiChain giver omfattende funktionalitet til at teste (og rulle tilbage) biblioteker og deres opdateringer lokalt, før der foretages en ændring på blockchain.

Indpakning det

Som med alle funktioner relateret til blockchains regler, er variabler og biblioteker tilgængelige i både Community- og Enterprise-udgaven af ​​MultiChain 2.1. Vores udviklerdokumentation giver en detaljeret beskrivelse af det nye JSON-RPC API'er , Smart Filter-tilbagekald ledig. For at bruge de nye funktioner på en blockchain, der allerede kører, skal du først migrere noderne til MultiChain 2.1 og derefter opgradering kædens protokol til version 20012.

Så hvad er det næste? I løbet af de kommende måneder vil vi være fokuseret på noget detaljeret og intenst arbejde under hætten for at forbedre ydeevnen og samtidigheden af ​​MultiChain, mens den er under betydelig belastning. Dette vil øge reaktionsevnen af ​​applikationer, som skal forespørge en node, mens den fortsætter med at behandle hundreder eller tusinder af nye transaktioner pr. sekund.

I mellemtiden ønsker vi alle på MultiChain-teamet vores brugere og kunder sundhed og fornuft i det kommende år. Vi ved, at det er svære tider for alle, og vi ser frem til at vende tilbage til den normale rytme med møder og konferencer, så snart det er sikkert.

Skriv eventuelle kommentarer på LinkedIn.

Tidsstempel:

Mere fra multikæde