Dweve

Deterministinen WebAssembly-hiekkalaatikko | Dweve Selvedge

Selvedge ajaa ei-luotettua koodia deterministisessä WebAssembly-hiekkalaatikossa ja palauttaa toistettavan ajotietueen. Julkaisu kolmannella kierroksella.

Choose the audience that matches your question

The page contains three selectable readings of the same subject.

For consumers

Selvedge laittaa ohjelman, jota et valinnut, huoneeseen ilman internettiä, ilman reittiä tiedostoihisi ja ilman mitään opittavaa koneestasi. Se jättää kuitin siitä, mitä palasi ja mitä ohjelma sai tehdä, jotta voit tarkistaa myöhemmän väitteen sen sijaan, että ottaisit jonkun sanan siitä.

For businesses

Selvedge on deterministinen WebAssembly-hiekkalaatikko luottamattomalle koodille. Sen käyttöoikeusmanifesti ja sinetöity transkriptio toimivat laitteistolla, jota hallitset, joten vastapuoli voi toistaa tallenteen omalla koneellaan ja kiista muuttuu hakemistohausta, ei vakuutuspyynnöstä.

For engineers

Selvedge suorittaa koodia, jota et kirjoittanut, WebAssembly-komponenttipalvelimessa ilman verkkoa, tiedostojärjestelmää, ympäristöä tai liikkuvaa kelloa. Jokainen valmis suoritus palauttaa tallenteen, jonka toinen osapuoli voi toistaa, ja suoritusraportin, joka kertoo, mitä koodi sai tehdä. Julkaistu Apache 2.0 -lisenssillä.

Kääntää Kera BNN -työkuormat Selvedge-ajoympäristöön.

Hash-ketjutettu tapahtumaprosessointi järjestelmätapahtumille.

Päättelytodistussertifikaatit, ei suorituspöytäkirjoja.

Selvedge julkaistaan perustan julkaisuohjelman neljännellä kierroksella Knotin ja Ledgerin jälkeen. Kun se julkaistaan, hiekkalaatikoi WASM-moduuli ja toista todistekuori itse.

Model Context Protocol -työkalujen suorituspinta.

Ed25519-sinöity, SHA3-256-pöytäkirja, offline-varmistus.

Graafi-IR-binäärineuroverkot, JIT ja tulkki.

Komponenttimallin ajonaikainen ympäristö, WASI 0.2 Preview 2 -isäntä.

Selvedge suorittaa luottamatonta koodia kyvykkyysrajoitetussa hiekkalaatikossa ja tallentaa suorituksen sinöityyn pöytäkirjaan. Rajoitus määrittää, mihin koodi voi koskea; pöytäkirja näyttää, mitä todella tapahtui, ja sen voi toistaa tarkistusta varten.

Model Context Protocol -palvelin agenttityökaluille.

Pitkäkestoinen agenttiajoympäristö jonolla.

build, verify, run, replay. CI-ystävällinen.

Linkitetty sovellukseesi crate-tiedostona.

Agenttityökalut, kolmannen osapuolen lisäosat, Kera BNN -päätelmät ja säännelty data kulkevat kaikki saman hallitun rajan läpi. Jokainen ajonaikainen ympäristö tuottaa saman sinöidyn todistekuoren, joten käyttöönoton muutokset eivät muuta tarkastustarinaa.

Compute module, vs 1187-1494 us vanilla.

Selvedge Wasmtime käynnistyy 62-243 kertaa nopeammin kuin tavallinen Wasmtime API-tasolla. Rehellinen kompromissi on kriittinen polku: tavallinen versio pitää 22 ns:n toistuvan kutsun, ja transkriptin tuottava komponenttimalli toimii siinä hitaammin. Kera JIT on lämpimänä 2 kertaa nopeampi graafityössä. Luvut ovat repositorion BENCHMARKS.md-tiedostosta.

Jokainen porttipäätös tallennetaan ja tiivistetään.

max_execution_time_ns, erillään fuelista.

max_memory_bytes, oletus 256 MiB, yläraja 4 GiB.

max_instructions, loppuminen pysäyttää työkuorman siististi.

Kello, satunnaisuus, tiedostojärjestelmä, verkko, ympäristö, stdio, prosessi, mukautettu. Oletusarvoisesti estetty.

Oletusarvoisesti estetty ominaisuusjoukko portittaa jokaisen isäntäkutsun kahdeksalla WASI-alueella. Resurssikatot muistille, fuelille ja ajalle rajoittavat karkaavaa käytöstä. Jokainen porttipäätös ja resurssiluku ovat transkriptissä.

Tarvitset kryptografista näyttöä siitä, mitä työkuorma teki, et luottamusta runtimeen.

Salli tiedostojärjestelmä, estä verkko, mutta ei kutsukohtaista merkintää auditointijäljessä.

FP ja seinäaika vuotavat läpi. Toisto tuottaa suunnilleen saman tulosteen, ei täsmälleen samaa.

Hiekkalaatikko pysäyttää karkaamisen. Se ei todista, että työkuorma käyttäytyi oikein sisällä.

Perinteiset hiekkalaatikot estävät huonon koodin karkaamisen. Ne eivät tuota tietuetta siitä, mitä koodi todella teki sisällä. Kun auditoija kysyy, vastaus on väite, ei näyttö.

Selvedge tallentaa täsmälleen sen, mitä suoritettiin, syötteestä tulosteeseen, jokainen isäntäkutsu sinetöitynä.

Kirjanpito tallentaa, mitä järjestelmässä tapahtui. Selvedge tallentaa, mitä koodi teki.

AION myöntää sertifikaatit ratkaisijan vaiheista, ei suorituskerroista.

Miten Selvedge eroaa AIONista ja Ledgeristä

Samat syötteet ja sama kirjekuori tuottavat aina saman tulosteen.

Kiinteä aikaleima ja siemenellä alustettu ChaCha20-PRNG korvaavat isäntäkoneen ajan ja satunnaisuuden.

Virtuaalikello, siemenellä alustettu RNG

Sisäinen laskenta, tallennus ja kumulointi käyttävät binääri-, kokonaisluku-, kiintoluku- tai mukautuvia kokonaisluku/kiintolukuesityksiä. Liukulukuja hyväksytään vain määritellyllä ulkoisella rajapinnalla, ja ne muunnetaan eksplisiittisesti ennen sisäistä työtä; sisäistä liukulukuvaravaihtoehtoa ei ole. Virtuaalikello pysyy kiinteänä, joten toisto tuottaa samat tavut.

Oletusarvoisesti deterministinen suoritus

Varmistaja toistaa offline-tilassa moduulitavuilla ja kirjekuorella yksin.

ed25519-allekirjoitus kirjekuoren juuresta. Ei proosaa.

Jokainen isäntäkutsuhash ketjuun. Muokkaukset rikkovat ketjun.

Sama kulku jokaisessa suorituksessa. Toisto on mekaanista.

AION-todiste myönnetty, ed25519-allekirjoitettu, kirjekuori valmis lähetettäväksi.

Jokainen isäntäkutsu ja tulos hashataan SHA3-256-ketjuun.

Wasmtime tai Kera suorittaa oletusarvoisesti kieltävässä hiekkalaatikossa.

Moduuli ladattu, rajoitukset kiinnitetty, resurssirajat sovellettu.

Selvedge suorittaa WASM- tai Kera-koodia oletusarvoisesti kieltävässä hiekkalaatikossa, hashää jokaisen isäntäkutsun SHA3-256-transkriptioketjuun ja käärii tuloksen allekirjoitettuun AION-todistekirjekuoreen. Kirjekuori toistuu ilman alkuperäistä hiekkalaatikkoa.

Mitä se säästää ja mitä riskejä se vähentää

Selvedge on deterministinen WebAssembly-hiekkalaatikko luottamattomalle koodille. Sen käyttöoikeusmanifesti ja sinetöity transkriptio toimivat laitteistolla, jota hallitset, joten vastapuoli voi toistaa tallenteen omalla koneellaan ja kiista muuttuu hakemistohausta, ei vakuutuspyynnöstä.

Selvedge laittaa ohjelman, jota et valinnut, huoneeseen ilman internettiä, ilman reittiä tiedostoihisi ja ilman mitään opittavaa koneestasi. Se jättää kuitin siitä, mitä palasi ja mitä ohjelma sai tehdä, jotta voit tarkistaa myöhemmän väitteen sen sijaan, että ottaisit jonkun sanan siitä.

Selvedge suorittaa koodia, jota et kirjoittanut, WebAssembly-komponenttipalvelimessa ilman verkkoa, tiedostojärjestelmää, ympäristöä tai liikkuvaa kelloa. Jokainen valmis suoritus palauttaa tallenteen, jonka toinen osapuoli voi toistaa, ja suoritusraportin, joka kertoo, mitä koodi sai tehdä. Julkaistu Apache 2.0 -lisenssillä.

Suorita luottamatonta koodia laitteistolla, jota hallitset.

Deterministinen WebAssembly-hiekkalaatikko.

Julkaisu on suunniteltu joka toinen viikko. Arkisto ja sen dokumentaatio julkaistaan yhdessä.

Se tekee yhden pienen tehtävän täällä, eikä missään muualla.

Suoritus valmistui onnistuneesti 18.4 ms:ssa

Huone, kuitti ja lista ovat koko lupaus.

Tässä se saapuu listana. Jokainen työ, joka käytti viallista ohjelmaa, nimeää sen koodilla, päivämäärällä ja lyhyellä käyttöoikeuslistalla, joten näet, mitä vaikutukset koskivat ja kuinka pitkälle ne saattoivat ulottua. Jos tekijöihin ei enää luoteta, peruutus tulee voimaan tietyllä päivitysvälillä sen sijaan, että se odottaisi varmenteen vanhenemista. Ohjelmisto on julkaistu Apache 2.0 -lisenssillä.

Tämän keskustelun tavallinen versio on arvio. Joku selvittää, mikä julkaisu todennäköisesti oli käynnissä, minä päivinä, kenelle, ja vastaus saapuu vaihteluvälinä varauksin. Tämä jättää korjauksen laajuuden määrittämiseen tarvittavat tosiasiat rekonstruktioksi eikä tallenteeksi. Korjaus alkaa listasta, joka voidaan tarkistaa.

Jokainen työ tallentaa lyhyen koodin tarkalle ohjelmalle, joka teki työn. Ei sen nimeä, ei sen versionumeroa, vaan itse ohjelman, joten kahdella samannimisellä koontiversiolla on silti eri koodit. Jos ohjelma myöhemmin osoittautuu vialliseksi, koodi on se, jonka avulla jokainen sen koskettama työ löydetään.

Kun jokin osoittautuu vääräksi, yksi koodi nimeää ohjelman.

Itse ohjelma ladataan tuoreena joka kerta omasta koodistaan, ja kuitti kantaa koodia sille koodille, joten tänään ajettu asia on todistettavasti sama kuin viime kuussa ajettu. Väliin ei kerry mitään, mistä kenenkään tarvitsisi myöhemmin huolehtia.

Uusi Selvedge-huone maksaa niin vähän, että yksi per työ on edullista, joten mitään ei tarvitse jakaa. Jos jotain todella täytyy siirtää, se luovutetaan tarkoituksella ja se näkyy tallenteessa luovutettuna asiana.

Jokainen työ saa uuden huoneen. Edellisestä ei ole siinä mitään: ei jääneitä muistiinpanoja, ei keskeneräistä työtä, ei muistia siitä, kuka pyysi. Tämä kuulostaa itsestäänselvältä, eikä se yleensä ole totta, koska huoneen ylläpito on halvempaa kuin uuden rakentaminen, joten useimmat järjestelmät pitävät huoneen ja käyttävät sen uudelleen.

Uusi huone on valmis seuraavaa työtä varten.

Ei löytynyt mitään on heikko todiste, koska se riippuu siitä, kuinka huolellisesti joku etsi ja kuinka kauan hänellä oli aikaa ennen kokousta. Kahden käyttöoikeuden lista on vahva todiste, koska siellä ei ollut muuta löydettävää.

Se muuttaa sitä, mitä tapahtuu, kun kysyt kysymyksen myöhemmin. Sen sijaan, että joku kävisi läpi, mitä ohjelma teki, ja raportoisi, ettei löytänyt mitään huolestuttavaa, käyttöoikeuslista on siinä suoraan, ja se on lyhyt.

Useimmat tietueet kertovat, mitä ohjelma teki. Selvedge-kuitti kertoo myös, mihin sillä oli lupa, mikä on eri ja hyödyllisempi asia. Ohjelma, jota ei koskaan päästetty tiedostojesi lähelle, ei ole voinut olla tiedostojesi lähellä, ja se on tietueessa riippumatta siitä, sattuiko joku katsomaan sillä hetkellä.

Koodi ei ole kopio ohjelmasta; se nimeää täsmälleen sen asian, joka suoritettiin.

Se myös sulkee pienen tempun. Ohjelma, joka voi lukea kelloa, voi käyttäytyä yhdellä tavalla ennen määräaikaa ja toisella tavalla sen jälkeen, eikä kukaan koskaan näkisi eroa. Kello, joka ei koskaan liiku, ei voi olla tarkkailtavana, joten ei ole mitään, mistä käyttäytyä eri tavalla.

Se antaa sinulle testin, jonka voit suorittaa itse. Jos jokin näyttää väärältä, suorita se uudelleen samalla syötteellä. Jos vastaus on sama, ohjelma toimii oikein ja ongelma on jossain muualla. Jos se on erilainen, jokin muuttui, ja vertailu kertoo minkä osan.