نحوه اتصال کیف پول به dApp با Next.js در Polkadot
بررسی اجمالی
در برنامه های غیرمتمرکز، قبل از اینکه کاربر با عملکردهای یک برنامه تعامل داشته باشد، کاربر باید آدرس کیف پول را به dApp متصل کند تا امضای کاربر در برنامه ذخیره شود.
در این آموزش از بسته ای به نام polkadot extension dapp برای اتصال کیف پول به dapp استفاده می کنیم.
پيش نياز
این یک راهنمای سریع است و هیچ CSS در راهنما وجود نخواهد داشت. بنابراین برای پیگیری این آموزش، باید
بیا شروع کنیم…
- ترمینال خود را باز کنید و یک پروژه next.js جدید را با استفاده از دستور مقداردهی اولیه کنید
yarn create next-app
مطمئن شوید که گزینه های موجود در تصویر بالا را انتخاب کنید
-
در ترمینال خود، به پروژه جدید ایجاد شده خود بروید و آن را در ویرایشگر کد خود باز کنید.
-
در ویرایشگر کد خود، فایل index.tsx را باز کنید، کدهای موجود در آن را پاک کنید و کد زیر را در آن باز کنید.
export default function Home() {
return (
<>
<h2>Hey Polki, Welcome to Polkadot </h2>
<button>Connect wallet</button>
</>
)
}
- در ترمینال خود، دستور را اجرا کنید
yarn run dev
و خروجی ای مانند تصویر زیر دریافت خواهید کرد
- در مرورگر خود به localhost بروید و خروجی صفحه را مانند تصویر زیر مشاهده خواهید کرد
عملکرد کیف پول dapp connect را یکپارچه کنید
-
به polkadot-extension و سپس Talisman بروید، این افزونه های کیف پول را برای polkadot نصب کنید و یک حساب کاربری ایجاد کنید.
-
در مرحله بعد در ترمینال شما، ما این بسته ها را نصب خواهیم کرد
yarn add @polkadot/extension-dapp @polkadot/extension-inject
و این پیوند polkadot-extension-dapp را دنبال کنید تا در مورد آن بیشتر بدانید.
پس از اتمام نصب، باید خروجی مانند این را ببینید
- ما از واردات پویا برای بسته جدید نصب شده استفاده خواهیم کرد. در اینجا dynamic-import می توانید اطلاعات بیشتری در مورد واردات پویا بخوانید
- در فایل index.tsx خود، وارد کردن و خطوط زیر را به کد خود اضافه کنید
import { useState } from 'react';
import dynamic from 'next/dynamic'
const web3Accounts = dynamic(() => import('@polkadot/extension-dapp'), { ssr: false });
const web3Enable = dynamic(() => import('@polkadot/extension-dapp'), { ssr: false });
- بیایید چند حالت در dapp خود ایجاد کنیم و از آنجایی که ما از تایپ اسکریپت استفاده می کنیم، باید با استفاده از پسوند inject که نصب کرده ایم، انواع را به حالت خود اضافه کنیم. بنابراین خطوط زیر را به کد خود اضافه کنید
import { InjectedAccountWithMeta } from '@polkadot/extension-inject/types';
...
const [account, setAccount] = useState<InjectedAccountWithMeta[]>([]);
const [selectedAccount, setSelectedAccount] = useState<InjectedAccountWithMeta>();
- تا اینجا، تمام کدهای موجود در فایل index.tsx ما باید به این شکل باشند
import { useState } from 'react';
import { InjectedAccountWithMeta } from '@polkadot/extension-inject/types';
import dynamic from 'next/dynamic'
const web3Accounts = dynamic(() => import('@polkadot/extension-dapp'), { ssr: false });
const web3Enable = dynamic(() => import('@polkadot/extension-dapp'), { ssr: false });
export default function Home() {
const [account, setAccount] = useState<InjectedAccountWithMeta[]>([]);
const [selectedAccount, setSelectedAccount] = useState<InjectedAccountWithMeta>();
return (
<>
<h2>Hey Polki, Welcome to Polkadot </h2>
<button>Connect wallet</button>
</>
)
}
- در مرحله بعد در فایل index.tsx، ما یک تابع ناهمزمان ایجاد خواهیم کرد که عملکرد اتصال کیف پول را در dapp شما انجام می دهد. این خطوط کدهای زیر را کپی و جایگذاری کنید
async function connectWallet(){
const { web3Enable,web3Accounts } = await import("@polkadot/extension-dapp");
const extensions = web3Enable("Polki");
if(!extensions) {
throw Error("No Extension Found");
}
const allAccounts = await web3Accounts();
console.log(allAccounts);
if(allAccounts.length === 1){
setSelectedAccount(allAccounts[0]);
}
}
- در نهایت آخرین قطعه کد را در زیر قطعه بازگشتی اضافه کنید
{
account.length === 0 ? <button onClick={connectWallet}>Connect Wallet</button> : null
}
{
selectedAccount ? selectedAccount.address : null
}
- اکنون همه کدهای شما باید به این شکل باشند
import { useState } from 'react';
import { InjectedAccountWithMeta } from '@polkadot/extension-inject/types';
import dynamic from 'next/dynamic'
const web3Accounts = dynamic(() => import('@polkadot/extension-dapp'), { ssr: false });
const web3Enable = dynamic(() => import('@polkadot/extension-dapp'), { ssr: false });
export default function Home() {
const [account, setAccount] = useState<InjectedAccountWithMeta[]>([]);
const [selectedAccount, setSelectedAccount] = useState<InjectedAccountWithMeta>();
async function connectWallet(){
const { web3Enable,web3Accounts } = await import("@polkadot/extension-dapp");
const extensions = web3Enable("Polki");
if(!extensions) {
throw Error("No Extension Found");
}
const allAccounts = await web3Accounts();
console.log(allAccounts);
if(allAccounts.length === 1){
setSelectedAccount(allAccounts[0]);
}
}
return (
<>
<h2>Hey Polki, Welcome to Polkadot </h2>
{
account.length === 0 ? <button onClick={connectWallet}>Connect Wallet</button> : null
}
{
selectedAccount ? selectedAccount.address : null
}
</>
)
}
- مطمئن شوید که ترمینال شما همچنان در حال اجراست و به مرورگر بروید. بر روی دکمه اتصال کیف پول کلیک کنید و یک پنجره بازشو از برنامه افزودنی polkadot خود دریافت خواهید کرد که برای اتصال به dapp خود درخواست مجوز می کند.
- برای اعطای مجوز بر روی yes کلیک کنید و viola، در اینجا آدرس کیف پول شما به dapp شما متصل است.
- امیدوارم از این آموزش لذت برده باشید و چیزی از آن یاد گرفته باشید. این فقط برای نشان دادن نحوه عملکرد دکمه اتصال است و هر زمان که میخواهید آن قابلیت را در پروژه Next.js خود اضافه کنید، میتوانید از آن به عنوان راهنما استفاده کنید. بروید و برنامه های web3 خود را در Polkadot بسازید. به سلامتی