Building Helios: Täysin luotettava pääsy Ethereum PlatoBlockchain Data Intelligenceen. Pystysuuntainen haku. Ai.

Heliosin rakentaminen: Täysin luotettava pääsy Ethereumiin

Yksi tärkeimmistä syistä, miksi käytämme lohkoketjuja, on luotettavuus. Tämä omaisuus lupaa antaa meille itsenäisen pääsyn omaisuuteemme ja tietoihimme. Suurimmaksi osaksi Ethereumin kaltaiset lohkoketjut ovat pitäneet tämän lupauksensa – omaisuutemme ovat todella meidän. 

Olemme kuitenkin tehneet myönnytyksiä mukavuuden vuoksi. Yksi tällainen alue on keskitettyjen RPC-palvelimien (remote procedure call) käyttö. Käyttäjät käyttävät yleensä Ethereumia keskitettyjen palveluntarjoajien, kuten Alchemyn, kautta. Nämä yritykset käyttävät korkean suorituskyvyn solmuja pilvipalvelimilla, jotta muut pääsevät helposti käsiksi ketjutietoihin. Kun lompakko kyselee token-saldoaan tai tarkistaa, onko odottava tapahtuma sisällytetty lohkoon, se tekee sen melkein aina jonkin näistä keskitetyistä palveluntarjoajista. 

Nykyisen järjestelmän ongelmana on, että käyttäjien täytyy luottaa palveluntarjoajiin, eikä heidän kyselyjensä oikeellisuutta voida millään varmistaa.

enter Helios, kehittämämme ruostepohjainen Ethereum light -asiakas, joka tarjoaa täysin luotettavan pääsyn Ethereumiin. Helios - joka käyttää Ethereumin kevyttä asiakasprotokollaa, jonka mahdollisti viimeisin kytkin että todiste panoksesta — muuntaa tiedot epäluotettavalta keskitetyltä RPC-toimittajalta todistettavasti turvalliseksi paikalliseksi RPC:ksi. Helios toimii yhdessä keskitettyjen RPC:iden kanssa, jotta niiden aitous voidaan varmistaa ilman täyttä solmua. 

Siirrettävyyden ja hajauttamisen välinen kompromissi on yleinen ongelma, mutta asiakkaamme – jonka olemme antaneet yleisön saataville rakentaakseen ja paljon muuta – synkronoituu noin kahdessa sekunnissa, ei vaadi tallennustilaa ja antaa käyttäjille mahdollisuuden käyttää suojatun ketjun tietoja millä tahansa laitteella (mukaan lukien matkapuhelimet ja selainlaajennukset). Mutta mitkä ovat keskitettyyn infrastruktuuriin luottamuksen mahdolliset sudenkuopat? Kerromme tässä viestissä, kuinka ne voivat toimia, käymme läpi suunnittelupäätöksemme ja hahmottelemme myös muutamia ideoita, joita muut voivat osallistua codebase.

Keskitetyn infrastruktuurin sudenkuopat: teoreettisia olentoja Ethereumin "pimeässä metsässä"

(Teoreettinen) olento väijyy sisällä tumma metsä. Tämä ei metsästä saalistaan ​​Ethereum-muistissa, vaan asettaa ansoja matkimalla keskitettyä infrastruktuuria, johon olemme tottuneet luottamaan. Käyttäjät, jotka jäävät kiinni tähän ansaan, eivät tee virheitä: he vierailevat suosikkihajautetussa pörssissään, asettavat kohtuullisen lipsahduksen toleranssin ja ostavat ja myyvät tokeneja tavalliseen tapaan… He tekevät kaiken oikein, mutta joutuvat silti uudenlaisen palvelun uhriksi. sandwich-hyökkäys, ansa, joka on huolellisesti asetettu Ethereumin pimeän metsän sisäänkäynnille: RPC-palveluntarjoajat.

Ennen kuin käsittelemme asiaa, katsotaan kuinka kaupat toimivat hajautetuissa pörsseissä. Kun käyttäjät lähettävät swap-tapahtuman, he tarjoavat useita parametreja älykkäälle sopimukselle - mitkä tokenit vaihdetaan, swap-määrä ja mikä tärkeintä, vähimmäismäärä tokeneja, jotka käyttäjän on saatava tapahtuman läpiviemiseksi. Tämä viimeinen parametri määrittää, että swapin on täytettävä "minimilähtö" tai palautuva. Tätä kutsutaan usein "luiston toleranssiksi", koska se määrittää tehokkaasti suurimman hinnanmuutoksen, joka voi tapahtua tapahtuman lähettämisen mempooliin ja lohkoon sisällyttämisen välillä. Jos tämä parametri on asetettu liian alhaiseksi, käyttäjä hyväksyy mahdollisuuden vastaanottaa vähemmän tokeneita. Tämä tilanne voi myös johtaa sandwich-hyökkäykseen, jossa hyökkääjä tehokkaasti jakaa tarjouksen kahden haitallisen swapin väliin. Vaihtosopimukset nostavat spot-hintaa ja pakottavat käyttäjän kaupan tekemään vähemmän edulliseen hintaan. Hyökkääjä myy sitten heti saadakseen pienen voiton.

Niin kauan kuin tämä vähimmäistehoparametri on asetettu lähellä käypää arvoa, olet turvassa sandwich-hyökkäyksiltä. Mutta entä jos RPC-palveluntarjoajasi ei tarjoa tarkkaa hintatarjousta hajautetun pörssin älykkäästä sopimuksesta? Käyttäjä voidaan sitten huijata allekirjoittamaan swap-tapahtuma pienemmällä minimilähtöparametrilla ja, mikä pahempaa, lähettää tapahtuman suoraan haitalliselle RPC-palveluntarjoajalle. Sen sijaan, että palveluntarjoaja lähettäisi tämän tapahtuman julkiseen muistiin, jossa kymmenet robotit kilpailevat sandwich-hyökkäyksen suorittamisesta, palveluntarjoaja voi estää sen ja lähettää hyökkäystapahtumapaketin suoraan Flashboteille turvaten tuotot itselleen.

Tämän hyökkäyksen perimmäinen syy on se, että joku muu saa selville lohkoketjun tilan. Kokeneet käyttäjät ovat perinteisesti ratkaisseet tämän ongelman käyttämällä omia Ethereum-solmujaan – aikaa ja resursseja vaativa yritys, joka vaatii ainakin jatkuvasti verkossa olevan koneen, satoja gigatavuja tallennustilaa ja noin päivän synkronointia tyhjästä. Tämä prosessi on varmasti helpompi kuin ennen; ryhmät kuten Ethereum ARM:ssa ovat työskennelleet väsymättä tehdäkseen mahdolliseksi käyttää solmuja edullisilla laitteistoilla (kuten Raspberry Pi, johon on kiinnitetty ulkoinen kiintolevy). Mutta jopa näillä suhteellisen pienillä vaatimuksilla solmun käyttäminen on silti vaikeaa useimmille käyttäjille, etenkin mobiililaitteita käyttäville.

On tärkeää huomata, että keskitetyt RPC-palveluntarjoajien hyökkäykset, vaikkakin täysin uskottavia, ovat yleensä yksinkertaiset phishing-hyökkäykset - ja kuvailemamme ei ole vielä tapahtunut. Vaikka Alchemyn kaltaisten suurempien palveluntarjoajien historia ei anna meille juurikaan syytä epäillä niitä, kannattaa tehdä lisätutkimusta ennen kuin lisäät tuntemattomia RPC-palveluntarjoajia lompakkoosi.

Esittelyssä Helios: täysin luotettava pääsy Ethereumiin

Esittelemällä kevyen asiakasprotokollansa (jota mahdollisti äskettäinen siirtyminen Proof of Stakeen) Ethereum avasi jännittäviä uusia mahdollisuuksia nopeaan vuorovaikutukseen lohkoketjun kanssa ja RPC-päätepisteiden tarkistamiseen minimaalisilla laitteistovaatimuksilla. Tästä kuukaudesta lähtien Yhdistäminen, olemme nähneet uuden sarjan kevyitä asiakkaita toisistaan ​​riippumatta (Johtotähti, sadepilvija JavaScript-pohjainen Kevlar), jotka ovat käyttäneet erilaisia ​​lähestymistapoja saman tavoitteen palvelemiseksi: tehokas ja luotettava pääsy ilman täyttä solmua.

Ratkaisumme, Helios, on Ethereum light -asiakas, joka synkronoituu noin kahdessa sekunnissa, ei vaadi tallennustilaa ja tarjoaa täysin luotettavan pääsyn Ethereumiin. Kuten kaikki Ethereum-asiakkaat, Helios koostuu suoritustasosta ja konsensuskerroksesta. Toisin kuin useimmat muut asiakkaat, Helios yhdistää tiukasti molemmat kerrokset, joten käyttäjien tarvitsee asentaa ja suorittaa vain yksi ohjelmisto. (Erigon liikkuu myös tähän suuntaan lisäämällä konsensuskerroksen valoasiakkaan, joka on rakennettu suoraan arkistosolmuun). 

Joten miten se toimii? Helios-konsensuskerros käyttää aiemmin tunnettua majakkaketjun lohkohakua ja yhteyttä epäluotettavaan RPC:hen synkronoidakseen todennetavasti nykyisen lohkon kanssa. Helios-suorituskerros käyttää näitä todennettuja majakkaketjulohkoja yhdessä epäluotettavan suorituskerroksen RPC:n kanssa todistaakseen mielivaltaisia ​​tietoja ketjun tilasta, kuten tilisaldot, sopimusten tallennus, tapahtumakuitit ja älykkäiden sopimuspuhelujen tulokset. Nämä komponentit toimivat yhdessä palvellakseen käyttäjiä täysin luotettuna RPC:nä ilman, että tarvitsee suorittaa täyttä solmua.

…Konsensuskerroksessa

Konsensuskerroksen valoasiakas vastaa majakkaketjuvaloasiakasohjelmaa määrittely, ja hyödyntää majakkaketjun synkronointikomiteoita (otettiin käyttöön ennen Merge in the Altair hard fork -tapahtumaa). Synkronointikomitea on satunnaisesti valittu 512 validaattorin alajoukko, joka toimii noin 27 tunnin ajan. 

Kun validaattori on synkronointikomiteassa, he allekirjoittavat jokaisen näkemänsä majakkaketjun lohkootsikon. Jos yli kaksi kolmasosaa komiteasta allekirjoittaa tietyn lohkon otsikon, on erittäin todennäköistä, että kyseinen lohko on kanonisessa majakkaketjussa. Jos Helios tietää nykyisen synkronointikomitean kokoonpanon, se voi luotettavasti seurata ketjun päätä pyytämällä epäluotettavalta RPC:ltä viimeisimmän synkronointikomitean allekirjoituksen. 

Kiitos BLS:lle allekirjoitus yhdistäminen, uuden otsikon vahvistamiseen tarvitaan vain yksi tarkistus. Jos allekirjoitus on kelvollinen ja sen on allekirjoittanut yli kaksi kolmasosaa komiteasta, on turvallista olettaa, että lohko on sisällytetty ketjuun (tietysti se voidaan järjestää uudelleen pois ketjusta, mutta seurantalohkon lopullisuus voi tarjota tiukemmat takuut).

Tästä strategiasta puuttuu kuitenkin ilmeinen pala: kuinka löytää nykyinen synkronointikomitea. Tämä alkaa luottamuksen juuren hankkimisesta, jota kutsutaan nimellä heikko subjektiivisuuden tarkistuspiste. Älä anna nimen pelotella sinua – se tarkoittaa vain vanhaa blockhashia, jonka voimme taata, että se on sisällytetty ketjuun jossain vaiheessa aiemmin. On mielenkiintoista matematiikkaa sen takana, kuinka vanha tarkistuspiste voi olla; pahimman tapauksen analyysi viittaa noin kahteen viikkoon, kun taas käytännön arviot viittaavat useisiin kuukausiin. 

Jos tarkistuspiste on liian vanha, niitä on teoreettisia hyökkäyksiä joka voi huijata solmuja seuraamaan väärää ketjua. Heikon subjektiivisuuden tarkistuspisteen hankkiminen on protokollan kaistan ulkopuolella. Lähestymistapamme Heliosin kanssa tarjoaa alustavan tarkistuspisteen, joka on kovakoodattu koodikantaan (joka voidaan helposti ohittaa); se tallentaa sitten viimeisimmän viimeistellyn blockhash-tiedoston paikallisesti käytettäväksi tarkistuspisteenä tulevaisuudessa aina, kun solmu synkronoidaan. 

Kätevästi majakkaketjulohkot voidaan tiivistää ainutlaatuisen majakkalohkon tiivistämiseksi. Tämä tarkoittaa, että on helppoa pyytää solmulta täyttä majakkalohkoa ja sitten todistaa lohkon sisällön oikeellisuus tiivistämällä se ja vertaamalla tunnettuun lohkohakuun. Helios käyttää tätä ominaisuutta hakeakseen ja todistaakseen tiettyjä kenttiä heikon subjektiivisuuden tarkistuspisteen sisällä, mukaan lukien kaksi erittäin tärkeää kenttää: nykyinen synkronointikomitea ja seuraava synkronointikomitea. Kriittisesti tämä mekanismi antaa kevyille asiakkaille mahdollisuuden kelata eteenpäin lohkoketjun historiassa.

Nyt kun meillä on heikko subjektiivisuuden tarkistuspiste, voimme hakea ja tarkistaa nykyiset ja seuraavat synkronointikomiteat. Jos nykyinen ketjun pää on samassa synkronointikomiteajaksossa kuin tarkistuspiste, aloitamme välittömästi uusien lohkojen varmentamisen allekirjoitetuilla synkronointikomiteaotsikoilla. Jos tarkistuspisteessämme on useita synkronointitoimikuntia takana, voimme:

  1. Käytä seuraavaa tarkistuspisteemme jälkeistä synkronointikomiteaa noutaaksesi ja vahvistaaksesi lohkon, josta tulee yksi synkronointikomitea tulevaisuudessa.
  2. Käytä tätä uutta lohkoa uuden seuraavan synkronointikomitean hakemiseen.
  3. Jos edelleen jäljessä, palaa vaiheeseen 1.

Tämän prosessin jokainen iteraatio antaa meille mahdollisuuden kelata eteenpäin 27 tunnin ajan ketjun historiasta, aloittaa mistä tahansa menneisyydestä ja synkronoida nykyisen blockhash-haun kanssa.

…Toteutustasolla

Suorituskerroksen kevytasiakasohjelman tavoitteena on ottaa konsensuskerroksen vahvistamat majakkalohkootsikot ja käyttää niitä yhdessä epäluotettavan suorituskerroksen RPC:n kanssa varmennetun suorituskerroksen tietojen tarjoamiseen. Näitä tietoja voidaan sitten käyttää RPC-palvelimen kautta, jota Helios isännöi paikallisesti.

Tässä on yksinkertainen esimerkki tilin saldon noutamisesta alkaen nopeasta esittelystä siitä, kuinka tila tallennetaan Ethereumiin. Jokainen tili sisältää pari kenttää, kuten sopimuskoodin hash, nonce, storage hash ja saldo. Nämä tilit on tallennettu suureen, muokattuun Merkle-Patricia puu kutsutaan valtiopuuksi. Jos tiedämme tilapuun juuren, voimme vahvistaa merkle-todistuksia todistaakseen minkä tahansa tilin olemassaolon (tai poissulkemisen) puussa. Näitä todisteita on käytännössä mahdotonta väärentää.

Heliosilla on todennettu tilajuuri konsensuskerroksesta. Käyttämällä tätä juuria ja Merkle-todistepyynnöt epäluotettavalle suoritustasolle RPC, Helios voi paikallisesti tarkistaa kaikki Ethereumiin tallennetut tiedot.

Käytämme erilaisia ​​tekniikoita kaikenlaisten suorituskerroksen käyttämien tietojen tarkistamiseen; Yhdessä käytettynä voimme todentaa kaikki epäluotettavalta RPC:ltä haetut tiedot. Vaikka epäluotettava RPC voi estää pääsyn tietoihin, se ei voi enää tarjota meille vääriä tuloksia.

Heliosin käyttö luonnossa

Siirrettävyyden ja hajauttamisen välinen kompromissi on yleinen vaiva – mutta koska Helios on niin kevyt, käyttäjät voivat käyttää suojattua ketjudataa miltä tahansa laitteelta (mukaan lukien matkapuhelimet ja selainlaajennukset). Mahdollisuus käyttää Heliosia missä tahansa mahdollistaa useammille ihmisille pääsyn luotettaviin Ethereum-tietoihin heidän laitteistostaan ​​riippumatta. Tämä tarkoittaa, että käyttäjät voivat käyttää Heliosta RPC-palveluntarjoajanaan MetaMaskissa ja käyttää dappeja luottamuksella ilman muita muutoksia. 

Lisäksi Rustin WebAssembly-tuki mahdollistaa sovelluskehittäjien helposti upottaa Heliosin Javascript-sovelluksiin (kuten lompakoihin ja dappeihin). Nämä integraatiot tekisivät Ethereumista turvallisemman ja vähentäisivät tarvettamme luottaa keskitettyyn infrastruktuuriin.

Emme malta odottaa, mitä yhteisö keksii. Mutta sillä välin on monia tapoja osallistua Heliosin kehittämiseen – jos et ole kiinnostunut osallistumaan koodikantaan, voit myös rakentaa ohjelmistoja, jotka integroivat Heliosin hyödyntääkseen sen edut. Nämä ovat vain muutamia ideoita, joista olemme innoissamme:

  • Tukee kevyiden asiakastietojen hakemista suoraan P2P-verkosta RPC:n kautta
  • Toteuta joitain puuttuvia RPC-menetelmiä
  • Luo Helios-versio, joka käännetään WebAssemblyyn
  • Integroi Helios suoraan lompakkoohjelmistoon
  • Rakenna web-hallintapaneeli, jonka avulla voit tarkastella token-saldoasi, joka hakee tiedot Heliosista upotettuna WebAssemblyn avulla.
  • Toteuta moottorin API niin, että Heliosin konsensuskerros voidaan yhdistää olemassa olevaan suorituskerroksen täyssolmuun

Tarkista koodikanta aloittaaksesi – otamme mielellämme vastaan ​​virheraportit, ominaisuuspyyntösi ja koodisi. Ja jos rakennat jotain muuta, jaa se kanssamme Twitter, Telegramtai Farcaster @a16zcrypto.

***
Tässä esitetyt näkemykset ovat yksittäisen AH Capital Management, LLC:n ("a16z") lainaaman henkilöstön näkemyksiä, eivätkä ne ole a16z:n tai sen tytäryhtiöiden näkemyksiä. Tietyt tähän sisältyvät tiedot on saatu kolmansien osapuolien lähteistä, mukaan lukien a16z:n hallinnoimien rahastojen kohdeyrityksiltä. Vaikka a16z on otettu luotettavilta uskotuista lähteistä, se ei ole itsenäisesti tarkistanut tällaisia ​​tietoja, eikä se esitä tietojen nykyistä tai pysyvää tarkkuutta tai sen soveltuvuutta tiettyyn tilanteeseen. Lisäksi tämä sisältö voi sisältää kolmannen osapuolen mainoksia; a16z ei ole tarkistanut tällaisia ​​mainoksia eikä tue mitään niiden sisältämää mainossisältöä.

Tämä sisältö on tarkoitettu vain tiedoksi, eikä siihen tule luottaa lainopillisena, liike-, sijoitus- tai veroneuvona. Näissä asioissa kannattaa kysyä neuvojanne. Viittaukset arvopapereihin tai digitaaliseen omaisuuteen ovat vain havainnollistavia, eivätkä ne ole sijoitussuositus tai tarjous tarjota sijoitusneuvontapalveluita. Lisäksi tämä sisältö ei ole suunnattu eikä tarkoitettu sijoittajien tai mahdollisten sijoittajien käytettäväksi, eikä siihen voida missään olosuhteissa luottaa tehdessään sijoituspäätöstä mihinkään a16z:n hallinnoimaan rahastoon. (A16z-rahastoon sijoitustarjous tehdään vain minkä tahansa tällaisen rahaston suunnatun osakeannin muistion, merkintäsopimuksen ja muiden asiaankuuluvien asiakirjojen perusteella, ja ne tulee lukea kokonaisuudessaan.) Kaikki mainitut sijoitukset tai kohdeyritykset, joihin viitataan, tai kuvatut eivät edusta kaikkia investointeja a16z:n hallinnoimiin ajoneuvoihin, eikä voi olla varmuutta siitä, että investoinnit ovat kannattavia tai että muilla tulevaisuudessa tehtävillä investoinneilla on samanlaisia ​​ominaisuuksia tai tuloksia. Luettelo Andreessen Horowitzin hallinnoimien rahastojen tekemistä sijoituksista (lukuun ottamatta sijoituksia, joiden osalta liikkeeseenlaskija ei ole antanut a16z:lle lupaa julkistaa, sekä ennalta ilmoittamattomat sijoitukset julkisesti noteerattuihin digitaalisiin omaisuuseriin) on saatavilla osoitteessa https://a16z.com/investments /.

Kaaviot ja kaaviot ovat vain tiedoksi, eikä niihin tule luottaa sijoituspäätöstä tehtäessä. Aiempi kehitys ei kerro tulevista tuloksista. Sisältö puhuu vain ilmoitetun päivämäärän mukaan. Kaikki näissä materiaaleissa esitetyt ennusteet, arviot, ennusteet, tavoitteet, näkymät ja/tai mielipiteet voivat muuttua ilman erillistä ilmoitusta ja voivat poiketa tai olla ristiriidassa muiden ilmaisemien mielipiteiden kanssa. Tärkeitä lisätietoja on osoitteessa https://a16z.com/disclosures

Aikaleima:

Lisää aiheesta Andreessen Horowitz