EIP-7702: Ethereum hesap soyutlama yeni bir bölüm EOA ile sözleşme arasındaki sınırları belirsiz hale getiriyor

Ethereum Pectra yükseltmesi ve EIP-7702: EOA ve sözleşme hesapları arasındaki sınırların bulanıklaşması için önemli bir adım

Giriş

Ethereum, Pectra güncellemesi ile karşı karşıya kalacak, bu önemli bir güncellemedir ve birçok önemli Ethereum geliştirme önerisi getirilecektir. Bunlardan biri, EIP-7702, Ethereum dış hesap (EOA) üzerinde devrim niteliğinde bir dönüşüm gerçekleştirmiştir. Bu öneri, EOA ile sözleşme hesabı CA arasındaki sınırları belirsiz hale getirmiştir; EIP-4337'den sonra, yerel hesap soyutlamasına doğru atılan önemli bir adım olup, Ethereum ekosistemine tamamen yeni bir etkileşim biçimi getirmiştir.

Pectra, test ağında dağıtımını tamamladı ve yakında ana ağda çevrimiçi olması bekleniyor. Bu makalede EIP-7702'nin uygulama mekanizması derinlemesine incelenecek, getirebileceği fırsatlar ve zorluklar tartışılacak ve farklı katılımcılar için pratik bir kılavuz sunulacaktır.

Protokol Analizi

Genel Bakış

EIP-7702, EOA'nın bir akıllı sözleşme adresi belirtmesine ve ona kod ayarlamasına olanak tanıyan tamamen yeni bir işlem türünü tanıtmaktadır. Bu, EOA'nın akıllı sözleşmeler gibi kod çalıştırabilmesini sağlarken, işlem başlatma yeteneğini korur. Bu özellik, EOA'ya programlanabilirlik ve birleşebilirlik kazandırarak, kullanıcıların EOA içinde sosyal kurtarma, yetki kontrolü, çoklu imza yönetimi, zk doğrulama, abonelik bazlı ödeme, işlem sponsorluğu ve işlem toplu işleme gibi işlevleri gerçekleştirmesine olanak tanır. EIP-7702, EIP-4337 ile gerçekleştirilen akıllı sözleşme cüzdanlarıyla mükemmel uyum içinde çalışabilir; her iki tarafın sorunsuz entegrasyonu, yeni işlevlerin geliştirilmesi ve uygulanması sürecini büyük ölçüde basitleştirir.

EIP-7702, SET_CODE_TX_TYPE ( olan işlem türünü tanıtmaktadır. Verilerin yapılandırması 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 kalanlar EIP-4844 ile aynı anlama sahiptir. Bu alan liste türündedir ve birden fazla yetkilendirme girişi içerebilir, her bir yetkilendirme girişi şunları içerir:

  • chain_id: Bu yetkilendirme delegasyonunun geçerli olduğu zincir
  • adres: Yetkilendirilmiş hedef adres
  • nonce: Mevcut yetkilendirilmiş hesabın nonce değeriyle eşleşmelidir.
  • y_parity, r, s: Yetkilendirilmiş hesabın yetkilendirilmiş imza verilerini imzalaması

Bir işlemdeki authorization_list alanı, birden fazla farklı yetkilendirilmiş hesabın ) EOA ( tarafından imzalanmış yetkilendirme girişlerini içerebilir. İşlemi başlatan kişi, yetkilendiren kişiyle farklı olabilir, bu da yetkilendirenin yetkilendirme işlemleri için gaz ücretlerinin ödenmesini sağlar.

) gerçekleştirmek

Yetkilinin yetki verileri imzalarken, önce chain_id, address, nonce'yi RLP kodlaması gerekir. Ardından kodlanmış veriyi MAGIC sayısı ile birlikte keccak256 hash işlemi yapılır ve imzalanacak veri elde edilir. Son olarak, yetkilinin özel anahtarı kullanılarak hashlenmiş veri imzalanır ve y_parity, r, s verileri elde edilir. MAGIC ###0x05( alan ayırıcı olarak kullanılır, farklı türde imzaların sonuçlarının çakışmayacağından emin olur.

Yetkili tarafından yetkilendirilmiş chain_id 0 olduğunda, yetkilinin EIP-7702'yi destekleyen tüm EVM uyumlu zincirlerde yetkileri yeniden oynatmasına izin verdiği anlamına gelir, ancak nonce da tam olarak ) ile eşleşmelidir.

Yetkilendiren kişi yetkilendirme verilerini imzaladıktan sonra, işlem başlatıcısı bunları authorization_list alanında imzalar ve RPC üzerinden işlem yayını yapar. İşlem bir blokta yürütülmeden önce, Proposer işlemi ön kontrol yaparak to adresini zorunlu olarak kontrol eder, böylece bu işlemin bir sözleşme oluşturma işlemi olmadığından emin olur; yani EIP-7702 türünde bir işlem gönderirken, işlemin to adresi boş olamaz.

Aynı zamanda, bu tür işlemler authorization_list alanının en az bir yetkilendirme girişi içermesini gerektirir; eğer birden fazla yetkilendirme girişi aynı yetkilendiren tarafından imzalanmışsa, yalnızca son yetkilendirme girişi geçerli olacaktır.

İş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 maddesine applyAuthorization işlemi uygulayacaktır. applyAuthorization işlemi sırasında, 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ı ( olduğunda, 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, işlem başarısız olmayacak, diğer yetkilendirme maddeleri uygulanmaya devam edecektir. Böylece toplu yetkilendirme senaryolarında DoS riski oluşmayacaktır.

Yetkili uygulama tamamlandığında, yetkilendiren adresin code alanı 0xef0100 || adres olarak ayarlanacaktır, burada 0xef0100 sabit bir kimliktir, adres ise vekalet verilen hedef adrestir. EIP-3541 sınırlamaları nedeniyle, kullanıcılar 0xef ile başlayan sözleşme kodunu normal yollarla dağıtamazlar, bu da bu tür kimliklerin yalnızca SET_CODE_TX_TYPE )0x04( türündeki işlemlerle dağıtılabileceğini garanti eder.

Yetki tamamlandıktan sonra, yetki veren kişi yetkisini kaldırmak isterse, yalnızca devredilen hedef adresi 0 adresi olarak ayarlaması yeterlidir.

EIP-7702 ile tanıtılan yeni işlem türü, yetkilendiricilerin )EOA( gibi akıllı sözleşmeler gibi kod çalıştırmalarına olanak tanırken, aynı zamanda işlem başlatma yeteneğini de korumaktadır. EIP-4337 ile karşılaştırıldığında, bu kullanıcıya yerel hesap soyutlamasına )Native AA( daha yakın bir deneyim sunmakta ve 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 katmasına rağmen, yeni uygulama alanları da yeni riskleri beraberinde getirecektir. Aşağıda ekosistem katılımcılarının uygulama sürecinde dikkat etmeleri gereken noktalar bulunmaktadır:

) özel anahtar depolama

EOA'nın, akıllı sözleşmelerin içindeki sosyal kurtarma gibi yöntemleri kullanarak özel anahtar kaybı nedeniyle yaşanan para kaybı sorununu çözebilmesine rağmen, EOA özel anahtarının ifşa edilme riskini ortadan kaldıramaz. Şunu belirtmek gerekir ki, yetkilendirme işlemi yapıldıktan sonra EOA özel anahtarı hala hesap üzerinde en yüksek kontrol yetkisine sahiptir, özel anahtarı elinde bulunduran, hesap içindeki varlıkları serbestçe kullanabilir. Kullanıcılar veya cüzdan hizmet sağlayıcıları, EOA için yetkilendirme işlemini tamamladıktan sonra, yerel olarak saklanan özel anahtarı tamamen silseler bile, özel anahtarın ifşa olma riskini tamamen ortadan kaldıramazlar, özellikle tedarik zinciri saldırısı riski olan senaryolarda.

Kullanıcılar için, yetkilendirme sonrasında hesapları kullanırken, her zaman özel anahtar korumasını öncelikli olarak görmelidirler, her zaman dikkatli olun: Not your keys, not your coins.

( Çoklu zincir tekrar

Kullanıcı, yetki devri imzalarken, yetkinin geçerli olacağı zinciri seçmek için chainId kullanabilir veya 0 olan chainId'yi kullanarak yetki devri gerçekleştirebilir. Bu, kullanıcının tek bir imza ile çoklu zincirlerde yetki devri yapmasını kolaylaştırır. Ancak, çoklu zincirlerdeki aynı akıllı sözleşme adresinde farklı uygulama kodlarının bulunabileceğine dikkat edilmelidir.

Cüzdan hizmet sağlayıcıları için, kullanıcıların yetkilendirme işlemi sırasında, yetkilendirme işleminin geçerli olduğu zincir ile mevcut bağlantılı ağın uyumlu olup olmadığını kontrol etmeli ve kullanıcılara chainId'si 0 olan yetkilendirmeyi imzalamanın 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ı ve öncelikle taahhüt edilen hedefi anlamalıdır.

) başlatılamıyor

Mevcut ana akım akıllı sözleşme cüzdanlarının çoğu, proxy modeli kullanmaktadır; cüzdan proxy'si dağıtım sırasında, DELEGateCALL ile sözleşmenin başlatma fonksiyonunu çağırarak, cüzdan başlatma ve proxy cüzdan dağıtımını atomik bir işlemle gerçekleştirmekte ve öncelikli başlatma sorununu önlemektedir. Ancak kullanıcılar, EIP-7702 ile yetkilendirme yaptıklarında yalnızca adreslerinin code alanını güncelleyebilmektedir; yetki verilen adresi çağırarak başlatma işlemi gerçekleştiremeyeceklerdir. Bu durum, EIP-7702'nin, sözleşme dağıtım işleminde başlatma fonksiyonunu çağırarak cüzdan başlatma yapabilen yaygın ERC-1967 proxy sözleşmesi gibi olmasını engellemektedir.

Geliştiriciler için, EIP-7702'yi mevcut EIP-4337 cüzdanı ile birleştirirken, cüzdanın başlatma işlemlerinde yetki kontrolü yapmaya dikkat edilmelidir. Örneğin, ecrecover ile imza adresi geri kazanılarak yetki kontrolü yapılabilir, böylece cüzdan başlatma işleminin hızlıca geçilmesi riski önlenmiş olur.

Depolama Yönetimi

Kullanıcılar EIP-7702 delegasyon işlevini kullanırken, işlev gereksinimlerinin değişmesi, cüzdan güncellemeleri gibi nedenlerden dolayı, farklı bir akıllı sözleşme adresine yeniden delegasyon yapmaları gerekebilir. Ancak farklı sözleşmelerin veri yapıları arasında farklılıklar olabilir ###, örneğin farklı sözleşmelerin slot0 slotu farklı türde verileri temsil edebilir ###. Yeniden delegasyon durumunda, yeni sözleşmenin eski sözleşmenin verilerini yanlışlıkla yeniden kullanma olasılığı vardır, bu da hesap kilitlenmesi, fon kaybı gibi olumsuz sonuçlara yol açabilir.

Kullanıcılar için, yeniden yetkilendirme durumlarını dikkatli bir şekilde ele almak önemlidir.

Geliştiriciler için, geliştirme sürecinde ERC-7201 tarafından önerilen Namespace Formula'sına uymalı ve değişkenleri belirli bağımsız depolama konumlarına atamalıdır, bu da depolama çakışması riskini azaltır. Ayrıca, ERC-7779 (draft), EIP-7702 için yeniden devir verme standart süreçlerini sağlamaktadır: Depolama çakışmalarını önlemek için ERC-7201 kullanmak, yeniden devir vermeden önce depolama uyumluluğunu doğrulamak ve eski devirlerin arayüzünü çağırarak eski verilerin depolamadan temizlenmesini içermektedir.

yanlış yükleme

Kullanıcılar yetkilendirme yaptıktan sonra, EOA aynı zamanda akıllı sözleşme olarak kullanılabilecektir. Bu nedenle borsa (CEX), akıllı sözleşme ile para yatırma işlemlerinin yaygınlaşması durumu ile karşılaşabilir.

CEX, her bir para yatırma işleminin durumunu trace ile kontrol etmeli, 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üştürülebilir, 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ıdan bir çağrı yaptığında, msg.sender'ın tx.origin olacağı anlamına gelir, bu da yalnızca EOA'nın projelere katılımına yönelik bazı güvenlik varsayımlarını çiğner.

Sözleşme geliştiricileri için, tx.origin'in her zaman EOA olduğunu varsaymak artık mümkün olmayacak. Aynı şekilde, msg.sender == tx.origin kontrolü ile yeniden giriş saldırılarına karşı savunma da geçersiz hale gelecektir.

Geliştiricilerin geliştirme sürecinde gelecekteki katılımcıların akıllı sözleşme olabileceğini varsayması gerekmektedir.

) Sözleşme uyumluluğu

Mevcut ERC-721, ERC-777 tokenleri, sözleşmeye transfer gerçekleştiğinde Hook işlevine sahiptir, bu da alıcının tokenleri başarıyla 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şmenin ilgili geri çağırma fonksiyonlarını gerçekleştirmesi gerektiği, böylece ana akım tokenlerle uyumlu olabileceği anlamına gelir.

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 hale gelebilir. Kullanıcı hesaplarını kötü niyetli bir sözleşmeye devrettiğinde, saldırganların fonları çalması son derece kolaylaşır.

Cüzdan hizmet sağlayıcıları için, mümkün olan en kısa sürede EIP-7702 tipi işlemleri desteklemek özellikle önemlidir ve kullanıcılar delege imzası verirken, kullanıcıya delege edilen hedef sözleşmeyi vurgulayarak göstermek, kullanıcıların olası bir kimlik avı saldırısına maruz kalma riskini azaltmalıdır.

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

Özet

Bu makale, Ethereum'un yaklaşan Pectra yükseltmesi çerçevesinde EIP-7702 önerisini tartışmaktadır. EIP-7702, yeni bir işlem türü tanıtarak EOA'nın programlanabilirlik ve birleştirilebilirlik 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ı, kullanıcılar, cüzdan hizmet sağlayıcıları, geliştiriciler, CEX gibi, birçok zorluk ve fırsatla karşı karşıya kalmaktadır. Bu makalede açıklanan en iyi uygulama içerikleri tüm potansiyel riskleri kapsayamamakla birlikte, pratik uygulamalarda her tarafın dikkate alması açısından değerlidir.

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
  • 8
  • Share
Comment
0/400
BearMarketSurvivorvip
· 07-13 15:27
Küçük geyiğin savaş alanını yanlış mı seçtiğine bir bakın! Cesur reformların artık mevzi savaşından sokak savaşına geçmesi gerekecek.
View OriginalReply0
quietly_stakingvip
· 07-12 15:35
Bu yükseltme hızıyla, bir sonraki boğa koşusu sağlam.
View OriginalReply0
DAOdreamervip
· 07-11 11:22
Yeni standartlarla uğraşıyorlar, hala yeterince karışık değil mi?
View OriginalReply0
MEVSandwichvip
· 07-11 11:21
Yine hesap soyutlama mı? EOA artık çalışmıyor.
View OriginalReply0
zkProofInThePuddingvip
· 07-11 11:18
Pectra test dağıtımını tamamladı.
View OriginalReply0
FunGibleTomvip
· 07-11 11:05
Sessiz ol, nasıl önceden Arbitraj yapılacağını araştırıyorum.
View OriginalReply0
BlockchainArchaeologistvip
· 07-11 11:01
Bu hızla ne zaman güncellenecek?
View OriginalReply0
SnapshotDayLaborervip
· 07-11 10:58
Bu sürüm güncellemesi, bir önceki ile pek bir farkı yok gibi görünüyor.
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)