برنامه نویسی

نحوه اتصال کیف پول به 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 بسازید. به سلامتی

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا