Ethereum Pectra yükseltmesi: EIP-7702, EOA'ya Programlanabilirlik ve zorluklar getiriyor

Ethereum Pectra yükseltmesi: EIP-7702'nin getirdiği devrim ve zorluklar

Ön Söz

Ethereum, Pectra yükseltmesini karşılamaya hazırlanıyor, bu önemli bir güncelleme ve birçok önemli Ethereum iyileştirme önerisi tanıtılacak. Bunlar arasında, EIP-7702, Ethereum dış hesap (EOA) için devrim niteliğinde bir dönüşüm sağlıyor. Bu öneri, EOA ile sözleşme hesapları CA arasındaki sınırları belirsiz hale getiriyor ve EIP-4337'den sonra yerel hesap soyutlamasına yönelik atılan önemli bir adım olarak, Ethereum ekosistemine yeni bir etkileşim modeli getiriyor.

Pectra, test ağında dağıtımını tamamladı ve yakında ana ağa geçmesi bekleniyor. Bu makale, EIP-7702'nin gerçekleştirme mekanizmasını derinlemesine analiz edecek, olası fırsatlar ve zorlukları tartışacak ve farklı katılımcılara pratik operasyonel öneriler sunacaktır.

Protokol Analizi

Genel Bakış

EIP-7702, yeni bir işlem türü tanıtarak EOA'nın akıllı sözleşme adresini belirlemesine ve kod ayarlamasına olanak tanır. Bu, EOA'nın akıllı sözleşmeler gibi kod çalıştırabilmesini sağlarken aynı zamanda işlem başlatma yeteneğini de korur. Bu özellik, EOA'ya programlanabilirlik ve bileşen oluşturma yeteneği kazandırır, kullanıcılar EOA içinde sosyal geri yükleme, yetki kontrolü, çok imzalı yönetim, zk doğrulama, abonelik bazlı ödeme, işlem sponsorluğu ve işlem toplulaştırma gibi işlevleri gerçekleştirebilirler. Dikkate değer bir nokta, EIP-7702'nin EIP-4337 ile gerçekleştirilen akıllı sözleşme cüzdanlarıyla mükemmel uyumlu olmasıdır; ikisinin sorunsuz entegrasyonu, yeni özelliklerin geliştirilmesi ve uygulanması sürecini büyük ölçüde basitleştirir.

EIP-7702, SET_CODE_TX_TYPE (0x04) tipi bir işlem tanıtıyor, verinin yapısı aşağıda tanımlanmıştır:

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ı anlama sahiptir. Bu alan bir liste türündedir ve birden fazla yetki girişi içerebilir, her yetki girişi içerisinde:

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

Bir işlem içindeki authorization_list alanı, birden fazla farklı yetkilendirilmiş hesabın ( EOA ) tarafından imzalanmış yetkilendirme girişlerini içerebilir; yani işlem başlatıcısı, yetkilendirenden farklı olabilir, bu da yetkilendirenin gaz ücretini ödemesine izin verir.

gerçekleştirmek

Yetkili, yetki verilecek verileri imzalamadan önce chain_id, address, nonce değerlerini RLP kodlaması yapmalıdır. Ardından, kodlanmış veriyi MAGIC sayısıyla birlikte keccak256 hash işlemi gerçekleştirilerek imzalanacak veriyi elde eder. Son olarak, yetkilinin özel anahtarı ile hash'lenmiş veriyi imzalayarak y_parity, r, s verilerini elde eder. MAGIC (0x05) alan ayırıcı olarak kullanılır, böylece farklı türde imzaların sonuçları arasında çatışma olmayacağı garanti edilir.

Dikkat edilmesi gereken husus, yetkilendirenin yetki verdiği chain_id'nin 0 olması durumunda, yetkilendirenin EIP-7702'yi destekleyen tüm EVM uyumlu zincirlerde yetkilendirmeyi tekrar yapmasına izin verdiğidir (ön koşul, nonce'un da tam olarak eşleşmesidir).

Yetkilendiren kişi yetkilendirme verilerini imzaladıktan sonra, işlem başlatıcısı bunları authorization_list alanında imzalayarak RPC üzerinden işlem yayını yapacaktır. İşlem, blok içine dahil edilmeden önce, Proposer işlemi ön kontrol yaparak, to adresini zorunlu olarak kontrol eder ve bu işlemin bir sözleşme oluşturma işlemi olmadığını garanti eder.

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 öncelikle işlem başlatıcısının nonce değerini artırır, ardından authorization_list içindeki her yetkilendirme kaydı için applyAuthorization işlemi gerçekleştirir. applyAuthorization işlemi sırasında, düğüm öncelikle yetkilendirenin nonce'unu kontrol eder, ardından yetkilendirenin nonce'unu artırır. Bu, işlem başlatıcısı ile yetkilendiren aynı kullanıcı olduğunda ((EOA)), 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 ve diğer yetkilendirme maddeleri uygulanmaya devam edecektir. Bu sayede toplu yetkilendirme senaryolarında DoS riski oluşmayacaktır.

Yetkilendirilmiş uygulama tamamlandığında, yetkilendiren adresin code alanı 0xef0100 || address olarak ayarlanacaktır; burada 0xef0100 sabit bir kimliktir, address ise yetkilendirilen hedef adrestir. EIP-3541'in sınırlamaları nedeniyle, kullanıcılar 0xef baytı ile başlayan sözleşme kodlarını olağan yollarla dağıtamaz, bu da bu tür kimliklerin yalnızca SET_CODE_TX_TYPE (0x04) türündeki işlemlerle dağıtılmasını garanti eder.

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

EIP-7702 ile tanıtılan yeni işlem türü, yetkilendiren ( EOA )'nın akıllı sözleşmeler gibi kod çalıştırmasını sağlarken, aynı zamanda işlem başlatma yeteneğini de koruyor. EIP-4337'ye kıyasla, bu kullanıcıya yerel hesap soyutlamasına ( Native AA ) daha yakın bir deneyim sunarak, kullanıcıların kullanım eşiğini büyük ölçüde düşürüyor.

En İyi Uygulamalar

EIP-7702'nin Ethereum ekosistemine yeni bir enerji kattığına rağmen, yeni uygulama senaryoları da yeni riskler getirecektir. İşte ekosistem katılımcılarının pratik süreçte dikkat etmesi gereken noktalar:

özel anahtar depolama

EOA, akıllı sözleşmelerin yerleşik sosyal kurtarma gibi yöntemlerini kullanarak özel anahtar kaybı nedeniyle meydana gelen fon kaybı sorununu çözebilse de, EOA özel anahtarının sızma riskini ortadan kaldırmaz. Şunu belirtmek önemlidir ki, delegasyon gerçekleştikten sonra EOA özel anahtarı hesap üzerinde en yüksek kontrol yetkisine sahip olmaya devam eder; özel anahtarı elinde bulunduran kişi, hesap içindeki varlıkları dilediği gibi tasarruf edebilir. Kullanıcılar veya cüzdan hizmet sağlayıcıları, EOA'nın delegasyonunu tamamladıktan sonra yerel olarak depolanan özel anahtarı tamamen silseler bile, özel anahtar sızma riskini tamamen ortadan kaldıramazlar; bu durum özellikle tedarik zinciri saldırı riski olan senaryolarda geçerlidir.

Kullanıcılar için, yetkilendirilmiş hesapları kullanırken, özel anahtar korumasının öncelikli olması gerektiğini ve sürekli olarak dikkat edilmesi gerektiğini unutmayın: Not your keys, not your coins.

Çoklu zincir tekrar

Kullanıcı, yetki devri imzalarken, yetkinin geçerli olabileceği zinciri chainId ile seçebilir ve aynı zamanda yetkiyi çok zincir üzerinde geçerli kılmak için chainId'si 0 olanı seçebilir. Bu, kullanıcının tek bir imza ile birden fazla zincir üzerinde yetki devri yapmasını kolaylaştırır. Ancak, çok zincir üzerinde yetki devri yapılan aynı akıllı sözleşme adresinde farklı uygulama kodlarının da mevcut olabileceğine dikkat edilmelidir.

Cüzdan hizmet sağlayıcıları için, kullanıcılar yetkilendirme yaptığında, yetkilendirmenin geçerli olduğu zinciri ve mevcut bağ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ıdır; öncelikle yetkilendirilmiş hedefi anlamalıdır.

başlatılamıyor

Mevcut ana akım akıllı sözleşme cüzdanlarının çoğu, proxy modelini kullanmaktadır. Cüzdan proxy'si kurulum sırasında, DELEGateCALL çağrısı aracılığıyla sözleşmenin başlangıç fonksiyonunu başlatır, böylece cüzdanın başlatılması ile proxy cüzdanın dağıtımı atomik bir işlem haline gelir ve önceden başlatılma sorununu önler. Ancak kullanıcı, EIP-7702 kullanarak vekalet verdiğinde, yalnızca adresinin code alanını günceller, vekalet adresini çağırarak başlatma işlemi gerçekleştiremez. Bu, EIP-7702'nin yaygın ERC-1967 proxy sözleşmeleri gibi sözleşme dağıtım işlemi sırasında başlatma fonksiyonunu çağırarak cüzdanı başlatmasına olanak tanımaz.

Geliştiriciler için, EIP-7702'yi mevcut EIP-4337 cüzdanıyla birleştirirken, cüzdanın başlangıç işlemlerinde yetki kontrolü yapılmalıdır (örneğin, yetki kontrolü için ecrecover kullanarak imza adresini geri yükleyerek), cüzdanın başlangıç işleminin başkaları tarafından hızlıca yapılma riskini önlemek için.

Depolama Yönetimi

Kullanıcılar EIP-7702 delegasyon işlevini kullanırken, işlev gereksinimlerinin değişmesi, cüzdan güncellemeleri gibi nedenlerle farklı bir akıllı sözleşme adresine yeniden delegasyon yapmaları gerekebilir. Ancak farklı akıllı sözleşmelerin depolama yapılarında farklılıklar olabilir (örneğin, farklı akıllı sözleşmelerin slot0 slotu farklı türde verileri temsil edebilir), yeniden delegasyon durumunda yeni akıllı sözleşmenin eski akıllı sözleşmenin verilerini yanlışlıkla yeniden kullanmasına neden olabilir ve bu da hesap kilitlenmesi, fon kaybı gibi olumsuz sonuçlar doğurabilir.

Kullanıcılar için, yeniden devretme 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şkenlerin belirli bağımsız depolama alanlarına atanmasını sağlamak ve depolama çakışması riskini azaltmak önemlidir. Ayrıca, ERC-7779 (draft), EIP-7702 için yeniden yetkilendirme standart sürecini sunmaktadır: ERC-7201 kullanarak depolama çakışmalarını önlemek, yeniden yetkilendirmeden önce depolama uyumluluğunu doğrulamak ve eski yetkilendirmeye ait arayüzü çağırarak eski verileri depolamadan silmek dahil.

sahte yükleme

Kullanıcılar bir vekalet verdikten sonra, EOA aynı zamanda akıllı sözleşme olarak kullanılabilir hale gelecektir, bu nedenle bazı borsalar akıllı sözleşme ile para yatırmanın yaygınlaşmasıyla 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 özgürce dönüştürülebilir, bu da hesapların hem işlem başlatabilmesini hem de çağrılabilmesini sağlar. Yani, hesap kendisini çağırdığında ve dışarıdan bir çağrı yaptığında, msg.sender da tx.origin olacaktır, bu da sadece EOA'nın projeye katıldığı güvenlik varsayımlarını bozacaktır.

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

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

Sözleşme Uyumluluğu

Mevcut ERC-721 ve ERC-777 tokenleri, sözleşmelere transfer yapılırken Hook işlevine sahiptir. Bu, alıcının tokenleri başarıyla almak için ilgili geri çağırma fonksiyonunu uygulaması gerektiği anlamına gelir.

Geliştiriciler için, kullanıcı tarafından devredilen hedef sözleşmenin, ana akım tokenlerle uyumlu olmasını sağlamak için ilgili geri çağırma işlevlerini gerçekleştirmesi gerektiğ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ı hesabını kötü niyetli bir sözleşmeye devrettiğinde, saldırganların fonları çalması oldukça kolay hale gelecektir.

Cüzdan hizmet sağlayıcıları için, en kısa sürede EIP-7702 türündeki işlemleri desteklemek son derece önemlidir ve kullanıcılar vekalet imzası verirken, kullanıcıların olası bir kimlik avı saldırısına maruz kalma riskini azaltmak için vekaletin hedef sözleşmesini vurgulayarak göstermelidir.

Ayrıca, hesapların devredildiği hedef sözleşmelerin daha derinlemesine otomatik analizleri (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ükseltmesindeki EIP-7702 önerisini ele almaktadır. EIP-7702, yeni bir işlem türünün tanıtılmasıyla EOA'nın programlanabilirliğini ve bileşenliğini sağlar, EOA ile sözleşme hesapları arasındaki sınırları bulanıklaştırır. Şu anda pratikte test edilmiş bir EIP-7702 uyumlu akıllı sözleşme standardı bulunmadığından, kullanıcılar, cüzdan hizmet sağlayıcıları, geliştiriciler, borsa gibi farklı ekosistem katılımcıları birçok zorluk ve fırsatla karşı karşıyadır. Bu makalede açıklanan en iyi uygulama içeriği tüm potansiyel riskleri kapsayamaz, ancak yine de tarafların pratik uygulamalarda dikkate alması için 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
  • 5
  • Share
Comment
0/400
digital_archaeologistvip
· 07-07 03:43
Ödev kopyalamak mı? Geçen yılki EIP-4337'ye bu kadar benziyor.
View OriginalReply0
PanicSeller69vip
· 07-04 09:18
Ah ah ah bas bas bas yine EIP şimdi her şeyi yeniden yapılandırmak gerekiyor.
View OriginalReply0
DevChivevip
· 07-04 06:03
Güncelleme geldi eoa zayıflatılacak, bu açıkça yanlış bir yol.
View OriginalReply0
Token_Sherpavip
· 07-04 05:54
bir gün başka bir eter yükseltmesi... ama sayı ne zaman yükselecek
View OriginalReply0
ColdWalletGuardianvip
· 07-04 05:54
4337'nin ödevini bir bakışta kopyalamak
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)