Työkalu metamorfisten älykkäiden sopimusten havaitsemiseen PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Työkalu metamorfisten älykkäiden sopimusten havaitsemiseen

Kriittinen Ethereumin tietoturvaoletus on, että älykäs sopimuskoodi on muuttumaton, eikä sitä siksi voida muuttaa, kun se on otettu käyttöön lohkoketjussa. Käytännössä joitakin älykkäitä sopimuksia voida muuttaa – jopa sen jälkeen, kun ne on otettu käyttöön. Muutamalla fiksulla tempulla voit luoda metamorfisia älykkäitä sopimuksia, jotka "muuntaa” johonkin muuhun – ja ymmärtämällä, mikä tekee niistä mahdollisia, voit havaita ne.

Metamorfiset älykkäät sopimukset ovat muuttuvia, mikä tarkoittaa, että kehittäjät voivat muuttaa niiden sisällä olevaa koodia. Nämä älykkäät sopimukset muodostavat vakavan riskin web3-käyttäjille, jotka luottavat koodiin, jonka he odottavat toimivan ehdottoman johdonmukaisesti, varsinkin kun huonot toimijat voivat hyödyntää tätä muodonmuutoskykyä. Kuvittele, että hyökkääjä käyttää tekniikkaa "matto" ihmisille, jotka panostavat rahakkeita älykkääseen sopimukseen, jonka he eivät ymmärrä olevan metamorfinen. Tähän ja vastaaviin perusteisiin perustuvat hyökkäykset voivat saada huijarit saalistamaan ihmisiä ja yleensä heikentää luottamusta hajautettujen järjestelmien täysimääräiseen lupaukseen.

Analysoidaksesi, sisältääkö älykäs sopimus metamorfisia ominaisuuksia, Rakensin yksinkertaisen Metamorfisen sopimuksen ilmaisin (saa inspiraationsa alkuperäisestä teoksesta ja rakentuu sen pohjalle Jason carver, 0 ikäja muut). Kuka tahansa voi käyttää työkalua tarkistaakseen, onko tietyssä sopimuksessa punaisia ​​lippuja, jotka voisivat viitata muodonmuutoksen mahdollisuuteen. Menetelmä ei ole idioottivarma: vain siksi, että älykäs sopimus näyttää lipun, ei tarkoita, että se olisi välttämättä metamorfinen; ja se, että se ei ole, ei tarkoita, että se olisi turvallista. Tarkistaja tarjoaa vain nopean alustavan arvion siitä, että sopimus ehkä olla metamorfinen mahdollisten indikaattoreiden perusteella. 

Web3:n käyttäjien tulee tutustua metamorfisten sopimusten aiheuttamiin uhkiin, jotta he voivat varautua mahdollisiin hyökkäyksiin ja välttää niitä. Lompakot ja blockchain-indeksoijat voivat auttaa varoittamalla käyttäjiä ennen kuin he ovat vuorovaikutuksessa älykkään sopimuksen kanssa, joka saattaa sisältää metamorfisia ominaisuuksia. Tämän työkalun tarkoituksena on auttaa sekä kouluttamaan ihmisiä tästä mahdollisesta uhasta… että puolustautumaan sitä vastaan.

Metamorfisten älykkäiden sopimusten havaitseminen

- Metamorfisen sopimuksen ilmaisin Rakensin analyyseja kuusi ominaisuutta, jotka voivat osoittaa, onko älykäs sopimus metamorfinen.

    1. Käytettiinkö tunnettua metamorfista koodia sopimuksen käyttöönotossa? Jos tunnettu metamorfinen tavukoodi – alemman tason, virtuaalikoneella luettava koodi, jonka Ethereumin älykkäät sopimukset, tyypillisesti Solidityssä kirjoitettu, muuttuvat käännösten jälkeen – näkyy tietyn älykkään sopimuksen käyttöönoton yhteydessä, se on tärkeä punainen lippu. Seuraavissa osioissa käsittelemme yhtä esimerkkiä 0age:n kehittämästä metamorfisesta tavukoodista. Tärkeä varoitus: Metamorfisen tavukoodin muunnelmia voi olla lukemattomia, mikä tekee kaikkien lajikkeiden havaitsemisen vaikeaksi. Skannaamalla tunnettuja tapauksia ilmaisin eliminoi alhaalla roikkuvat hedelmät hyökkääjiltä, ​​jotka vain kopioivat ja liittävät olemassa olevia esimerkkejä.
    2. Voiko älykäs sopimuskoodi tuhota itsensä? Kehittäjän on ensin poistettava olemassa oleva koodi korvatakseen koodin sopimuksessa – tärkeä vaihe metamorfisen sopimuksen luomisessa. Ainoa tapa tehdä tämä on käyttää SELFDESTRUCT-operaatiokoodi, komento, joka tekee täsmälleen miltä se kuulostaa – se poistaa kaiken koodin ja tallennustilan annetusta sopimusosoitteesta. Itsetuhoavan koodin läsnäolo sopimuksessa ei todista, että se on metamorfinen; se tarjoaa kuitenkin vihjeen siitä, että sopimus ehkä olla metamorfinen, ja kannattaa joka tapauksessa tietää, voivatko sopimukset, joihin luotat, ydinvoiman.
    3. Kutsuuko älysopimus koodia muualta? Jos kyseinen älysopimus ei voi tuhota itseään suoraan, se saattaa silti pystyä pyyhkimään itsensä käyttämällä DELEGATECALL-operaatiokoodi. Tämän opkoodin avulla älykäs sopimus voi ladata ja suorittaa dynaamisesti koodia, joka on toisen älysopimuksen sisällä. Vaikka älykäs sopimus ei sisältäisi SELFDESTRUCT-operaatiokoodia, se voi ladata itsetuhoavan koodin jostain muualta käyttämällä DELEGATECALLia. Vaikka DELEGATECALL-toiminto ei suoraan ilmaise, onko älykäs sopimus metamorfinen, se on mahdollinen vihje – ja mahdollinen tietoturvaongelma – joka on huomion arvoinen. Varoita, että tämä indikaattori voi aiheuttaa monia vääriä positiivisia tuloksia. 
    4. Käyttikö toinen sopimus tätä sopimusta? Metamorfisia sopimuksia voidaan ottaa käyttöön vain muilla älykkäillä sopimuksilla. Tämä johtuu siitä, että metamorfiset sopimukset otetaan käyttöön toisella opkoodilla, jota voivat käyttää vain muut älykkäät sopimukset, nimeltään CREATE2. (Keskustamme CREATE2:sta – miten se toimii ja miksi sillä on merkitystä – lisää myöhemmässä osiossa.) Tämä piirre on yksi vähiten silmiinpistäviä indikaattoreita mahdollisesta muodonmuutoksesta; se on välttämätön, mutta riittämätön edellytys. Tämän ominaisuuden skannaus herättää todennäköisesti monia vääriä positiivisia tuloksia – mutta se on arvokasta tietää, sillä se voi herättää epäilyksiä ja antaa aiheen tutkia sopimusta tarkemmin, varsinkin jos älysopimus sisältää seuraavassa kuvatun toimintakoodin.
    5. Sisältääkö käyttöönottosopimus CREATE2-operaatiokoodin? Kuten edellä mainittiin, käyttöönotto CREATE2:n kautta on välttämätön edellytys muodonmuutokselle. Jos käyttöönottosopimus sisältää CREATE2-operaatiokoodin, se voi tarkoittaa, että se käytti CREATE2:ta kyseisen sopimuksen käyttöönotossa. Jos käyttöönottaja todellakin käytti CREATE2:ta mainitun sopimuksen käyttöönotossa, vaikka se ei tarkoita, että sopimus olisi välttämättä metamorfinen, se tarkoittaa, että se ehkä olla metamorfinen, ja saattaa olla viisasta edetä varoen ja tutkia asiaa tarkemmin. Jälleen, varo vääriä positiivisia: LUO2 on paljon laillisia käyttötarkoituksia, mukaan lukien vahvistaminen "Layer 2" skaalausratkaisut ja helpottaa älykkäiden sopimuslompakoiden luomista, jotka voivat parantaa web3:a käyttäjän käyttöönotto ja avainten palautusvaihtoehdot.
    6. Muuttuiko koodi? Tämä on ilmeisin sanoma, mutta se tulee näkyviin vasta, kun metamorfinen sopimus on jo muuttunut. Jos älykkään sopimuksen koodihajautus – yksilöllinen kryptografinen tunniste – on eri kuin sopimus alun perin käyttöönoton yhteydessä, koodi on todennäköisesti poistettu, korvattu tai muutettu. Jos tiivisteet eivät enää täsmää, jotain koodissa on muuttunut ja sopimus saattaa olla metamorfinen. Tämä lippu on muodonmuutoksen varmin indikaattori, mutta se ei auta ennustamaan tai ennaltaehkäisemään muodonmuutosta, koska se vain tarkistaa, että se on jo tapahtunut.

Sen lisäksi, että rakensin yksinkertaisen komentorivityökalun Metamorphic Contract Detectorille, rakensin joitakin esimerkkiälykkäitä sopimuksia, jotka esittelevät huijauksen metamorfisen sopimuksen panostamista, jota kuvailen seuraavassa osiossa. Kaikki koodit löytyvät tästä GitHub-arkisto

Kuinka pahantahtoinen toimija voi käyttää metamorfisia sopimuksia varastaakseen ihmisten varoja

Näin joku voi käyttää metamorfista älysopimusta osana huijausta. 

Ensimmäinen on asetusvaihe. Hyökkääjä ottaa käyttöön älykkään sopimuksen tiettyyn osoitteeseen lohkoketjussa käyttämällä kahta työkalua: metamorfista tavukoodia ja CREATE2-operaatiokoodia. (Laajennamme näitä molempia käsitteitä myöhemmin.) Metamorfinen tavukoodi tekee sitten sen, mitä sen nimi ehdottaa ja "morfoi". Tässä se muuttuu a panostussopimus jossa käyttäjät voivat panostaa ERC-20-tokeneita. (Taas kerran keskustelemme tämän muodonmuutostempun yksityiskohdista myöhemmin. Lupaa!)

Seuraavaksi tulee syötti ja kytkin. Aavistamattomat käyttäjät panostavat rahakkeitaan tähän sopimukseen, houkutellaan mahdollisuudesta ansaita tuottoa tai muuta etua. Hyökkääjä poistaa sitten kaiken panoskoodin ja "tilan" - lohkoketjun tallennustilan tai muistin - tästä älykkään sopimusosoitteesta käyttämällä SELFDESTRUCT-operaatiokoodi keskusteltu edellisessä osiossa. (On huomattava, että tunnukset – jotka ovat osa erillistä ERC-20-sopimusta – säilyvät, eikä itse tuhoutunut sopimus vaikuta niihin.)

Lopuksi matonveto. Hyökkääjä käyttää uudelleen samaa metamorfista tavukoodia, jota käytettiin asennusvaiheessa uuden sopimuksen "uudelleenasettamiseen". Tämä uusi sopimus otetaan käyttöön samassa osoitteessa, joka äskettäin vapautui itsetuhoavan sopimuksen vuoksi. Tällä kertaa kuitenkin tavukoodi "morfoi" (jälleen, selitämme kuinka myöhemmin) haitalliseksi sopimukseksi, joka voi varastaa kaikki sopimusosoitteeseen panostetut tunnukset. Huijaus valmis. 

Metamorfisten älykkäiden sopimusten aiheuttamat riskit ovat nyt selvästi ilmeisiä. Mutta saatat silti ihmetellä, kuinka tämä metamorfismitemppu itse asiassa toimii? Ymmärtääksesi tämän, sinun on tutkittava syvemmälle, tavukooditasolle. 

Kuinka CREATE2 avaa metamorfismin mahdollisuuden 

LUO2 on opcode-päivitys, esiteltiin Ethereumiin helmikuussa 2019, joka tarjoaa uuden tavan ottaa käyttöön älykkäitä sopimuksia. 

CREATE2 antaa kehittäjille enemmän hallintaa älykkäiden sopimustensa käyttöönotossa kuin heillä oli aiemmin. Alkuperäinen CREATE-operaatiokoodi tekee kehittäjien vaikeaksi hallita käyttöön otettavan älysopimuksen kohdeosoitetta. CREATE2:n avulla ihmiset voivat hallita ja tietää tietyn älysopimuksen osoitteen etukäteen, ennen kuin ottavat sen käyttöön lohkoketjussa. Tämä ennakkotieto – ja joitain fiksuja temppuja – antavat ihmisille mahdollisuuden luoda metamorfisia älykkäitä sopimuksia. 

Kuinka CREATE2 voi ennustaa tulevaisuutta? Opcoden laskenta on deterministinen: niin kauan kuin syötteet eivät muutu, CREATE2:n määrittämä osoite ei muutu. (Pieninkin muutos aiheuttaa sen, että käyttöönotto tapahtuu jossain muualla.)

Tarkemmin sanottuna CREATE2 on funktio, joka yhdistää ja tiivistää muutamia elementtejä. Ensinnäkin se sisältää käyttöönottajan (tai lähettäjän) osoitteen: aloittavan älykkään sopimuksen, joka toimii luotavan pääsopimuksena. Seuraavaksi se lisää lähettäjän antaman mielivaltaisen numeron (tai "suolan"), jonka avulla kehittäjä voi ottaa käyttöön saman koodin eri osoitteisiin (vaihtamalla suolaa) ja estää olemassa olevien, identtisten sopimusten korvaamisen. Lopuksi se käyttää älykkään sopimuksen alustuksen ("init") tavukoodin keccak256-tiivistettä, joka on siemen, joka muuttuu uudeksi älysopimukseksi. Tämä tiivistetty yhdistelmä määrittää Ethereum-osoitteen ja ottaa sitten käyttöön annetun tavukoodin kyseiseen osoitteeseen. Niin kauan kuin tavukoodi pysyy täsmälleen samana, CREATE2 käyttää aina annetun tavukoodin samaan osoitteeseen lohkoketjussa.

Tältä CREATE2-kaava näyttää. (Huomaa: huomaat toisen elementin, "0xFF", alla olevassa esimerkissä. Tämä on vain jatkuva CREATE2 käyttää estää törmäyksiä edellisellä CREATE-operaatiokoodilla.)

Nyt kun meillä on tapa käyttää koodia deterministiseen osoitteeseen, kuinka se on mahdollista muuttaa koodi samassa osoitteessa? Aluksi tämä saattaa tuntua mahdottomalta. Jos haluat ottaa uuden koodin käyttöön CREATE2:lla, tavukoodin on muututtava, ja siksi CREATE2 ottaa käyttöön eri osoitteen. Mutta entä jos kehittäjä rakentaisi tavukoodin siten, että se voisi "muutua" eri koodiksi, kun CREATE2 ottaa käyttöön älykkään sopimuksen?

Kuinka metamorfinen sopimus todella toimii

Resepti älysopimuksen muuttamiseksi metamorfiseksi sopimukseksi vaatii yhteensä kolme älykästä sopimusta, joista jokaisella on ainutlaatuinen rooli.

Yksi näistä välttämättömistä komponenteista on Metamorphic Contract Factory, operaation aivot. Tämä "tehdas" on vastuussa Metamorphic Contractin sekä toisen älykkään sopimuksen, jonka nimi on Implementation Contract, käyttöönotosta, koska sen koodi otetaan lopulta käyttöön Metamorphic Contractissa. Hienovarainen koreografia näiden kolmen sopimuksen välillä johtaa muodonmuutokseen, kuten alla olevassa kaaviossa näkyy.

Työkalu metamorfisten älykkäiden sopimusten havaitsemiseen PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Keskustellaan jokaisesta vaiheesta, 1-7, yksityiskohtaisesti valaisemaan työssä tapahtuvia toimintoja.

Vaihe 1: Kehittäjä saa kaiken liikkeelle

Koodaaja suunnittelee älykkään sopimuskoodin – Implementation Contract -tavukoodin, joka lopulta päätyy metamorfiseen sopimukseen. Kehittäjä lähettää tämän koodin Metamorphic Contract Factorylle, älykkäälle sopimukselle, jonka päätarkoituksena on ottaa käyttöön muita älykkäitä sopimuksia. Tämä toiminto käynnistää koko metamorfisen sopimuksen luomisprosessin.

Kaikki seuraava on tulosta tästä alkuvaiheesta. Todellakin, Vaiheet 1–6 tapahtuvat yhdessä lohkoketjun ydintapahtumassa, mikä tarkoittaa lähes kaikkia kerralla. Nämä vaiheet voidaan toistaa kerta toisensa jälkeen, loputtomiin, korvatakseen koodin Metamorphic Contractissa ja pitää se jatkuvasti muuttumassa.

Vaihe 2: Tehdas ottaa käyttöön käyttöönottosopimuksen

Ensimmäinen sopimus, jonka tehdas ottaa käyttöön, on Käyttöönottosopimus, joka sisältää toteutuskoodin. (Luova, tiedämme.) Ajattele toteutussopimusta lastauslaiturina tai reittipisteenä, jossa on koodia ennen kuin se lähetetään lopulliseen määränpäähänsä, joka on tässä tapauksessa metamorfisen sopimuksen sisällä. 

Vaihe 3: Tehdas tallentaa toteutussopimuksen osoitteen

Sen jälkeen, kun se on otettu käyttöön lohkoketjussa, toteutussopimus on välttämättä olemassa jossakin lohkoketjuosoitteessa. Tehdas tallentaa tämän sopimusosoitteen omaan muistiinsa (käytettäväksi myöhemmin vaiheessa 5). 

Vaihe 4: Tehdas ottaa Metamorphic Contractin käyttöön

Tehdas ottaa käyttöön Metamorphic Contractin käyttämällä CREATE2:ta ja metamorfista tavukoodia. Löydät teknisen, syvällisen esittelyn metamorfisen tavukoodin toiminnasta tätä, mutta riittää, kun sanotaan, että kun metamorfinen tavukoodi suoritetaan, se kopioi koodin jostain muusta ketjun paikasta – tässä tapauksessa toteutussopimuksesta – metamorfiseen sopimukseen. Kuten viime osiossa puhuimme, koska CREATE2 on deterministinen - niin kauan kuin käytetään samaa lähettäjää, suolaa ja tavukoodia - Metamorphic Contract -osoite pysyy samana riippumatta siitä, kuinka monta kertaa nämä vaiheet toistetaan.

Alla on esimerkki siitä, miltä metamorfinen tavukoodi näyttää metamorfinen repo 0 ikään mennessä. Tämä on vain yksi esimerkki metamorfisesta tavukoodista – mahdollisesti lukemattomia muunnelmia on olemassa, mikä vaikeuttaa huomattavasti metamorfisten sopimusten havaitsemista.

Työkalu metamorfisten älykkäiden sopimusten havaitsemiseen PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Vaihe 5: Metamorfinen tavukoodikyselyt Factory for Implementation Contract -osoitteen

Metamorfinen tavukoodi kysyy tehtaalta toteutussopimuksen osoitetta (tallennettuna vaiheessa 3). Toteutussopimuksen osoitteen muuttumisella ei ole väliä, kunhan osoitetta pyytävä metamorfinen tavukoodi pysyy samana. Itse asiassa, jos kehittäjä ottaa myöhemmin käyttöön uuden toteutussopimuksen – kuten haitallisen, joka on suunniteltu varastamaan tokeneita – se otetaan välttämättä käyttöön eri lohkoketjuosoitteessa vaiheessa 2. Tällä ei ole vaikutusta Metamorfisen sopimuksen luomiseen.

Vaihe 6: Toteutussopimuskoodi kopioidaan Metamorphic Contractiin

Vaiheessa 5 opittua lohkoketjuosoitetta käyttämällä metamorfinen tavukoodi paikantaa koodin toteutussopimuksesta ja kopioi koodin metamorfisen sopimuksen paikalliseen tallennustilaan. Näin Metamorfinen sopimus muuttaa muotoaan: kopioimalla koodi Toteutussopimuksesta. 

Vaihe 7: Huuhtele ja toista

Kehittäjä voi toistaa vaiheet 1–6 kerta toisensa jälkeen ja korvata Metamorphic Contractin koodin millä tahansa uudella toteutussopimuksella. Ainoa mitä tarvitaan, on käyttää SELFDESTRUCT-operaatiokoodia – tai, tarkemmin sanottuna, DELEGATECALL-operaatiokoodeja, jotka lopulta johtavat SELFDESTRUCTiin – poistamaan olemassa oleva koodi Metamorphic Contractissa. Toistamalla sykli uudella toteutussopimustavukoodilla, metamorfinen sopimus taikuuden tavoin morph!

Käyttämällä tätä tekniikkaa metamorfisten sopimusten luomiseen, älykäs kehittäjä voi jatkuvasti siirtää maata web3-käyttäjien jalkojen alla. Harkitse esimerkiksi huijausskenaariota uudelleen. Kehittäjä voi ensin ottaa käyttöön toteutussopimuksen tunnuksella panostavalla koodilla, joka kaaviossa kuvatun ja yllä olevissa vaiheissa kuvatun kiertopolun kautta päätyy metamorfiseen sopimukseen. Huijari voisi myöhemmin tuhota tämän koodin itse ja korvata sen ottamalla käyttöön uuden toteutussopimuksen, joka sisältää tunnuksenvarkaus koodi. 

Toteutussopimuksessa käyttöönotetut asiat päätyvät lopulta metamorfiseen sopimukseen. Se on tempun ydin. 

***

Metamorfiset älykkäät sopimukset rikkovat implisiittisen web3:n sosiaalisen sopimuksen, jonka mukaan saat mitä näet. Samoin kuin kuoripelissä käytetään kolmea liikkuvaa kuppia pallon piilottamiseen, kolmen sopimuksen vuorovaikutus metamorfisen sopimuksen luomisessa vaikeuttaa sopimuksen todellisen toiminnan seuraamista. Shell-peli on erityisen osuva vertailu, koska itseluottamushuijarit käyttävät usein taikuutta ja harhaanjohtamista varmistaakseen voiton. Web3-versiossa metamorfisten sopimusten kirjoittajat voivat samalla tavalla saada "pallon" eli toteutuskoodin katoamaan (lue: itsetuhoamaan), ja he voivat korvata sen millä tahansa.

Metamorfisten sopimusten olemassaolo tarkoittaa, että web3:n käyttäjät voivat tehdä sopimuksia, jotka voivat muuttua mielensä mukaan – siksi tämä uhka on niin tärkeä ymmärtää ja sitä vastaan ​​puolustautua. Metamorfisen sopimuksen ilmaisin tarjoaa vain ensimmäisen askeleen kohti metamorfisten sopimusten tunnistamista niiden käyttämien taitojen avulla. On olemassa useita tapoja, joilla ilmaisinta voidaan parantaa tulevaisuudessa. Esimerkiksi tarkistamalla rekursiivisesti muodonmuutossopimuksen luonut tehdas (tai käyttöönottosopimus), voit nähdä, onko tehdas itse metamorfinen. Tämä ominaisuus olisi hyödyllinen lisä Detectorin päivitettyyn versioon 2.

On syytä toistaa vielä kerran: Tämä Detector-työkalu ei ole idioottivarma. Sen nappaamat liput eivät kaikki ole merkkejä metamorfisesta potentiaalista, mutta ne tarjoavat vihjeitä. Näiden lippujen tunnistaminen on vasta alkua perusteellisemmalle tutkimukselle. Siksi laajensimme ilmaisinta etsimään lippuja, jotka voivat helposti luoda vääriä positiivisia tuloksia, kuten CREATE2- tai DELEGATECALL-operaatiokoodien esiintyminen. Jos sinulla on ehdotuksia työkalun parantamiseksi tai haluat jatkaa tai lisätä tätä alkutyötä, ota minuun yhteyttä osoitteessa .

Analysoi älykkäitä sopimuksia metamorfisten piirteiden varalta käyttämällä Detector-työkalua ja käydä GitHub repo lisää

Toimittaja: Robert Hackett @rhhackett

***

Kiitokset: Haluan kiittää Robert Hackettia, Eddy Lazzarinia, Sam Ragsdaletta, Riyaz Faizullabhoyta, Noah Citronia, Mason Hallia ja Daejun Parkia arvokkaasta palautteesta ja neuvoista tämän postauksen ja työkalun herättämisessä eloon. 

***

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 luotettaviksi uskotuista lähteistä, se ei ole itsenäisesti tarkistanut tällaisia ​​tietoja eikä esitä tietojen 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