
ERC-7715 izinleriyle geliştirme için hacker rehberi

Bu kılavuz, MetaMask Delegation Toolkit'teki deneysel ERC-7715 eylemlerine kapsamlı bir genel bakış sunmaktadır. Bu yenilikçi araç, dapp'lerin token transferleri gibi belirli eylemler için kullanıcı izinleri talep etmesine ve yönetmesine olanak tanır.
Bu sayede abonelikler ve otomatik ödemeler gibi heyecan verici yeni kullanım senaryoları mümkün hale gelirken kullanıcı deneyimi de geliştirilmektedir. Temel kavramları inceleyecek, geliştirme ortamınızı kurmanız için size rehberlik edecek ve Gator SDK'dan yararlanan bir dapp oluşturma sürecini adım adım ele alacağız. Bu kılavuz, blokzincir etkileşimleri için Viem kullanmaktadır.
ERC-7715, dapp'lerin kullanıcı cüzdanlarıyla nasıl etkileşime girdiğine dair yeni bir paradigma sunmaktadır. Kullanıcıların her işlemi manuel olarak onaylamasını gerektirmek yerine, dapp'ler önceden tanımlanmış sınırlar dahilinde kullanıcı adına belirli eylemleri gerçekleştirme izni talep edebilir.
Oturum hesabı: Kullanıcı adına hareket etme izni verilen dapp'in hesabı (bir EOA veya akıllı sözleşme olabilir).
Kullanıcı cüzdanı: Oturum hesabına izin veren kullanıcının MetaMask cüzdanı.
İzinler: Bir dapp'in gerçekleştirmeye yetkili olduğu belirli eylemler. Gator SDK şu anda native-token-stream'i desteklemektedir.
Gator akıllı hesabı: Gator SDK aracılığıyla verilen izinleri yönetmek amacıyla kullanıcının MetaMask Snap'i içinde oluşturulan bir akıllı hesap.
Delegasyon: İzin tabanlı işlemleri mümkün kılan temel mekanizma. Bir kullanıcı izin verdiğinde, kullanıcının Gator Akıllı Hesabından dapp'in oturum hesabına bir delegasyon oluşturulur.
Bu, zincir dışı bir yetkilendirme oluşturarak dapp'in, kullanıcının her işlemi imzalamasını gerektirmeden tanımlanmış koşullar altında belirli eylemleri gerçekleştirmesine olanak tanır. Kurallarla belirlenmiş düzenli bir ödenek oluşturmak gibidir.
ERC-7715 (cüzdan izin talepleri): Dapp'lerin kullanıcı cüzdanlarından izin talep etme standardı. https://eip.tools/eip/7715
ERC-7710 (akıllı sözleşme delegasyonu): Akıllı sözleşmelerin diğer hesaplara yetki devredebilmesinin standardı.https://eip.tools/eip/7710
MetaMask Snaps: Geliştiricilerin MetaMask'ın işlevselliğini genişletmesine olanak tanıyan bir sistem. Snap'ler özünde MetaMask'ın işlevselliğini genişletebilen eklentilerdir; yeni blokzincirleri, yeni işlem türlerini ve Gator SDK söz konusu olduğunda gelişmiş izin yönetimini desteklemesine imkân tanır. Gator SDK iki Snap'e dayanır:- Permission kernel snap: Belirli izin sağlayıcı Snap'e (bizim durumumuzda Gator Permission Snap) yönlendirici olarak işlev görür.
Gator permissions snap: Kullanıcının Gator Akıllı Hesabını oluşturur ve yönetir. Bu Snap, kullanıcıya İzin Seçici arayüzünü sunar ve izinleri düzenlemelerine, onaylamalarına veya reddetmelerine olanak tanır.
- ERC-4337: Daha esnek akıllı hesaplar ve işlem yönetimini mümkün kılan Hesap Soyutlama standardı; genellikle Gator SDK ile birlikte kullanılır. https://eip.tools/eip/4337
- Bundler: Birden fazla kullanıcı işlemini (transaction) tek bir işlemde bir araya getirerek gas kullanımını optimize eden bir hizmet.
Paymaster (isteğe bağlı): İşlemlerin gas ücretlerini karşılayabilen ve kullanıcı için gassız işlemler yapılmasına olanak tanıyan bir akıllı sözleşme.
Gator SDK, MetaMask Snaps, ERC-7715 ve ERC-7710 ile birlikte izin tabanlı bir iş akışı sağlar:
İzin talebi: Oturum hesabı olarak hareket eden dapp, bir izin talebi başlatır. Bu işlem, ERC-7715'te standartlaştırılmış wallet_grantPermissions yöntemi kullanılarak gerçekleştirilir. Dapp, izin türünü (ör. native-token-stream), hedefi (kendi adresi) ve belirli parametreleri (ör. miktar) belirtir.
Kullanıcı yetkilendirmesi: MetaMask Flask, izin talebini kullanıcıya sunar. Gerekli Snap'ler henüz yüklü değilse MetaMask Flask, bu aşamada kullanıcıdan bunları yüklemesini ister. Ardından kullanıcıya, dapp'in ne talep ettiğine dair açık ve anlaşılır bir açıklama sunulur.
Kullanıcı talebi onaylayabilir veya reddedebilir. Permission Kernel Snap, bu etkileşimde kritik bir rol oynayarak kullanıcının talep edilen izinleri anlamasını sağlar.
Gator akıllı hesabı oluşturma: Kullanıcı izni onaylarsa Gator Permissions Snap devreye girer. Bu Akıllı Hesap, devredilen yetkinin kaynağı olacaktır.
Gator hesabını fonlama: Kullanıcı, bu Gator Akıllı Hesabını devredilen eylemleri karşılayacak yeterli fonla doldurmaktan sorumludur. Örneğin izin native-token-stream içinse kullanıcının Gator Akıllı Hesabına ilgili yerel token'ı yatırması gerekir.
Delegasyon oluşturma: Bu kritik bir adımdır. Kullanıcının Gator Akıllı Hesabı ile dapp'in oturum hesabı arasındaki bağlantıyı kuran bir delegasyon oluşturulur. ERC-7710 tarafından yönetilen bu delegasyon, dapp'e kullanıcı adına hareket etme yetkisi verir; ancak yalnızca verilen iznin sınırları dahilinde. Delegasyon şunları belirtir:1. Dapp'in gerçekleştirebileceği eylemler (ör. yerel token transferi).
Koşullar veya kısıtlamalar (çekinceler), örneğin:1. Transfer başına maksimum miktar
Transfer sıklığı
Son kullanma tarihi
İzin kullanımı (devredilen eylem): Dapp'in verilen iznin kapsamında hareket etmesi gerektiğinde delegasyonu "kullanır". Bu, dapp'in delegasyonda belirlenen kurallara uyan bir işlem (veya ERC-4337 kullanılıyorsa Kullanıcı İşlemi) oluşturmasını içerir.
Dapp daha sonra bu işlemi (veya ERC-4337 kullanılıyorsa Kullanıcı İşlemini) geçerli delegasyonun kanıtını sunarak gönderir.
ERC-7715 eylemleri için gerekli Snap'lerin şu anda yalnızca Sepolia'da çalıştığını lütfen unutmayın. ERC-7715 track'i üzerinde çalışıyorsanız Sepolia test ağını kullandığınızdan emin olun. Delegation Toolkit'teki diğer özellikler için burada listelenen test ağlarından herhangi birini kullanabilirsiniz.
Node.js: Sisteminizde Node.js'in yüklü olduğundan emin olun.
MetaMask Flask: Geliştirici odaklı bir MetaMask sürümü olan MetaMask Flask'ı yükleyin. Resmi MetaMask sitesinden indirin. Önemli: Flask için ayrı bir tarayıcı profili kullanın. Aynı tarayıcıyı normal MetaMask cüzdanınızla kullanıyorsanız lütfen onu devre dışı bırakın.
MetaMask Snaps: Gator SDK için gerekli Snap'ler (Permission Kernel Snap ve Gator Permissions Snap) manuel olarak yüklenebilir ya da bir dapp ilk kez izin talep ettiğinde MetaMask Flask kullanıcıdan bunları yüklemesini ister.
ERC-4337 bundler: Oturum hesabı bir ERC-4337 cüzdanıysa bu gereklidir. Bir ERC-4337 cüzdanından kullanıcı işlemleri göndermek için bir bundler'a erişmeniz gerekir. Pimlico iyi bir seçenektir. Belgelerine bakın.
Paymaster (isteğe bağlı): Gas ücretlerini sponsor etmek istiyorsanız bir paymaster'a ihtiyacınız olacaktır. Pimlico ayrıca paymaster hizmetleri de sunmaktadır.
Node.js'i yükleyin: Resmi web sitesinden Node.js'i indirip yükleyin.
MetaMask Flask'ı yükleyin:- Yeni bir tarayıcı profili açın.
MetaMask web sitesindeki MetaMask Flask indirme sayfasına gidin.
MetaMask Flask uzantısını indirip yükleyin.
Bir bundler kurun:- Pimlico kullanıyorsanız platformlarında bir hesap oluşturun.
Pimlico'dan bundler API anahtarınızı alın.
Pimlico bundler'ına kullanıcı işlemlerinin nasıl gönderileceğini öğrenin.
Bir paymaster kurun (İsteğe bağlı):- Pimlico kullanıyorsanız paymaster hizmetlerini de kullanabilirsiniz. Dapp'inizi paymaster'ı kullanacak şekilde yapılandırın.
Gator ERC-7715 eylemleriyle başlamanın en kolay yolu, ERC-7715 İzinlerini denemek için Experimental: Basic Gator app adlı bir şablona sahip create-gator-app CLI'dır. Bu şablon, gerekli tüm temel kütüphaneler ve kod parçacıkları yüklenmiş olarak gelir.
CLI'ı şu şekilde çalıştırabilirsiniz:
npx create-gator-app@latestDaha fazla önemli kod parçacığı için lütfen belgelerin şu bölümlerine başvurun:
İzin verme: https://docs.gator.metamask.io/experimental/erc-7715
İzin kullanma: https://docs.gator.metamask.io/experimental/erc-7710
Oturum hesabı olarak Gator hesabı kullanmak istiyorsanız Gator hesabı oluşturma: https://docs.gator.metamask.io/how-to/create-delegator-account
Resmi Belgeler (ERC-7715 eylemleri için Deneysel paketlere göz atın): https://docs.gator.metamask.io/
create-gator-app CLI: https://hackmd.io/@x2AtdNlxSjuUiT4xerbPSg/Byy9hijCJe
Yardım alın - Consensys Discord kanalı, mm-dtk kanalını arayın: Buradan katılın
MetaMask Developer Chat Telegram grubu: Buradan katılın
Yapay zeka tarafından çevrildi. Hatalar içerebilir. Lütfen her zaman bilgileri doğrulayın.