Piilossa näkyvissä: Suljetun tarjouksen huutokaupan PlatoBlockchain Data Intelligence -huutokaupan luja toteutus. Pystysuuntainen haku. Ai.

Piilotettu silmissä: Suljetun tarjouksen huutokaupan luja toteuttaminen

Marraskuussa 16, 2022

Michael Zhu

Toimittajan huomautus: Tämä kappale on osa jatkuvaa sarjaamme web3:n huutokaupoista. Osa 1 oli yleiskatsaus huutokauppasuunnitelmiin ja teknisiin haasteisiin (ja mahdollisuuksiin), jotka liittyvät mekanismien suunnitteluun luvattomien lohkoketjujen yhteydessä. Osa 2 oli kappale markkinoiden tyhjentämisestä ja kaasusotien välttämisestä. Osa 3 jakaa yleiskatsauksen kanonisista huutokauppatyypeistä, tarkastelun siitä, miten teoria muuttuu käytäntöön, ja ensimmäisen toteutuksen uudesta, sinetöidystä Vickrey-huutokaupasta. 

Ketjuhuutokaupat ovat yksi web3:n mielenkiintoisimmista (ja kaikkialla esiintyvistä) suunnittelupaikoista – NFT-myynnistä vakuushuutokauppoihin – mikä synnyttää uudenlaisen toteutuksen ja tutkimuksen maiseman. Vaikka huutokauppamekanismien suunnittelu on ollut olemassa vuosisatoja ja se on kehittynyt viime vuosikymmeninä verkon ja verkkokaupan myötä, käytämme näitä lähestymistapoja älykkäisiin sopimuksiin vasta nyt.

Alamme myös nähdä enemmän huutokauppamalleja, jotka ovat kotoisin lohkoketjuista, mukaan lukien meidän avoimen lähdekoodin Vickrey-huutokaupan vakaa toteutus ja useita mielenkiintoisia yhteisön kehityssuuntia (mukaan lukien ehdotuksia tehokkuuden parantamiseksi, uusi teoreettiset tulokset, ja kaksi hackathonin voittaja toteutukset suljetuista huutokaupoista). Ensimmäisessä suunnitelmassamme teimme kompromissin yksityisyyden ja pääomatehokkuuden välillä: käytimme ylivakuutuksia (tarjoajat lukitsevat enemmän vakuuksia kuin heidän tarjouksensa edellyttävät) pakottaaksemme maksun voittavalta tarjoajalta paljastamatta tarkkoja tarjousarvoja vakuuden kautta. määrä. Lukitsemalla enemmän pääomaa saat enemmän yksityisyyttä mahdollisesti suuremmalla vaihtoehtoiskustannuksilla. Mutta entä jos olisimme voineet tarjota yksityisyyttä ilman ylivakuus? 

Tämä viesti esittelee uuden huutokaupan suunnittelun, jota kutsumme "SneakyAuctioniksi", joka yhdistää CREATE2 opcode ja valtion todisteet tarjousten yksityisyyden takaamiseksi ilman, että tarjoajien on lukittava vaadittua enemmän vakuuksia. Aloitamme erittelemällä sen toimivuuden ja vertaamme sitä sitten aiempaan toteutukseen (OverCollateralizedAuction) kaasun kustannusten, käyttökokemuksen ja yksityisyyden suhteen. Olemme myös lisänneet toteutuksen omaan Huutokauppa eläintarha arkisto GitHubissa, jotta voit jakaa sen, rakentaa sen pohjalle ja seurata mukana, kun sukeltamme mekaniikkaan; Sillä välin lisätietoja sen toiminnasta ja vertailua aiempaan suunnitteluumme alla. 

Miten se toimii: Sitoutuminen tarjouksiin käyttämällä CREATE2:ta

Meidän on täytettävä kaksi vaatimusta luodaksemme "lopulta julkisen" suljetun huutokaupan ketjussa. Ensinnäkin tarjousten on oltava yksityisiä tarjousajanjakson ajan, ja ne on paljastettava sen päättyessä. commit-reveal -järjestelmät (joissa käyttäjät julkaisevat hajautusarvot ja paljastavat syötteensä myöhemmin) voivat toistaa tämän mekanismin ketjussa. Toinen vaatimus on vakuudet: tarjousten takana on oltava vakuudet, jotta voittajalla on riittävästi varoja sitoumuksensa täyttämiseen. 

Ylivakuutetussa Vickrey-toteutuksessamme mahdolliset ostajat tekevät tarjouksia soittamalla numeroon commitBid toiminto, joka toimittaa hash-sitoumuksen ja suljettavan vakuuden. Tämä lähestymistapa täyttää vaatimukset, mutta siinä on joitain haittoja. Vaikka tiiviste piilottaa itse tarjouksen, commitBid kauppa avoimesti ja ilmaisee välittömästi käyttäjän tarkoituksen: "Haluaisin tehdä tarjouksen tässä huutokaupassa, ja tässä on tarjoukseni vakuus." Ilman liiallista vakuuksia molempien näkyvyys (ja linkitettävyys). tahallisuus ja vakuuksia paljastaisi hintatarjousarvot. Mutta jos voimme hämärtää tapahtuman tarkoituksen, voimme ehkä saavuttaa tarjousten yksityisyyden turvautumatta ylivakuutuksiin. 

- CREATE2 opcode, otettiin käyttöön vuonna EIP-1014 ja sisällytetty Konstantinopolin kovaan haarukkaan, antaa meille tavan tehdä juuri niin. The CREATE ja CREATE2 Molempia operaatiokoodeja käytetään älykkäiden sopimusten käyttöönotossa, mutta ne eroavat siitä, miten käyttöönottoosoitteet lasketaan. The CREATE käyttöönottoosoite lasketaan hajautusarvona käyttöönoton osoitteesta ja nonce-osoitteesta; the CREATE2 käyttöönottoosoite puolestaan ​​lasketaan tiivisteenä sopimuksen tavukoodista ja konstruktoriparametreista, mielivaltaisesta suolasta ja käyttöönoton osoitteesta (yksityiskohdat).

CREATE2 käytetään usein tehdasmalleissa sopimusten asentamiseen ennakoitavissa oleviin osoitteisiin - esimerkiksi UniswapV3PoolDeployer sopimuskäyttöön CREATE2 ottaa käyttöön kukin poolisopimus osoitteeseen, joka on tunnusparin ja maksutason funktio. CREATE2 voidaan käyttää myös päivitettävien älykkäiden sopimusten (uudelleen)ottamiseen käyttöön, varsinkin metamorfinen sopimusmalli.

Meille tärkeämpää on CREATE2 käyttöönottoosoite voi toimia hajautussitoumuksena mihin tahansa syötetavukoodin ja parametrien määrittelemään toimintaan. Jos rakentajan parametrit koodaavat tarjouksen, CREATE2 osoite voi toimia tarjoussitoumuksena.

Piilossa näkyvissä: Suljetun tarjouksen huutokaupan PlatoBlockchain Data Intelligence -huutokaupan luja toteutus. Pystysuuntainen haku. Ai.

Varaston osoitteen laskeminen Solidityssä

Lisäksi itse sopimus voi toimia holvina – tarjoaja voi lähettää ETH:n CREATE2 holvin osoite ennen kuin sopimus on otettu käyttöön vakuudeksi ja sitoutumaan tarjoukseensa yhdellä yksinkertaisella siirrolla! Koska tarjoajalla ei ole yksityistä avainta holvin osoitteeseen, vakuus on lukittu, kunnes tarjous paljastetaan, jolloin SneakyAuction-sopimus ottaa käyttöön ja avaa holvin. 

sneakyvault Solidity huutokauppasopimussneakyvault Solidity huutokauppasopimus

SneakyVault-sopimus. Tarkistaa, onko tarjouksensa voittanut, ja lähettää sen mukaisesti ETH:n myyjälle tai tarjoajalle. Kaikki rakentajassa!

Tämä lähestymistapa tekee tapahtumasta erottamattoman siirrosta ulkoisesti omistettuun osoitteeseen (EOA). Tarjoustapahtuma on piilotettu näkyvästi muiden lohkoketjun siirtojen joukossa. Yksi tärkeä huomautus kuitenkin: tämä näennäisesti siistillä ratkaisulla on myös vaikea määrittää kun vakuus oli lukittu. Huutokaupan turvallisuuden kannalta on tärkeää, että holvi rahoitettiin ennen tarjousten julkistamista. Muussa tapauksessa opportunistinen ostaja voisi odottaa paljastumisajan loppuun asti, jolloin suurin osa tarjouksista on jo julkistettu, päättääkseen, asettaako hän holvinsa vakuudeksi vai ei. Meidän on varmistettava, että holveilla on vakuudet tarjouskilpailun aikana, ei paljastamisjakson aikana, käyttämällä toista työkalua: tilatodistuksia.

Takautuva vakuuden tarkistaminen valtion todisteiden avulla

Yksi tapa varmistaa, että holvi oli vakuudeksi tarjousjakson aikana, on tarkistaa sen saldo menneessä lohkossa. Tämä on suhteellisen helppoa tehdä ketjun ulkopuolella tekemällä kysely arkistosolmusta; mutta paljon vaikeampi toteuttaa (luotettavasti) ketjussa. EVM:t BALANCE opcode lukee osoitteen nykyisen saldon, mutta sellaista opkoodia ei ole olemassa a Ohi saldo. Itse asiassa ainoa EVM-operaatiokoodi, joka tarjoaa kaikenlaisen historiallisen tilan pääsyn, on BLOCKHASH, joka palauttaa yhden 256 viimeisestä lohkosta. Onneksi - ketjun ulkopuolisella avustuksella - blockhash toimii juuri tarpeeksi hyvin meidän käyttötapauksessamme.

Blockhash on lohkootsikon hash, joka sisältää (muiden metatietojen ohella) valtion juuri siitä lohkosta. Tilajuuri on a:n juurisolmu Merkle-Patricia yrittää, jossa jokainen lehtisolmu vastaa tiettyä osoitetta ja sisältää osoitteen" tasapaino siinä lohkossa. Emme voi suoraan käyttää näitä lehtisolmuja ketjussa, mutta voimme varmistaa, että lehtisolmun sisältö on oikea. Itse asiassa, eth_getProof RPC-menetelmää tukee Alkemia (muiden palveluntarjoajien joukossa) palauttaa Merkle-todisteet, jotka tarvitaan tämän tarkastuksen suorittamiseen (Leo Zhang tarjoaa syvällinen selitys miten tämä toimii Ethereum light -asiakkaiden yhteydessä). Tämä tarkoittaa, että pienellä ketjun ulkopuolisella avustuksella (yksi RPC-puhelu) tarjoajat voivat todistaa SneakyAuction-sopimukselle, että heidän holvinsa oli vakuutena tarjousjakson aikana. 

Piilossa näkyvissä: Suljetun tarjouksen huutokaupan PlatoBlockchain Data Intelligence -huutokaupan luja toteutus. Pystysuuntainen haku. Ai.Piilossa näkyvissä: Suljetun tarjouksen huutokaupan PlatoBlockchain Data Intelligence -huutokaupan luja toteutus. Pystysuuntainen haku. Ai.

EVM-lohkootsikon komponentit. Lähde: https://ethereum.stackexchange.com/a/6414

Toteutuksessamme ensimmäinen tarjous huutokauppaa varten paljastettu tallentaa edellisen lohkon blockhash-koodin. Tämä tapahtuma siirtää huutokaupan tehokkaasti tarjousvaiheesta paljastamisvaiheeseen – kaikki myöhempiä tarjouksia paljastettujen on toimitettava Merklen todiste siitä, että heidän holvinsa oli riittävästi vakuudeltaan ennen kyseistä lohkoa (eli ennen kuin ensimmäinen tarjous paljastettiin). Huomaa, että ensimmäinen revealBid tapahtuma toimitettaisiin mieluiten yksityisen tapahtumapoolin kautta (esim. Flashbotit); Muussa tapauksessa mempoolia tarkkaileva tarjoaja (näkee paljastetun tarjouksen arvon) voisi aloittaa kaupan ja tehdä viimeisen sekunnin tarjouksen. 

LibBalanceProof

Tarjoajien kustannusten minimoimiseksi kirjoitimme kaasuoptimoidun kirjasto tarkistaa tasapainotodisteet ketjussa, joka perustuu sopimukset kirjoittanut Aragon-tiimi (joka oli edelläkävijä ketjun tallennustodistuksia vuonna 2018) ja Hamdi Allamin on-chain-sopimukset RLP-dekoodaus. Kirjastomme käyttää useita matalan tason temppuja ja optimointeja, jotka riippuvat tilatrien erityisrakenteesta, joten sitä ei voida käyttää yleisiin Merkle-Patricia-trie-todistuksiin. Vastineeksi sen avulla SneakyAuction-sopimus voi tarkistaa holvin aiemman saldon alle 30,000 XNUMX kaasussa.

Kirjoitimme myös kevyen tekstin JavaScript-kääre varten eth_getProof RPC-menetelmä. Kun osoite ja lohkonumero annetaan, se palauttaa saldovarmuuden ja RLP-sarjoitetun lohkootsikon, jota voidaan käyttää tarjouksen paljastamiseen. 

Miten se vertaa 

Verrataan uutta SneakyAuction-lähestymistapaamme viimeksi julkaisemaanmme OverCollateralizedAuction-suunnitteluun useiden teknisten suunnittelijoiden tai käyttäjien välittämien tärkeiden ulottuvuuksien mukaan: kaasukustannukset, käyttökokemus ja yksityisyys. 

Kaasun kustannukset

SneakyAuction's revealBid, endAuctionja withdrawCollateral toiminnot vaativat käyttöönoton a SneakyVault, joten ne ovat kalliimpia kuin OverCollateralizedAuction-vastineensa. revealBid on erityisen kallis, koska se varmistaa myös tasapainon, joka maksaa noin 25,000 XNUMX kaasua.

Eri toimintojen likimääräiset kaasukustannukset valimoyksikkötestien perusteella

Käyttökokemus

Vaikka nämä kaksi toteutusta noudattavat samanlaista kokonaiskulkua (hintatarjousvaihe, paljastamisvaihe, huutokaupan päättyminen), käyttökokemuksessa on joitain eroja. SneakyAuctionilla on muutamia pieniä haittoja:

  • Kokemus ETH:n lähettämisestä käyttämättömään holviin, vaikka käyttöliittymä voisikin poistaa sen, on mahdollisesti hämmentävä käyttäjille, jotka tutkivat tarjoustapahtumaansa lohkon tutkijalla.
  • OverCollateralizedAuctionin avulla on mahdollista lopettaa huutokauppa ennenaikaisesti, jos kaikki tarjoukset on paljastettu. Tämä ei ole mahdollista SneakyAuctionissa, koska sopimuksesta ei voi tietää, kuinka monta tarjousta on sidottu.
  • Tarjoajat voivat päivittää tarjouksensa ja täydentää vakuuksiaan OverCollateralizedAuctionilla soittamalla commitBid uudelleen. SneakyAuctionissa tarjoajat eivät voi tehdä päivityksiä sen jälkeen, kun tarjouksen holvi on vakuudeltaan.

yksityisyys

OverCollateralizedAuctionin tarjousten yksityisyys riippuu siitä, että tarjoajat päättävät lukita ylimääräisiä vakuuksia (joten katsojat tietävät tarjouksen ylärajan, mutta eivät tarkkaa määrää). SneakyAuction puolestaan saa yksityisyyttä ketjussa tapahtuvasta toiminnasta, joka ei liity täysin itse huutokauppaan: ETH-siirrot, jotka tapahtuvat huutokaupan tarjousjakson aikana. 

Yksinkertaisuuden vuoksi oletetaan, että jokainen tarjous on vakuudeltaan yhdellä ETH-siirrolla. Huomaamme, että: 

  1. Vakuustapahtuman tulisi olla ensimmäinen kerta, kun joku on ollut vuorovaikutuksessa holvin osoitteen kanssa ketjussa. 
  2. Emme odota muiden tapahtumien koskettavan holvin osoitetta loppuhintatarjousjakson aikana. 
  3. Mikään tapahtuma ei voi olla peräisin varastoosoitteesta (koska kenelläkään ei ole yksityistä avainta). 

ETH-siirrot tarjousjakson aikana muutoin "koskemattomiin" osoitteisiin ovat uskottavia tarjouksia – toisin sanoen ne ovat "melua", joka piilottaa tarjoustapahtumat. SneakyAuctionin yksityisyyden kvantifioimiseksi voimme tarkastella tämän melun jakautumisen muotoa.Piilossa näkyvissä: Suljetun tarjouksen huutokaupan PlatoBlockchain Data Intelligence -huutokaupan luja toteutus. Pystysuuntainen haku. Ai.

Piilossa näkyvissä: Suljetun tarjouksen huutokaupan PlatoBlockchain Data Intelligence -huutokaupan luja toteutus. Pystysuuntainen haku. Ai.

Tämä histogrammi näyttää päivittäisten ETH-siirtojen (Ethereumin pääverkossa) koskemattomiin osoitteisiin jakautuneen vuodesta toiseen, havainnollistaen melun jakautumista 24 tunnin tarjousjaksolla. Voimme nähdä, että useimmat tapahtumat kuuluvat ETH-alueelle [0.001, 1], mikä tarkoittaa, että huutokaupoilla, joiden odotettu hintatarjousarvo on tällä alueella, olisi vahvin yksityisyys. Toisaalta tyypillinen melu ei välttämättä tarjoa riittävää yksityisyyttä huutokaupoissa, joissa odotettu tarjous on suurempi kuin 10 ETH – tällä alueella on harvoin yli 100 siirtoa, joten monia tarjouksia houkutteleva huutokauppa aiheuttaisi huomattavan piikkien jakelussa. . 

Toisen näkökulman tähän dataan: nämä hajakuvaajat kuvaavat siirrot 15. lokakuuta 2022 kahden hypoteettisen huutokaupan tarjousten kanssa: 

Piilossa näkyvissä: Suljetun tarjouksen huutokaupan PlatoBlockchain Data Intelligence -huutokaupan luja toteutus. Pystysuuntainen haku. Ai.Piilossa näkyvissä: Suljetun tarjouksen huutokaupan PlatoBlockchain Data Intelligence -huutokaupan luja toteutus. Pystysuuntainen haku. Ai.

200 tarjousta, normaalisti 1 ETH:n ympärillä

Piilossa näkyvissä: Suljetun tarjouksen huutokaupan PlatoBlockchain Data Intelligence -huutokaupan luja toteutus. Pystysuuntainen haku. Ai.Piilossa näkyvissä: Suljetun tarjouksen huutokaupan PlatoBlockchain Data Intelligence -huutokaupan luja toteutus. Pystysuuntainen haku. Ai.

200 tarjousta, normaalisti 100 ETH:n ympärillä

Intuitiivisesti tarkkailijan olisi paljon helpompi tunnistaa toisen huutokaupan tarjoukset. Käytännössä voit käyttää klusterointialgoritmia, kuten odotusten maksimointi (EM) -algoritmi ennustaa, mitkä tapahtumat ovat tarjouksia. 

On kuitenkin olemassa muutamia muita tekijöitä, jotka voivat tehdä SneakyAuctionista yksityisemmän (ja siten houkuttelevamman) käytännössä:

  1. Pidemmät tarjousajat: Tietosuoja-asteikko tarjousajan pituuden mukaan – mitä pidempi tarjousaika, sitä enemmän siirtoja on tarjousten piilottamiseksi. 
  2. Samanaikaiset huutokaupat: Yksityisyysasteikot samanaikaisten huutokauppojen lukumäärällä – – jos kaksi huutokauppaa on tarjousvaiheessa samaan aikaan, toisen huutokaupan tarjoukset ovat melua toiselle.

SneakyAuction voi myös hyötyä ylivakuutuksesta – koska SneakyVault palauttaa ylimääräisen ETH:n tarjoajalle, tarjoajat voivat valita ylivakuuttamisen yksityisyyden lisäämiseksi. Joten tietyssä mielessä SneakyAuction tarjoaa ehdottomasti vahvemman yksityisyyden kuin edellinen toteutus.

Yksinkertainen seuraus SneakyAuctionin tietosuojamekanismista on, että se piilottaa numero tarjouksista tarjousjakson aikana. Tämä on etu OverCollateralizedAuctioniin verrattuna, joka piilottaa vain tarjousarvot – tietyssä huutokaupassa tehtyjen tarjoussitoumusten määrä on täysin julkinen (ja saattaa paljastaa huutokaupan kilpailukyvyn).

***

Ensimmäisessä toteutuksessamme suljetun huutokaupan todelliset ominaisuudet muunnettiin ketjun sisäisiksi suunnittelupäätöksiksi, kun taas toinen suunnittelumme perustuu uuteen ja käytännölliseen mekanismiin, joka käyttää lohkoketjujen julkista luonnetta hyödykseen: suljetut tarjoukset "piilottuvat" toisiinsa liittymättömien joukossa. lohkoketjutoiminta.

Vaikka tämä uusi lähestymistapa on kätevä tapa saavuttaa tarjousten yksityisyys ilman ylivakuutuksia, se ei välttämättä sovellu kaikkiin huutokauppoihin (esimerkiksi huutokauppoihin, joissa on paljon arvokkaita tarjouksia). Tietosuoja paranee huutokaupoissa, joissa odotetaan pienempiä tarjouksia (ja erityisesti pidemmän ajanjakson aikana).

***
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