使用Starknet.js和get-starknet编写简单的基于Starknet的DAPP

简介

Starknet.js是一个类似于ethers.js的库,提供了一系列API,能够将用户使用JavaScript / TypeScript语言编写的DAPP连接到Starknet网络,并执行declaredeployexecute等功能。

get-starknet提供了一个hook,能够使Starknet DAPP和钱包无缝连接,支持多种钱包、多种模式。

安装

在react项目文件夹根目录下执行以下命令以安装starknet.jsget-starknet

# using npm
npm install get-starknet starknet@next

# using yarn
yarn add get-starknet starknet@next

# using pnpm
pnpm add get-starknet starknet@next

基础用法

通过引入connectdisconnect来快速链接到或者断开钱包。下面展示一个简单的模板:

import { connect, disconnect } from "get-starknet"

return <button onClick={() => connect()}>Connect wallet</button>
<button onClick={() => disconnect()}> Disconnect Wallet</button>

最终实现的效果为下图所示:
在这里插入图片描述

高级用法

除了最基本的链接和断开,get-starknet 还提供了一系列模式来实现链接钱包界面的颜色以及静默连接等。具体实现如下代码所示(用typescript编写,放在app.tsx文件中):

function App() {
  const [walletName, setWalletName] = useState("")

  // 链接模式选择函数
  function handleConnect(options?: ConnectOptions) {
    return async () => {
      const res = await connect(options)
      console.log(res) // 可通过此res获取starknet接口
      setWalletName(res?.name || "")
    }
  }

  // 断开模式选择函数
  function handleDisconnect(options?: DisconnectOptions) {
    return async () => {
      await disconnect(options)
      setWalletName("")
    }
  }

  return (
    <div className="App">
      <h1>get-starknet</h1>
      <div className="card">
        <button onClick={handleConnect()}>链接钱包</button>
        // 每次连接前都会弹出链接对话框
        <button onClick={handleConnect({ modalMode: "alwaysAsk" })}>
          总是询问
        </button>
        // 静默连接
        <button onClick={handleConnect({ modalMode: "neverAsk" })}>
          从不询问
        </button>
        // 夜间模式
        <button
          onClick={handleConnect({
            modalMode: "alwaysAsk",
            modalTheme: "dark",
          })}>
          夜间模式
        </button>
        // 日间模式
        <button
          onClick={handleConnect({
            modalMode: "alwaysAsk",
            modalTheme: "light",
          })}>
          日间模式
        </button>
        <button onClick={handleDisconnect()}>断开连接</button>
        <button onClick={handleDisconnect({ clearLastWallet: true })}>
          断开连接并重置
        </button>
      </div>
      {walletName && (
        <div>
          <h2>
            Selected Wallet: <pre>{walletName}</pre>
          </h2>
        </div>
      )}
    </div>
  )
}

连接钱包后,返回值的res是一个如下图所示的对象,通过这个对象,我们可以提取到starknet.js中的接口providersigner等等,进而能够与Starknet网络进行交互。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涛行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值