Ethereum Pectra yükseltmesi: EIP-7702 Derinlik analizi ve en iyi uygulamalar
Giriş
Ethereum, Pectra güncellemesiyle buluşmak üzere, bu önemli bir güncelleme olup, birçok önemli Ethereum geliştirme önerisi tanıtılacaktır. 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 hesapları CA arasındaki sınırları bulanıklaştırmış, EIP-4337'den sonra yerel hesap soyutlamasına doğru atılan önemli bir adım olmuş ve Ethereum ekosistemine yeni bir etkileşim modeli kazandırmıştır.
Pectra, test ağında başarılı bir şekilde dağıtımını tamamladı ve yakında ana ağa geçiş yapması bekleniyor. Bu makalede EIP-7702'nin gerçekleştirme mekanizması derinlemesine analiz edilecek, olası fırsatlar ve zorluklar tartışılacak ve farklı katılımcılara pratik bir kullanım kılavuzu sağlanacaktır.
Protokol Analizi
Genel Bakış
EIP-7702, bir akıllı sözleşme adresi belirlemesine ve ona kod atamasına izin veren yeni bir işlem türü getiriyor. Bu, EOA'nın akıllı sözleşmeler gibi kod çalıştırabilmesini sağlarken, işlem başlatma yeteneğini korumasını sağlıyor. Bu özellik, EOA'ya programlanabilirlik ve bileşenlik kazandırıyor; kullanıcılar EOA içinde sosyal kurtarma, izin yönetimi, çoklu imza yönetimi, zk doğrulama, abonelik ödemeleri, işlem sponsorluğu ve işlem toplu işleme gibi işlevleri gerçekleştirebiliyor. Dikkate değer bir nokta, EIP-7702'nin EIP-4337 ile gerçekleştirilen akıllı sözleşme cüzdanlarıyla mükemmel bir şekilde uyumlu olmasıdır; ikisinin sorunsuz entegrasyonu, yeni özelliklerin geliştirilmesi ve uygulanmasını büyük ölçüde basitleştiriyor.
EIP-7702, SET_CODE_TX_TYPE (0x04) işlem türünü tanıtmaktadır, veri yapısı tanımı aşağıdaki gibidir:
Yeni işlem yapısında, authorization_list alanı dışında, diğerleri EIP-4844 ile aynı anlamı takip etmektedir. Bu alan liste türündedir ve birden fazla yetkilendirme girdisi içerebilir, her yetkilendirme girdisinde:
chain_id, bu yetkilendirme yetkisini geçerli kılan zinciri belirtir.
adres, yetkilendirme hedef adresini belirtir
nonce, mevcut yetkilendirilmiş hesabın nonce'u ile eşleşmelidir.
y_parity, r, s yetkilendirilmiş hesabın yetkiyi imzaladığı imza verileridir
Bir işlemin authorization_list alanı, birden fazla farklı yetkilendirilmiş hesabı içerebilir. ( EOA ) tarafından imzalanan yetkilendirme maddeleri, yani işlem başlatıcısı ile yetkilendirenin farklı olmasına izin vererek, yetkilendirenin yetkilendirme işlemi için gaz ücretinin ödenmesini sağlar.
gerçekleştirmek
Yetkilendiren kişi yetkilendirme verilerini imzalarken, önce chain_id, address, nonce değerlerini RLP ile kodlamalıdır. Ardından kodlanmış veriyi MAGIC sayısı ile birlikte keccak256 hash işlemi yaparak imzalanacak veriyi elde etmelidir. Son olarak, yetkilendiren kişinin özel anahtarını kullanarak hash'lenmiş veriyi imzalamalı ve y_parity, r, s verilerini elde etmelidir. MAGIC ( 0x05) alan ayırıcı olarak kullanılmakta olup, amacı farklı türdeki imzaların sonuçlarının çakışmayacağını garanti etmektir.
Yetkili tarafından yetkilendirilen chain_id 0 olduğunda, yetkilinin EIP-7702'yi destekleyen tüm EVM uyumlu zincirlerde ( yetkisini yeniden oynatmasına izin verdiğini gösterir; şart olarak 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 imzalamak için bir araya getirir ve RPC aracılığıyla işlemi yayar. İşlem, blok içinde yürütülmeden önce, Proposer önce işlemi ön kontrol eder; bu aşamada to adresi zorunlu olarak kontrol edilir, böylece bu işlem bir sözleşme oluşturma işlemi olmadığı garanti edilir. Yani EIP-7702 türünde bir işlem gönderildiğinde, 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 gerektirir; eğer birden fazla yetkilendirme maddesi aynı yetkilendiren tarafından imzalanmışsa, nihayetinde yalnızca son yetkilendirme maddesi 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ırır, ardından authorization_list'deki her yetkilendirme maddesi için applyAuthorization işlemi gerçekleştirir. applyAuthorization işleminde, düğüm önce yetkilendirenin nonce'unu kontrol eder, ardından yetkilendirenin nonce'unu artırır. Bu, işlem başlatıcısı ile yetkilendirenin aynı kullanıcı (EOA) olduğunda, yetkilendirme işlemini imzalarken nonce değerinin 1 artırılması gerektiği anlamına gelir.
Bir düğüm bir yetkilendirme kalemini uygularken herhangi bir hata ile karşılaşırsa, bu yetkilendirme kalemi atlanacak, işlem başarısız olmayacak ve diğer yetkilendirme kalemleri uygulamaya devam edecektir; böylece toplu yetkilendirme senaryolarında DoS riski oluşmayacaktır.
Yetki verilmiş uygulama tamamlandığında, yetki veren adresin code alanı 0xef0100 || address olarak ayarlanacaktır, burada 0xef0100 sabit bir kimliktir, address ise yetkilendirilmiş hedef adrestir. EIP-3541'in kısıtlamaları nedeniyle, kullanıcılar 0xef baytlarıyla başlayan sözleşme kodunu geleneksel yöntemlerle dağıtamazlar, bu da böyle bir kimliğin yalnızca SET_CODE_TX_TYPE (0x04) türündeki işlemlerle dağıtılabileceğini garanti eder.
Yetki tamamlandıktan sonra, yetkilendiren kişinin yetkisini kaldırmak istemesi durumunda, sadece yetkilendirilen hedef adresi 0 adresi olarak ayarlaması yeterlidir.
EIP-7702 ile tanıtılan yeni işlem türü, yetkilendiren (EOA)'in akıllı sözleşmeler gibi kod yürütmesine olanak tanırken, aynı zamanda işlem başlatma yeteneğini de korur. EIP-4337 ile karşılaştırıldığında, bu kullanıcıya (Native AA)'a daha yakın bir yerel hesap soyutlama deneyimi 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 kattığı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 verilmiştir:
özel anahtar depolama
EOA'nın yetkilendirmeden sonra akıllı sözleşmelerin yerleşik sosyal kurtarma gibi yöntemlerini kullanarak özel anahtar kaybından kaynaklanan fon kaybı sorununu çözebilmesine rağmen, EOA özel anahtarının sızma riskini ortadan kaldırmaz. Yetkilendirme işleminden sonra EOA özel anahtarının hesabı üzerinde en yüksek kontrol yetkisine sahip olduğunu belirtmek gerekir; özel anahtara sahip olan, hesapta bulunan varlıkları dilediği gibi 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 sızma riskini tamamen ortadan kaldıramazlar; bu özellikle tedarik zinciri saldırısı riski bulunan senaryolarda geçerlidir.
Kullanıcılar için, yetkilendirilmiş hesapları kullanırken, her zaman özel anahtar korumasını önceliklendirmeleri ve her zaman şunu hatırlamaları gerekir: Not your keys, not your coins.
Çoklu Zincir Tekrarı
Kullanıcı, yetkilendirme sözleşmesini imzalarken, yetkilendirmelerin geçerli olacağı zinciri seçmek için chainId'yi seçebilir. Elbette kullanıcı, yetkilendirme için chainId'si 0 olanı da seçebilir; bu, yetkilendirmenin birden fazla zincirde tekrar geçerli olmasını sağlar ve böylece kullanıcılar tek bir imza ile birden fazla zincirde yetkilendirme yapabilirler. Ancak, birden fazla zincirdeki aynı akıllı sözleşme adresinde farklı uygulama kodlarının da bulunabileceğine dikkat edilmelidir.
Cüzdan hizmet sağlayıcıları için, kullanıcılar vekalet verdiklerinde, vekaletin geçerli olduğu zincir ile mevcut bağlı ağın uyumlu olup olmadığını kontrol etmeli ve kullanıcılara chainId'si 0 olan bir vekaletin getirebileceği riskleri bildirmelidir.
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 atanacak hedefi net bir şekilde anlamalıdır.
Başlatılamadı
Günümüzdeki popüler akıllı sözleşme cüzdanlarının çoğu proxy modelini benimsemektedir. Cüzdan proxy'si dağıtım sırasında, DELEGateCALL çağrısı yoluyla sözleşmenin başlatma fonksiyonunu gerçekleştirecek şekilde tasarlanmıştır, bu sayede cüzdanın başlatılması ile proxy cüzdanın dağıtımı atomik bir işlem olarak gerçekleşir ve önceden başlatılma problemi önlenir. Ancak kullanıcı EIP-7702'yi kullanarak yetkilendirme yaptığında, yalnızca adresinin code alanını günceller ve yetkilendirme 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şlatma yeteneğini kaybetmesine neden olur.
Geliştiriciler için, EIP-7702'yi mevcut EIP-4337 cüzdanlarıyla birleştirirken, cüzdanın başlatma işlemlerinde yetki kontrolü yapmaya dikkat edilmelidir. Örneğin, ecrecover ile imza adresini geri yükleyerek yetki kontrolü yapılmalıdır, böylece cüzdanın başlatma işleminin başkaları tarafından hızla gerçekleştirilme riski önlenmiş olur. (
) Depolama Yönetimi
Kullanıcılar EIP-7702 delegasyon fonksiyonunu kullanırken, fonksiyon ihtiyaçlarındaki değişiklikler, cüzdan güncellemeleri gibi nedenlerle farklı bir akıllı sözleşme adresine yeniden delegasyon yapma ihtiyacı duyabilirler. Ancak farklı sözleşmelerin depolama 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 kullanmasına neden olma ihtimali vardır ki bu da hesap kilitlenmesi, fon kaybı gibi olumsuz sonuçlara yol açabilir.
Kullanıcılar için, yeniden yetkilendirme 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 belirlenen bağımsız depolama alanlarına atamak ve depolama çakışması riskini azaltmak önemlidir. Ayrıca, ERC-7779 )draft(, EIP-7702 için yeniden yetkilendirme standart sürecini sağlamaktadır: ERC-7201 kullanarak depolama çakışmalarını önlemek, yeniden yetkilendirmeden önce depolama uyumluluğunu doğrulamak ve eski yetkilendirmeyi çağırarak eski verilerin depolama alanını temizlemek.
) sahte yükleme
Kullanıcılar yetki verdikten sonra, EOA aynı zamanda akıllı sözleşme olarak kullanılabilir, bu nedenle merkezi borsa ###CEX( akıllı sözleşme ile para yatırmanın yaygınlaşması durumu ile karşılaşabilir.
CEX, her bir yükleme işleminin durumunu trace ile kontrol etmeli ve akıllı sözleşme sahte yükleme risklerine karşı önlem almalıdır.
) Hesap Dönüşümü
EIP-7702 delegasyonunun uygulanmasından sonra, kullanıcıların hesap türleri EOA ve SC arasında serbestçe dönüştürülebilir, bu da hesabın hem işlem başlatabilmesini hem de çağrılabilmesini sağlar. Bu, hesabın kendisini çağırdığında ve dışarıdan bir çağrı yaptığında, msg.sender'ının da tx.origin olacağı anlamına gelir, bu da yalnızca EOA'nın katıldığı projeler için güvenlik varsayımlarını sarsar.
Sözleşme geliştiricileri için, tx.origin'in her zaman EOA olduğunu varsaymak artık mümkün olmayacak. Benzer şekilde, msg.sender == tx.origin kontrolü ile reentrancy saldırılarına karşı savunma da geçersiz hale gelecektir.
Mevcut ERC-721 ve ERC-777 token'ları, sözleşmelere transfer yaparken Hook fonksiyonuna sahiptir, bu da alıcının token'ları başarıyla almak için ilgili geri çağırma fonksiyonunu uygulaması gerektiği anlamına gelir.
Geliştiriciler için, kullanıcıların yetkilendirdiği hedef sözleşmelerin, ana akım tokenlerle uyumlu olabilmesi için ilgili geri çağırma fonksiyonlarını gerçekleştirmesi gerekir.
Olta Kontrolü
EIP-7702 delegasyonunun uygulanmasıyla, kullanıcı hesaplarındaki varlıklar akıllı sözleşmeler tarafından kontrol edilebilir. Kullanıcı hesapları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, mümkün olan en kısa sürede EIP-7702 türü işlemleri desteklemek son derece önemlidir ve kullanıcılar yetki imzası verirken, kullanıcıya yetkilendirilen hedef sözleşmeyi vurgulayarak göstermelidir, böylece kullanıcıların olası bir kimlik avı saldırısına maruz kalma riski azaltılabilir.
Ayrıca, hesap devirlerinin hedef sözleşmeleri üzerinde daha derin otomatik analiz ### açık kaynak kontrolü, yetki kontrolü gibi ( kullanıcıların bu tür risklerden kaçınmasına daha iyi yardımcı olabilir.
Özet
Bu makale, Ethereum'un yaklaşan Pectra yükseltmesi kapsamındaki EIP-7702 önerisi etrafında dönmektedir. EIP-7702, yeni bir işlem türü tanıtarak EOA'nın programlanabilirliği ve bileşimliliğini sağlar, EOA ile sözleşme hesapları arasındaki sınırları bulanıklaştırır. Şu anda, EIP-7702 türü akıllı sözleşme standartlarına pratikte test edilmiş bir uyumluluk olmadığı 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şılaşmaktadır. Bu makalede açıklanan en iyi uygulama içerikleri tüm potansiyel riskleri kapsamayabilir, ancak yine de her tarafın pratikte uygulamasında dikkate alması gereken bilgiler sunmaktadır.
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.
14 Likes
Reward
14
5
Share
Comment
0/400
ser_ngmi
· 07-21 20:33
Ödev kopyalamaktan bıktım, sadece bir eoa ve ca almak istiyorum.
View OriginalReply0
ParanoiaKing
· 07-20 23:50
Bir başka anlaşılması zor güncelleme, ne söyleyeceğimi bilemiyorum.
View OriginalReply0
YieldHunter
· 07-20 23:49
teknik olarak konuşursak, bu eip biraz şüpheli görünüyor... testnet tx maliyetleri hakkında herhangi bir veri var mı?
View OriginalReply0
EyeOfTheTokenStorm
· 07-20 23:26
Yine önceden planlama için bir fırsat mı? Tarihsel verilere göre benzer güncellemelerden sonra eth genellikle büyük yükseliş yaşıyor. Ancak piyasa biraz balon gibi görünüyor.
View OriginalReply0
SchrodingerPrivateKey
· 07-20 23:23
Yeni bir EIP daha var, düşük versiyonlu sözleşme hesabı geldi.
EIP-7702 Analizi: Ethereum Pectra Güncellemesi EOA'ya Programlanabilirlik Nasıl Kazandırır
Ethereum Pectra yükseltmesi: EIP-7702 Derinlik analizi ve en iyi uygulamalar
Giriş
Ethereum, Pectra güncellemesiyle buluşmak üzere, bu önemli bir güncelleme olup, birçok önemli Ethereum geliştirme önerisi tanıtılacaktır. 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 hesapları CA arasındaki sınırları bulanıklaştırmış, EIP-4337'den sonra yerel hesap soyutlamasına doğru atılan önemli bir adım olmuş ve Ethereum ekosistemine yeni bir etkileşim modeli kazandırmıştır.
Pectra, test ağında başarılı bir şekilde dağıtımını tamamladı ve yakında ana ağa geçiş yapması bekleniyor. Bu makalede EIP-7702'nin gerçekleştirme mekanizması derinlemesine analiz edilecek, olası fırsatlar ve zorluklar tartışılacak ve farklı katılımcılara pratik bir kullanım kılavuzu sağlanacaktır.
Protokol Analizi
Genel Bakış
EIP-7702, bir akıllı sözleşme adresi belirlemesine ve ona kod atamasına izin veren yeni bir işlem türü getiriyor. Bu, EOA'nın akıllı sözleşmeler gibi kod çalıştırabilmesini sağlarken, işlem başlatma yeteneğini korumasını sağlıyor. Bu özellik, EOA'ya programlanabilirlik ve bileşenlik kazandırıyor; kullanıcılar EOA içinde sosyal kurtarma, izin yönetimi, çoklu imza yönetimi, zk doğrulama, abonelik ödemeleri, işlem sponsorluğu ve işlem toplu işleme gibi işlevleri gerçekleştirebiliyor. Dikkate değer bir nokta, EIP-7702'nin EIP-4337 ile gerçekleştirilen akıllı sözleşme cüzdanlarıyla mükemmel bir şekilde uyumlu olmasıdır; ikisinin sorunsuz entegrasyonu, yeni özelliklerin geliştirilmesi ve uygulanmasını büyük ölçüde basitleştiriyor.
EIP-7702, SET_CODE_TX_TYPE (0x04) işlem türünü tanıtmaktadır, 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ı şöyle 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, diğerleri EIP-4844 ile aynı anlamı takip etmektedir. Bu alan liste türündedir ve birden fazla yetkilendirme girdisi içerebilir, her yetkilendirme girdisinde:
Bir işlemin authorization_list alanı, birden fazla farklı yetkilendirilmiş hesabı içerebilir. ( EOA ) tarafından imzalanan yetkilendirme maddeleri, yani işlem başlatıcısı ile yetkilendirenin farklı olmasına izin vererek, yetkilendirenin yetkilendirme işlemi için gaz ücretinin ödenmesini sağlar.
gerçekleştirmek
Yetkilendiren kişi yetkilendirme verilerini imzalarken, önce chain_id, address, nonce değerlerini RLP ile kodlamalıdır. Ardından kodlanmış veriyi MAGIC sayısı ile birlikte keccak256 hash işlemi yaparak imzalanacak veriyi elde etmelidir. Son olarak, yetkilendiren kişinin özel anahtarını kullanarak hash'lenmiş veriyi imzalamalı ve y_parity, r, s verilerini elde etmelidir. MAGIC ( 0x05) alan ayırıcı olarak kullanılmakta olup, amacı farklı türdeki imzaların sonuçlarının çakışmayacağını garanti etmektir.
Yetkili tarafından yetkilendirilen chain_id 0 olduğunda, yetkilinin EIP-7702'yi destekleyen tüm EVM uyumlu zincirlerde ( yetkisini yeniden oynatmasına izin verdiğini gösterir; şart olarak 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 imzalamak için bir araya getirir ve RPC aracılığıyla işlemi yayar. İşlem, blok içinde yürütülmeden önce, Proposer önce işlemi ön kontrol eder; bu aşamada to adresi zorunlu olarak kontrol edilir, böylece bu işlem bir sözleşme oluşturma işlemi olmadığı garanti edilir. Yani EIP-7702 türünde bir işlem gönderildiğinde, 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 gerektirir; eğer birden fazla yetkilendirme maddesi aynı yetkilendiren tarafından imzalanmışsa, nihayetinde yalnızca son yetkilendirme maddesi 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ırır, ardından authorization_list'deki her yetkilendirme maddesi için applyAuthorization işlemi gerçekleştirir. applyAuthorization işleminde, düğüm önce yetkilendirenin nonce'unu kontrol eder, ardından yetkilendirenin nonce'unu artırır. Bu, işlem başlatıcısı ile yetkilendirenin aynı kullanıcı (EOA) olduğunda, yetkilendirme işlemini imzalarken nonce değerinin 1 artırılması gerektiği anlamına gelir.
Bir düğüm bir yetkilendirme kalemini uygularken herhangi bir hata ile karşılaşırsa, bu yetkilendirme kalemi atlanacak, işlem başarısız olmayacak ve diğer yetkilendirme kalemleri uygulamaya devam edecektir; böylece toplu yetkilendirme senaryolarında DoS riski oluşmayacaktır.
Yetki verilmiş uygulama tamamlandığında, yetki veren adresin code alanı 0xef0100 || address olarak ayarlanacaktır, burada 0xef0100 sabit bir kimliktir, address ise yetkilendirilmiş hedef adrestir. EIP-3541'in kısıtlamaları nedeniyle, kullanıcılar 0xef baytlarıyla başlayan sözleşme kodunu geleneksel yöntemlerle dağıtamazlar, bu da böyle bir kimliğin yalnızca SET_CODE_TX_TYPE (0x04) türündeki işlemlerle dağıtılabileceğini garanti eder.
Yetki tamamlandıktan sonra, yetkilendiren kişinin yetkisini kaldırmak istemesi durumunda, sadece yetkilendirilen hedef adresi 0 adresi olarak ayarlaması yeterlidir.
EIP-7702 ile tanıtılan yeni işlem türü, yetkilendiren (EOA)'in akıllı sözleşmeler gibi kod yürütmesine olanak tanırken, aynı zamanda işlem başlatma yeteneğini de korur. EIP-4337 ile karşılaştırıldığında, bu kullanıcıya (Native AA)'a daha yakın bir yerel hesap soyutlama deneyimi 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 kattığı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 verilmiştir:
özel anahtar depolama
EOA'nın yetkilendirmeden sonra akıllı sözleşmelerin yerleşik sosyal kurtarma gibi yöntemlerini kullanarak özel anahtar kaybından kaynaklanan fon kaybı sorununu çözebilmesine rağmen, EOA özel anahtarının sızma riskini ortadan kaldırmaz. Yetkilendirme işleminden sonra EOA özel anahtarının hesabı üzerinde en yüksek kontrol yetkisine sahip olduğunu belirtmek gerekir; özel anahtara sahip olan, hesapta bulunan varlıkları dilediği gibi 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 sızma riskini tamamen ortadan kaldıramazlar; bu özellikle tedarik zinciri saldırısı riski bulunan senaryolarda geçerlidir.
Kullanıcılar için, yetkilendirilmiş hesapları kullanırken, her zaman özel anahtar korumasını önceliklendirmeleri ve her zaman şunu hatırlamaları gerekir: Not your keys, not your coins.
Çoklu Zincir Tekrarı
Kullanıcı, yetkilendirme sözleşmesini imzalarken, yetkilendirmelerin geçerli olacağı zinciri seçmek için chainId'yi seçebilir. Elbette kullanıcı, yetkilendirme için chainId'si 0 olanı da seçebilir; bu, yetkilendirmenin birden fazla zincirde tekrar geçerli olmasını sağlar ve böylece kullanıcılar tek bir imza ile birden fazla zincirde yetkilendirme yapabilirler. Ancak, birden fazla zincirdeki aynı akıllı sözleşme adresinde farklı uygulama kodlarının da bulunabileceğine dikkat edilmelidir.
Cüzdan hizmet sağlayıcıları için, kullanıcılar vekalet verdiklerinde, vekaletin geçerli olduğu zincir ile mevcut bağlı ağın uyumlu olup olmadığını kontrol etmeli ve kullanıcılara chainId'si 0 olan bir vekaletin getirebileceği riskleri bildirmelidir.
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 atanacak hedefi net bir şekilde anlamalıdır.
Başlatılamadı
Günümüzdeki popüler akıllı sözleşme cüzdanlarının çoğu proxy modelini benimsemektedir. Cüzdan proxy'si dağıtım sırasında, DELEGateCALL çağrısı yoluyla sözleşmenin başlatma fonksiyonunu gerçekleştirecek şekilde tasarlanmıştır, bu sayede cüzdanın başlatılması ile proxy cüzdanın dağıtımı atomik bir işlem olarak gerçekleşir ve önceden başlatılma problemi önlenir. Ancak kullanıcı EIP-7702'yi kullanarak yetkilendirme yaptığında, yalnızca adresinin code alanını günceller ve yetkilendirme 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şlatma yeteneğini kaybetmesine neden olur.
Geliştiriciler için, EIP-7702'yi mevcut EIP-4337 cüzdanlarıyla birleştirirken, cüzdanın başlatma işlemlerinde yetki kontrolü yapmaya dikkat edilmelidir. Örneğin, ecrecover ile imza adresini geri yükleyerek yetki kontrolü yapılmalıdır, böylece cüzdanın başlatma işleminin başkaları tarafından hızla gerçekleştirilme riski önlenmiş olur. (
) Depolama Yönetimi
Kullanıcılar EIP-7702 delegasyon fonksiyonunu kullanırken, fonksiyon ihtiyaçlarındaki değişiklikler, cüzdan güncellemeleri gibi nedenlerle farklı bir akıllı sözleşme adresine yeniden delegasyon yapma ihtiyacı duyabilirler. Ancak farklı sözleşmelerin depolama 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 kullanmasına neden olma ihtimali vardır ki bu da hesap kilitlenmesi, fon kaybı gibi olumsuz sonuçlara yol açabilir.
Kullanıcılar için, yeniden yetkilendirme 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 belirlenen bağımsız depolama alanlarına atamak ve depolama çakışması riskini azaltmak önemlidir. Ayrıca, ERC-7779 )draft(, EIP-7702 için yeniden yetkilendirme standart sürecini sağlamaktadır: ERC-7201 kullanarak depolama çakışmalarını önlemek, yeniden yetkilendirmeden önce depolama uyumluluğunu doğrulamak ve eski yetkilendirmeyi çağırarak eski verilerin depolama alanını temizlemek.
) sahte yükleme
Kullanıcılar yetki verdikten sonra, EOA aynı zamanda akıllı sözleşme olarak kullanılabilir, bu nedenle merkezi borsa ###CEX( akıllı sözleşme ile para yatırmanın yaygınlaşması durumu ile karşılaşabilir.
CEX, her bir yükleme işleminin durumunu trace ile kontrol etmeli ve akıllı sözleşme sahte yükleme risklerine karşı önlem almalıdır.
) Hesap Dönüşümü
EIP-7702 delegasyonunun uygulanmasından sonra, kullanıcıların hesap türleri EOA ve SC arasında serbestçe dönüştürülebilir, bu da hesabın hem işlem başlatabilmesini hem de çağrılabilmesini sağlar. Bu, hesabın kendisini çağırdığında ve dışarıdan bir çağrı yaptığında, msg.sender'ının da tx.origin olacağı anlamına gelir, bu da yalnızca EOA'nın katıldığı projeler için güvenlik varsayımlarını sarsar.
Sözleşme geliştiricileri için, tx.origin'in her zaman EOA olduğunu varsaymak artık mümkün olmayacak. Benzer şekilde, msg.sender == tx.origin kontrolü ile reentrancy saldırılarına karşı savunma da geçersiz hale gelecektir.
Geliştiriciler, geliştirme sürecinde gelecekteki katılımcıların hepsinin akıllı sözleşmeler olabileceğini varsaymalıdır.
Sözleşme Uyumluluğu
Mevcut ERC-721 ve ERC-777 token'ları, sözleşmelere transfer yaparken Hook fonksiyonuna sahiptir, bu da alıcının token'ları başarıyla almak için ilgili geri çağırma fonksiyonunu uygulaması gerektiği anlamına gelir.
Geliştiriciler için, kullanıcıların yetkilendirdiği hedef sözleşmelerin, ana akım tokenlerle uyumlu olabilmesi için ilgili geri çağırma fonksiyonlarını gerçekleştirmesi gerekir.
Olta Kontrolü
EIP-7702 delegasyonunun uygulanmasıyla, kullanıcı hesaplarındaki varlıklar akıllı sözleşmeler tarafından kontrol edilebilir. Kullanıcı hesapları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, mümkün olan en kısa sürede EIP-7702 türü işlemleri desteklemek son derece önemlidir ve kullanıcılar yetki imzası verirken, kullanıcıya yetkilendirilen hedef sözleşmeyi vurgulayarak göstermelidir, böylece kullanıcıların olası bir kimlik avı saldırısına maruz kalma riski azaltılabilir.
Ayrıca, hesap devirlerinin hedef sözleşmeleri üzerinde daha derin otomatik analiz ### açık kaynak kontrolü, yetki kontrolü gibi ( kullanıcıların bu tür risklerden kaçınmasına daha iyi yardımcı olabilir.
Özet
Bu makale, Ethereum'un yaklaşan Pectra yükseltmesi kapsamındaki EIP-7702 önerisi etrafında dönmektedir. EIP-7702, yeni bir işlem türü tanıtarak EOA'nın programlanabilirliği ve bileşimliliğini sağlar, EOA ile sözleşme hesapları arasındaki sınırları bulanıklaştırır. Şu anda, EIP-7702 türü akıllı sözleşme standartlarına pratikte test edilmiş bir uyumluluk olmadığı 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şılaşmaktadır. Bu makalede açıklanan en iyi uygulama içerikleri tüm potansiyel riskleri kapsamayabilir, ancak yine de her tarafın pratikte uygulamasında dikkate alması gereken bilgiler sunmaktadır.