Sui链开发必读:在 App 与 Mini 钱包中集成 Web3 钱包的完整实践

·

关键词:Sui Network、Web3 钱包集成、OKX Connect、Sui SDK、DEX API、Mini App、零门槛链上交互、Layer 1 区块链

1. Sui Network:为十亿用户重建 Web3 体验

Sui Network 是一条 横向扩展模块化设计 的 Layer 1 区块链,以 高并发、低延迟 著称。无论你是独立开发者还是大型产品团队,Sui 都能以极低的 Gas 价支撑 DEX、NFT、支付及游戏场景 等多样化应用,让 Web3 钱包集成 像登录微信一样简单。

👉 立即体验极速结算的 Sui 主网,点击直达 OKX Demo 区


2. 准备工作:升级 OKX App 并准备环境

npm install @okwallet/connect

3. 初始化 OKXUniversalProvider

核心参数

import { OKXUniversalProvider } from '@okwallet/connect';

const provider = await OKXUniversalProvider.init({
  dappMetaData: {
    name: 'Your DApp',
    icon: 'https://yourcdn.com/icon.png',
  },
});

4. 连接钱包:一步完成 addr / 公钥 / Namespace 授权

provider.connect() 会返回包含 钱包地址、默认链、可用方法 等完整信息,便于后续签名、交易、多链切换。

await provider.connect({
  namespaces: {
    sui: {
      chains: ['sui:mainnet'],
      methods: ['sui_signTransaction', 'sui_signMessage'],
      events: [],
    },
  },
  sessionConfig: {
    redirect: location.origin + '/redirect',
  },
});

5. 判断是否已连接 & 断开连接

判断是否已连接

if (provider.session) {
  console.log('已连接');
} else {
  console.log('尚未连接');
}

断开连接(切换账户前必先执行)

await provider.disconnect();

6. 发送交易:签名并广播到 Sui 链

  1. 先构造交易体,任何涉及到 链上交互钱包资产 的操作均可复用以下代码。
  2. SDK 自动处理 盲签风险参数校验链上广播

构造并广播示例

const suiWallet = provider.sui;

// 仅签名
tx.signMessage({
  message: new TextEncoder().encode('Hello Sui'),
});

// 签名并广播
tx.signAndSendTransaction({
  transaction: txb.serialize(),
}).then((result) => {
  console.log('交易已确认', result.digest);
});

7. 获取账户信息 & 公钥

当 OKX App 升级 6.92.0 后可安全拿到 公钥,用于 零知识登录、链下验证社交恢复

const acc = await suiWallet.getAccount();
console.log('地址', acc.address, '公钥', acc.publicKey);

8. 常见错误码对照

👉 查看完整错误处理方案与代码示例


9. 场景实战:将 Web3 钱包集成进你的 Mini App

TL;DR

  1. Telegram Mini App 中使用 tg://resolve 作为 redirect 参数。
  2. 首次调用 connect() 时,钱包会弹出授权:一次授权,后续秒连
  3. 利用 Sui Devnet 模拟交易,正式上线前切换至 Mainnet。

代码片段

await provider.connect({
  namespaces: { sui: { chains: ['sui:devnet'] } },
  sessionConfig: { 
    redirect: "tg://resolve?domain=yourbotname&startapp=Ys0OxR" 
  },
});

FAQ:快速答疑 5 问

Q1:必须使用 NPM 吗?
可以使用 yarn 或 pnpm,只要 lock 版本一致即可。

Q2:180×180 图标比例差会怎样?
钱包会在部分弹窗中拉伸图标,会变为 1.5DPI 模糊。

Q3:签名拒绝还能重试吗?
可以。每次交互都会弹出授权页,不共享缓存。

Q4:测试网 faucet 在哪里领取?
用 Sui Discord 的 faucet 子频道,一条命令即可到账 10 SUI。

Q5:如何在 Vue3 项目中用?
<script setup> 或 Options API 方式直接调用 OKXUniversalProvider,无需第三方 wrapper。


10. 小结与下一步行动

👇 开始你的第一笔 Sui 链上交易,现在就测试!