
Akıllı cüzdanlar ve ERC-4337: Yeni bir dönem başlıyor!
Akıllı sözleşme cüzdanları ve hesap soyutlaması, Ethereum cüzdan etkinliğini sabit EOA işlem kurallarından, bir UserOperation'ın simüle edildiği, fiyatlandırıldığı ve yalnızca daha sonra bir paketleyici tarafından zincir üstü bir işleme dönüştürüldüğü programlanabilir bir pipeline'a kaydırır.
ERC-4337, bunun için baskın uygulama katmanı tasarımıdır ve gerçek kilidi açan, yeni aracılar, API'ler ve hata modlarını anlamaktır; UX özelliklerini ezberlemek değil.
Ana Noktalar
- ERC-4337, normal işlem nesnesinin yerini, ayrı bir yerde bulunan bir UserOperation ile değiştirir.mempoolbir paketleyici bunu EntryPoint'in handleOps'u aracılığıyla zincire dahil edene kadar.
- Bundler'lar seçim ve yürütme yönlendiricileridir, pasif ileticiler değil, çünkü işlemleri simüle eder, spam riskini yönetir ve neyi paketleyeceğine karar verirler.
- ERC-7769, cüzdan↔bundler JSON-RPC yöntemlerini, eth_sendUserOperation ve eth_getUserOperationReceipt gibi, standart hale getirerek bundler taşınabilirliğini ve daha iyi makbuz takibini sağlar.
- Hesap soyutlamasıyeni DoS ve hesaplama maliyeti yüzeyleri oluşturur, bu nedenle doğrulama kuralları, itibar sistemleri ve debug_* uç noktalarını engelleme gibi üretim sertleştirmeleri güvenlik modelinin bir parçası haline gelir.
Akıllı sözleşme cüzdanları, EOA'lardan nasıl farklıdır?
İki farklı “hesap türü” bir Ethereum ekranında görünür: doğrudan bir işlemi imzalayan bir eoa ve yalnızca kod çalıştırıldığında bir şey yapan bir sözleşme hesabı. Bir akıllı sözleşme cüzdanı bu sözleşme hesabını birincil cüzdan yapar, böylece imza kontrolleri, nonce kuralları ve yürütme mantığı programlanabilir hale gelir.
Bu, hesap soyutlamasının özüdür ve kripto cüzdan türlerinin daha geniş haritasının içinde yer alır: “cüzdan” artık sadece bir anahtar çifti ve bir nonce sayacı değildir.
Açık sonuç, cüzdan özelliklerinin protokolün eoa kurallarına katı bir şekilde kodlanmayı bırakmasıdır. Akıllı bir hesap, farklı imza şemalarını kabul edebilir, harcama politikalarını uygulayabilir veya eylemleri birden fazla koşulun arkasında kapatabilir çünkü doğrulama koddur. İşte bu noktada sosyal kurtarma ve tohum gerektirmeyen ve sosyal kurtarma cüzdanları gibi özellikler ortaya çıkar. Önemli detay, bu özelliklerin yürütme modelinin aşağısında olduğu, modelin kendisinde değil.
Ethereum'da, hesap soyutlamasına giden baskın yol ERC-4337'dir ve bu açıkça uygulama düzeyinde bir değişiklik olarak çerçevelenmiştir, konsensüs katmanı değişikliği değil. Bu çerçeve önemlidir çünkü yeni bir işlem tedarik zinciri önerir, protokolün yeniden yazılması yerine. “Cüzdan eylemi” artık “kamusal mempool'a yayınlanan bir işlem” ile eşanlamlı değildir. Bir dahil etme ajanı gerektiren bir niyet nesnesi haline gelir.
O dahil etme ajanı katmanı, çoğu açıklamanın tembel hale geldiği yerdir. Kullanışlı zihinsel model “ekstra adımlara sahip normal bir işlem” değildir. Kullanışlı model, kendi mempool'una, kendi yönlendiricilerine ve kendi operasyonel kısıtlamalarına sahip “paralel bir işlem pazarı”dır.
ERC-4337 kullanıcı işlem akışı
Bir UserOperation kendi başına zincire ulaşmaz. Bir paketleyici, onu zincir içi bir işleme dönüştürmenin değerli olduğuna karar verene kadar zincir dışı olarak yaşar. ERC-7769'un tanımları diziyi açık hale getirir: ERC-4337 akışlarında, kullanıcı işlemleri UserOperation nesneleriyle değiştirilir ve bir paketleyici bir veya daha fazla UserOperation'ı toplar ve bunları tek bir handleOps çağrısıyla EntryPoint sözleşmesine sunar.
O boru hattının temiz bir olay sırası vardır:
1. Cüzdan, kullanıcının ne yapmak istediğini ve ücretlerin nasıl karşılanacağını kodlayan bir UserOperation oluşturur. 2. UserOperation, kabul edilmeden önce doğrulayan ve simüle eden bir UserOperation mempool düğümüne gönderilir. 3. Bir paketleyici kabul edilen UserOperation'ları seçer, paketler ve EntryPoint.handleOps çağrısı yaparak tek bir zincir içi işlem gönderir. 4. EntryPoint işlemleri yürütür ve zincir, paket için normal bir işlem makbuzu ve her UserOperation için sonuçlar üretir.
Paralel pazar tezi adım 3'te ortaya çıkar. Dahil olma ve fiyatlandırma artık yalnızca kullanıcının maxFeePerGas belirleme ve bekleme sorunu değildir. Paketleyici, hesaplama maliyetini ve seçim riskini üstlenir. Bu nedenle bazı geliştiriciler, ERC-4337'nin ana değerinin kullanıcı işlemleri için merkeziyetsiz bir ücret pazarı olduğunu savunur.akıllı sözleşmecüzdanları, sadece daha güzel bir kullanıcı deneyimi değil.
Bu aynı zamanda 'hesap soyutlaması açıklandı' ifadesinin yanlış gittiği yerdir. Kullanıcının imzaladığı nesnenin bir işlem haline gelmesi garanti edilmez. Kullanıcı her şeyi doğru yapabilir ve yine de paketleyiciler onu almazsa, simülasyon başarısız olursa veya işlem süresi dolarsa dahil edilmez.
Doğru kullanıcı deneyimi tutumu, UserOperation hash'ini dahil olana kadar birincil izleme aracı olarak ele almak, ardından duruma göre paket işlem hash'ine eşlemek olmalıdır.
Cüzdan ile paketleyici API'leri ve araçları
ERC-4337, cüzdanların paketleyicilerle standart bir şekilde iletişim kurabildiği zaman ölçeklenebilir hale gelir. ERC-7769'un eklediği budur: UserOperations için normal Ethereum işlem gönderimi ve makbuz sorgulamasının ergonomisini yansıtan bir JSON-RPC yüzeyi.
ERC-7769'un tanımladığı temel yöntemler, günlük entegrasyon kararlarını değiştirenlerdir:
1. eth_sendUserOperation, bir UserOperation'ı UserOperation mempool'una gönderir. İstemci bunu doğrular ve simüle eder ve yalnızca simülasyonu geçerse ve havuza kabul edilirse bir userOpHash döndürmelidir. 2. eth_estimateUserOperationGas, tahmin edergazUserOperation için alanlar, tahmin amaçları için imza göz ardı edilerek. 3.
eth_getUserOperationByHash, bir cüzdanın bir işlemin beklemede, dahil edilmiş veya bilinmeyen olup olmadığını sorgulamasına olanak tanır ve mevcut olduğunda blockNumber ve transactionHash gibi dahil olma meta verilerini döndürür. 4. eth_getUserOperationReceipt, dahil edildikten sonra her işlem için bir makbuz döndürür; bu makbuz, actualGasCost, actualGasUsed ve bir başarı bayrağını içerirken, ayrıca paketin TransactionReceipt'ini de döndürür. 5.
eth_supportedEntryPoints, cüzdana bundler'ın desteklediği EntryPoint adreslerini bildirir; bu, bir cüzdan arka ucunun yapması gereken ilk taşınabilirlik kontrolüdür.
Bu sessiz altyapı hikayesidir: standartlaştırma, rekabetçi bir bundler pazarının mümkün olmasını sağlar. Eğer bir cüzdan ERC-7769 ile konuşuyorsa, tüm gönderim ve izleme mantığını yeniden yazmadan bundler arka uçlarını değiştirebilir. Bu damerkeziyetsizlikslogan ile değil, arayüz ile.
ERC-7769 ayrıca test ve üretim arasında kesin bir ayrım yapar. debug_ tanımlar.geliştirme ve uyumluluk testleri için yöntemler ve bu hata ayıklama_ belirlerJSON-RPC yöntemleri üretim sunucularında engellenmelidir. Bu bir etik meselesi değildir. Kamuya açık AA altyapısını işleten herkes için güvenlik modelinin bir parçasıdır.
ERC-7769 ayrıca açıkça belirtmektedireip 7702aktif olduğu ağlarda UserOperation nesnesinde bir eip7702Auth demeti aracılığıyla destek. Sağlanan kaynaklar, eip 7702'nin nihai kapsamını veya ağlar arasındaki etkinlik durumunu kesin olarak belirlemiyor, ancak ERC-7769'daki arayüz çalışması, cüzdan↔bundler borulamasının bu yönü karşılayacak şekilde tasarlandığını gösteriyor.
Mempool güvenliği, simülasyon ve DoS riskleri
Simülasyon, hesap soyutlamasının bir eşleştirme motoru çalıştırmak gibi hissettiren maliyet merkezidir, pasif bir RPC kutusu yerine. ERC-7769 bu konuda açıktır: kamu üretim ERC-4337 düğümünü işletmek hesaplama açısından yoğun olup bir DoS hedefi olabilir. Bu, düğümlerin işlemleri kabul etmeden önce doğrulaması ve simüle etmesi gereken ayrı bir UserOperation mempool'a sahip olmanın bedelidir.
DoS yüzeyi yapısaldır. Kötü niyetli bir aktör, göndermesi ucuz ancak simüle etmesi pahalı olan işlemler sunabilir, bundler'ları ve mempool düğümlerini hesaplama harcamaya zorlayabilir. ERC-7769, kötü niyetli şekilde oluşturulmuş UserOperations'ı kabul etmelerini önlemek ve katılımcı itibarını izlemek için tasarlanmış ERC-7562 doğrulama kuralları ve itibar mekanizmaları aracılığıyla hafifletmelere işaret ediyor.
Aynı belgenin üretimde debug_*'ı engelleme ısrarı, çünkü debug uç noktaları, testlerde yararlı ve açık internette tehlikeli olan durum sıfırlama ve zorunlu birleştirme davranışlarını açığa çıkarabilir.
ERC-5189, mempool sağlığının zor kısım olduğu için var ve sorunu farklı bir açıdan ele alıyor. Bir Operation yapısı ve "endorser" sözleşmeleri aracılığıyla hesap soyutlaması öneriyor, mevcut akıllı sözleşme cüzdanlarıyla uyumlu kalırken yeni konsensüs katmanı işlem türlerinden açıkça kaçınıyor. Endorser'ın görevi, bundler'ların "iyi işlemleri" "kötü işlemlerden" ayırmalarına yardımcı olmaktır.
ERC-5189'daki ana mekanizma, endorser'ın hazır olma ve bağımlılık bilgilerini geri döndürmesidir. Bu bağımlılık sinyali, bundler'lara hangi durum değişikliklerinin yeniden değerlendirmeyi tetiklemesi gerektiğini söyler; bu, mempool'un artık geçerli olmayan işlemlerle çürümemesini sağlamanın bir yoludur.
ERC-5189 hala temel kısıtlamadan kaçamaz: bundler'lar, dahil edilmeden önce off-chain yürütmeyi simüle etmelidir ve mempool operatörleri kötü davranan endorser'ları yasaklayabilir. Tasarım, aynı açıklık-karşısında-spam-direnci ticaretini müzakere ediyor, sadece farklı borulama ile.
Hesap soyutlaması için rekabetçi yollar
Ethereum geliştiricileri, akıllı sözleşme cüzdanlarının faydalı olup olmadığını tartışmıyor. Uzun vadeli varsayılan hangi yolun olacağı ve hangi ticaretlerin kabul edilebilir olduğunu tartışıyorlar.
Görünür bir çatlak, EIP-3074 ile ERC-4337 arasındadır; 3074'ün daha hızlı kullanıcı deneyimi iyileştirmeleri sunabileceği, 4337 grubunun ise sansür direnci gibi özellikleri ve kritik olarak kullanıcı işlemleri için merkeziyetsiz ücret pazarını vurguladığı yönünde argümanlar var.
Bu tartışma, inşaatçılar için önemlidir çünkü "cüzdan altyapısı"nın ne anlama geldiğini değiştirir. ERC-4337, karmaşıklığı paralel bir işlem pazarına itiyor: UserOperations, bundlerlar, EntryPoint, simülasyon kuralları, itibar sistemleri ve şimdi ERC-7769 aracılığıyla standartlaştırılmış RPC.
Bu yığın, sert bir protokol çatallaşması olmadan evrim geçirebilir, ancak aynı zamanda kullanıcı deneyiminin bir parçası haline gelen yeni aracılar da yaratır.
Birden fazla önerinin var olmasının diğer nedeni, "hesap soyutlaması"nın bir çatı terim olmasıdır. Bazı öneriler, niyet sunumu ve dahil etme pazarlarına odaklanırken, diğerleri her cüzdanın güncellenmesini zorunlu kılmadan sözleşme hesaplarını EOA'lar gibi hissettirmek için yollar arar. ERC-5189'un uyumluluk hedefi açıktır: her cüzdan örneğinin manuel olarak güncellenmesini gerektirmeden mevcut akıllı sözleşme cüzdan uygulamalarını desteklemek.
Kaynaklar ayrıca eip 7702'yi, Mayıs 2024'te Vitalik Buterin ve diğerleri tarafından tanıtılan daha yeni bir yön olarak işaret ediyor ve uygulama düzeyindeki yaklaşımın sınırlamalarını ele alıyormuş gibi çerçeveleniyor. Sağlanan materyal, eip 7702 spesifikasyon detaylarını içermediği için, tek sorumlu çıkarım kapsam farkındalığıdır: ekosistem, ERC-7769'un isteğe bağlı eip7702Auth demeti gibi değişimi öngören arayüzler inşa ediyor.
Akıllı sözleşme cüzdanları ve hesap soyutlaması hakkında yaygın yanlış anlamalar
"Hesap soyutlaması, Ethereum hesaplarını değiştiren bir protokol güncellemesidir." ERC-4337, uygulama düzeyinde çerçevelenmiştir, bu da Ethereum protokolünün kendisinin hesapları nasıl gördüğünü değiştirmediği anlamına gelir. Protokol hala EOA'ları ve sözleşme hesaplarını görmektedir. Soyutlama, sözleşmeler ve çevrimdışı altyapı ile inşa edilmiştir.
"Bundlerlar sadece ileticilerdir." Bir iletici bir işlemi iletir. Bir bundler, doğrulama ve simülasyon çalıştırır, hangi UserOperations'ı kabul edeceğine karar verir ve bunları EntryPoint'e bir handleOps çağrısına paketler. Bu seçim rolü, bundlerların DoS maruziyeti miras almasının ve itibar ile filtreleme mekanizmalarının standartlarda yer almasının nedenidir.
"AA esasen sosyal kurtarma ve oturum anahtarları ile ilgilidir." Bunlar, doğrulama programlanabilir hale geldiğinde daha kolay hale gelen cüzdan özellikleridir ve sosyal kurtarma yaygın bir örnektir. Pazar yapısını değiştiren ayırt edici faktör, UserOperation + bundler + EntryPoint boru hattı ve bunun ima ettiği ayrı mempool'dur.
"İzleme, normal tx hash'leri gibi çalışır." ERC-7769, UserOperations için açıkça hash ve makbuz yöntemleri ekler çünkü tx-hash anlamsallığı, bir bundler işlemi dahil etmediği sürece geçerli değildir. Sunumu nihai olarak gören cüzdanlar, bozuk bekleyen durumlar ve kafa karıştırıcı hata yönetimi ile sonuçlanır.
Sonuç
Takımların, ERC-4337'yi süslü bir normal işlem gibi ele aldıkları için yük altında parçalanan "akıllı hesap UX" gönderimlerini izledim. Pahalı hata, dahil etme katmanını görmezden gelmektir. Bir UserOperation, ayrı bir mekanda bir sipariştir ve yalnızca bir bundler bunu EntryPoint.handleOps aracılığıyla yönlendirmeyi seçtiğinde bir zincir işlemi haline gelir.
Eğer zamanı kurtaran bir duruş varsa, o da altyapı etrafında inşa etmektir: ERC-7769 yöntemleri için gönderim ve alım takibi, açık bekleme durumları ve eth_supportedEntryPoints aracılığıyla paketleyici taşınabilirliği. Altyapı tarafında, insanların kamu sunucularında debug_* uç noktalarını açtığını ve istismar edildiklerinde şaşırdıklarını gördüm. ERC-7769 bunun bir nedeni var. Hesap soyutlaması, paralel bir işlem pazarını temsil eder ve pazarlar düşmanca akışı çeker.
Kaynaklar
Sıkça Sorulan Sorular
EOA ile akıllı sözleşme cüzdanı arasındaki fark nedir?
Bir eoa, standart bir Ethereum işlemini doğrudan imzalar ve yayınlar, sabit doğrulama kuralları ile. Akıllı sözleşme cüzdanı ise bir sözleşme hesabıdır, bu nedenle doğrulama ve yürütme kuralları programlanabilir, bu da hesap soyutlamasının temelidir.
ERC-4337 hesap soyutlaması gerçekten bir işlemi nasıl zincire alır?
Cüzdan, ayrı bir mempool'a bir UserOperation gönderir, burada doğrulanır ve simüle edilir. Bir bundler daha sonra UserOperations'ı seçer ve EntryPoint sözleşmesine tek bir zincir içi işlem gönderir, bu da handleOps aracılığıyla yürütülür.
ERC-4337'de bir bundler ne yapar?
Bir bundler, UserOperations'ı toplar, doğrulama ve simülasyon yapar ve bir pakete ne koyacağına karar verir. Ardından, hesaplama maliyetini ve seçim riskini üstlenerek, paketi tek bir handleOps çağrısı ile EntryPoint'e gönderir.
Cüzdanlar UserOperations'ı göndermek ve takip etmek için hangi JSON-RPC yöntemlerini kullanır?
ERC-7769, cüzdanların işlemleri göndermesine, gaz tahmin etmesine ve bir userOpHash kullanarak dahil olmayı takip etmesine olanak tanıyan eth_sendUserOperation, eth_estimateUserOperationGas, eth_getUserOperationByHash, eth_getUserOperationReceipt ve eth_supportedEntryPoints gibi yöntemleri tanımlar.
EIP-7702 nedir ve hesap soyutlaması ile nasıl ilişkilidir?
Verilen kaynaklar, eip 7702'yi, uygulama düzeyindeki AA'nın sınırlamalarını ele almak için Mayıs 2024'te Vitalik Buterin ve diğerleri tarafından tanıtılan daha yeni bir yön olarak tanımlamaktadır. ERC-7769, bir UserOperation'ın bir eip7702Auth demeti içermesine izin vererek eip 7702'nin etkinleştirileceği ağları öngörmektedir, ancak buradaki kaynaklar nihai tasarım veya dağıtım durumunu belirtmemektedir.