Nya funktioner och färdplan 2016

Källnod: 1576913

En uppdatering från MultiChains fabriksgolv

Som en förändring från blogginlägg om blockchains i allmänhet vill jag ge en uppdatering om MultiKedja, både när det gäller de senaste förbättringarna och vår färdplan för 2016.

Först vill jag tacka de många tusentals av er som har laddat ner och byggt på MultiChain, frågade frågor och skickade oss feedback. Under de åtta månaderna sedan den första offentliga utgåvan har vår statistik visat en konstant organisk tillväxt i trafik och nedladdningar, och jag hoppas att det här betyder att vi når platsen. Utan att nämna namn vet vi faktiskt att MultiChain framgångsrikt har använts för långvariga blockchain-piloter i några av de största bankerna, konsultföretag, finansiell teknik och IT-företag på planeten.

En fråga som vi ofta ställer är varför MultiChain har varit i "alfa" så länge. Det enkla svaret är att vi har bombats med funktionsförfrågningar, varav de flesta var meningsfulla för oss, så vi har fokuserat på att lägga till dessa förbättringar snarare än att föra produkten till beta. Med detta sagt borde du hitta MultiChain som mycket stabil för alfa-programvara, och vi har testat det grundligt under extrema belastningar.

Jag vill också förklara hur vi placerar MultiChain i det bredare utrymmet för blockchain-plattformar. Under de senaste sex månaderna har många konkurrerande produkter tillkännagivits, (kvasi-) konsortier har bildats, företag har samlat in tiotals miljoner dollar och bara ibland har vi sett några riktiga mjukvaruutgåvor. Naturligtvis är konkurrensen naturlig och oundviklig och vi ser fram emot att se dessa andra plattformar utvecklas. Vi lånar utan tvekan deras bästa idéer, och vi antar att de kommer att ge tillbaka komplimangen.

Så var passar MultiChain in med allt detta ljud? I ett nötskal är det fokuserat på produkt och användbarhet:

  • Stabilitet. Genom att gaffla från Bitcoin Core, referensimplementeringen för bitcoin-nätverket, bygger MultiChain på åren av hårt förvärvad stabilitet och säkerhet som kommer från att förvalta miljarder dollar i kryptovalutavärde på det öppna Internet. För att vara tydlig har Bitcoin Core-kodbasen arkitektoniska begränsningar, och vi kan så småningom behöva gå bort från den. För nuvarande användarkrav skulle dock kostnaden för att göra det väsentligt uppväga fördelarna.
  • Användarvänlighet. Många MultiChain-användare har sagt till oss att det är mycket lättare att använda än konkurrerande blockchain-plattformar. Jag kan inte ens minnas hur många gånger jag har sagt till någon att de kan gå från noll till sin egen privata blockchain på några minuter, och de har bara inte trott på mig. Men det är verkligen sant - följ bara instruktionerna på ladda ner och komma igång och se själv. Inga beroenden, ingen kompilering, inget bråk med Docker. Bara tre fristående körbara filer och en README-fil.
  • Funktioner. När MultiChain släpptes först hade det mycket färre funktioner än idag. Ingen kontroll per adress av tillgångar, inga atombytetransaktioner, inga enkla transaktionsmetadata. Så hur bestämmer vi vad vi ska lägga till? Enkelt - vi lyssnar på våra användare. Ibland vet de exakt vad de vill ha, som efterföljande tillgångsemission, och vi är glada att tvinga. Andra gånger vet de vad de vill uppnå, men vet inte hur de ska uttrycka det som en funktion, och det är vårt jobb att ta reda på det. Hur som helst drivs MultiChains färdplan obevekligt av användarfeedback och så kommer den att fortsätta.
  • Bitcoin-kompatibilitet. Om du bygger en blockchain-lösning hittar du att noden bara är en liten del av bilden. Du kan behöva mobil- eller webbplånböcker, nyckelhanteringslösningar och ett bibliotek på något dunkelt språk för avkodning, signering och kodning av transaktioner. MultiChain är utformat för att göra allt detta så enkelt och snabbt som möjligt genom att bibehålla maximal kompatibilitet med bitcoin, för vilken en enorm mängd information, verktyg och kod är fritt tillgänglig. För att bevisa poängen kan MultiChain till och med göra det konfigureras som en nod i bitcoin-nätverket.

I grund och botten strävar vi efter att glädja våra användare och tror fast att detta är den säkraste vägen till kommersiell framgång. På den noten vill jag beskriva några av de nya funktionerna som har lagts till de senaste månaderna.

Efterföljande tillgångsemission (alfa 17)

Denna begäran har funnits ett tag och är den mest upprösta frågan på utvecklarens frågor och svar. Så varför tog det så lång tid? Du kan skylla på oss för att vi är purister. Du ser, när det gäller säkerhet finns det ingen skillnad mellan (a) att utfärda en gazillionenheter av en tillgång första gången och att hålla de flesta ur omlopp, och (b) tillåta uppföljningsemissioner av fler enheter av samma tillgång.

Men det visar sig att ur våra användares perspektiv, där is en ganska stor skillnad mellan de två fallen, för det är inte så lätt att skilja enheter i aktiv cirkulation från de som sitter på sidan. Så vi är glada att kunna meddela att i den version som släpptes idag, när du utfärdar en tillgång, kan du bestämma om den tillgången är öppen eller stängd. Om den är öppen kan den ursprungliga utfärdande parten skapa fler enheter så många gånger de vill.

På baksidan ger MultiChain nu också en kanonisk "brännadress" för varje kedja. Den här adressen är full av X och skapades såklart utan motsvarande privat nyckel (det skulle ta en oändlig tid att göra det). Eventuella tillgångsenheter som skickas till denna adress kan därför aldrig spenderas och förstöras på ett transparent sätt. Observera att för din säkerhet måste brännadressen uttryckligen beviljas mottagningsbehörigheter innan den kan användas.

API-samtal: issue, issuefrom, issuemore, issuemorefrom, listassets, getinfo svar burnaddress fält.

MultiChain Explorer

Tillsammans med alpha 17 släpper vi den första betaversionen av gratis och öppen källkod MultiChain Explorer. Detta ger en intuitiv webbaserad bild av det globala tillståndet för en MultiChain-blockchain, som liknar blockchain-upptäckarna som bitcoin-användare känner och älskar. Det låter dig snabbt och bekvämt se transaktioner, block, tillgångar och adresser, samt anslutningarna mellan dem, allt från din favoritwebbläsares bekvämlighet.

MultiChain Explorer gaffades från den populära Abe projekt, skrivet i Python och drivs av SQLite. Den ansluter till API: et för en lokal MultiChain-nod och inkluderar en fristående webbserver så att det inte finns några ytterligare beroenden. Vi hoppas att du gillar det här verktyget och välkomnar din feedback som hjälper oss att göra det ännu bättre.

Interaktivt kommandoläge (alpha 16)

Som en gaffel med Bitcoin Core, ärvde MultiChain bitcoin-cli verktyg, som vi lämpligt döpt om till multichain-cli självklart. Detta verktyg ger ett bekvämt kommandoradsgränssnitt för MultiChains JSON-RPC API, så att API-samtal kan skickas från systemkommandoraden, med deras svar visas i terminalen. Bakom kulisserna läser den API-referenserna från lämplig kedjans konfigurationsfil, bygger JSON-RPC-begäran och avkodar dess svar.

Som användare av MultiChain själva var en frustration vi hade multichain-cli måste köras separat för varje API-begäran. Förutom systemets omkostnader förhindrar detta den typ av flytande interaktion som SQL-databaser tillhandahåller. Och så fixade vi det. Från och med alpha 16, om du springer multichain-cli [chain-name] utan kommando släpps du in i ett interaktivt läge som låter dig upprepade gånger skriva kommandon och se deras svar. Interaktivt läge stöder standardredigeringsfunktioner som historik (upp- och nedpilar), hoppar till början (Ctrl A) eller slutet (Ctrl E) på raden och flyttar till nästa (Ctrl →) och föregående (Ctrl ←) ord .

Snabbare verifieringsverifiering (alpha 15)

När det gäller prestanda i bitcoin eller MultiChain är den mest avgörande flaskhalsen verifiering av ECDSA-signaturer som blockkedjans säkerhetsmodell bygger på. Den ursprungliga Bitcoin Core-programvaran förlitade sig på ett open source-bibliotek som heter OpenSSL för generering och verifiering av signaturer, som gjorde jobbet, även om det hade några problem med smidbarhet, vilket betyder att mer än en signatur var giltig för en viss privat nyckel och nyttolast.

Nya versioner av Bitcoin Core introducerade ett nytt bibliotek för ECDSA-signering och verifiering, kallat libsecp256k1. Detta bibliotek, skrivet från grunden av världsklass blockchain-utvecklare, tar bort beroendet av OpenSSL, löser problem med smidighet och utför flera gånger snabbare. En av fördelarna med att härledas från Bitcoin Core är att MultiChain kan dra nytta av sådana förbättringar, som utvärderas i stor utsträckning och testas innan de distribueras i bitcoin-nätverket. Och så gör alpha 15 exakt det med libsecp256k1.

Aktivera behörighet (alfa 14)

När vi utvecklade den första versionen av MultiChain stod vi inför ett dilemma när det gäller tillstånd. Å ena sidan skulle vi inte ha problem med att sammanställa och implementera en extremt kraftfull behörighetsmodell med flera lager av administratörer, behörigheter per tillgång och viktade röstscheman. Å andra sidan visste vi att dessa skulle ge komplexitet ur ett användarperspektiv och inte nödvändigtvis skulle matcha användarnas behov. Så vi bestämde oss för att börja med en enkel modell, som bara innehåller sex behörighetstyper (ansluta, skicka, ta emot, utfärda, mina, admin) och lite rak konsensusbaserad omröstning för de viktigaste rättighetsändringarna. Vi förväntade oss att den här modellen skulle bli mer komplex med tiden, men drivs av användarkrav snarare än våra egna teorier.

Det visar sig att i det här fallet är enkelt faktiskt ganska bra. Men en seriös partner vi arbetar med behövde något mer. Du förstår, en MultiChain-adress med administratörsbehörighet har makten att styra alla typer av behörigheter i en blockchain, i vissa fall föremål för konsensus med andra administratörer. Men den här partnern ville ge en adress makten att styra andras anslutning, skicka och ta emot behörigheter endast för ombordstigning och har inget inflytande på mer avgörande processer som gruvdrift och tillgångsemission. Så vi lade till ett nytt "aktivera" tillstånd som gör exakt detta. Detta var också det första exemplet på att en partner betalade för att implementera en funktion de behövde i produkten, en vinn-vinn om det någonsin fanns en.

API för plånbokstransaktion (alpha 13)

Som en gaffel av Bitcoin Core, ärvde MultiChain några av de dåliga tillsammans med de goda. En av de svaga punkterna i Bitcoin Core är API för att hämta information om transaktionerna i den lokala nodens plånbok. Det erbjuder två val: (a) getrawtransaction samtal som avkodar det binära innehållet i transaktioner, men inte förklarar hur de påverkade den lokala plånboken, och (b) gettransaction och listtransactions samtal som syftar till att beskriva transaktioner ur plånbokens perspektiv, men gör det på ett förvirrande sätt, med flera svarselement per transaktion. Att göra saker värre, produktionen från dessa samtal kunde inte enkelt utökas för att fungera med MultiChains implementering av blockchain-utgivna tillgångar.

Så den här versionen introducerade en massa nya API: er för att fråga en nods transaktioner. Utdata från dessa samtal behåller alla användbara fält från de som de ersätter. Men de lägger också till en massa nya fält som beskriver hur varje transaktion påverkade den lokala plånbokens saldo, som adresserar den involverade, hur den ändrade behörigheter och eventuella metadata som finns. Efter introduktionen (i alfa 8) av möjligheten att isolera aktiviteten för varje adress i en plånbok, kommer samtalen i två versioner - ett par som beskriver transaktioner ur plånboks perspektiv som helhet och en annan som beskriver dem från perspektivet på en enskild plånbokadress.

API-samtal: listwallettransactions, getwallettransaction, listaddresstransactions, getaddresstransaction.

Ser fram emot 2016

Det här är några av de stora förbättringarna som introducerats i MultiChain under de senaste månaderna. Naturligtvis har många mindre funktioner också lagts till och de listas i sin helhet i nedladdningens README-fil. Och vår första prioritet kommer alltid att vara fixa buggar så snart de dyker upp. Tack och lov har de frågor vi sett aldrig varit av allvarlig arkitektonisk karaktär - det glada resultatet av att använda Bitcoin Core som utgångspunkt.

När det gäller MultiChain själv, kommer vi att sakta ner lite efter ett utsläppsschema. Det beror på att vi jobbar med något stort som tar några månader att slutföra. Jag kommer att beskriva denna funktion i detalj i ett framtida blogginlägg, men grundidén är att tillhandahålla en enkel och effektiv oföränderlig inspelnings- och tidsstämplingsmekanism för alla typer av information, ett slags digitalt 'band'. Även om transaktionsmetadata i MultiChain redan kan användas för detta ändamål (i upp till 8 MB bitar) är det inte särskilt bekvämt för lagring eller hämtning, och det finns skalbarhetsproblem när man hanterar stora bitar av data.

Vad motiverar den här funktionen? Din feedback, naturligtvis, som har lärt oss att oföränderlig lagring för allmänt ändamål är ett mycket vanligt användningsfall för blockkedjor. Och om vi någonsin ser betydande efterfrågan på ”smarta kontrakt” (dvs. on-blockchain-beräkning) i MultiChain, kan detta system fungera som det underliggande lagringsskiktet, med beräkningar som utförs per nod, när det behövs. Som jag har gjort förklarade tidigare, det finns lite värde i att kräva att varje nod i en privat blockchain utför beräkningar i kedjan i realtid.

Och efter det? Tja utan tvekan kommer det att finnas fler förbättringar av den fria produkten, men vi kommer också att börja arbeta med en premiumversion av MultiChain. Som tur skulle ha har vi under de senaste 8 månaderna sett en massa vanliga funktionsförfrågningar som delar följande egenskaper:

  • De är viktiga för verkliga världsdistributioner, men inte för första experiment.
  • De kan implementeras per nod utan att påverka kedjans konsensus.
  • Verkliga företag som gör riktiga projekt verkar mer än gärna betala för dem.

Dessa funktioner är relaterade till prestanda, säkerhet, loggning och analys, och vi kommer att beskriva dem i detalj i tidens fullhet. För närvarande vill jag betona två viktiga saker med denna premiumversion. Först blir det en drop-in ersättning för den fria versionen, så all kod eller applikation som du bygger på MultiChain idag fortsätter att fungera omodifierad. För det andra kommer varje nod i en blockchain att kunna självständigt besluta huruvida man ska uppgradera eller inte, för ingen av premiumfunktionerna påverkar blockchainens samförstånd. Det är inte bara vi som är godhjärtade - det är avgörande om vi vill att MultiChain ska fortsätta växa organiskt. En ny enhet kommer att kunna ansluta och interagera med ett befintligt MultiChain-nätverk fullt av premiumnoder utan att spendera en krona.

Om du är intresserad av att diskutera premiumversionen av MultiChain, vänligen maila premium@multichain.com or använd det här formuläret. Vi får gärna lära dig mer om dina krav och se hur vi kan uppfylla dem.

En sak jag har lärt mig de senaste åren är att ingen tar programvaran på allvar förrän de faktiskt kan se och använda den. En månad före den första utgåvan av MultiChain berättade jag för folk om produkten, och jag märkte att de nickade artigt medan de uppenbarligen tänkte "Åh rädda mig, här är en annan snabbpratare med vitbok och ingen fungerande kod." Men så snart du gör en produkt tillgänglig ändras svaret helt. Så om du läser om den här framtida premiumversionen med en viss skepsis, förstår jag och kommer inte hålla den emot dig. Allt jag kan säga är att MultiChain hittills har en väldigt solid rekord när det gäller att uppfylla sina löften, och vi ser fram emot att fortsätta.

Jag vill också ta tillfället i akt och tacka vårt team för deras enastående arbete. Även om jag är en seriös kodare av yrke, tillbringar jag dessa dagar all tid på att skriva innehåll, hantera produkt och prata med kunder. Jag är oerhört lycklig att få veta att jag kan lita på våra utvecklare att skapa en solid och effektiv kod, dag efter dag, och jag tar det inte för givet för ett ögonblick.

Och slutligen tack till dig för att du läste och för att du är en tidig användare av MultiChain-plattformen.

Tidsstämpel:

Mer från Multikedja