Çoklu Çözümleyici Snap: Çoklu çözümleyici sorununu çözme

Bir ETHLisbon Hackathon kazananı

6 dk okuma
Çoklu Çözümleyici Snap: Çoklu çözümleyici sorununu çözme

MetaMask Snaps, MetaMask'ı dünyanın en genişletilebilir cüzdanı haline getirme yol haritasıdır. Bir geliştirici olarak, özelliklerinizi ve API'lerinizi tamamen yeni yollarla MetaMask'a entegre edebilirsiniz. Web3 geliştiricileri bu büyümenin temel taşıdır ve bu seri, bugün inşa edilen yenilikçi MetaMask Snaps'leri tanıtmayı amaçlamaktadır.

Multi-resolver Snap

Snap Repo: https://github.com/idriss-crypto/multiresolver

Multi-resolver snap'i neden geliştirdiniz?

Web3'teki kullanıcı deneyimi uzun süredir göz ardı edilmektedir. İlerleme kaydettiğimiz alanlardan biri hesap soyutlamadır. Neredeyse her hafta yeni bir isimlendirme servisi ortaya çıkıyor gibi görünüyor. Bu servislerin amacı, bu alanda birbirimizle etkileşim kurma şeklimizi basitleştirmektir: İsimler, cüzdan adreslerine kıyasla daha tanıdık gelir ve bu nedenle kimlik ile itibar sistemleri için bir temel katman oluşturur.

Bunun yanı sıra, özgün (isimlendirme) standartları projelerin popülerliğine katkıda bulunabilir. Örneğin, bir projeye "x" diyelim. Bu projenin önerdiği yeni isimlendirme standardı x-domains veya x-names olarak adlandırılabilir. Projedeki başarı, isimlendirme servisinin büyümesine otomatik olarak katkı sağlarken; isimlendirme servisindeki başarı da projeye aynı şekilde yansır — bu bir kazan-kazan durumudur. Şu anda ise parçalı bir isim alanı tablosuyla karşı karşıyayız. Elbette her isimlendirme servisini kullanmaya çalışan kişiler var; bu durum, bazı (alan adı tabanlı) isimlendirme servislerindeki sınırlı isim alanında isimler etrafında bir yarışa yol açmaktadır. Diğer isimlendirme servisleri ise bu kimlikler etrafındaki potansiyel piyasaları ortadan kaldırmak için insanların zaten sahip olduğu e-posta, telefon numarası veya daha genel sosyal medya tanımlayıcıları (Twitter kullanıcı adı, Instagram tanımlayıcısı) gibi daha tanıdık ifadeler kullanır. Çoğu kişi, farklı isimlendirme servislerinden bir, belki iki tanımlayıcıyla yetinmektedir. Seçeneklerin çeşitliliği nedeniyle geliştiricilerin uygulamalarına birden fazla isimlendirme servisi çözümleyicisi entegre etmesi gerekmektedir.

Yeni bir isimlendirme servisi pazarın önemli bir bölümünü ele geçirdiğinde, o isimlendirme servisinin kullanıcılarını dışlamak için uygulamaya da entegre edilmesi gerekir. Kullanıcı açısından bakıldığında, benzer işlevselliğe sahip ve tercih ettiği isimlendirme servisini destekleyen alternatif uygulamalar aramak oldukça can sıkıcıdır. İnsanların bildikleri şeyleri kullanmalarına izin verip aynı zamanda geliştiricilerin mümkün olan en iyi uygulamayı oluşturmaya odaklanmalarına yardımcı olan bir çözüm sunmak neden mümkün olmasın?

Multi-resolver Snap tam olarak bunu yapmaktadır.

Teknik uygulamayı bize anlatır mısınız?

Özet

Snap, MetaMask Flask 10.20 için geliştirilmiştir. Mevcut sürüm endowment:network-access ve snap_confirm izinlerini kullanmaktadır. Birincisi, çözümlenmiş adresleri talep etmek ve Twitter ID'lerini Twitter kullanıcı adlarına çevirmek için ön sürümde kullanılmaktadır. İkincisi ise bir işlem oluşturulmadan önce kullanıcıya elde edilen adresi vurgulayan bir onay ekranı göstermektedir.

Şu anda desteklenen çözümleyiciler IDriss ve ENS'tir. Snap, localhost üzerinde çalışmaktadır.

dApp tarafından entegrasyon

Bir geliştiricinin bu Snap'i ve dolayısıyla mevcut tüm çözümleyicileri entegre edebilmesi için önce bir cüzdana ve snap'e bağlanması gerekmektedir:

const connectSnap = async (
  snapId: string = defaultSnapOrigin,
  params: Record<'version' | string, unknown> = {},
) => {
  await window.ethereum.request({
    method: 'wallet_enable',
    params: [
      {
        wallet_snap: {
          [snapId]: {
            ...params,
          },
        },
      },
    ],
  });
};
Kopyala

Çağırma işlemi resolve_send metodu aracılığıyla gerçekleşir ve şu şekilde çağrılabilir:

const resolveInput = async (id_?: string) => {
  return await window.ethereum.request({
    method: 'wallet_invokeSnap',
    params: [
      defaultSnapOrigin,
      {
        method: 'resolve_send',
        identifier: id_,
      },
    ],
  });
};
Kopyala

Bu işlem çözümlenmiş adresi döndürür. Burada id_, kullanıcının gönderme alanına girdiği tanımlayıcıdır.

Yeni multiChainProvider kullanıldığında, snap'e bağlanmak, gerekli izinlerle cüzdana bağlanmak kadar basittir:

import { MultiChainProvider } from "@metamask/multichain-provider";

const provider = new MultiChainProvider();
const { approval } = await provider.connect({
  requiredNamespaces: {
    eip155: {
      chains: [chains],
      methods: [
        permissions
      ],
    },
  },
});
const session = await approval();
Kopyala

Yukarıda bahsedilen resolve_send metodu, eth_sendTransaction olarak yeniden adlandırılabilir; bu sayede uygulamalar herhangi bir entegrasyon değişikliğine gerek kalmadan Multi-resolver Snap'i kullanabilir. eth_sendTransaction her çağrıldığında, Snap devreye girer ve işlemi oluşturmadan önce girdiyi çözümler. Uygulamalar, bir kullanıcı girdisi bir adresle eşleşmediğinde hata fırlatmak yerine String türünde girdilere izin vermelidir. Geri kalanını snap halleder!

Bunu uygulasaydınız sonraki adımlar ne olurdu?

Bir sonraki adım olarak bu snap, diğer geliştiricilerin hata avlamasını, kodu geliştirmesini ve hatta kendi özel çözümleyicilerini eklemesini teşvik etmek amacıyla açık kaynaklı hale getirilecektir. Açık kaynak yapmak, bu Snap'in gerçek potansiyelini ortaya çıkaracaktır: Ortaya çıkan tüm isimlendirme servislerini tek bir geliştirici veya kuruluşun entegre etmesi gerekmeyecektir. Bir contribute.md dosyası bu süreci desteklemektedir. Bunun yanı sıra, MetaMask Snaps ekibinin ilerleyen geliştirmeleri de takip edilecektir.

Özellikle iki şey bu snap'e büyük fayda sağlayacaktır:

  1. Bir işlem tetiklenmeden önce ek snap_confirm çağrısını kaldırmak amacıyla hesaptan hesaba transferler için endowment:transaction-insight izni ve

  2. MetaMask'a UI enjeksiyonları. Amaç, snap'i gönderme alanına entegre etmektir; böylece kullanıcılar bir web sitesine bağlanmadan multi-resolver'ı kullanabilir.

Son olarak, IDriss çözümleyicisi ile tam entegrasyon hedeflenmektedir. Tam entegrasyon, kullanıcıların IDriss defterine kayıtlı olmalarına gerek kalmadan herhangi bir e-posta, telefon numarası ve Twitter kullanıcı adına kripto para ve NFT göndermesine olanak tanır.

Kendiniz ve ekibiniz hakkında biraz bilgi verir misiniz?

Adım Lennard ve 2017'den bu yana blockchain alanına ilgi duyuyorum. Bir yılı aşkın süredir e-postaların, telefon numaralarının ve Twitter kullanıcı adlarının cüzdan adreslerine merkeziyetsiz eşlemesini sağlayan IDriss'i kuruyor ve geliştiriyorum. Genel olarak daha kullanılabilir bir web3'e yönelik araçlar geliştirmeye odaklanıyorum; bu snap'i geliştirmem de bu motivasyondan kaynaklandı.

MetaMask Snaps ile ilk ne zaman tanıştınız ve deneyiminiz nasıldı?

Snaps ekibi bu yıl (2022) konferanslarda oldukça aktif, bu yüzden onlarla birkaç kez karşılaştım. Kod tabanıyla ilk etkileşimim, Paris'teki EthCC 2022'deki sunumlarından birinin ardından oldu. Özellikler hâlâ sınırlı olsa da dokümantasyon zaten umut vericiydi ve MetaMask Snaps'in geleceği konusunda çok iyimserim.

MetaMask Snaps'i diğer cüzdanlardan farklı kılan nedir?

Dış katkıda bulunanları cüzdanların geliştirilmesine dahil etmeye yönelik benzer bir yaklaşım daha önce görmedim. Bazı diğer cüzdanlar kodlarını açık kaynaklı hale getirmiş olsa da Snaps, geliştiricilerin MetaMask'ın işlevselliğini doğrudan genişletmesine olanak tanır. Bu yaklaşımın daha iyi sürdürülebilir olması nedeniyle diğer projeler tarafından da benimseneceğinden eminim.

MetaMask ile Snaps geliştirmek sizin ve ekibiniz için nasıl bir deneyim?

Bu snap'i bir hackathon sürecinde geliştirmek harika bir fırsattı. MetaMask Snaps ekibinin orada bulunması, sorular ortaya çıktığında çok yardımcı oldu. Hâlâ eksik olan şeylerden biri MetaMask'ın kullanıcı arayüzünü özelleştirebilme imkânıdır. Bunun yanı sıra, bazı bağımlılık sorunlarının hata ayıklaması oldukça zor olmakta ve bu durum geliştirme süresinin büyük bölümünü almaktadır.

MetaMask Snaps sizin için ne anlam ifade ediyor?

Snaps, geliştiricilere projelerini veya fikirlerini izinsiz bir şekilde doğrudan MetaMask'a entegre edebilecekleri bir oyun alanı sunmaktadır. Benim için bu, herhangi bir projenin büyümesinin hızlandırılabileceği anlamına gelir; çünkü kullanıcılar artık sahip oldukları araçları (cüzdanları) kullanarak daha fazla avantajdan yararlanabilir.

MetaMask Snaps ile Web3 alanı için ne gibi fırsatlar görüyorsunuz?

Snaps, işlem içgörüleri aracılığıyla dolandırıcılığın önlenmesine yardımcı olabilir, keyring'ler ile daha kapsayıcı bir ağ deneyimi oluşturabilir ve özel çözümleyicilerle UI geliştirmelerini bir araya getirerek daha kullanıcı dostu bir web3 deneyimi sunabilir. Tüm bunlar bir arada daha fazla insanı bu alana çekecektir.

MetaMask Snaps'i denemek isteyen geliştiricilere vermek istediğiniz tavsiyeler var mı?

Hackathon'lara gidin! Ekiple doğrudan etkileşim kurmanın ve anında geri bildirim almanın en iyi yolu budur.

MetaMask Snaps ile Geliştirme

MetaMask Snaps'e başlamak için:

  1. Geliştirici belgelerine göz atın

  2. MetaMask Flask'ı yükleyin

  3. Bir MetaMask Snaps kılavuzuna göz atın

  4. Twitter, GitHub tartışmaları ve Discord üzerinden bizimle bağlantıda kalın

Yakınınızdaki bir sonraki hackathon'da ekibimizi takip edin! Mutlu BUIDLing ⚒️

Sorumluluk Reddi: MetaMask Snaps, genel olarak Consensys Software dışındaki üçüncü taraflarca geliştirilmektedir. Üçüncü taraflarca geliştirilen MetaMask Snaps'lerin kullanımı tamamen sizin takdirinize ve riskinize bağlıdır; bu tür faaliyetlerden kaynaklanabilecek herhangi bir kayıp veya zarardan yalnızca siz sorumlu olacaksınız. Consensys, üçüncü taraflarca geliştirilen MetaMask Snaps'ler için sözlü veya yazılı, açık veya zımni hiçbir garanti vermez ve üçüncü taraflarca geliştirilen Snaps'ler için tüm sorumluluktan feragat eder. Blockchain tabanlı yazılımların kullanımı risk taşır ve MetaMask Snaps'i kullanırken bu riskleri tamamen üstlenmiş olursunuz.

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

Çeviriyi değerlendir
  • MetaMask
    MetaMask

    Consensys tarafından geliştirilen, öncü kendi saklama yetkili kripto cüzdanı ve kriptoya açılan kapı.

    Tüm makaleleri oku