Esittelyssä MultiChain Streams

Lähdesolmu: 1213525

Jaetuille muuttumattomille avainarvo- ja aikasarjatietokannoille

Tänään olemme ylpeitä voidessamme julkaista viimeisimmän version MultiChainista, joka ottaa käyttöön uuden tärkeän toiminnallisuuden, jota kutsutaan ”streamiksi”. Suoratoistot tarjoavat luonnollisen abstraktin estoketjujen käyttötapauksissa, joissa keskitytään yleiseen tietojen hakuun, aikaleimoihin ja arkistointiin eikä omaisuuden siirtoon osallistujien välillä. Streameja voidaan käyttää kolmen erityyppisen tietokannan toteuttamiseen ketjussa:

  1. Avainarvotietokanta tai dokumenttivarasto NoSQL-tyyliin.
  2. Aikasarjatietokanta, joka keskittyy merkintöjen järjestykseen.
  3. Identiteettipohjainen tietokanta, jossa merkinnät luokitellaan tekijän mukaan.

Näitä voidaan pitää jaetun tietokannan "mitä", "milloin" ja "kuka".

Suoratoiston perusteet

MultiChain-lohkoketjuun voidaan luoda mikä tahansa määrä virtauksia, ja jokainen virta toimii itsenäisenä vain liitteenä olevana kohteena. Jokaisella streamin kohteella on seuraavat ominaisuudet:

  • Yksi tai useampi julkaisijat jotka ovat allekirjoittaneet kyseisen tuotteen digitaalisesti.
  • Valinnainen avain myöhempää hakua varten.
  • jotkut tiedot, joka voi vaihdella pienestä tekstikappaleesta moniin megatavuihin raakaa binääriä.
  • A aikaleima, joka otetaan sen lohkon otsikosta, jossa kohde on vahvistettu.

Kulissien takana jokaista virran kohdetta edustaa lohkoketjutapahtuma, mutta kehittäjät voivat lukea ja kirjoittaa virtoja ilman tietoisuutta tästä taustamekanismista. (Kehittyneemmät käyttäjät voivat käyttää raaka liiketoimet kirjoittaa useisiin virtoihin, antaa tai siirtää omaisuuksia ja / tai määrittää käyttöoikeudet yhdellä atomitapahtumalla.)

Suoratoistot integroituvat MultiChainin käyttöoikeusjärjestelmään monin tavoin. Ensinnäkin streamia voivat luoda vain ne, joilla on siihen lupa, samalla tavalla kuin omaisuutta voidaan antaa vain tietyillä osoitteilla. Kun virta luodaan, se on avoin tai suljettu. Avoimet virrat ovat kirjoitettavissa kaikille, joilla on lupa lähettää lohkoketjutapahtuma, kun taas suljetut virrat on rajoitettu muutettavaan sallittujen osoitteiden luetteloon. Jälkimmäisessä tapauksessa jokaisella virralla on yksi tai useampi järjestelmänvalvoja, jotka voivat muuttaa näitä kirjoitusoikeuksia ajan myötä.

Jokaisella lohkoketjulla on valinnainen 'root' -virta, joka on määritelty siinä parametrit ja on olemassa siitä hetkestä lähtien, kun ketju luodaan. Tämän avulla lohkoketjua voidaan käyttää välittömästi tietojen tallentamiseen ja noutamiseen odottamatta virran nimenomaista luomista.

Kuten olen keskusteltu aiemmin, luottamuksellisuus on suurin haaste monissa blockchain-käyttötapauksissa. Tämä johtuu siitä, että jokainen lohkoketjun solmu näkee täydellisen kopion koko ketjun sisällöstä. Suoratoistot tarjoavat luonnollisen tavan tukea salattua tietoa lohkoketjussa seuraavasti:

  1. Osallistujat käyttävät yhtä virtaa jakamaan julkisia avaimia mihin tahansa julkisen avaimen salaustekniikkaan.
  2. Toista virtaa käytetään tietojen julkaisemiseen, jossa kukin tieto salataan symmetrisellä salauksella ainutlaatuisella avaimella.
  3. Kolmas virta tarjoaa pääsyn tietoihin. Jokaiselle osallistujalle, jonka pitäisi nähdä tietopala, luodaan stream-merkintä, joka sisältää kyseisen datan salaisen avaimen, joka on salattu kyseisen osallistujan julkisella avaimella.

Tämä tarjoaa tehokkaan tavan arkistoida tietoja lohkoketjussa, samalla kun se näkyy vain tietyille osallistujille.

Haetaan virroista

Striimien ydinarvo on indeksoinnissa ja hakemisessa. Jokainen solmu voi valita mitkä virrat tilataan, ja lohkoketju takaa, että kaikki tietylle virralle tilaavat solmut näkevät samat kohteet sisällä. (Solmu voidaan määrittää myös tilaamaan automaattisesti kaikki uudet virrat.)

Jos solmu on tilattu virtaan, siitä voidaan hakea tietoja useilla tavoilla:

  • Haetaan kohteita streamista järjestyksessä.
  • Kohteiden haku tietyllä avaimella.
  • Haetaan tietyn julkaisijan allekirjoittamia kohteita.
  • Luetteloi virrassa käytetyt avaimet ja jokaisen avaimen kohdelaskenta.
  • Kustantajien luettelo streamissa, kohteiden lukumäärä.

Kuten alussa mainittiin, näiden hakumenetelmien avulla virtoja voidaan käyttää avainarvotietokannat, aikasarjatietokannat ja identiteettiin perustuvat tietokannat. Kaikki hakusovellusliittymät tarjoavat Alkaa ja laskea parametrit, joiden avulla voidaan hakea tehokkaasti pitkien luetteloiden alajaksoja (kuten LIMIT-lauseke SQL: ssä). Negatiiviset arvot kohteelle Alkaa salli uusimpien kohteiden haku.

Suoratoistot voivat sisältää useita kohteita samalla avaimella, ja tämä ratkaisee luonnollisesti jännitteen lohkoketjun muuttumattomuuden ja tarpeen päivittää tietokanta välillä. Jokaiselle tehokkaalle tietokannan 'merkinnälle' tulisi antaa yksilöllinen avain sovelluksessasi, ja jokainen kyseisen merkinnän päivitys on merkitty uudella stream-alkion avaimella. MultiChainin stream-hakusovellusliittymiä voidaan sitten käyttää: (a) hakemaan tietyn merkinnän ensimmäinen tai viimeinen versio, (b) hakemaan merkinnän täysversiohistoria, (c) hakemaan tietoja useista merkinnöistä, mukaan lukien ensimmäinen ja viimeinen merkintä jokaisen versiot.

Huomaa, että estoketjun vertaisverkkoarkkitehtuurin takia virran kohteet voivat saapua eri solmuihin eri järjestyksissä, ja MultiChain sallii kohteiden noutamisen ennen kuin ne 'vahvistetaan' lohkossa. Tämän seurauksena kaikki hakusovellusliittymät tarjoavat valinnan joko globaalin (oletus) tai paikallisen tilauksen välillä. Globaalit tilaukset takaavat, että kun ketju on päässyt yksimielisyyteen, kaikki solmut saavat samat vastaukset samoista API-kutsuista. Paikallinen tilaus takaa, että tietyn solmun kohdalla virran kohteiden järjestys ei koskaan muutu API-kutsujen välillä. Jokainen sovellus voi tehdä tarpeisiinsa sopivan valinnan.

Suoratoistot ja MultiChain-etenemissuunnitelma

Suoratoistojen julkaisemisen myötä olemme saaneet viimeisen tärkeän työn MultiChain 1.0: n käyttöön ja olemme nyt tiukasti beetalla. Odotamme viettää seuraavat kuukaudet sisäisen testipakettimme (jo melko suuren!) Laajentamiseen, Windows- ja Mac-porttien viimeistelyyn, lisäämällä hyödyllisiä sovellusliittymiä, päivittämällä tutkimusmatkailija virtojen osalta konsensusmekanismin näkökohtien muokkaaminen, verkkoesittelyn vapauttaminen ja yleensä koodin ja ohjeiden siistiminen. Mikä tärkeintä, jatkamme vikojen korjaamista heti, kun ne havaitaan, jotta virheemme eivät keskeytä työtäsi.

Missä virrat sopivat pitkällä aikavälillä MultiChain-etenemissuunnitelmaan? Askeleen taaksepäin MultiChain tarjoaa nyt kolme korkean tason toiminnallisuuden aluetta:

  • Oikeudet hallita, kuka voi muodostaa yhteyden, suorittaa tapahtumia, luoda omaisuuksia / virtoja, kaivaa / vahvistaa ja hallita.
  • Varat mukaan lukien liikkeeseenlasku, uudelleenkäynnistäminen, siirto, atomienvaihto, talletus ja tuhoaminen.
  • Streams API: lla virtojen luomiseen, kirjoittamiseen, tilaamiseen, indeksointiin ja noutamiseen.

Mitä seuraavaksi tässä luettelossa on MultiChain 1.0: n (ja premium-version) julkaisemisen jälkeen? Jos katsot API-komento jota käytetään virtojen luomiseen, huomaat ilmeisen tarpeettoman parametrin, jonka kiinteä arvo on stream. Tämän parametrin avulla MultiChain tukee tulevaisuudessa muun tyyppisiä korkean tason entiteettejä.

Parametrin mahdolliset tulevat arvot ovat evm (varten Ethereum-yhteensopiva virtuaalikone), sql (SQL-tyyliselle tietokannalle) tai jopa wiki (yhteistyössä muokatulle tekstille). Kaikki jaetut yksiköt, joiden tilan määrää järjestetty muutossarja, ovat mahdollisia ehdokkaita. Kukin tällainen yksikkö tarvitsee: (a) API: t, jotka tarjoavat oikean abstraktion tilansa päivittämiseksi, (b) sopivat mekanismit tilatuille solmuille kyseisen tilan seuraamiseksi ja (c) API: t osan tai koko tilan tehokkaaseen hakemiseen. Odotamme oppia, mitkä muut korkean tason yksiköt olisivat hyödyllisimpiä, jotka meidän tai kolmansien osapuolten on toteutettava laajennusarkkitehtuurin kautta.

Entä älykkäät sopimukset?

Yleisessä mielessä MultiChain käyttää lähestymistapaa, jossa tiedot on upotettu muuttumattomasti lohkoketjuun, mutta koodi tietojen tulkitsemiseksi solmussa tai sovelluskerroksessa. Tämä eroaa tarkoituksella "älykkäiden sopimusten" paradigmasta, jonka esimerkkinä on Ethereum, jossa koodi on upotettu lohkoketjuun ja toimii virtuaalikoneessa. Teoriassa, koska älykkäät sopimukset ovat Turing valmis, ne voivat toistaa MultiChainin tai minkä tahansa muun blockchain-alustan käyttäytymisen. Käytännössä Ethereum-tyylisillä älykkäillä sopimuksilla on kuitenkin monia tuskallisia puutteita:

  • Jokaisen solmun on suoritettava jokainen laskenta riippumatta siitä, onko se kiinnostava vai ei. Sen sijaan MultiChainissa kukin solmu päättää, mitkä virrat tilataan, ja voi jättää huomiotta muiden sisältämät tiedot.
  • Älykkäisiin sopimuksiin käytetyllä virtuaalikoneella on huomattavasti huonompi suorituskyky kuin koodilla, joka on koottu tietylle tietokonearkkitehtuurille.
  • Älykäs sopimuskoodi on kiinteästi upotettu ketjuun, mikä estää ominaisuuksien lisäämisen ja virheiden korjaamisen. Tämä osoitettiin voimakkaasti DAO: n kuolema.
  • Älykkääseen sopimukseen lähetetyt tapahtumat ei voi päivittää lohkoketjun tila niiden lopulliseen järjestykseen asti on tiedossa yleiskäyttöisen laskennan luonteen vuoksi. Tämä johtaa viivästyksiin (kunnes tapahtuma on vahvistettu lohkossa) sekä mahdollisiin peruutuksiin (jos ketjussa on haarukka). Sen sijaan MultiChain voi käsitellä kaikkia vahvistamattomien tapahtumien tyyppejä sopivalla tavalla: (a) saapuvat varat päivittävät välittömästi solmun vahvistamattoman saldon, (b) saapuvat stream-kohteet ovat heti saatavilla niiden globaalin tilauksen jälkeen, (c) käyttöoikeuksien muutokset käytetään välittömästi ja toistetaan sitten tulevissa lohkoissa.

Siitä huolimatta, kuten olen sanoi aiemmin, emme todellakaan sulje pois älykkäitä sopimuksia hyödyllisenä paradigmana blockchain-sovelluksille, jos ja kun näemme vahvoja käyttötapauksia. MultiChainissa älykkäät sopimukset toteutettaisiin kuitenkin virtamaisessa kerroksessa lohkoketjun päällä alimman tapahtumatason sijaan. Tämä säilyttää MultiChainin erinomaisen suorituskyvyn yksinkertaisemmille lohkoketjuyksiköille, kuten omaisuudelle ja virroille, samalla kun se tarjoaa hitaamman ketjun laskennan siellä, missä sitä todella tarvitaan. Mutta tällaisia ​​tapauksia on vähemmän kuin luulisi.

 

Ole hyvä ja lähetä kommentit LinkedIn.

 

Tekninen lisäys

Kaikki streamiin liittyvät komennot dokumentoidaan kokonaisuudessaan MultiChain API -sivu, mutta tässä on lyhyt yhteenveto:

  • Luo stream käyttämällä create stream or createfrom ... stream
  • Lisää kohde streamiin käyttämällä publish or publishfrom
  • Hae luettelo virroista käyttämällä liststreams
  • Aloita tai lopeta suoratoiston seuranta subscribe ja unsubscribe
  • Nouda stream-kohteita käyttämällä liststreamitems, liststreamkeyitems ja liststreampublisheritems
  • Luetteloi virta-avaimet ja julkaisijat liststreamkeys ja liststreampublishers
  • Suurten suoratoistokohteiden osalta hae kaikki tiedot käyttämällä gettxoutdata (Ks. maxshowndata alla)
  • Hallitse suoratoistokohtaisia ​​käyttöoikeuksia kaltaisilla puheluilla grant [address] stream1.write
  • Tarkastele streamin käyttöoikeuksia listpermissions stream1.*

Jotkut muut suoratoistoon liittyvät kehittäjän huomautukset:

  • - create lupa sallii osoitteen luoda streameja.
  • Asiaankuuluvat streamikohtaiset käyttöoikeudet ovat write, admin ja activate
  • Uusi blockchain-parametrit: root-stream-name (jätä tyhjäksi) root-stream-open, anyone-can-create, admin-consensus-create, max-std-op-returns-count
  • Uusi ajonaikainen parametrit: autosubscribe tilata automaattisesti luotut uudet virrat ja maxshowndata rajoittaa API-vastausten tietojen määrää (katso gettxoutdata edellä).
  • Stream-kohteen tietojen enimmäiskoko on vahvistettu max-std-op-return-size blockchain-parametri sekä pienempi maximum-block-size ja max-std-tx-size arvot miinus muutama sata tavua.
  • Vanhaa lompakkomuotoa käyttävät solmut eivät voi tilata suoratoistoja ja tulisi päivittää.

 

Aikaleima:

Lisää aiheesta moniketjuisille