Account abstraction (ERC-4337) nedir?

·7 dk okuma·Yazar: SSP Editorial Team
Bir bundler üzerinden akan UserOperation ile akıllı sözleşme cüzdan diyagramı

Son birkaç yıldır Ethereum çevresinde biraz vakit geçirdiyseniz, muhtemelen "account abstraction" tabirini duymuşsunuzdur — çoğu zaman ERC-4337 kod adıyla birlikte. Kulağa akademik gelse de arkasındaki fikir gerçekten pratik: Ethereum cüzdanınız, tek bir özel anahtar ve "ya kabul et ya da bırak" tarzı bir arayüz değil, özelleştirebileceğiniz küçük bir yazılım parçası gibi davranmalı.

Bu yazıda ERC-4337'nin aslında neyi değiştirdiğini, beraberinde getirdiği dört yeni terimi (UserOperation, EntryPoint, bundler, paymaster), pratikte neleri mümkün kıldığını ve SSP'nin kendi çoklu imza yaklaşımıyla nasıl ilişkilendiğini anlatacağız. Önceden akıllı sözleşme bilgisine ihtiyacınız yok — sadece kripto cüzdanların kaputun altında nasıl çalıştığına duyduğunuz merak yeterli.

ERC-4337'nin çözmeye giriştiği problem

Account abstraction'dan önce, her Ethereum cüzdanı externally-owned account denilen şeydi — yani bir EOA. Bir EOA son derece basittir: tek bir özel anahtar tek bir adresi kontrol eder ve o adresin yaptığı her eylem tam olarak o anahtarla imzalanmak zorundadır.

Bu basitliğin keskin kenarları var:

  • Kurtarma yok. Anahtarı kaybedin, parayı kaybedin. "Şifremi unuttum" bağlantısı yok, sizin için kefil olabilecek güvenilir bir kişi yok, zaman kilitli bir kilit açma yok. Anahtar, hesabın ta kendisidir.
  • Batching yok. Bir token'ı onaylayıp sonra takas etmek mi istiyorsunuz? Bu iki ayrı işlem, iki ayrı imza, iki ayrı gas ödemesi demek. "Bunları beraber yap ya da hiç yapma" diyemiyorsunuz.
  • Native çoklu imza yok. Birden fazla imzalayıcı istiyorsanız, bir sözleşme dağıtmanız (örneğin eski adıyla Gnosis Safe olan Safe gibi) ve sonra bir EOA'nın bu sözleşmeye işlem göndermesini sağlamanız gerekiyordu. Sözleşme çoklu imzalıydı, ama dünyayla etkileşen hesap altta hâlâ tek anahtarlı bir EOA idi. Kullanıcı deneyimi sıradan bir cüzdana göre her zaman ikinci sınıf kalıyordu.
  • Gas her zaman ETH ile ödenir, her zaman gönderen tarafından ödenir. Hiçbir dApp sizin gas'ınızı ödeyemez. USDC ile gas ödeme yok. İstisna yok.

Geliştiriciler yıllardır bu sınırların etrafından dolaşmak için karmaşık sözleşme desenleri kullanıyordu. ERC-4337 sonunda onlara standartlaştırılmış bir çıkış yolu verdi — üstelik Ethereum'un temel protokolünde herhangi bir değişiklik gerektirmeden.

ERC-4337 neleri getiriyor

ERC-4337, Ethereum'un protokol seviyesinde nasıl çalıştığını değiştirmiyor — işte zekice numarası bu. Bunun yerine, birlikte tamamen kullanıcı alanında "smart-contract cüzdanları birinci sınıf vatandaşlar olarak" simüle eden dört yeni rol tanımlıyor. Bu dört kelimeyi öğrendikten sonra tüm standart yerine oturuyor.

UserOperation. Bu, bir AA cüzdanı için ham işlemin yerini alan yeni "imzalanmış niyet" nesnesidir. Bir EOA, kendi tek anahtarıyla imzalanmış bir işlem üretirken, bir AA cüzdanı bir UserOperation üretir — "bu hesap şunu yapmak istiyor, yetki burada, ödeme şöyle yapılacak" diyen yapılandırılmış bir istek. Bir UserOperation şöyle diyebilir: "Alice'e 100 USDC gönder, şu iki cihazdan gelen imzalarla yetkilendirildi, gas'ı dApp karşılayacak."

EntryPoint sözleşmesi. Ethereum üzerinde dağıtılmış tek, kanonik, denetlenmiş bir akıllı sözleşme. Bu sözleşme UserOperation'ları nasıl alacağını, geldikleri AA cüzdanının kurallarına göre nasıl doğrulayacağını ve ortaya çıkan eylemleri nasıl yürüteceğini bilir. Her AA cüzdanı aynı EntryPoint ile konuşur — standardı standart yapan da budur.

Bundler. Zincir dışı (off-chain) bir aktördür (bunu özelleşmiş bir tür relayer olarak düşünün); halka açık bir mempool'da UserOperation'ları dinler, birkaçını bir araya getirir ve bu paketi tek bir Ethereum işlemi olarak EntryPoint'e gönderir. Bundler ağa gerçek gas'ı öder ve paketlediği UserOperation'lar tarafından geri ödenir.

Paymaster. Bir kullanıcı adına gas ödemeye gönüllü olabilen opsiyonel bir sözleşmedir. "dApp gas'ını öder" ya da "gas'ı ETH yerine USDC ile öde" gibi şeyleri mümkün kılan şey paymaster'dır. Paymaster yoksa kullanıcının AA cüzdanı kendi gas'ını öder; varsa paymaster devreye girer.

Tüm sözcük dağarcığı bu kadar. Geri kalan her şey süslemeden ibaret.

Account abstraction pratikte neyi mümkün kılıyor

Yukarıdaki dört parça, neyi açtıklarını görene kadar soyut görünür:

  • Gas sponsorluğu. Bir dApp, yeni kullanıcılar için gas ödeyebilir; böylece herhangi bir şey yapmadan önce ETH edinmek zorunda kalmazlar. Bu, onboarding için çok büyük bir şey — yeni kullanıcılar önce fiat-ETH rampasından geçmeden kayıt olabilir, bir NFT mint edebilir ya da ilk işlemini yapabilir. Argent, Safe ve ZeroDev bugün sponsorluk akışlarını destekliyor.
  • Sosyal kurtarma. Cüzdanınızı, ana anahtarınızı kaybederseniz bir "guardian" (arkadaşlar, aile, kasada duran bir donanım cihazı) çoğunluğunun sizin adınıza anahtarı değiştirebileceği şekilde yapılandırabilirsiniz. Kurtarma mantığı cüzdan sözleşmenizde yaşar — paranızı tutan merkezi bir saklayıcı yok, ama tek bir cihaz arızalandığında da paranız kalıcı olarak kaybolmaz.
  • Session keys. Bir dApp, cüzdanınızdan tek bir uygulamaya ve belirli bir eylemler kümesine kapsamlı, birkaç saat geçerli sınırlı yetkili bir anahtar isteyebilir. Oturumu vermek için ana anahtarınızla bir kere imzalarsınız, ardından dApp sizden her tıklamada onay istemeden kendi kum havuzu içinde işlem yapabilir. Oyun stüdyoları bu kalıba bayılıyor.
  • Paketlenmiş eylemler. "Bu token'ı onayla VE takas et" tek bir imza, tek bir UserOperation, tek bir yürütmeye dönüşür. Herhangi bir adım başarısız olursa tüm paket geri alınır — artık tutarsız bir durumda takılıp kalan yarı tamamlanmış işlemler yok.
  • Özel imza şemaları. Passkeys, donanım enclave'ı ya da 2-of-3 eşik şeması kullanan bir cüzdan ister misiniz? Doğrulama mantığı cüzdan sözleşmesinde yaşar, dolayısıyla yalnızca EOA standardı olan secp256k1 ECDSA değil, istediğiniz kriptografiyi kullanabilirsiniz.

Bunun SSP'nin çoklu imza modeliyle ilişkisi

SSP Wallet, büyük ölçüde aynı hedeflere farklı bir yoldan ulaşır. SSP 2-of-2 BIP48 çoklu imza kullanır — iki bağımsız anahtar, iki bağımsız cihazda ve herhangi bir işlemi imzalamak için her ikisi de gerekli. ERC-4337 ve BIP48 çoklu imza, ortak bir problemi farklı yollarla çözen mekanizmalardır: hiçbir tek cihaz tek başarısızlık noktası olmamalı.

Birkaç dürüst karşılaştırma:

  • Ortak noktaları. Her ikisi de klasik tek imzalı bir cüzdanın "tek anahtar, tek şans" arıza modunu ortadan kaldırır. Bir faktörü kaybedin, diğeriyle kurtarabilirsiniz. Bir faktör ele geçirilirse (dizüstüne bulaşan zararlı yazılım, kaybolan bir telefon) saldırgan tek başına parayı yine de hareket ettiremez.
  • Farklılıklar. BIP48, kökleri Bitcoin'e dayanan ve SSP'nin desteklediği zincirlerde — Bitcoin, Ethereum, Litecoin ve birkaçında daha — her zincirin native çoklu imza ilkelerini kullanarak çalışan bir çoklu imza standardıdır. ERC-4337 yalnızca Ethereum'a özgüdür ve akıllı sözleşme katmanında yaşar; bu nedenle BIP48'in native olarak sahip olmadığı yeteneklerle (gas sponsorluğu, session keys) gelir — ama yalnızca Ethereum kapsamı ve sözleşme yürütme yükü pahasına.
  • SSP bugün nerede? SSP, BIP48 modelinin etrafında inşa edilmiştir. ERC-4337 cüzdanları ile SSP tarzı çoklu imza düşman değildir — birbirini tamamlayan araçlardır — ve prensipte bir BIP48 çoklu imza anahtarı bir AA cüzdanı içinde imzalayıcı olarak kullanılabilir. Bu şu an SSP'nin ana yolu değil; henüz teslim etmediğimiz entegrasyonlar vaat etmek yerine bugünkü ürün konusunda net olmayı tercih ediyoruz.

"AA cüzdanı mı yoksa donanım çoklu imza mı kullansam?" diye düşünüyorsanız, dürüst cevap şudur: bu ikisi örtüşen problemleri farklı ödünlerle çözer — ve doğru cevap, hangi zincirleri önemsediğinize bağlıdır.

Dürüst ödünleşmeler

Account abstraction gerçek anlamda bir adım ileri, ama bedava değil ve size aksini söyleyen birinin size satmak istediği bir şey vardır.

  • Gas maliyetleri daha yüksek. Her UserOperation, EntryPoint'te ve sizin cüzdan sözleşmenizde sözleşme kodunu yürütür. Bu, bir EOA tarafından imzalanmış bir işleme göre kesin olarak daha fazla hesaplama, dolayısıyla daha fazla gas demektir. Bundling bunun bir kısmını amorti eder, ama eylem başına genellikle bir EOA'nın ödeyeceğinden daha fazla ödersiniz.
  • Kurtarma, kurtarma sözleşmesi kadar iyidir. Sosyal kurtarma ve guardian şemaları güçlü özelliklerdir — aynı zamanda yeni saldırı yüzeyidir. Kurtarma mantığındaki bir hata ya da çok küçük olduğu ortaya çıkan bir guardian kümesi, bir EOA anahtarını kaybetmek kadar yıkıcı olabilir. Denetlenmiş cüzdan uygulamalarına bağlı kalın.
  • Paymaster'lar bir güven ilişkisi yaratır. "dApp gas'ı öder" kulağa harika geliyor, ama bu paymaster'ın UserOperation'larınızı gördüğü ve prensipte belirli işlemlere sponsorluk etmeyi reddedebileceği anlamına geliyor. Bu, "kendi gas'ınızı kendiniz ödersiniz, kimse sizi engelleyemez" modelinden farklı bir güven modelidir.
  • Ölçekte daha az savaş tecrübesi. EOA'lar on yılı aşkın süredir trilyonlarca doları korudu. ERC-4337 Mart 2023'te yayına girdi ve hâlâ olgunlaşıyor. Yüksek değerli soğuk saklama için muhafazakâr cevap (donanım cüzdanı, çoklu imza, denetlenmiş sözleşmeler) hâlâ daha uzun bir sicile sahip.

Daha derine inmek

Akıllı sözleşmeler olmadan çok anahtarlı güvenliğin nasıl çalıştığına dair SSP tarafındaki resim için 2-of-2 çoklu imza nedir? yazısını okuyun.

Kanonik teknik şartname için — UserOperation struct'ının tam hali, EntryPoint arayüzü ve her tasarım kararının ardındaki gerekçeler dahil — birincil kaynak EIP'in kendisidir: https://eips.ethereum.org/EIPS/eip-4337.

Bu makaleyi paylaş