
MetaMask ile Next.js'te 'Cüzdan Bağla' düğmesini nasıl entegre edeceğinizi öğrenin. Bu eğitim kurulum, MetaMask SDK kullanımı ve ShadcnUI ile arayüz oluşturmayı kapsar...

Web3'te cüzdan, kullanıcıların blockchain ağlarıyla etkileşime girmesini sağlayan dijital bir uygulamayı ifade eder. Cüzdanlar, kullanıcılar ile blockchain'in merkeziyetsiz dünyası arasında köprü görevi görür. Kimlik doğrulama için e-posta ve şifre kombinasyonları ya da OAuth hizmetleri kullanan geleneksel web uygulamalarının aksine, web3 uygulamaları kullanıcıları bir cüzdanın ve ilişkili private key'lerin sahipliğine göre doğrular. "Cüzdan Bağla" düğmesi bu kimlik doğrulama sürecini başlatır.
Bu eğitimde, MetaMask cüzdanıyla kimlik doğrulama sürecini başlatan bir "Cüzdan Bağla" düğmesini Next.js uygulamasına nasıl ekleyeceğimizi öğreneceğiz.
Next.js ve React'e aşinalık.
Node.js ve npm/yarn kurulu olmalı.
Tarayıcınızda MetaMask eklentisi kurulu olmalı.
Bunlar bu eğitim için bazı ön koşullar olsa da öğrenmenin en iyi yolu başlayıp yol boyunca öğrenmektir.
Bir Next.js projesi kurmak için makinenizde Node.js'in kurulu olması gerekir. Node.js kurulduktan sonra terminalinizi açıp aşağıdaki komutu çalıştırarak yeni bir Next.js uygulaması oluşturabilirsiniz:
npx create-next-app@latestAşağıdaki yönlendirmeleri göreceğiz:
Bu komut, belirtilen proje adıyla yeni bir klasör oluşturur, başlangıç Next.js yapısını kurar ve gerekli tüm bağımlılıkları yükler. Klasörünüze gidin.
cd next-metamask-templateve npm run dev komutunu çalıştırın; bu komut Next.js uygulamasını geliştirme modunda başlatır. Web tarayıcınızda http://localhost:3000 adresine giderek uygulamanızı görüntüleyebilirsiniz.
Uygulamamıza bir bileşen kütüphanesi ekleyeceğiz. Hemen ShadcnUI kurulumuna geçelim.
npx shadcn-ui@latest initcomponents.json dosyasını yapılandırmak için aşağıdaki yönlendirmeleri göreceğiz:
ShadcnUI bileşen kütüphanesinden bu eğitimde iki bileşen kullanacağız: Button ve Popover.
Ayrıca @metamask/sdk-react kullanacağız; bu konuda daha fazla bilgiyi MetaMask belgelerinden okuyabilirsiniz.
SDK'yı kuralım:
npm i @metamask/sdk-reactNavBar.tsx adında yeni bir bileşen oluşturacak ve "Cüzdan Bağla" düğmesini ile SDK'yı ekleyeceğiz. Bileşenimiz başlangıçta şöyle görünmelidir:
Burada neler yaptığımıza bakalım:
1. useSDK hook'u: Öncelikle odak noktamız, MetaMask SDK'sının işlevlerine erişim sağlayan useSDK hook'udur. Bu hook; MetaMask ile etkileşim için bir SDK nesnesi, cüzdanın bağlı olup olmadığını doğrulamak için bir connected boolean değeri, bağlantı durumunu kontrol etmek için bir connecting boolean değeri ve kullanıcının hesap adresine erişmek için bir account değeri sağlar.
2. Bağlan ve bağlantıyı kes fonksiyonları: Kurulum iki temel fonksiyon içerir: connect ve disconnect. Connect fonksiyonu, SDK'yı kullanarak MetaMask cüzdanıyla bağlantı kurmaya çalışan asenkron bir işlemdir. Başarılı bir bağlantıda useSDK hook'undaki connected ve account değerlerini günceller. Disconnect fonksiyonu ise sdk.terminate() çağrısıyla cüzdanın bağlantısını kesmek için kullanılır.
3. UI öğeleri: Uygulamamız iki UI öğesi içerir: bir button ve bir popover. Bileşenin görünümü bağlantı durumuna göre değişir. Bağlıyken, biçimlendirilmiş hesap adresini ve bağlantıyı kesme seçeneğini gösteren bir Popover bileşeni görüntülenir. Bağlı değilken ise bir "Cüzdan Bağla" düğmesi gösterilir; bu düğme, devam eden bir bağlantı girişimi sırasında devre dışı kalır.
Şimdi NavBar için kodu ekleyelim:
Burada neler yaptığımıza bakalım:
Host değişkeni: Bu değişken, SDK seçeneklerinde kullanılmak üzere mevcut pencerenin host adresini belirler. Tarayıcı ortamında çalışıp çalışmadığını doğrulamak için koşullu bir kontrol içerir.
SDK seçenekleri: Bunlar MetaMask SDK'sının yapılandırma seçenekleridir; loglama ve kurulum kontrolleri için tercihleri ayarlar ve dapp hakkında meta veri içerir.
NavBar bileşeni: NavBar, ana sayfaya bir bağlantı içerir ve ConnectWalletButton bileşenini barındırır. MetaMask SDK'sından gerekli bağlamı sağlamak için ConnectWalletButton'ı, @metamask/sdk-react'ten içe aktarılan MetaMaskProvider bileşeniyle sarar.
Cüzdan İkonu: Cüzdan ikonunu elde etmek için SVG görsellerini React bileşenlerine dönüştüren bir araç olan SVGR'yi kullandık.
Tam cüzdan adresinin NavBar'da çok fazla yer kaplamasını önlemek için lib klasöründeki utils.ts dosyasında düzenlemeler yapacağız. Bu, adresin daha kısa bir biçimde görüntülenmesini sağlar.
Aşağıdaki satırları ekleyin:
Yukarıdaki fonksiyonlar — formatBalance, formatChainAsNum ve formatAddress — bir dApp genelinde blockchain verilerini tutarlı biçimde biçimlendirmek ve kullanıcılara göstermek amacıyla içe aktarılıp kullanılmak üzere tasarlanmıştır.
NavBar Bileşeninde şu şekilde içe aktaracağız:
import { formatAddress } from "../lib/utils";Ve burada düğmede kullandık:
Geriye kalan tek şey NavBar.tsx'i layout.tsx bileşenimize içe aktarmak.
Geliştirme sunucumuzu çalıştırırsak uygulamamızda yaptığımız değişiklikleri göreceğiz.
MetaMask SDK, DApp geliştirme söz konusu olduğunda gerçekten kullanışlı ve oyun değiştirici bir araçtır. Kullanıcıların MetaMask tarayıcı eklentisine ve MetaMask Mobile'a kolayca bağlanmasını sağlar.
Bu, MetaMask SDK ile nasıl başlanacağına dair bir girişti; ancak bununla çok daha fazlasını yapabilir ve full-stack uygulamalarda da kullanabilirsiniz. Bu projenin kodunu buradaki repoda bulabilirsiniz.
Ayrıca aşağıdaki kaynakları incelemenizi öneririm:
MetaMask Belgeleri: https://docs.metamask.io/wallet/how-to/connect/set-up-sdk/javascript/react/
EventSea: MetaMask SDK kullanan Full-Stack bir Etkinlik Dapp'i: https://github.com/Consensys/eventsea
Keyifli Geliştirmeler. 🚀
Yapay zeka tarafından çevrildi. Hatalar içerebilir. Lütfen her zaman bilgileri doğrulayın.