İçeriğe geç

Delegation Toolkit nedir ve bununla neler oluşturabilirsiniz?

Delegation Toolkit'in esnek ve paylaşılabilir izinlerle dapp'ler oluşturmanıza nasıl olanak tanıdığını öğrenin

3 Dak
Delegation Toolkit nedir ve bununla neler oluşturabilirsiniz?

Ethereum'da hesap kontrolü geleneksel olarak katı bir yapıya sahip olmuştur. Harici Sahipli Hesaplar (EOA'lar) basit ve yaygın kullanımlıdır; ancak yapabilecekleri açısından oldukça sınırlıdır. Akıllı Sözleşme Hesapları (SCA'lar) çok daha fazla esneklik sunar; fakat yakın zamana kadar bağımsız olarak çalışamıyorlardı. Her işlemi başlatmak ve ücretini ödemek için yine de bir EOA'ya ihtiyaç duyuluyordu.

Bu durum ERC-4337 ile değişti. SCA'lar artık gas sponsorluğu, işlem gruplama (birden fazla işlemi tek bir işlemde birleştirme), oturum anahtarları ve zincir soyutlama gibi özellikleri yerel olarak destekleyebiliyor; bu da daha iyi güvenlik, esneklik ve kullanıcı kontrolü sağlıyor.

Bununla birlikte, EOA'lar ortadan kalkmadı. Bunun iyi bir nedeni var: Her kullanıcı, rastgele doğrulama mantığını destekleyen bir hesaba sahip olmayı yararlı bulmayabilir. Şu an için bir SCA'ya geçmenin ne anlamı var?

Peki, kullanıcılar geçiş yapmaya hazır olduklarında ya da bir veya daha fazla ERC-4337 hesap özelliğinden geçici olarak yararlanmak istediklerinde, sıfırdan yeni bir hesap türü oluşturmak zorunda kalmamalarını nasıl sağlarız? EOA'ların, alışık oldukları yapıdan vazgeçmeden belirli işlemler için SCA özelliklerinden yararlanmasını nasıl mümkün kılarız?

İşte bu noktada EIP-7702 (Set-EOA-account-code) devreye giriyor.

Yaklaşan Pectra yükseltmesinin bir parçası olarak EIP-7702, EOA'ların kontrolü doğrudan kendi adreslerinden çalışan akıllı sözleşme koduna devrederek geçici olarak SCA gibi davranmasına olanak tanıyacak. Bu sayede kullanıcıların bu gelişmiş özelliklerden yararlanmak için yeni hesaplara geçiş yapması gerekmeyecek. Ethereum'u ileriye taşırken geriye dönük uyumluluğu da güvence altına alıyor.

Tüm bu geliştirmelere karşın, web2 benzeri bir deneyimi tam anlamıyla hayata geçirebilmek için kilidinin açılması gereken önemli bir kullanıcı deneyimi unsuru hâlâ mevcut. Bu unsur; kullanıcının belirli bir eylemi kendi adına gerçekleştirme yetkisini başka bir kullanıcıyla kolayca paylaşabildiği, ayrıntılı ve esnek izin yönetimidir. Bu, sıkı güvenlik önlemleri ve gerektiğinde izinleri iptal edebilme imkânıyla kontrollü bir şekilde gerçekleştirilir.

Delegation Toolkit'in çözmeye çalıştığı sorun tam da budur. Ancak ne olduğuna ve nasıl çalıştığına geçmeden önce, Ethereum hesap kullanıcı deneyiminin bu yeni aşamasını yönlendiren iki ERC'ye daha yakından bakalım.

ERC 7710: Akıllı sözleşme delegasyonu

ERC-7710, akıllı sözleşme hesaplarının belirli izinleri diğer Ethereum hesaplarına nasıl devredeceğini standartlaştırmaya yönelik bir öneridir. Delegatörlerin, açık ve uygulanabilir kurallarla delegelere yetki vermesi için ortak bir arayüz sunar.

ERC-7710 ile geliştiriciler, bir hesabın belirli koşullar altında (harcama limitleri, zaman kısıtlamaları veya göreve özgü izinler gibi) başka bir hesabın kendi adına hareket etmesine güvenli biçimde izin verdiği sistemler oluşturabilir. Tüm bunlar, güvenli ve öngörülebilir bir delegasyon akışı aracılığıyla yönetilir.

Peki bu bağlamda "delegasyon" ne anlama geliyor?

Genel bir bakış açısıyla, hesap sahipliğini hesap yürütmesinden ayırmakla ilgilidir. Bir delegatör, varlıkların veya mantığın sahibi olmaya devam ederken tam kontrolden vazgeçmeksizin belirli yetkileri geçici ya da kalıcı olarak başkasına devredebilir.

Ağ perspektifinden bakıldığında ERC-7710, izinlerin hesaplar arasında nasıl aktarıldığına dair netlik ve birleştirilebilirlik sağlar. Her uygulamanın kendi delegasyon mantığını geliştirmesi yerine artık sözleşmelerin ve araçların üzerine inşa edebileceği ortak bir temel mevcuttur.

ERC 7715: Cüzdanlardan izin talep etme

ERC-7715, dapp'lerin kullanıcı cüzdanlarından izin talep etme sürecini kolaylaştırmaya yönelik bir öneridir. Her etkileşim için tekrarlanan onaylar gerektirmeksizin, dapp'lerin kullanıcının hesabına açıkça kapsamlandırılmış ve önceden onaylanmış erişim talep etmesine olanak tanıyan izinli bir model sunar.

Bugün tipik etkileşim akışı oldukça hantal: Bir dapp işlem göndermek veya bir sözleşmeyle etkileşime geçmek istediğinde cüzdan, kullanıcıdan her seferinde onay ister. Bir dapp'in neler yapabileceğine dair limit, süre veya kapsam belirtmenin bir yolu yok; kullanıcıların bu onayları daha sonra görüntülemesi ya da iptal etmesi için de standart bir yöntem bulunmuyor.

ERC-7715 bunu değiştiriyor. Bir dapp'in belirli yetenekleri önceden talep etmesine olanak tanıyan yeni bir yöntem olan wallet_grantPermissions'ı sunuyor. Örneğin, önümüzdeki bir saat içinde 10 USDC harcama izni veya sonraki birkaç oturum boyunca tek bir akıllı sözleşmeyle etkileşim izni talep edebilir. Kullanıcı bunu önceden inceler ve tam bir netlikle onaylar ya da reddeder.

Dapp perspektifinden bakıldığında bu, kullanıcı katılımını kolaylaştırır ve kullanıcıyı sürekli kesintiye uğratmayan oturum tabanlı veya otomatik deneyimlere olanak tanır. Cüzdanlar açısından ise izinleri yönetmek ve nelerin verildiğini takip etmek için temiz ve denetlenebilir bir yapı sunar. Kullanıcılar için daha iyi görünürlük, daha fazla kontrol ve güvenlikten ödün vermeksizin daha az can sıkıcı açılır pencere anlamına gelir.

Peki geliştiriciler bu standartlarla neler inşa edebilir?

ERC-7710 ve ERC-7715'i birleştirerek kullanıma açılabilecek bazı özellikler şunlardır:

  • Çoğu fonları güvenli biçimde çevrimdışı tutarken, ERC-7710 aracılığıyla daha sık kullanılan bir cüzdana sabit bir ödenek devrederek güvenli bir cüzdandan günlük harcama limitleri belirleyin.

  • Önceden kapsamlandırılmış delegasyonlar aracılığıyla sınırlı izinleri otomatik olarak vererek, kullanıcıların önceden cüzdan kurulumu veya işlem onayı olmadan mint etme ya da ödül talep etme gibi işlemleri gerçekleştirmesini sağlayarak kullanıcı katılımını kolaylaştırın.

  • ERC-7710 aracılığıyla sınırlı yürütme izinleri atayarak ve ERC-7715'in cüzdanınız üzerinden bu izinleri onaylamayı kolaylaştırmasıyla yapay zeka ajanlarının sizin adınıza işlem yapmasına izin verin.

  • ERC-7710 delegasyonundan yararlanan bir SCA'ya sponsorluk hakları atayarak bir dapp'in kullanıcıların gas ücretlerini karşılamasına izin verin; böylece belirli işlemler kullanıcının ETH'ye ihtiyaç duymadan gerçekleşebilir.

  • ERC-7710'u kullanarak ne yapabileceğini sıkı biçimde kapsamlandıran ve herhangi bir standart ERC-20 token ile uyumluluğu sağlayan, sizin adınıza approve(0) çağrısı yapan bir yardımcı sözleşmeye izin devrederek token onaylarını güvenle iptal edin.

Ve çok daha fazlası.

Delegation Toolkit'i tanımlamak

Delegation Toolkit'i tanımlamanın en kolay yolu, iki ana paketten oluşan bir araç seti olarak açıklamaktır:

  1. Delegation Core SDK – Geliştiricilerin ERC-4337 uyumlu akıllı sözleşme hesapları (delegatör hesapları) oluşturmasına olanak tanıyan ve ERC-4337 hesap soyutlamasının sunduğu tüm özelliklerden yararlanan bir paket.

  2. Delegation Framework – Akıllı sözleşme hesaplarının ERC-7710 standardı aracılığıyla diğer Ethereum hesaplarına izin devretmesine ve web sitelerinin, dapp'lerin ya da nihayetinde her türlü uygulamanın ERC-7715 aracılığıyla hesabınızdan izin talep etmesine olanak tanıyan bir sistem (yakında).

Kısaca ifade etmek gerekirse, Delegation Toolkit; ERC-4337 akıllı sözleşme hesaplarını (SCA) destekleyen, diğer SCA'lara veya EOA'lara izin devreden ve dapp'lerin bu izinleri talep etmesini sağlayan dapp'ler inşa etmeyi mümkün kılar. Bu, ister akıllı hesaplardan ister Pectra yükseltmesinin ardından EOA'lardan olsun geçerlidir.

Akıllı sözleşme hesaplarının nasıl çalıştığına aşinaysanız, Delegation Core VIEM paketinden ne bekleyeceğinizi zaten biliyorsunuzdur. Ancak bilmiyorsanız, daha ayrıntılı bilgi için resmi dokümanlara göz atabilirsiniz. Bu makalenin geri kalanında Delegation Framework'ün kendisine odaklanacak ve onu bu kadar güçlü kılan temel ilkelerin bazılarını öne çıkaracağız.

Zincir dışı delegasyon

Delegasyonların geçerli olabilmesi için zincir üzerinde bulunması gerekmez. A Hesabı, B Hesabı için bir delegasyon imzaladıktan sonra bu delegasyon herhangi bir yerde saklanabilir; IPFS'te, tarayıcı önbelleğinde, bulut depolamada veya yerel olarak indirilerek. Çünkü kriptografik olarak güvenlidir ve yalnızca amaçlanan delege tarafından kullanılabilir. Bu durum, sistemin tamamını daha ölçeklenebilir ve esnek hale getirir.

Örneğin B, gerektiğinde imzalı delegasyonu alabilir ve zincir üzerinde depolama ya da önceden gas maliyeti gerektirmeksizin bir işlemde kullanabilir.

İptal edilebilir izinler

Delegasyonlar kalıcı değildir. A Hesabı gibi orijinal delegatör, geçişli delegasyon yoluyla aktarılmış olsa bile verdiği herhangi bir aktif delegasyonu iptal edebilir (aşağıdaki Geçişli veya zincirlenmiş delegasyon bölümüne bakın). İptal edildikten sonra delegasyon yöneticisi, buna bağlı tüm alt delegasyonlar dahil olmak üzere onu kullanma girişimlerini reddedecektir. Bu, güvenlik açısından kritik öneme sahiptir.

A Hesabı bir güvenlik açığından şüphelenirse veya izinleri güncellemek isterse, ilgili herkesi tek tek bulmak zorunda kalmadan erişimi anında kesebilir ve tüm güven zincirini geçersiz kılabilir. Bu, istediğiniz zaman fişi çekebilme imkânına sahip olmak gibidir.

Kapsamlandırılmış delegasyonlar

Delegation Toolkit ile delegasyonlar genellikle belirli bir delegeye özgü biçimde kapsamlandırılır. Bu, A Hesabı'nın B Hesabı'na bir delegasyon imzalaması durumunda yalnızca B'nin bunu kullanabileceği anlamına gelir. Başka biri imzalı delegasyonu ele geçirse bile, kriptografik olarak B'ye bağlı olduğundan bu kişi için işe yaramaz.

Bununla birlikte, açık delegasyonlar için de destek mevcuttur. Bunlar, önceden bir delege belirtmeyen ve herhangi bir hesap tarafından kullanılabilen delegasyonlardır. Açık delegasyonlar, delegenin kim olacağını henüz bilmediğinizde kullanışlıdır; ancak kötüye kullanımı önlemek için dikkatli kullanılmalıdır. Delege alanını özel sabit ANY_BENEFICIARY (0x0000000000000000000000000000000000000a11) olarak ayarlayarak bir tane oluşturabilirsiniz.

B Hesabı daha sonra kapsamlandırılmış bir izni C Hesabı'na devretmek isterse, B'den C'ye açıkça yeni bir delegasyon oluşturması gerekir. Bu, açık veya geçişli akışlar kullanılırken bile izin sınırlarının net ve kasıtlı kalmasını sağlar.

Kısıtlamalar (Caveats)

Kısıtlamalar, bir delegasyonun nasıl kullanılabileceğini tanımlayan kurallardır. Bunları delegatörün bir delegasyona ekleyebileceği özel koşullar olarak düşünebilirsiniz. Örneğin A Hesabı, B Hesabı'na delegasyon verirken B'nin yalnızca 1 ETH'ye kadar transfer yapabileceğini veya yalnızca önümüzdeki 24 saat içinde belirli bir sözleşmeyle etkileşime girebileceğini belirten bir kısıtlama ekleyebilir.

Kısıtlamalar, herhangi bir eylem gerçekleştirilmeden önce kuralların uygulandığını doğrulayan özel caveat enforcer sözleşmeleri kullanılarak çalışma zamanında uygulanır. Dolayısıyla B'nin hareket etme hakkı olsa bile, A tarafından belirlenen iyi tanımlanmış bir çerçeve içinde faaliyet göstermektedir. Desteklenen kısıtlamaların tam listesi için buraya bakın veya kendi özel kısıtlamanızı nasıl oluşturacağınızı öğrenin.

Geçişli veya zincirlenmiş delegasyon

Delegation Framework'ün daha güçlü özelliklerinden biri, delegasyonun tek bir devir işlemiyle sınırlı kalmamasıdır. Geçişli delegasyon sayesinde izin alan bir hesap, örneğin B Hesabı, bu yetkinin tamamını veya bir kısmını başka bir hesaba devredebilir ve böylece tek bir hesaptan kaynaklanan bir delegasyon zinciri oluşturulabilir.

Zincirdeki her halka kriptografik olarak imzalanmış ve kendi kısıtlamalarıyla kapsamlandırılmıştır; bu da izinlerin her seviyede daraltılabileceği veya yeniden tanımlanabileceği anlamına gelir. Başka bir deyişle, bu alt delegasyonlar daha katı kısıtlamalar veya sınırlı yeteneklerle orijinalin bir alt kümesi olabilir.

Önemli olan şu ki, orijinal delegatör tam kontrolü elinde bulundurmaya devam eder ve başlangıç delegasyonunu istediği zaman iptal edebilir; bu da zincirdeki tüm alt delegasyonları otomatik olarak geçersiz kılar. Böylece DAO'lar ve paylaşılan cüzdanlar gibi karmaşık izin yapıları için ideal olan esnek ama güvenli bir güven zinciri oluşturulur.

Sırada ne var?

Delegation Toolkit, dapp'lerinize daha güvenli, daha akıllı ve daha esnek izin sistemleri getirmeniz için gereken araçları sunuyor. İster delegasyonlu harcama, ister gas sponsorluğu, ister otomatik iş akışları, ister sorunsuz kullanıcı katılımı arıyor olun; artık sıfırdan başlamak zorunda kalmadan bunların hepsi mümkün.

Sonraki yazılarda uygulamalı çalışmaya başlayacağız; delegasyonun pratikte nasıl işlediğine dair somut bir örnek olan "Arkadaşını Davet Et" özelliğini oluşturmaya yönelik bir eğitimle başlayacağız. Bugün uygulayabileceğiniz daha fazla özelliği ele alacağımız serinin geri kalanı için bizi takip etmeye devam edin.

Bu fikirleri daha fazla keşfetmek için sabırsızlanıyorsanız, Delegation Toolkit ile diğer geliştiricilerle birlikte bir şeyler inşa etme fırsatı bulacağınız yaklaşan Nisan Gator Hackathon'unu takip edin.

Yapay zeka tarafından çevrildi. Hatalar içerebilir. Lütfen her zaman bilgileri doğrulayın.

Çeviriyi değerlendir

Bu makalenin yazarı:

  • Kingsley Okonkwo

    Sertifikalı bir Ethereum Blockchain geliştiricisi olan Kingsley, Consensys'te teknik yazar olarak görev yapmakta olup özellikle geliştirici araçlarına odaklanmaktadır. Consensys'e katılmadan önce Kingsley, Gigster ve Braintrust dahil olmak üzere çeşitli platformlarda serbest back-end geliştirici olarak çalışmıştır. 5 yıllık yazılım geliştirme deneyimiyle JavaScript (Node.js ve React), GoLang, SQL ve Docker gibi araçlarda uzmandır. Kingsley, web3 teknolojisinin en güncel olanaklarını kullanarak adım adım eğitimler ve nasıl yapılır kılavuzları hazırlamada öne çıkmakta; bu sayede diğer geliştiricilerin daha iyi dapp'ler oluşturmasına yardımcı olmaktadır. Şu anda Dubai'de yaşayan Kingsley, boş zamanlarında basketbol ve futbol oynamaktan keyif almaktadır.

    Tüm makaleleri oku