EIP-7702 Derinlik Analizi: Ethereum Pectra yükseltmesi EOA ile CA arasındaki sınırları belirsizleştirecek

Ethereum Pectra Yükseltmesi: EIP-7702 Derinlik Analizi

Giriş

Ethereum, Pectra yükseltmesini karşılamaya hazırlanıyor. Bu, birçok önemli iyileştirme önerisi getirecek olan önemli bir güncellemedir. Bunlar arasında, EIP-7702, Ethereum dış hesap (EOA) üzerinde devrim niteliğinde bir dönüşüm gerçekleştirdi. Bu öneri, EOA ile sözleşme hesapları CA arasındaki sınırları belirsizleştirerek, EIP-4337'den sonra yerel hesap soyutlaması yönünde önemli bir adım atarak Ethereum ekosistemine yeni bir etkileşim modeli kazandırdı.

Pectra, test ağında dağıtımını tamamladı ve yakında ana ağa geçmesi bekleniyor. Bu makalede EIP-7702'nin uygulama mekanizmasını derinlemesine analiz edecek, potansiyel fırsatları ve zorlukları tartışacak ve farklı katılımcılar için pratik bir kullanım kılavuzu sunacağız.

Protokol Analizi

Genel Bakış

EIP-7702, yeni bir işlem türünü tanıtarak EOA'nın bir akıllı sözleşme adresi belirlemesine ve ona kod ayarlamasına olanak tanır. Bu, EOA'nın akıllı sözleşmeler gibi kod çalıştırmasını sağlarken, işlem başlatma yeteneğini korur. Bu özellik, EOA'ya programlanabilirlik ve bileşen uyumluluğu kazandırarak, kullanıcıların EOA içinde sosyal kurtarma, yetki kontrolü, çoklu imza yönetimi, zk doğrulama, abonelik ödemeleri, işlem sponsorluğu ve işlem toplu işleme gibi işlevler gerçekleştirmesine olanak tanır. Dikkate değer olan, EIP-7702'nin EIP-4337 ile gerçekleştirilen akıllı sözleşme cüzdanlarıyla mükemmel uyumlu olmasıdır; her iki tarafın sorunsuz entegrasyonu, yeni işlevlerin geliştirilmesi ve uygulanması sürecini büyük ölçüde basitleştirmiştir.

EIP-7702, SET_CODE_TX_TYPE (0x04) işlem türünü tanıtan bir işlem getirmiştir, veri yapısı tanımı aşağıdaki gibidir:

rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, destination, value, data, access_list, authorization_list, signature_y_parity, signature_r, signature_s])

authorization_list alanı şu şekilde tanımlanmıştır:

authorization_list = [[chain_id, address, nonce, y_parity, r, s], ...]

Yeni işlem yapısında, authorization_list alanı dışında kalan her şey EIP-4844 ile aynı anlamı izler. Bu alan liste türündedir ve birden fazla yetkilendirme girişi içerebilir, her yetkilendirme girişi içinde:

  • chain_id, bu yetkilendirme delegasyonunun geçerli olduğu zinciri belirtir.
  • adres, atamanın hedef adresini belirtir.
  • nonce, mevcut yetkilendirilmiş hesabın nonce'u ile eşleşmelidir.
  • y_parity, r, s yetkilendirilmiş hesabın yetkilendirilmiş imza verisidir.

Bir işlemdeki authorization_list alanı, (EOA) tarafından imzalanmış birden fazla farklı yetkilendirilmiş hesap girişi içerebilir, bu da işlem başlatıcısının yetkilendiren kişi ile farklı olabileceği ve yetkilendirenin gaz ücretini ödemesi için yetkilendirme işlemi gerçekleştirebileceği anlamına gelir.

gerçekleştirmek

Yetkilinin yetki verici verileri imzalamadan önce, chain_id, address, nonce değerlerini RLP kodlaması yapması gerekmektedir. Ardından kodlanmış veriler ile MAGIC sayısını kullanarak keccak256 hash işlemi gerçekleştirilir ve imzalanacak veri elde edilir. Son olarak, yetkilinin özel anahtarı ile hashlenmiş veri imzalanarak y_parity, r, s verileri elde edilir. MAGIC (0x05) alan ayırıcı olarak kullanılır; amacı, farklı türdeki imzaların sonuçlarının çakışmamasını sağlamaktır.

Dikkat edilmesi gereken, yetkilendiricinin yetkilendirdiği chain_id 0 olduğunda, yetkilendiricinin EIP-7702'yi destekleyen tüm EVM uyumlu zincirlerde ( yetkisini yeniden kullanmasına izin verdiğini, bunun için nonce'un da tam olarak ) ile eşleşmesi gerektiğidir.

Yetkili verileri imzaladıktan sonra, işlem başlatıcısı bunları authorization_list alanında imzalamak için bir araya getirir ve RPC aracılığıyla işlem yayını yapar. İşlem bir blokta yürütülmeden önce, Proposer işlemi ön kontrol yapar; bu aşamada to adresi zorunlu olarak kontrol edilir ve bu işlemin bir sözleşme oluşturma işlemi olmadığından emin olunur. Yani EIP-7702 türündeki işlemler gönderilirken, işlemin to adresi boş olamaz.

Aynı zamanda, bu tür işlemler authorization_list alanının en az bir yetkilendirme maddesi içermesini zorunlu kılar. Eğer birden fazla yetkilendirme maddesi aynı yetkilendiren kişi tarafından imzalanmışsa, nihayetinde yalnızca son yetkilendirme maddesi geçerli olacaktır.

Daha sonra, işlem yürütme sürecinde, düğüm önce işlem başlatıcısının nonce değerini artıracak, ardından authorization_list içindeki her bir yetkilendirme girişine applyAuthorization işlemi gerçekleştirecektir. applyAuthorization işleminde, düğüm önce yetkilendirenin nonce'unu kontrol edecek, ardından yetkilendirenin nonce'unu artıracaktır. Bu, eğer işlem başlatıcısı ve yetkilendiren aynı kullanıcı (EOA) ise, yetkilendirme işlemi imzalanırken nonce değerinin 1 artırılması gerektiği anlamına gelir.

Bir düğüm bir yetkilendirme maddesini uygularken herhangi bir hata ile karşılaşırsa, bu yetkilendirme maddesi atlanacak ve işlem başarısız olmayacak, diğer yetkilendirme maddeleri uygulamaya devam edecektir; böylece toplu yetkilendirme senaryolarında DoS riski oluşmayacaktır.

Yetkilendirilmiş uygulama tamamlandıktan sonra, yetkilendiren adresin code alanı 0xef0100 || address olarak ayarlanacaktır; burada 0xef0100 sabit bir tanımdır ve address yetkilendirilen hedef adresidir. EIP-3541'in kısıtlamaları nedeniyle, kullanıcıların 0xef baytlarıyla başlayan sözleşme kodunu normal yöntemlerle dağıtmaları mümkün değildir; bu, bu tür tanımların yalnızca SET_CODE_TX_TYPE (0x04) türündeki işlemlerle dağıtılabileceğini garanti eder.

Yetki tamamlandıktan sonra, yetkilendiren kişi yetkisini kaldırmak isterse, sadece yetkilendirilmiş hedef adresi 0 adresi olarak ayarlaması yeterlidir.

EIP-7702 ile tanıtılan yeni işlem türü, yetkilendiren ( EOA )'nin hem akıllı sözleşmeler gibi kod çalıştırabilmesini hem de işlem başlatma yeteneğini korumasını sağlar. EIP-4337 ile karşılaştırıldığında, bu kullanıcıya yerel hesap soyutlama ( Native AA ) deneyimine daha yakın bir deneyim sunarak, kullanıcıların kullanım eşiğini büyük ölçüde düşürmektedir.

En İyi Uygulamalar

EIP-7702'nin Ethereum ekosistemine yeni bir canlılık kazandırmasına rağmen, yeni uygulama senaryoları da yeni riskler getirecektir. Aşağıda, ekosistem katılımcılarının uygulama sürecinde dikkat etmesi gereken noktalar:

özel anahtar depolama

EOA'nın, akıllı sözleşmenin yerleşik sosyal kurtarma gibi yöntemlerle, özel anahtar kaybından kaynaklanan finansal kayıpları çözebilmesine rağmen, EOA özel anahtarının ifşa edilme riskini ortadan kaldıramaz. Şunu belirtmek gerekir ki, yetkilendirme gerçekleştirildikten sonra, EOA özel anahtarı hala hesap üzerinde en yüksek kontrol yetkisine sahiptir; özel anahtarı elinde bulunduran, hesap içindeki varlıkları istedikleri gibi kullanabilir. Kullanıcılar veya cüzdan hizmet sağlayıcıları, EOA için yetkilendirme işlemi gerçekleştirdikten sonra, yerel olarak depolanan özel anahtarı tamamen silseler bile, özel anahtarın ifşa olma riskini tamamen ortadan kaldıramazlar, özellikle de tedarik zinciri saldırısı riski bulunan senaryolar söz konusu olduğunda.

Kullanıcılar için, yetkilendirilmiş hesaplarını kullanırken, kullanıcıların hala özel anahtar korumasını öncelikli hale getirmeleri ve her zaman dikkat etmeleri gerekir: Not your keys, not your coins.

Çoklu zincir tekrar

Kullanıcı, yetkilendirme sözleşmesi imzalarken, yetkilendirmenin geçerli olacağı zinciri seçmek için chainId kullanabilir, elbette kullanıcı ayrıca 0 olan chainId'yi kullanarak yetkilendirme seçeneğini de tercih edebilir. Bu, yetkilendirmenin çoklu zincirlerde tekrar geçerli olmasını sağlar, böylece kullanıcı tek bir imza ile çoklu zincirlerde yetkilendirme yapabilir. Ancak dikkat edilmesi gereken bir husus, çoklu zincirlerdeki aynı sözleşme adresinde farklı uygulama kodlarının da bulunabileceğidir.

Cüzdan hizmet sağlayıcıları için, kullanıcılar vekalet verirken, vekaletin geçerli olduğu zincirin mevcut bağlantılı ağ ile uyumlu olup olmadığını kontrol etmeli ve kullanıcılara chainId'si 0 olan vekaletin getirebileceği riskleri hatırlatmalıdır.

Kullanıcılar ayrıca farklı zincirlerdeki aynı sözleşme adreslerinin sözleşme kodlarının her zaman aynı olmadığını dikkate almalıdır; öncelikle atanan hedefi anlamalıdır.

Başlatılamıyor

Mevcut ana akım akıllı sözleşme cüzdanları genellikle proxy modelini benimsemektedir. Cüzdan proxy'si konuşlandırıldığında, DELEGateCALL çağrısı ile sözleşmenin başlatma fonksiyonunu gerçekleştirecek şekilde yapılandırılır, böylece cüzdanın başlatılması ile proxy cüzdanın konuşlandırılması atomik bir işlem haline gelir ve erken başlatılma sorunundan kaçınılır. Ancak kullanıcılar EIP-7702 ile yetki devri yaptıklarında, yalnızca adreslerinin code alanını güncelleyebilirler, yetki devri adresi aracılığıyla başlatma işlemi gerçekleştiremezler. Bu durum, EIP-7702'nin yaygın ERC-1967 proxy sözleşmeleri gibi, konuşlandırma işlemindeki işlemde başlatma fonksiyonunu çağırarak cüzdan başlatmasını imkansız hale getirir.

Geliştiriciler için, EIP-7702'yi mevcut EIP-4337 cüzdanlarıyla birleştirirken, cüzdanın başlatma işlemi sırasında yetki kontrolü yapılmasına dikkat edilmelidir. Örneğin, ecrecover ile imzalı adresi geri getirerek yetki kontrolü yapılması, cüzdanın başlatma işleminin kaçırılma riskini önlemek için önemlidir. (

) Depolama Yönetimi

Kullanıcılar EIP-7702 yetkilendirme işlevini kullanırken, işlev gereksinimlerinin değişmesi, cüzdan güncellemeleri gibi nedenlerle farklı bir sözleşme adresine yeniden yetkilendirme yapma ihtiyacı duyabilirler. Ancak farklı sözleşmelerin depolama yapıları arasında farklar olabilir### örneğin, farklı sözleşmelerin slot0 yuvası farklı türde verileri temsil edebilir( yeniden yetkilendirme durumunda, yeni sözleşmenin eski sözleşmenin verilerini beklenmedik bir şekilde yeniden kullanmasına neden olabilecek bir durum ortaya çıkabilir, bu da hesap kilitlenmesi, fon kaybı gibi olumsuz sonuçlara yol açabilir.

Kullanıcılar için yeniden delegasyon durumunu dikkatli bir şekilde ele almak önemlidir.

Geliştiriciler için, geliştirme sürecinde ERC-7201 tarafından önerilen Namespace Formula'sına uymak, değişkenleri belirli bağımsız depolama konumlarına atamak, depolama çakışması riskini azaltmak adına önemlidir. Ayrıca ERC-7779 )draft(, EIP-7702 için yeniden yetkilendirme standart sürecini sunmaktadır: Bu, depolama çakışmasını önlemek için ERC-7201 kullanmak, yeniden yetkilendirmeden önce depolama uyumluluğunu doğrulamak ve eski yetkilendirmeye ait arayüzleri çağırarak eski verileri temizlemek için gereklidir.

) sahte yükleme

Kullanıcılar delegasyon yaptıktan sonra, EOA aynı zamanda akıllı sözleşme olarak kullanılabilecektir, bu nedenle borsa akıllı sözleşme ile para yatırma durumuyla karşılaşabilir.

Borsa, her bir para yatırma işleminin durumunu trace ile kontrol etmeli ve akıllı sözleşme sahte para yatırma riskini önlemelidir.

Hesap Dönüşümü

EIP-7702 delegasyonu uygulandıktan sonra, kullanıcıların hesap türleri EOA ile SC arasında serbestçe dönüşebilir, bu da hesapların hem işlem başlatmasını hem de çağrılmasını sağlar. Bu, hesabın kendisini çağırdığında ve dışarıya çağrı yaptığında, msg.sender'ın da tx.origin olacağı anlamına gelir; bu durum, yalnızca EOA'nın projeye katıldığı güvenlik varsayımlarını ihlal eder.

Sözleşme geliştiricileri için, tx.origin'in her zaman EOA olduğu varsayımı geçerli olmayacaktır. Aynı şekilde, msg.sender == tx.origin kontrolü ile geri çağırma saldırılarına karşı savunma da etkisiz hale gelecektir.

Geliştiriciler geliştirme sürecinde gelecekteki katılımcıların akıllı sözleşme olabileceğini varsaymalıdır.

Sözleşme uyumluluğu

Mevcut ERC-721 ve ERC-777 tokenleri, sözleşmelere transfer yaparken Hook işlevine sahiptir; bu, alıcının tokenleri başarılı bir şekilde almak için ilgili geri çağırma işlevini uygulaması gerektiği anlamına gelir.

Geliştiriciler için, kullanıcıların devrettiği hedef sözleşmelerin uygun geri çağırma fonksiyonlarını uygulaması beklenir, böylece ana akım tokenlerle uyumlu olabilmesi sağlanır.

Balık tutma kontrolü

EIP-7702 delegasyonu uygulandıktan sonra, kullanıcı hesaplarındaki varlıklar akıllı sözleşmeler tarafından kontrol edilebilir. Kullanıcı hesabını kötü niyetli bir sözleşmeye devrettiğinde, saldırganların fonları çalması son derece kolay hale gelecektir.

Cüzdan hizmet sağlayıcıları için, mümkün olan en kısa sürede EIP-7702 türündeki işlemleri desteklemek son derece önemlidir ve kullanıcılar temsilci imza işlemi yaptıklarında, kullanıcıların olası bir phishing saldırısına maruz kalma riskini azaltmak için temsil edilen hedef sözleşmeyi vurgulayarak göstermelidir.

Ayrıca, hesap yetkilendirmesi için hedef sözleşmelerin daha derinlemesine otomatik analizini ### açık kaynak kontrolü, yetki kontrolü vb. ile ( kullanıcıların bu tür risklerden kaçınmalarına daha iyi yardımcı olabilir.

Özet

Bu makale, Ethereum'un yaklaşan Pectra güncellemesindeki EIP-7702 önerisi etrafında döner. EIP-7702, yeni bir işlem türü tanıtarak, EOA'nın programlanabilirlik ve bileşenlik kazanmasını sağlamakta ve EOA ile sözleşme hesapları arasındaki sınırları bulanıklaştırmaktadır. Şu anda, pratikte test edilmiş bir EIP-7702 uyumlu akıllı sözleşme standardı bulunmadığı için, farklı ekosistem katılımcıları, yani kullanıcılar, cüzdan hizmet sağlayıcıları, geliştiriciler, borsalar vb., birçok zorluk ve fırsatla karşı karşıya kalmaktadır. Bu makalede açıklanan en iyi uygulama içerikleri tüm potansiyel riskleri kapsamayabilir, ancak yine de her tarafın pratik uygulamalarda dikkate alması için değerlidir.

ETH-3.48%
View Original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Reward
  • 5
  • Share
Comment
0/400
PermabullPetevip
· 8h ago
gemiye binin just卷 Emir Defteri又得炸咯
View OriginalReply0
StablecoinEnjoyervip
· 9h ago
Biraz önceden geldi, V神'in yine büyük işler peşinde olduğunu hissediyorum.
View OriginalReply0
Token_Sherpavip
· 9h ago
meh... başka bir teklif daha, gerçek sorunları çözmeyecek eth'nin tbh
View OriginalReply0
RektRecordervip
· 9h ago
Ayı Piyasası pusuya yatmak boğa koşusu zenginleşmek
View OriginalReply0
SchrödingersNodevip
· 9h ago
Tabakları bu şekilde yükseltmiyorlar.
View OriginalReply0
Trade Crypto Anywhere Anytime
qrCode
Scan to download Gate app
Community
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)