MultiChain 2.1: variabler och bibliotek

Källnod: 1587135

Att göra smarta filter mycket smartare

Idag är vi glada över att släppa MultiChain 2.1, med två viktiga nya funktioner för MultiChain-utvecklare.

För ett och ett halvt år sedan introducerades MultiChain 2.0 Smarta filter, som gör att anpassad logik kan bäddas in i en blockchain för validering av transaktioner och data. Smarta filter liknar konceptuellt de "smarta kontrakten" som tillhandahålls av andra blockchain-plattformar, men har en annan design för att passa MultiChains snabbare transaktionsmodell.

Smarta filter finns i två varianter – transaktionsfilter och strömfilter. Ett transaktionsfilter validerar transaktioner i kedjan i sin helhet genom att undersöka deras indata, utdata och metadata. Om en transaktion inte passerar filtret, avvisas den av varje nod i nätverket. Ett strömfilter validerar enskilda objekt som skrivits till en MultiChain stream, tittar på deras nyckel(r), utgivare och data i kedjan eller utanför kedjan, i JSON-, text- eller binärt format. Om ett objekt inte klarar filtret markeras det som ogiltigt och dess data döljs av varje nod som prenumererar på strömmen.

Båda typerna av Smart Filter är skrivna i JavaScript och körs inom en deterministisk version av Googles V8, den supersnabba JavaScript-motorn som driver Chrome, Node.js och många andra plattformar. Enkla filter är lätta att koda och förstå – här är till exempel ett strömfilter som validerar att objekt har minst två nycklar:

function filterstreamitem() { var item=getfilterstreamitem(); // återuppringningsfunktion if (item.keys.length2) returnerar "Minst två nycklar krävs"; }

Sammantaget har vi fått bra feedback om smarta filter, men vi har också upprepade gånger hört talas om två sätt att göra dem ännu bättre. För det första vill många användare ha filter som kan läsa information som finns i blockkedjan men inte i transaktionen eller strömobjektet som valideras. Användningsfall inkluderar en ändrad lista över tillåtna länder, växelkurser som tillhandahålls av ett externt "orakel" eller en switch för att växla vissa regler.

För det andra vill vissa utvecklare använda en uppsättning JavaScript-funktioner i flera filter, utan att duplicera kod. De vill också kunna uppdatera dessa funktioner, fixa en bugg eller täcka några nya situationer, utan att inaktivera sina befintliga filter och skapa nya i deras ställe. Till exempel kan delad kod innehålla applikationsspecifik logik, ett tredjepartsbibliotek för att validera JSONs eller tolka innehållet i en PDF.

MultiChain 2.1 introducerar två nya typer av on-chain-enheter, variabler och bibliotek, för att svara på dessa behov.

variabler

Låt oss börja med MultiChain-variabler. Dessa fungerar ungefär som de i vanliga programmeringsspråk, men med en blockchain-twist. Valfritt antal namngivna variabler kan skapas på blockkedjan. Varje variabel har en dynamisk uppsättning adresser som tillåts uppdatera dess värde, och denna uppsättning hanteras av en eller flera variabeladministratörer (som standard, endast variabelns skapare). Variabler skapas eller uppdateras i en blockchain-transaktion, som kan skickas med ett enkelt API-kommando på hög nivå. Alternativt kan API:er på lägre nivå användas för att bygga komplexa transaktioner som atomiskt sätter en eller flera variabler, skriver strömobjekt, överför tillgångar, ändrar behörigheter och så vidare.

Variabelvärdet i sig kan innehålla vilken JSON-struktur som helst, inklusive tal, strängar, booleaner, kapslade objekt och arrayer, och lagras i kedjan i den effektiva UBJSON serialiseringsformat. Naturligtvis kan Smart Filters fråga en variabels aktuella värde med hjälp av en enkel återuppringningsfunktion. Men eftersom det här är en blockkedja är den fullständiga historiken för variabelns värden och skrivare också tillgänglig, och kan hämtas helt eller delvis med en annan återuppringningsfunktion. För att göra utvecklingen enklare är dessa återuppringningar också tillgängliga via API:et som riktar sig till applikationer.

bibliotek

Låt oss gå vidare till bibliotek, som är variablers större syskon. Som med variabler kan valfritt antal namngivna bibliotek skapas på blockkedjan. Men biblioteken har en rikare modell för uppdatering, med tre tillgängliga lägen – oföränderlig, omedelbaroch är föremål för godkännande.

En gång en oföränderlig biblioteket skapas, dess kod kan aldrig ändras. Ett bibliotek med omedelbar uppdateringar kan ändras som en variabel, med en uppsättning adresser som individuellt kan ersätta dess kod. Men i ett bibliotek med är föremål för godkännande uppdateringar tillämpas en uppdatering först efter att ha godkänts av en viss andel av blockkedjans globala administratörer. Detta sista läge ger en bra avvägning mellan säkerhet och flexibilitet.

Koden för ett bibliotek är skriven i vanligt JavaScript och definierar en eller flera funktioner för Smart Filter att använda. Liksom med variabler skapas eller uppdateras biblioteken i en speciell transaktion som skickas enkelt med hjälp av API:et. När ett smart filter skapas tillhandahålls dess nödvändiga bibliotek i en valfri parameter. Ett bibliotek körs alltid i sammanhanget för filtret som kräver det, så det kan använda Smart Filter-återuppringningar där så är lämpligt. MultiChain tillhandahåller omfattande funktionalitet för att testa (och återställa) bibliotek och deras uppdateringar lokalt, innan du gör en förändring i blockkedjan.

Inslagning upp

Som med alla funktioner som rör blockkedjans regler, finns variabler och bibliotek tillgängliga i både Community- och Enterprise-utgåvorna av MultiChain 2.1. Vår utvecklardokumentation ger en detaljerad beskrivning av det nya JSON-RPC API:er och Smart Filter-återuppringningar tillgängliga. För att använda de nya funktionerna på en blockchain som redan körs, migrera först noderna till MultiChain 2.1 och sedan uppgradera kedjans protokoll till version 20012.

Så vad händer härnäst? Under de kommande månaderna kommer vi att fokusera på en del detaljerat och intensivt arbete under huven, för att förbättra prestandan och samtidigheten hos MultiChain medan den är under betydande belastning. Detta kommer att öka lyhördheten för applikationer som behöver fråga en nod medan den fortsätter att bearbeta hundratals eller tusentals nya transaktioner per sekund.

Under tiden önskar vi alla i MultiChain-teamet våra användare och kunder hälsa och förstånd för det kommande året. Vi vet att det är svåra tider för alla, och vi ser fram emot att återgå till den normala rytmen av möten och konferenser så snart det är säkert.

Skicka eventuella kommentarer på Link.

Tidsstämpel:

Mer från Multikedja