On-chain betrodd installationsceremoni PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Pålitlig installationsceremoni på kedjan

Den pålitliga installationsceremonin är en av smärtorna – och spänningarna – i kryptogemenskaper. Målet med en ceremoni är att generera pålitliga kryptografiska nycklar för att säkra kryptoplånböcker, blockchain-protokoll eller noll-kunskapssäkra system. Dessa (ibland flamboyanta) procedurer är ofta roten till förtroende för ett givet projekts säkerhet, och de är därför oerhört viktiga att få rätt.

Blockchain-projekt genomför ceremonier på många kreativa sätt – med blåslampor, radioaktivt damm och flygplan – men alla delar något gemensamt: de involverar alla en centraliserad koordinator. Med detta arbete visar vi hur vi kan decentralisera processen genom att ersätta den centraliserade koordinatorn med ett smart kontrakt. Dessutom öppnar vi upp ett bibliotek som gör det möjligt för vem som helst att genomföra en sådan ceremoni – känt för kryptoutövare som en Kate-Zaverucha-Goldberg (KZG) eller "powers-of-tau"-ceremoni - på Ethereum-kedjan. Vem som helst kan delta helt enkelt genom att betala transaktionsavgifterna!

Vårt decentraliserade tillvägagångssätt har begränsningar, men det är fortfarande användbart. På grund av nuvarande databegränsningar i kedjan måste storleken på de kryptografiska parametrarna hållas kort, dvs inte mer än 64 KB. Men antalet deltagare har inget tak och folk kan fortsätta skicka in bidrag i all evighet. Tillämpningar för dessa korta parametrar inkluderar små noll-kunskaps-SNARKs, sampling av datatillgänglighetoch Verkle träd.

Historik och mekanik för den pålitliga installationsceremonin

I en typisk betrodd installationsceremoni kommer en grupp deltagare att tillsammans generera en uppsättning kryptografiska parametrar. Varje deltagande part använder hemlig information, genererad lokalt, för att generera data som hjälper till att skapa dessa parametrar. Korrekt inställningar säkerställer att hemligheter inte läcker, att hemligheter endast används enligt protokollet och att dessa hemligheter förstörs helt i slutet av ceremonin. Så länge som minst en part i ceremonin beter sig ärligt, inte kompromissas och förstör sin lokala hemlighet, kan hela upplägget anses vara säkert. (Naturligtvis förutsätter det att matematiken är korrekt och att koden inte har några buggar.)

Några av de mest framstående ceremonierna var drivs av Zcash, ett integritetsorienterat blockchain-projekt. Deltagare i dessa ceremonier genererade offentliga parametrar utformade för att tillåta Zcash-användare att konstruera och verifiera privata kryptotransaktioner. Sex deltagare genomförde den första Zcash-ceremonin, Sprout, 2016. Två år senare genomförde kryptoforskaren Ariel Gabizon, nu chefsforskare vid Aztec, hittades en förödande bugg i utformningen av ceremonin som ärvdes från en grundläggande forskningsrapport. Sårbarheten kunde ha gjort det möjligt för angripare att skapa obegränsade Zcash-mynt utan att upptäckas. Zcash-teamet höll sårbarheten hemlig i sju månader tills en systemuppgradering, Sapling, vars ceremoni involverade 90 deltagare, tog upp problemet. Även om en attack baserad på säkerhetshålet inte skulle ha påverkat integriteten för användarnas transaktioner, undergrävde utsikten till oändlig förfalskning Zcashs säkerhetsförutsättning. (Det är teoretiskt omöjligt att veta om en attack ägde rum.)

Ett annat anmärkningsvärt exempel på en pålitlig installation är evig "powers-of-tau"-ceremoni designad främst för Semafor, en integritetsbevarande teknik för anonym signalering på Ethereum. Upplägget använde en BN254 elliptisk kurva och har hittills haft 71 deltagare. Andra framstående projekt använde senare denna uppställning för att köra sina egna ceremonier på toppen, inklusive Tornado. Kontanter (nyligen sanktionerat av den amerikanska regeringen), Hermez nätverk och Loopring. Aztec körde en liknande ceremoni på en BLS12_381 elliptisk kurva med 176 deltagare för zkSync, en "lager två" Ethereum-skalningslösning som använder noll kunskapsuppbyggnad. Filecoin, ett decentraliserat datalagringsprotokoll, genomförde en ceremoni med 19 och 33 deltagare, i första respektive andra fas, och delade upp den ursprungliga repan. Zeal, en lager-1 blockkedja, körde en ceremoni för sin ljusklient Plumo också.

Eviga ceremonier har ingen gräns för antalet deltagare. Med andra ord, istället för att lita på att andra människor ska genomföra en pålitlig installationsceremoni, kan Vem som helst delta i vilken grad av säkerhet de är nöjda med. En enda pålitlig deltagare säkerställer säkerheten för alla resulterande parametrar; kedjan är lika stark som dess starkaste länk. Eviga ceremonier kan pågå, som namnet antyder, i evighet, vilket var premissen med den ursprungliga powers-of-tau-ceremonin. Som sagt, projekt beslutar ofta om en konkret start- och sluttid för sina ceremonier, på så sätt kan de bädda in de resulterande parametrarna i sina protokoll och behöver inte oroa sig för att kontinuerligt uppdatera dem.

Ethereum planerar att genomföra en mindre pålitlig installationsceremoni för kommande ProtoDankSharding och DankSharding uppgraderingar. Dessa två uppgraderingar kommer att öka mängden data som Ethereum-kedjan tillhandahåller till kunder för lagring. Dessa data kommer att ha ett utgångsdatum av föreslagna 30 till 60 dagar. Ceremonin är under aktiv utveckling, och är planeras att köra i sex veckor i början av nästa år. (Ser kzg-ceremoni-specifikationer för mer information.) Det är på väg att bli den största betrodda installationsceremonin för blockkedjor som körts hittills.

Paranoia är en dygd när det kommer till pålitliga installationsceremonier. Om en maskins hårdvara eller mjukvara äventyras kan det undergräva säkerheten för de hemligheter den genererar. Sneaky sidokanalattacker som läcker hemligheter kan också vara svåra att utesluta. En telefon kan spionera på en dators verksamhet genom att spela in ljudvågor av CPU-vibrationer, till exempel. I praktiken, eftersom det är oerhört svårt att eliminera alla möjliga sidokanalattacker – inklusive de som fortfarande ska upptäckas eller avslöjas – finns det till och med förslag om att flyga maskiner till rymden för att utföra ceremonier där.

För närvarande går spelboken för seriösa ceremonideltagare vanligtvis enligt följande. Köp en ny maskin (oftast hårdvara). Luftgapa den genom att ta bort alla nätverkskort (för att förhindra att lokala hemligheter lämnar maskinen). Kör maskinen i en Faraday-bur på en avlägsen okänd plats (för att hindra blivande snokare). Seed den pseudoslumpmässiga hemlighetsgeneratorn med massor av entropi och hårdkopierade data som slumpmässiga tangenttryckningar eller videofiler (för att göra hemligheterna svåra att knäcka). Och slutligen, förstör maskinen – tillsammans med alla spår av hemligheterna – genom att bränna allt till aska. 😀

Koordinering av betrodda installationsceremonier

Här är ett roligt urval av citat från några tidigare betrodda deltagare i installationsceremonin:

  • "…blåslampan användes för att metodiskt värma upp elektroniken helt bit för bit tills allt var svärtat…”- Peter Todd på att fysiskt förstöra de lokala hemligheterna.
  • "Jag har här en bit tyg som har grafitdamm [från] kärnan i [Tjernobyl]-reaktorn... Du räknar var fjärde puls [från en geigerräknare kopplad till en mikrokontroller] och du jämför tidsintervallet mellan puls ett och två och tidsintervallet mellan puls tre och fyra och om den är större får du en nolla, är den mindre får du en etta.” "...vi är på väg att sätta oss i det här flygplanet och generera våra slumpmässiga siffror..." - Ryan Pierce och Andrew Miller på hemlig generation.

Zcash powers-of-tau-ceremonin omgång 41 involverade ett flygplan. Skärmdump: YouTube-video

  • "Säljaren sa att de hade 13 [datorer]. Jag frågade om vi kunde välja en av de 13. Han frågade om det var något jag letade efter speciellt (förvirrad eftersom alla är likadana) och jag sa att jag bara ville välja en slumpmässig. Han sa att han inte kunde släppa in oss i det bakre lagret. Jag frågade om han skulle ta ut två av dem så att vi kunde välja en av de två. Han tog ut två på en handkärra. Jerry valde en av de två datorerna och vi tog den till registret för att checka ut.”- Peter Van Valkenburgh på att skaffa en ny maskin.
  • "De första timmarna av ceremonin utfördes i en provisorisk Faraday-bur gjord av aluminiumfolie och plastfolie. Jag flyttade ut den bärbara datorn ur Faraday-buren eftersom den hade dålig ventilation och blev varm vid beröring”- Koh Wei Jie på sidokanalskydd.
  • ".. utförde en del av ceremonin i bergen utan grannar.”- Micheal Lapinski på sidokanalskydd.
  • "Jag valde att använda video av omgivningen för att generera tillräcklig entropi”- Muhd Amrullah om generering av slumpmässiga värden.
On-chain betrodd installationsceremoni PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Za Wilcox, bror till Zcash medgrundare Zooko Wilcox, förstörde en dator som användes för att generera slumpmässiga siffror för en pålitlig ceremoni 2016. Foto: Morgen Peck

Alla dessa ceremonier förlitade sig på en centraliserad samordnare. Samordnaren är en enskild eller privat server eller någon annan enhet som har förtroendet att registrera och beordra deltagare, att fungera som ett relä genom att vidarebefordra information från föregående deltagare till nästa, och att föra en centraliserad logg över all kommunikation för granskningsändamål. Samordnaren är vanligtvis också ansvarig för att göra loggen tillgänglig för allmänheten för all framtid; självklart, jagDet är alltid en möjlighet med ett centraliserat system för att data ska försvinna eller hanteras fel. (Perpetual-powers-of-tau lagras till exempel på Microsoft Azure och Github.)

Det slog oss ironiskt att kryptoprojekt måste förlita sig på centraliserade pålitliga installationsceremonier när decentralisering är en sådan kärna i kryptoetos. Så vi bestämde oss för att demonstrera genomförbarheten av att genomföra en liten ceremoni för eviga-powers-of-tau direkt på Ethereum blockchain! Installationen är helt decentraliserad, utan tillstånd, censurbeständig och säker så länge som någon av deltagarna är ärlig [se friskrivningar]. Att delta i ceremonin kostar bara 292,600 17,760,000 till 7 400 8 gas (cirka 1024 till XNUMX USD i nuvarande priser), beroende på storleken på de önskade resulterande parametrarna (i detta fall mellan XNUMX och XNUMX powers-of-tau). (Se tabellen nedan för konkreta kostnader – vi går in mer i detalj på dessa beräkningar längre fram i inlägget.)

On-chain betrodd installationsceremoni PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Än så länge rekommenderar vi att du inte använder koden för något annat än experimentändamål! Vi skulle uppskatta det mycket om någon som hittar några problem med koden rapporterar dem till oss. Vi vill gärna samla in feedback om och revisioner av vårt tillvägagångssätt.

Förstå KZG eller "powers-of-tau"-ceremonin

Låt oss utforska en av de mest populära betrodda inställningarna, som är känd som KZG, eller "powers-of-tau", ceremonin. Tack till Ethereums medgrundare Vitalik Buterin, vars blogginlägg om pålitliga inställningar informerade om våra idéer i det här avsnittet. Inställningen genererar kodningarna för powers-of-tau, så namngivna eftersom "tau" råkar vara variabeln som används för att uttrycka hemligheterna som genereras av deltagarna:

pp = [[𝜏]1, [𝜏2]1, [𝜏3]1, …, [𝜏n]1; [𝜏]2, [𝜏2]2, …, [𝜏k]2]

För vissa applikationer (t.ex. Groth16, ett populärt zkSNARK-provningsschema designat av Jens Groth 2016), följs denna första fas av installationen av en andra fas, en multiparty computation (MPC) ceremoni, som genererar parametrar för en specifik SNARK-krets . Vårt arbete fokuserar dock enbart på fas ett. Denna första fas – genereringen av powers-of-tau – är redan användbar som en grundläggande byggsten för universella SNARKs (t.ex. PLONK och SONIC), såväl som andra kryptografiapplikationer, som t.ex. KZG-åtaganden, Verkle träd och sampling av datatillgänglighet (DAS). I allmänhet bör universella SNARK-parametrar vara mycket stora så att de kan stödja stora och användbara kretsar. Kretsar som innehåller fler grindar är i allmänhet mer användbara eftersom de kan fånga stora beräkningar; antalet powers-of-tau motsvarar ungefär antalet grindar i kretsen. Så en typisk inställning kommer att vara av storleken |pp| = ~40 GB och kan stödja kretsar med ~228 portar. Med tanke på Ethereums nuvarande begränsningar skulle det vara omöjligt att sätta så stora parametrar på kedjan, men en mindre pålitlig installationsceremoni som är användbar för små SNARK-kretsar, Verkle-träd eller DAS kan möjligen köras på kedjan.

Ethereum Foundation planerar att driva flera mindre ceremonier för powers-of-tau i storleken 200 KB till 1.5 MB. Även om större ceremonier kan verka bättre, med tanke på att större parametrar kan skapa mer användbara SNARK-kretsar, är större faktiskt inte alltid bättre. Vissa applikationer, som DAS, behöver specifikt en mindre! [Anledningen är mycket teknisk, men om du är nyfiken, är det för att en uppsättning med n potenser (i G1) möjliggör endast KZG-förpliktelser till polynom med grad ≤ n, vilket är avgörande för att säkerställa att polynomet under KZG-förpliktelsen kan rekonstrueras från valfri n utvärderingar. Den här egenskapen möjliggör datatillgänglighetssampling: varje gång t slumpmässiga utvärderingar av polynomet framgångsrikt erhålls (samplades) ger det en garanti för att polynomet kan rekonstrueras helt med sannolikhet t/n. Om du vill lära dig mer om DAS, kolla in det här inlägget av Buterin på Ethereum Research-forumet.]

Vi designade ett smart kontrakt som kan distribueras på Ethereum blockchain för att köra en pålitlig installationsceremoni. Kontraktet lagrar de offentliga parametrarna – powers-of-tau – helt i kedjan och samlar in deltagande genom användarnas transaktioner.

En ny deltagare läser först dessa parametrar:

pp0 = ([𝜏]1, [𝜏2]1, [𝜏3]1, …, [𝜏n]1; [𝜏]2, [𝜏2]2, …, [𝜏k]2),

samplar sedan en slumpmässig hemlighet 𝜏' och beräknar uppdaterade parametrar:

pp1 = ([𝜏𝜏']1, [(𝜏𝜏')2]1, [(𝜏𝜏')3]1, …, [(𝜏𝜏')n]1; [𝜏𝜏']2, [(𝜏𝜏')2]2, …, [(𝜏𝜏')k]2),

och publicerar dem i kedjan med ett bevis som visar tre saker:

  1. Kunskaper om diskret-logg: deltagaren vet 𝜏'. (Ett bevis på att det senaste bidraget till den betrodda installationsceremonin bygger på alla tidigare deltagares arbete.)
  2. Välformad pp1: elementen kodar verkligen inkrementella krafter.(En validering av välformigheten hos en ny deltagares bidrag till ceremonin.)
  3. Uppdateringen raderas inte: 𝜏' ≠ 0. (Ett försvar mot angripare som försöker undergräva systemet genom att ta bort alla deltagares tidigare arbete.)

Det smarta kontraktet verifierar beviset och om det är korrekt uppdaterar det de offentliga parametrarna som det lagrar. Du kan hitta mer information om matematiken och resonemanget bakom det i repa.

Beräkna gaskostnader

Den största utmaningen med att köra installationen på kedjan är att göra den pålitliga installationsceremonin så gaseffektiv som möjligt. Helst skulle det inte kosta mer än ~$50 att skicka in ett bidrag. (Stora projekt kanske kan subventionera gas för bidragsgivare, i vilket fall att ha hundratals deltagare var och en som spenderar $100 är lättare att föreställa sig). Nedan ger vi mer information om de dyraste delarna av installationen. Lägre gaskostnader skulle minska kostnaderna för bidrag och möjliggöra konstruktion av längre parametrar (fler tau-effekter och större SNARK-kretsar)!

Vår inställning fungerar för den elliptiska kurvan BN254 (även känd som BN256, BN128 och alt_bn128), som har stöd för följande i förväg sammanställda kontrakt på Ethereum:

  • ECADD tillåter att två elliptiska kurvpunkter läggs till, dvs beräkna [𝛼+𝛽]1 från [𝛼]1 och [𝛽]1: gaskostnad 150
  • ECMULT tillåter elliptiska kurvpunkter att multipliceras med en skalär, dvs beräkna [a*𝛼]1 från a och [𝛼]1: gaskostnad 6,000
  • ECPAIR tillåter att en produkt av elliptiska kurvpar kan kontrolleras, dvs beräkna e([𝛼1]1, [𝛽1]2)* … *e([𝛼1]1, [𝛽1]2) = 1 vilket motsvarar att kontrollera det 𝛼1*𝛽1+ … + 𝛼k*𝛽k = 0 : gaskostnad 34,000 45,000 * k + XNUMX XNUMX

Kan Ethereum aktivera BLS12_381 (som föreslagits i EIP-2537), kan vårt installationskontrakt lätt fås att fungera för den här andra kurvan också.

Låt oss uppskatta gaskostnaden för att uppdatera inställningen till ([𝜏]1, [𝜏2]1, [𝜏3]1, …, [𝜏n]1; [𝜏]2):

  1. Gaskostnad för att verifiera beviset. Varje deltagare uppdaterar inställningen och skickar in ett bevis med tre komponenter enligt beskrivningen ovan. Komponenterna 1 och 3 i beviset – ”kännedom om diskret logg” och ”uppdatering som inte raderar” – är mycket billiga att verifiera. Utmaningen ligger i att verifiera komponent 2, "well-formedness of the pp1”, på kedja. Det kräver en stor multi-skalär multiplikation (MSM) och två parningar:
    e(𝝆0[1]1 + 𝆆1[𝜏]1 + 𝆆2[𝜏2]1 + … + 𝝆N 1[𝜏N 2]1, [𝜏]2) = e([𝜏]1 + 𝆆1[𝜏2]1 + … + 𝝆N 1[𝜏N 1]1, [två]2),
    var 𝆆0,…,𝆆N 1 är pseudo-slumpmässigt samplade skalärer. När det gäller förkompilerade smarta kontrakt skulle det ta:
    (2n-4) x ECADD + (2n-4) x ECMULT + ECPAIRk = 2 = (2n-4) x 6,150 113,000 + XNUMX XNUMX gas.
  2. Gaskostnad för att lagra data. Varje deltagare lagrar också uppdateringen i kedjan som samtalsdata (68 gas per byte) som motsvarar n*64*68 gas. (En anmärkning för de som är bekanta med elliptisk kurvkryptografi: lagring av komprimerade punkter skulle få dekompression att dominera den totala kostnaden enligt våra mätningar för n=256.)

Detta för oss till följande tabell med uppskattning av gaskostnader som bör informera framtida optimeringar:

On-chain betrodd installationsceremoni PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Vi undersöker lösningar för att få ner gaskostnaden, så håll utkik!

Bibliotek med öppen källkod: evm-powers-of-tau

Vi har öppna källkod för vår EVM-baserade powers-of-tau-ceremonirepo kl github.com/a16z/evm-powers-of-tau. Att genomföra en ceremoni med vår strategi är enkelt och transparent:

  1. Implementera lagrings- och verifieringskontraktet (contracts/KZG.sol)
  2. En bidragsgivare läser ceremoniparametrar från tidigare transaktionsanropsdata
  3. Bidragsgivaren genererar en hemlighet lokalt, beräknar de uppdaterade parametrarna
  4. Bidragsgivaren genererar sitt bevis: pi1, pi2
  5. Bidragsgivaren skickar de uppdaterade parametrarna via KZG.potUpdate() till det distribuerade smarta kontraktet på den offentliga blockkedjan
  6. Det smarta kontraktet kommer att verifiera giltigheten av uppdateringen och återgå i fallet med en felaktig inlämning
  7. Flera bidragsgivare kan utföra steg 2-5 i evighet, vart och ett ökar säkerheten för ceremonin
  8. Närhelst en utvecklare är säker på antalet och kvaliteten på inlämningar, kan de fråga blockkedjan för de aktuella parametrarna och använda dessa värden som sina kryptografiska nycklar

Vår repo använder arkworks-rs för att beräkna steg två och tre (rostberäkningen finns i src/pot_update.rs), men användare kanske vill skriva sina egna. Hela hela flödet av uppdateringsöverföring finns i integrationstestet i tests/integration_test.rs.

Observera att vi har valt att använda calldata för att lagra uppdaterade powers-of-tau-parametrar i kedjan eftersom det är flera storleksordningar billigare än lagring. En eter-rs-baserad fråga för denna data finns i src/query.rs.

Slutligen finns bevis och detaljerade ekvationer i den tekniska rapporten i techreport/main.pdf.

Framtida arbete

Innan den här pålitliga installationsceremonin kan användas i produktionen rekommenderar vi att du först genomför en omfattande granskning av både de matematiska bevisen och exempelimplementeringen.

Som implementerad växer transaktionskostnaden för att uppdatera ceremonin linjärt med installationsstorleken. För de flesta applikationer (SNARKs, DAS) vill vi ha en inställning på n >= 256, vilket för närvarande kostar $73 per uppdatering. 

Vi kanske kan uppnå sublinjär verifieringstillväxt med ett STARK-bevis på giltig uppdateringsberäkning och en vektorförpliktelse till de uppdaterade värdena. Denna konstruktion skulle också ta bort beroendet av Ethereum L1 BN254-förkompileringarna, vilket möjliggör användningen av den mer populära BLS12-381-kurvan.

Alla ceremonistrategier har kompromisser. Vi tycker att denna konstruktion är solid och har stora verifierbara censurresistensegenskaper. Men återigen, vi vill varna för att använda den här metoden tills mer arbete har gjorts för att verifiera vår metods sundhet.

Erkännanden

  • Dan Boneh – för användbar feedback i de tidiga stadierna av detta arbete
  • Joe Bonneau – för att förtydliga utläggningen i den tidiga versionen av den tekniska rapporten
  • William Borgeaud – för diskussion om BLS inom TurboPlonk / Plonky2
  • Mary Maller – för tankar om tillvägagångssättets allmänna mekanik

Redaktör: Robert Hackett @rhhackett

***

De åsikter som uttrycks här är de från den individuella AH Capital Management, LLC (“a16z”) personal som citeras och är inte åsikterna från a16z eller dess dotterbolag. Viss information som finns här har erhållits från tredjepartskällor, inklusive från portföljbolag av fonder som förvaltas av a16z. Även om den är hämtad från källor som anses vara tillförlitliga, har a16z inte självständigt verifierat sådan information och gör inga utfästelser om den aktuella eller varaktiga riktigheten av informationen eller dess lämplighet för en given situation. Dessutom kan detta innehåll innehålla tredjepartsannonser; a16z har inte granskat sådana annonser och stöder inte något reklaminnehåll i dem.

Detta innehåll tillhandahålls endast i informationssyfte och bör inte litas på som juridisk rådgivning, affärs-, investerings- eller skatterådgivning. Du bör rådfråga dina egna rådgivare i dessa frågor. Hänvisningar till värdepapper eller digitala tillgångar är endast i illustrativt syfte och utgör inte en investeringsrekommendation eller erbjudande om att tillhandahålla investeringsrådgivningstjänster. Dessutom är detta innehåll inte riktat till eller avsett att användas av några investerare eller potentiella investerare, och får inte under några omständigheter lita på när man fattar ett beslut om att investera i någon fond som förvaltas av a16z. (Ett erbjudande om att investera i en a16z-fond kommer endast att göras av det privata emissionsmemorandumet, teckningsavtalet och annan relevant dokumentation för en sådan fond och bör läsas i sin helhet.) Alla investeringar eller portföljbolag som nämns, hänvisas till, eller beskrivna är inte representativa för alla investeringar i fordon som förvaltas av a16z, och det finns ingen garanti för att investeringarna kommer att vara lönsamma eller att andra investeringar som görs i framtiden kommer att ha liknande egenskaper eller resultat. En lista över investeringar gjorda av fonder som förvaltas av Andreessen Horowitz (exklusive investeringar för vilka emittenten inte har gett tillstånd för a16z att offentliggöra såväl som oanmälda investeringar i börsnoterade digitala tillgångar) finns tillgänglig på https://a16z.com/investments /.

Diagram och grafer som tillhandahålls i är endast i informationssyfte och bör inte litas på när man fattar investeringsbeslut. Tidigare resultat är inte en indikation på framtida resultat. Innehållet talar endast från det angivna datumet. Alla prognoser, uppskattningar, prognoser, mål, framtidsutsikter och/eller åsikter som uttrycks i detta material kan ändras utan föregående meddelande och kan skilja sig åt eller strida mot åsikter som uttrycks av andra. Se https://a16z.com/disclosures för ytterligare viktig information.

Tidsstämpel:

Mer från Andreessen Horowitz