Açık Görüşte Gizli: Kapalı Teklif Açık Artırmasının Sinsi Sağlamlık Uygulaması PlatoBlockchain Veri Zekası. Dikey Arama. Ai.

Görünürde Gizli: Kapalı Teklif Müzayedesinin Sinsi Bir Sağlamlık Uygulaması

16 Kasım 2022

Michael Zhu

Editörün notu: Bu parça, web3 için açık artırmalarla ilgili her şeyle ilgili devam eden serimizin bir parçasıdır. Bölüm 1 müzayede tasarımlarına ve izinsiz blok zincirleri bağlamında mekanizma tasarımına özgü teknik zorluklara (ve fırsatlara) genel bir bakıştı. Bölüm 2 piyasayı temizlemek ve gaz savaşlarından kaçınmakla ilgili bir yazıydı. Bölüm 3 kanonik müzayede türlerine genel bir bakış, teorinin pratiğe nasıl dönüştüğüne dair bir bakış ve yeni, kapalı teklif Vickrey müzayedesinin ilk uygulamamızı paylaşıyor. 

Zincir üstü müzayedeler, NFT satışlarından teminat müzayedelerine kadar web3'teki en ilginç (ve her yerde bulunan) tasarım alanlarından biridir ve yeni bir uygulama ve araştırma ortamına yol açar. Müzayede mekanizması tasarımı yüzyıllardır ortalıkta dolaşırken ve son yıllarda web ve e-ticaretin gelişmesiyle gelişirken, bu yaklaşımları yalnızca şimdi akıllı sözleşmelere uyguluyoruz.

Ayrıca, blok zincirlerine özgü daha fazla açık artırma tasarımı görmeye başlıyoruz. bizim açık kaynak Bir Vickrey müzayedesinin sağlamlık uygulaması ve topluluktan birkaç ilginç gelişme (dahil öneri verimlilik iyileştirmeleri için, yeni teorik sonuçlar, ve iki hackathon ödüllü uygulamaları kapalı teklif ihaleleri). İlk tasarımımızda, gizlilik ve sermaye verimliliği arasında bir denge kurduk: Teminat yoluyla kesin teklif değerlerini ifşa etmeden, kazanan teklif sahibinin ödemesini zorunlu kılmak için aşırı teminatlandırma (teklif verenler tekliflerinin gerektirdiğinden daha fazla teminatı kilitlediler) kullandık. tutar. Daha fazla sermayeyi kilitleyerek potansiyel olarak daha yüksek bir fırsat maliyetiyle daha fazla mahremiyet elde edersiniz. Peki ya teklif gizliliğine sahip olsaydık? olmadan aşırı teminatlandırma? 

Bu gönderi, "SneakyAuction" adını verdiğimiz yeni bir açık artırma tasarımını tanıtıyor. CREATE2 teklif verenlerin gerekenden daha fazla teminat tutmasını gerektirmeden teklif gizliliğini garanti etmek için işlem kodu ve durum kanıtları. Nasıl çalıştığını analiz ederek başlıyoruz ve ardından gaz maliyeti, kullanıcı deneyimi ve gizlilik açısından önceki uygulamamızla (OverCollateralizedAuction) karşılaştırıyoruz. Uygulamayı da sayfamıza ekledik. Müzayede Hayvanat Bahçesi çatallayabilmeniz, üzerine inşa edebilmeniz ve biz daha fazla mekaniğe dalarken onu takip edebilmeniz için GitHub'daki depo; bu arada, nasıl çalıştığı ve aşağıdaki eski tasarımımızla karşılaştırması hakkında daha fazla bilgi. 

Nasıl çalışır: CREATE2 kullanarak teklif verme

Zincir üzerinde "nihayetinde halka açık" bir kapalı teklif müzayedesi oluşturmak için ihtiyacımız olan iki gereksinim vardır. İlk olarak, teklifler, teklif verme süresi boyunca gizli olmalı ve ardından, teklif verme süresi sona erdiğinde açıklanmalıdır; taahhüt-açıklama şemaları (kullanıcıların karma olarak taahhüt edilen değerleri yayınladığı ve ardından girdilerini daha sonra açıkladığı) bu mekanizmayı zincir üzerinde çoğaltabilir. İkinci gereklilik teminatlandırmadır: kazananın taahhüdünü yerine getirmek için yeterli paraya sahip olduğundan emin olmak için teklifler teminatla desteklenmelidir. 

Aşırı teminatlandırılmış Vickrey uygulamamızda, olası alıcılar, commitBid işlev, bir hash taahhüdü ve emanet edilecek teminat sağlar. Bu yaklaşım gereksinimleri karşılar, ancak bazı dezavantajları vardır. Teklifin kendisi hash tarafından gizlenmiş olsa da, commitBid işlem, kullanıcının niyetini açıkça ve anında bildirir: "Bu açık artırmaya teklif vermek istiyorum ve işte teklifimin teminatı." Aşırı teminatlandırma olmadan, her ikisinin de görünürlüğü (ve bağlanabilirliği) niyet ve tamamlayıcı teklif değerlerini ortaya çıkarır. Ancak bir işlemin amacını gizleyebilirsek, fazla teminatlandırmaya güvenmeden teklif gizliliğini sağlayabiliriz. 

The CREATE2 opcode, tanıtılan EIP-1014 ve Constantinople hard fork'a dahil edilmesi, bize tam da bunu yapmamız için bir yol sunuyor. bu CREATE ve CREATE2 işlem kodlarının her ikisi de akıllı sözleşmeleri dağıtmak için kullanılır, ancak dağıtım adreslerinin nasıl hesaplandığına göre farklılık gösterir. bu CREATE dağıtım adresi, konuşlandırıcının adresinin bir karması olarak hesaplanır ve nonce; the CREATE2 dağıtım adresi ise sözleşmenin bayt kodunun ve yapıcı parametrelerinin bir karması, isteğe bağlı bir tuz ve konuşlandırıcının adresi (ayrıntılar).

CREATE2 sözleşmeleri öngörülebilir adreslere dağıtmak için genellikle fabrika modelinde kullanılır - örneğin, UniswapV3PoolDeployer sözleşme kullanımları CREATE2 her havuz sözleşmesini, belirteç çiftinin ve ücret katmanının bir işlevi olan bir adrese dağıtmak. CREATE2 yükseltilebilir akıllı sözleşmeleri (yeniden) dağıtmak için de kullanılabilir, özellikle de metamorfik sözleşme modeli.

Bizim için daha da önemlisi, CREATE2 dağıtım adresi, giriş bayt kodu ve parametreleri tarafından tanımlanan herhangi bir davranışa yönelik bir karma taahhüt işlevi görebilir. Yapıcı parametreleri bir teklifi kodlarsa, CREATE2 adresi bir teklif taahhüdü görevi görebilir.

Açık Görüşte Gizli: Kapalı Teklif Açık Artırmasının Sinsi Sağlamlık Uygulaması PlatoBlockchain Veri Zekası. Dikey Arama. Ai.

Solidity'de bir kasanın adresini hesaplama

Ayrıca, sözleşmenin kendisi bir kasa işlevi görebilir - bir teklif sahibi ETH'yi alıcıya gönderebilir. CREATE2 kasa adresi sözleşme uygulanmadan önce tek bir basit transferle teminat vermek ve tekliflerini taahhüt etmek! İstekli, kasa adresi için özel anahtara sahip olmadığından, teminat, teklif ortaya çıkana kadar kilitlenir ve bu noktada SneakyAuction sözleşmesi kasayı devreye alır ve kasanın kilidini açar. 

sinsi kasa Solidity müzayede sözleşmesisinsi kasa Solidity müzayede sözleşmesi

SneakyVault sözleşmesi. Teklifinin kazanıp kazanmadığını kontrol eder ve ETH'sini buna göre satıcıya veya teklif verene gönderir. Hepsi yapıcıda!

Bu yaklaşım, işlemi harici sahip olunan bir adrese (EOA) yapılan transferden ayırt edilemez hale getirir. Teklif işlemi, blok zincirindeki diğer transferlerin yanı sıra göz önünde gizlidir. Bununla birlikte önemli bir uyarı: Bu düzenli görünen çözüm aynı zamanda karar vermeyi de zorlaştırıyor. ne zaman teminat kilitlendi. Herhangi bir teklif açıklanmadan önce kasanın finanse edilmiş olması, müzayede güvenliği için çok önemlidir. Aksi takdirde, fırsatçı bir alıcı, kasasını teminat altına alıp almamaya karar vermek için çoğu teklifin zaten açıklanmış olduğu açıklama döneminin sonuna kadar bekleyebilir. Kasaların teminat altına alındığından emin olmalıyız İhale döneminde, açıklama döneminde değil, başka bir araç kullanarak: kanıtları belirtin.

Durum kanıtlarını kullanarak teminatı geriye dönük olarak doğrulama

İhale döneminde bir kasanın teminat altına alındığından emin olmanın bir yolu, geçmiş bir blokta bakiyesini kontrol etmektir. Bir arşiv düğümünü sorgulayarak bunu zincir dışı yapmak nispeten kolaydır; ancak zincir üzerinde gerçekleştirmek (güvenilmez bir şekilde) çok daha zordur. EVM'ler BALANCE opcode, bir adresin mevcut bakiyesini okur, ancak bir adresi almak için böyle bir opcode yoktur. geçmiş denge. Aslında, herhangi bir tarihsel durum erişimi sağlayan tek EVM işlem kodu BLOCKHASH, son 256 bloktan birinin karmasını döndürür. Neyse ki - bazı zincir dışı yardımlarla - blok hash bizim kullanım durumumuz için yeterince iyi çalışıyor.

Blok hash, (diğer meta veriler arasında) aşağıdakileri içeren blok başlığının karmasıdır: devlet kökü o bloğun. Durum kökü, bir sistemin kök düğümüdür. Merkle-Patricia üçlüsü, burada her yaprak düğüm belirli bir adrese karşılık gelir ve 'adresini içerir' dengelemek o blokta Zincir üzerindeki bu yaprak düğümlere doğrudan erişemiyoruz, ancak bir yaprak düğümün içeriğinin doğru olduğunu doğrulayabiliriz. Aslında, eth_getProof tarafından desteklenen RPC yöntemi Simya (diğer sağlayıcılar arasında) bu doğrulamayı gerçekleştirmek için gereken Merkle kanıtlarını verir (Leo Zhang bir derinlemesine açıklama bunun Ethereum hafif istemcileri bağlamında nasıl çalıştığı). Bu, biraz zincir dışı yardımla (tek bir RPC çağrısı) teklif verenlerin SneakyAuction sözleşmesine, teklif verme döneminde kasalarının teminat altına alındığını kanıtlayabilecekleri anlamına gelir. 

Açık Görüşte Gizli: Kapalı Teklif Açık Artırmasının Sinsi Sağlamlık Uygulaması PlatoBlockchain Veri Zekası. Dikey Arama. Ai.Açık Görüşte Gizli: Kapalı Teklif Açık Artırmasının Sinsi Sağlamlık Uygulaması PlatoBlockchain Veri Zekası. Dikey Arama. Ai.

Bir EVM blok başlığının bileşenleri. Kaynak: https://ethereum.stackexchange.com/a/6414

Uygulamamızda, ilk teklif Bir müzayede için açıklanan önceki bloğun blok hashını saklar. Bu işlem, müzayedeyi teklif verme aşamasından açıklama aşamasına etkili bir şekilde geçirir - tümü sonraki teklifler ifşa edilenler kasalarının bu bloktan önce (yani ilk teklif açıklanmadan önce) yeterince teminatlandırıldığına dair bir Merkle kanıtı sağlamalıdır. Not ilk revealBid işlem ideal olarak özel bir işlem havuzu (örn. Flashbot'lar) yoluyla gönderilir; aksi takdirde, mempool'u izleyen (ortaya çıkan teklifin değerini gören) bir teklif veren, işlemi önden yürütebilir ve bir son saniye teklifi verebilir. 

LibBalanceProof

İstekliler için maliyetleri en aza indirmek amacıyla gaz için optimize edilmiş bir kütüphane üzerine inşa edilen zincir üzerindeki denge kanıtlarını doğrulamak için sözleşmeleri (2018'de zincir üstü depolama kanıtlarına öncülük eden) Aragon ekibi ve Hamdi Allam'ın zincir üstü için sözleşmeleri tarafından yazılmıştır. RLP kod çözme. Kütüphanemiz, durum trie'sinin özel yapısına dayanan bir dizi düşük seviyeli hile ve optimizasyon kullanır, bu nedenle genel Merkle-Patricia trie ispatları için kullanılamaz. Buna karşılık, SneakyAuction sözleşmesinin bir kasanın geçmiş bakiyesini 30,000'den az gazla doğrulamasını sağlar.

Ayrıca hafif yazdık JavaScript sarıcı için eth_getProof RPC yöntemi. Bir adres ve blok numarası verildiğinde, bir teklifi ortaya çıkarmak için kullanılabilecek denge kanıtını ve RLP-serialized blok başlığını döndürür. 

Nasıl karşılaştırır 

Yeni SneakyAuction yaklaşımımızı, en son yayınladığımız OverCollateralizedAuction tasarımıyla, teknik tasarımcıların veya kullanıcıların önemsediği birkaç temel boyutla karşılaştıralım: gaz maliyetleri, kullanıcı deneyimi ve gizlilik. 

Gaz maliyetleri

SneakyAuction's revealBid, endAuction, ve withdrawCollateral işlevler dağıtmayı gerektirir SneakyVault, dolayısıyla OverCollateralizedAuction muadillerinden daha pahalıdırlar. revealBid özellikle pahalıdır çünkü aynı zamanda yaklaşık 25,000 gaza mal olan bir denge kanıtını da doğrular.

Döküm ünitesi testlerine dayalı olarak farklı operasyonların yaklaşık gaz maliyetleri

Kullanıcı deneyimi

İki uygulama genel olarak benzer bir akış izlese de (teklif aşaması, açıklama aşaması, açık artırma bitişleri), kullanıcı deneyiminde bazı farklılıklar vardır. SneakyAuction'ın birkaç küçük dezavantajı vardır:

  • Dağıtılmamış bir kasaya ETH gönderme deneyimi, ön uç tarafından soyutlanabilse de, teklif işlemlerini bir blok gezgininde inceleyen kullanıcılar için kafa karıştırıcı olabilir.
  • OverCollateralizedAuction ile, tüm teklifler açıklanmışsa açık artırmayı erken bitirmek mümkündür. SneakyAuction'da bu mümkün değildir, çünkü sözleşmede kaç teklifin verildiğini bilmenin bir yolu yoktur.
  • İstekliler, telefon ederek tekliflerini güncelleyebilir ve teminatlarını OverCollateralizedAuction ile tamamlayabilir. commitBid Yeniden. SneakyAuction'da teklif verenler, teklif kasası teminat altına alındıktan sonra güncelleme yapamaz.

Gizlilik

OverCollateralizedAuction'ın teklif gizliliği, teklif verenlerin ekstra teminat almayı seçmesine bağlıdır (böylece izleyiciler bir teklifin üst sınırını bilir, ancak tam miktarı bilmez). Öte yandan SneakyAuction, açık artırmanın kendisiyle tamamen ilgisi olmayan zincir içi faaliyetlerden gizlilik elde eder: Açık artırmanın teklif verme döneminde gerçekleşen ETH transferleri. 

Basit olması için, her teklifin tek bir ETH transferi kullanılarak teminatlandırıldığını varsayalım. Şunu gözlemliyoruz: 

  1. Teminatlandırma işlemi, herhangi birinin zincir üzerindeki kasa adresiyle ilk kez etkileşim kurması olmalıdır. 
  2. Teklif verme döneminin geri kalanında başka herhangi bir işlemin kasa adresine dokunmasını beklemiyoruz. 
  3. Kasa adresinden hiçbir işlem kaynaklanamaz (çünkü kimsenin özel anahtarı yoktur). 

İhale döneminde başka türlü "el değmemiş" adreslere yapılan ETH transferleri, makul bir şekilde tekliflerdir - başka bir deyişle, teklif işlemlerini gizleyen "gürültü" dür. SneakyAuction'ın gizliliğini ölçmeye yardımcı olması için bu gürültü dağılımının şekline bakabiliriz.Açık Görüşte Gizli: Kapalı Teklif Açık Artırmasının Sinsi Sağlamlık Uygulaması PlatoBlockchain Veri Zekası. Dikey Arama. Ai.

Açık Görüşte Gizli: Kapalı Teklif Açık Artırmasının Sinsi Sağlamlık Uygulaması PlatoBlockchain Veri Zekası. Dikey Arama. Ai.

Bu histogram, günlük ETH transferlerinin (Ethereum ana ağında) el değmemiş adreslere yıldan bugüne dağılımını gösterir ve 24 saatlik bir teklif verme dönemi için gürültü dağılımını gösterir. Çoğu işlemin [0.001, 1] ETH aralığına düştüğünü görebiliriz, bu da bu aralıkta beklenen teklif değerine sahip müzayedelerin en güçlü gizliliğe sahip olacağını ima eder. Öte yandan, tipik gürültü, beklenen teklifin 10 ETH'den yüksek olduğu müzayedeler için yeterli gizlilik sağlamayabilir — bu aralıkta nadiren 100'den fazla transfer olur, bu nedenle çok sayıda teklif çeken bir müzayede, dağıtımda göze çarpan bir artışa neden olur. . 

Bu verilere ilişkin başka bir bakış açısı için, bu dağılım grafikleri, 15 Ekim 2022'deki transferleri, iki varsayımsal müzayededen gelen tekliflerle üst üste bindirilmiş olarak gösteriyor: 

Açık Görüşte Gizli: Kapalı Teklif Açık Artırmasının Sinsi Sağlamlık Uygulaması PlatoBlockchain Veri Zekası. Dikey Arama. Ai.Açık Görüşte Gizli: Kapalı Teklif Açık Artırmasının Sinsi Sağlamlık Uygulaması PlatoBlockchain Veri Zekası. Dikey Arama. Ai.

Normalde 200 ETH civarında dağıtılan 1 teklif

Açık Görüşte Gizli: Kapalı Teklif Açık Artırmasının Sinsi Sağlamlık Uygulaması PlatoBlockchain Veri Zekası. Dikey Arama. Ai.Açık Görüşte Gizli: Kapalı Teklif Açık Artırmasının Sinsi Sağlamlık Uygulaması PlatoBlockchain Veri Zekası. Dikey Arama. Ai.

Normalde 200 ETH civarında dağıtılan 100 teklif

Sezgisel olarak, bir gözlemcinin ikinci müzayededen teklifleri belirlemesi çok daha kolay olacaktır. Uygulamada, aşağıdaki gibi bir kümeleme algoritması kullanabilirsiniz: beklenti maksimizasyonu (EM) algoritması, hangi işlemlerin teklif olduğunu tahmin eder. 

Bununla birlikte, SneakyAuction'ı pratikte daha özel (ve dolayısıyla daha çekici) hale getirebilecek birkaç başka faktör daha vardır:

  1. Daha uzun teklif verme dönemleri: Gizlilik, teklif verme süresinin uzunluğuna göre ölçeklenir –– teklif verme süresi ne kadar uzun olursa, teklifleri gizlemek için o kadar fazla transfer olur. 
  2. Eşzamanlı müzayedeler: Gizlilik, eşzamanlı müzayede sayısına göre ölçeklenir –– iki müzayede aynı anda teklif verme aşamasındaysa, bir müzayedenin teklifleri diğeri için gürültü görevi görür.

SneakyAuction ayrıca aşırı teminatlandırmadan da yararlanabilir - SneakyVault herhangi bir fazla ETH'yi teklif verene iade ettiğinden, teklif verenler daha fazla gizlilik için fazla teminat vermeyi seçebilir. Yani bir anlamda SneakyAuction, önceki uygulamamızdan kesinlikle daha güçlü gizlilik sağlar.

SneakyAuction'ın gizlilik mekanizmasının basit bir sonucu, numara İhale döneminde verilen tekliflerin Bu, yalnızca teklif değerlerini gizleyen OverCollateralizedAuction'a göre bir avantajdır - belirli bir açık artırma için verilen teklif taahhütlerinin sayısı tamamen halka açıktır (ve açık artırmanın ne kadar rekabetçi olduğunu gösterebilir).

***

Kapalı teklif müzayedesinin ilk uygulamamız, gerçek dünya özelliklerini zincir üstü tasarım kararlarına dönüştürürken, ikinci tasarımımız, blok zincirlerinin halka açık doğasını kendi avantajına kullanmak için yeni ve pratik bir mekanizmaya dayanıyor: mühürlü teklifler ilgisizler arasında "gizlenir". blok zinciri etkinliği.

Bu yeni yaklaşım, aşırı teminatlandırma olmadan teklif gizliliğini elde etmenin uygun bir yolu olsa da, tüm açık artırmalar için uygun olmayabilir (örneğin, birçok yüksek değerli teklif içeren açık artırmalar). Gizlilik, daha küçük teklifler (ve özellikle daha uzun bir süre boyunca) bekleyen açık artırmalar için iyileşir.

***
Burada ifade edilen görüşler, alıntı yapılan bireysel AH Capital Management, LLC (“a16z”) personelinin görüşleridir ve a16z veya iştiraklerinin görüşleri değildir. Burada yer alan belirli bilgiler, a16z tarafından yönetilen fonların portföy şirketleri de dahil olmak üzere üçüncü taraf kaynaklardan elde edilmiştir. a16z, güvenilir olduğuna inanılan kaynaklardan alınmış olsa da, bu tür bilgileri bağımsız olarak doğrulamamıştır ve bilgilerin mevcut veya kalıcı doğruluğu veya belirli bir duruma uygunluğu hakkında hiçbir beyanda bulunmaz. Ayrıca, bu içerik üçüncü taraf reklamlarını içerebilir; a16z, bu tür reklamları incelememiştir ve burada yer alan herhangi bir reklam içeriğini onaylamaz.

Bu içerik yalnızca bilgilendirme amaçlıdır ve yasal, ticari, yatırım veya vergi tavsiyesi olarak kullanılmamalıdır. Bu konularda kendi danışmanlarınıza danışmalısınız. Herhangi bir menkul kıymete veya dijital varlığa yapılan atıflar yalnızca açıklama amaçlıdır ve yatırım tavsiyesi veya yatırım danışmanlığı hizmetleri sağlama teklifi teşkil etmez. Ayrıca, bu içerik herhangi bir yatırımcıya veya muhtemel yatırımcılara yönelik değildir veya bu içerik tarafından kullanılması amaçlanmamıştır ve a16z tarafından yönetilen herhangi bir fona yatırım yapma kararı verilirken hiçbir koşulda bu içeriğe güvenilemez. (Bir a16z fonuna yatırım yapma teklifi, yalnızca tahsisli satış mutabakatı, abonelik sözleşmesi ve bu tür bir fonun diğer ilgili belgeleri ile yapılacaktır ve bunların tamamı okunmalıdır.) Bahsedilen, atıfta bulunulan veya atıfta bulunulan herhangi bir yatırım veya portföy şirketi veya a16z tarafından yönetilen araçlara yapılan tüm yatırımları temsil etmemektedir ve yatırımların karlı olacağına veya gelecekte yapılacak diğer yatırımların benzer özelliklere veya sonuçlara sahip olacağına dair hiçbir garanti verilemez. Andreessen Horowitz tarafından yönetilen fonlar tarafından yapılan yatırımların bir listesi (ihraççının a16z'nin kamuya açıklanmasına izin vermediği yatırımlar ve halka açık dijital varlıklara yapılan habersiz yatırımlar hariç) https://a16z.com/investments adresinde bulunabilir. /.

İçerisinde yer alan çizelgeler ve grafikler yalnızca bilgilendirme amaçlıdır ve herhangi bir yatırım kararı verirken bunlara güvenilmemelidir. Geçmiş performans gelecekteki sonuçların göstergesi değildir. İçerik yalnızca belirtilen tarih itibariyle konuşur. Bu materyallerde ifade edilen tüm tahminler, tahminler, hedefler, beklentiler ve/veya görüşler önceden bildirilmeksizin değiştirilebilir ve farklı olabilir veya başkaları tarafından ifade edilen görüşlere aykırı olabilir. Ek önemli bilgiler için lütfen https://a16z.com/disclosures adresine bakın.

Zaman Damgası:

Den fazla Andreessen Horowitz