ERC4626 kasaları için genelleştirilmiş özellik testleri PlatoBlockchain Veri Zekası. Dikey Arama. Ai.

ERC4626 kasaları için genelleştirilmiş özellik testleri

DeFi büyüyüp olgunlaştıkça, ölçeklenebilir altyapı ve şekillendirilebilirlik geliştiricilerin akıllarında ilk sıralarda yer alıyor. Ethereum Yorum İstekleri (veya ERC'ler) - yaygın olarak kullanılan token standardı gibi Ethereum tabanlı uygulamalar oluşturmak için standartlaştırılmış araç setleri Ethereum — geliştiricilerin sıfırdan başlamadan ekosisteme katkıda bulunmaları için tutarlı yönergeler sağlama konusunda temel rolü yerine getirir. Bu yılın başlarında, tokenize edilmiş kasa standardı Ethereum getiri sağlayan tokenlar arasında çapraz uyumluluğu teşvik etmek için oluşturuldu. Uygulama ayrıntılarının standartlaştırılması aynı zamanda acil şekillendirilebilirlik sorunlarını da çözebilir, protokol entegrasyonunu daha kolay hale getirebilir ve sonuç olarak hataya daha az eğilimli hale getirebilir.

Birçok DeFi projesi halihazırda benimsenen Standart, kasalarının şekillendirilebilirliğini artırmayı amaçlıyor ve ekosistem genelinde daha geniş bir şekilde benimsenmesini bekliyoruz. Ancak mevcut kasaların uyarlanması bazı büyüyen sorunlara neden oluyor; Kritik olarak, bazı uygulama hataları saldırı için yeni hedefleri ortaya çıkarabilir. Küçük hatalar bile (standart arayüzün yanlış yorumlanması kadar küçük) hem güvenlik hem de kullanıcı deneyimi açısından önemli sonuçlar doğurabilir ve özellikle daha şekillendirilebilir bir DeFi ekosisteminde daha fazla güvenlik aracına ve önlemine olan ihtiyacın altını çizebilir. 

Neyse ki, basit hatalar, istismar edilmeden çok önce (ve ideal olarak konuşlandırılmadan önce) tespit edilirse nispeten basit çözümlere sahip olabilir. Bu amaçla yayınladık ERC4626 özellik testleri kasa oluşturucularının entegrasyonları bozabilecek veya güvenlik açıklarına yol açabilecek standart ihlalleri tespit etmelerine yardımcı olmak amacıyla bulanıklaştırma ve sembolik yürütme için. Bu yazıda sizi motive eden sorunu açıklıyoruz, yaklaşımımızı gözden geçiriyoruz ve bazı uygulanabilir tavsiyelerle sonlandırıyoruz.

Öncelikle ERC4626 standardı hakkında biraz bilgi verelim

Mart ayında tamamlanan Ethereum tokenleştirilmiş kasalar için standarttır. Yaygın olarak kullanılanı genişletmek amacıyla tanıtıldı. Ethereum standart (şu anda yüzlerce tokenin temeli), getiri sağlayan kasalar arasında standardizasyonu teşvik edin ve onlarla etkileşime girmesi gereken uygulamalar ve protokoller (örneğin getiri toplayıcılar) için şekillendirilebilirliği sağlayın. Bu, bir ERC4626 kasası üzerinde oluşturulan herhangi bir uygulamanın, herhangi bir ERC4626 kasasıyla çalışacak şekilde kolayca genişletilebileceği anlamına gelir. 

Tokenleştirilmiş kasalar, kullanıcıların kasa hisselerini basmak için varlıklarını serbestçe yatırmalarına ve daha sonra bu hisseleri kasadan anapara ve faizi çekmek için kullanmalarına olanak tanır. Bu kasa hisseleri ERC20 tokenleridir ve bu nedenle kolayca alınıp satılabilir veya diğer varlıkları ödünç almak için teminat olarak kullanılabilir. Örneğin, kullanıcılar, yVault tokenlerini basmak için varlıklarını Yearn kasalarına yatırabilirler; bunlar daha sonra Uniswap'te alınıp satılabilir, ek getiri için stake edilebilir veya borç verme protokolleri için teminat olarak kullanılabilir.

Getiri oluşturmaya ve dağıtmaya (ve hisse fiyatını belirlemeye) yönelik iş mantığı, uygulamalara göre değişiklik gösterebilir. ERC4626 standardı, mümkün olduğu kadar çok kasayı kapsamak için (bunları birlikte çalışabilir veya aynı hale getirmek amacıyla), uygulama ayrıntılarının çoğunu belirtmeden bırakarak kullanıcı arayüzünü açıklamaya odaklanır. Bu, kasa arayüzün belirli gereksinimlerini karşıladığı sürece iş mantığında değişikliklere izin verir ve birçok farklı türde uygulama ve ERC4626 kasası türü arasında birlikte çalışabilirlik.

Daha fazla kasa oluşturuldukça bunların en başından itibaren ERC4626 standardına göre uygulandığını görmeyi bekliyoruz; ancak şu anda, daha fazla şekillendirilebilirlikten yararlanmak isteyen geliştiricilerin mevcut kasaları, uygulamaları ve protokolleri standarda uyacak şekilde güncellemeleri gerekeceği bir geçiş aşamasındayız. Yükseldikçe bir dizi karmaşıklık ve zorlukla mücadele ediyorlar. 

Standartlara uygunluğun zorlukları (ve uymamanın tuzakları)

Yeni bir standardı takip etmek her zaman kolay değildir. Her ERC4626 kasası, standardın gereksinimlerini açıklandığı şekilde sadakatle (ve tam olarak) uygulamalıdır. Aksi takdirde, ERC4626 kasalarının entegrasyonu, farklı varyasyonları hesaba katacak şekilde giderek daha karmaşık hale gelir. Bu karmaşıklık, entegrasyonları doğası gereği hataya açık hale getirir; ve geleceğe yeterince dayanıklı olmadıkları için zamanla güvenlik açıklarına yol açabilirler.

Standart olmayan ERC20 tokenleri (örneğin, Tether USD), farklı davranışlarla (örneğin, bir transfer başarılı olduğunda geri dönmek yerine hiçbir şey döndürmemek) güvenli bir şekilde başa çıkmak için token transferleri gerçekleştirirken birçok DeFi sisteminin ek bir kitaplık (SafeERC20 gibi) kullanmasını gerektirir. true). Bu, sistem "eksik getiri" durumlarını uygun şekilde ele alacak şekilde tasarlanmadığı takdirde, bu tokenlarla etkileşime giren herhangi bir sistemin savunmasız hale gelebileceği anlamına gelir. Bu senaryolar potansiyel olarak ortak bir güvenlik tuzağına neden olabilir ve genel geliştirme ve bakım maliyetlerini artırabilir (sorunları azaltmak için gereken ek mantık ve bağımlılıklar dikkate alındığında). Bu nedenle standarda uyum, yalnızca bireysel uygulamalar için değil aynı zamanda tüm ekosistemin güvenliği açısından da kritik öneme sahiptir. Tek bir sistemdeki bir güvenlik açığı veya bağımlılık, yaygın sorunlara neden olabilir.

İdeal olarak, standartlar belirsizlik olmadan resmi olarak belirtilmelidir (örn. ERC20'nin resmi spesifikasyonu) ve her uygulama standart spesifikasyona göre resmi olarak doğrulanabilir. Ancak pratikte, toplumun gerektirdiği maliyet ve çaba nedeniyle bunu kısa sürede başarmak kolay değildir.

Uyumluluk sorunlarını belirlemek için yürütülebilir ERC4626 özelliklerinin tanıtılması 

İdeal bir duruma doğru çalışırken (her kasa sıkı resmi spesifikasyonlara göre resmi olarak doğrulanır), ERC4626 standardını yazdık özellikleri Standart gerekliliklerin incelikli ve gözden kaçırılması kolay ayrıntılarındaki tutarsızlıkları yakalamak için.  

Apps Kasası geliştiricileri, dağıtımdan önce uygulamalarındaki olası standart ihlallerini tespit etmek için testler gerçekleştirebilir. Ve kasa entegratörleri, verilen kasaların kendi sistemlerine entegre edilmeden önce standarda uyup uymadığını kontrol edebilir. Özellikler ayrıca ana ağ çatal testi aracılığıyla halihazırda ana ağ üzerinde konuşlandırılmış canlı kasalara karşı da test edilebilir. Tüm sistem parametrelerinin doğru ayarlandığından emin olmak için canlı kasaları test etmek, özellikle kasalar yakın zamanda dağıtıldığında veya yükseltildiğinde faydalı olabilir. 

Özellikleri yürütülebilir (ve dolayısıyla test edilebilir) kılmak için Foundry'de yazılmış ve fuzzer tarafından çalıştırılmaya hazır özellik tabanlı testleri seçtik. Gelecekte, verilen kasanın tüm olası girdiler ve koşullar için özellikleri karşıladığını resmi olarak doğrulamak için sembolik yürütme veya model kontrol araçlarıyla da çalıştırılabilirler.

Özellikleri, farklı iş mantığını uygulayan çok çeşitli kasalara uygulanabilecek kadar genel olacak şekilde yazdık. Uygulama ayrıntılarından bağımsız olmalarını sağlamak için yalnızca genel arayüz işlevlerini kullandık. (Ancak bu kısıtlama nedeniyle, uygulamaya özel dahili verilere atıfta bulunan belirli standart gereklilikler özelliklerden çıkarılmıştır.)

Örneğin, aşağıdaki özellik gereksinimlerinden birine karşılık gelir. convertToShares() işlev, "Arayan kişiye bağlı olarak herhangi bir değişiklik GÖSTERİLMEMELİDİR.” İki hesap adresi ve tutar göz önüne alındığında, hesapların her birinin aranmasını sağlar convertToShares() aynı miktarda ve iki dönüş değerinin eşit olmasını sağlar. Bu özellik, uygulama detaylarından bağımsızdır. convertToShares()Bu, kasalar arasında farklılık gösterir ve ERC4626'yı uygulayan tüm kasalar tarafından karşılanmalıdır. Bu özellik, belirli giriş değerleri (birim testi için), birçok rastgele giriş (fuzz testi için) veya sembolik değerler (sembolik yürütme ve resmi doğrulama için) sağlanarak yürütülebilir. Ayrıca yerel olarak veya bir ana ağ çatalına karşı (entegrasyon testi için) çalıştırılabilir.

Kullanım örneği: yuvarlama hatalarını test eden özellikler

Örneğin yuvarlama hataları, bazı seri çıkarımlara sahip olabilecek (görünüşte küçük) hataların önemli bir sınıfıdır. ERC4626'nın temel muhasebe mantığı, örneğin basılacak hisse sayısının veya çekilecek varlık miktarının hesaplanması, sabit nokta aritmetiği kullanılarak uygulanır; yuvarlama hataları kaçınılmazdır. İçin güvenlikancak standart, her arayüz işlevi için tercih edilen yuvarlama yönünü açıkça belirtirken hata sınırlarını belirtilmemiş ve uygulamaya bağlı bırakır. Özellikle, deposit() ve redeem() işlevler bir döndürmelidir altında-kesin değerin yaklaşıklaştırılması, mint() ve withdraw() işlevler bir döndürmelidir tekrar-yaklaştırma. Örneğin, mevcut hisse fiyatı (yani hisse başına varlık miktarı) 2 ise, o zaman deposit() 3 wei varlığa sahip olanların yalnızca 1 wei'ye kadar hisse basması gerekir (yani, floor(3/2)), while withdraw() 3 wei varlığı olan en az 2 wei hisse yakmalıdır (yani, ceil(3/2)).

Yuvarlamayla ilgili özellikleri, temeldeki muhasebe mantığından bağımsız olacak şekilde kara kutu gibi ele alarak yazdık. Özellikle bunları, iki zıt fonksiyon arasındaki ilişkiyi tanımlayan "gidiş-dönüş" özellikleri olarak formüle ettik. Örneğin, aşağıdaki özellik, N hisse senedi basılarak emanete alınmış varlıkların geri çekilmesinin, N hisseden az olmaması gerektiğini belirtir. Başka bir deyişle, hiç kimse varlıkları ve kasa hisselerini tekrar tekrar basıp çekerek, ileri geri dönüştürerek bedava kar elde edemez.

ERC4626 özellik testlerinden pasaj

Aslında, ana ağdaki birçok ERC4626 kasasının yuvarlama hataları nedeniyle yukarıdaki özelliği karşılayamadığını gördük. Bu, herhangi birinin, örneğin, kasayı yavaşça boşaltarak basitçe (ve tekrar tekrar) basıp çekerek birkaç satoshi BTC (1 satoshi ~= 0.02 cent) kazanabileceği anlamına gelir. Bu aslında çok düşük yakıt ücretlerinden yararlanan zincirlerde (örn. Fantom) veya varlık fiyatının gelecekte yeterince yüksek olması durumunda kâr sağlayabilir.

ERC4626 standardını doğada test etmek

Özelliklerimizi ana ağdaki ~100 ERC4626 kasasına karşı test ettik ve çoğunlukla yuvarlama hatalarından dolayı (örneğin, tanımladığımız gibi tavanın istendiği yerde zemin yuvarlamanın kullanılması) standart gereksinimleri karşılamayan birçok kasa bulduk. Spesifik olarak, bazı kasalar, şirket tarafından talep edilen hisselerin tam sayısını basmakta başarısız oldu. mint() standart açıkça gerektirse de, işlev Re-Tweet. Bazıları ayrıca tutarsız bir ses yaydı Deposit Günlüğe kaydedilen verilerin gerçekte basılanlardan farklı olduğu olay. Şaşırtıcı bir şekilde, bazı kasalar hiçbir zaman orada basılmadı; bunun yerine, nane isteklerini bir kuyruğa koyarlar ve bunları daha sonra toplu olarak ayrı bir işlem olarak işlerler.

Her ne kadar bu farklı davranışlar kendi başına istismar edilemez olsa da, yalnızca standart davranışları bekleyen diğer sistemlere entegre edildiklerinde savunmasız hale gelebilirler. Bu sorunlar kasa entegrasyonunu çok daha zorlaştıracak, potansiyel olarak devam eden çabaları etkisiz hale getirecek ve standardizasyonun arkasındaki motivasyonu artıracaktır.

Özellik testlerimizi ve standart uyumluluğa yönelik diğer uygulanabilir adımları kullanma

Standardın tam olarak takip edilmesi, farklı davranışları önleyebilir (ideal olarak henüz uygulamaya konulmadan önce). Birkaç ek eylem öğesinin yanı sıra mülklerimizin de yardımcı olacağını umuyoruz. ERC4626 kasalarını geliştiren ve/veya entegre edenler için:

  • Mülkümüzü işletmenizi önemle tavsiye ederiz testleri kasalarınıza karşı. Standardın açık bir şekilde ihlal edilmesi durumunda sorunları hızlı bir şekilde bulacaklardır.
  • Ayrıca incelememizi de öneririz. özellikleri Standart gerekliliklere ilişkin anlayışınızı çapraz olarak kontrol etmek ve kasıtsız bir tutarsızlık olması durumunda uygulamanızı ayarlamak için.
  • Kasanızın standarttan sapması gerekiyorsa standart dışı davranışları açıkça belgelemenizi öneririz, böylece diğer kişiler kasanızla entegrasyon sırasında bu sapmaları uygun şekilde ele alabilir. Bunun son çare olarak değerlendirilmesi gerektiğini lütfen unutmayın.

***
ERC4626 kasaları, öngörülebilir gelecekte DeFi için önemli bir yapı taşı haline gelme potansiyeline sahiptir ve şekillendirilebilirlik açısından hem yeni hem de mevcut kasaların standarda uyması önemlidir. Standardı takip eden yeni uygulamalar ortaya çıkacaktır, dolayısıyla mevcut kasaları standartlaştırmak için şu andan daha iyi bir zaman olamaz. 

İdeal bir duruma (farklı kasaların aynı şekilde oluşturulabildiği) doğru çalışırken, kasa uygulamalarındaki standart ihlallerini daha kolay tespit etmek için ERC4626 özellik testleri çalıştırılabilir. Özellik testlerinin tümü (belgeler ve örneklerle birlikte) Github'ımızda herkese açık olarak mevcuttur Depo. Geri bildirimlerinizi ve katkılarınızı bekliyoruz!

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