跳到正文

快速开始 ​

本指南将带你从零开始,将 Turing Wallet 浏览器 API 集成到你的 DApp 中。

前置条件 ​

  • 一个前端项目(React、Vue、原生 JS 等均可)
  • 你的 DApp 用户需要安装 Turing Wallet 浏览器插件或移动端 App

访问钱包 API ​

钱包插件会向页面注入 Turing 全局对象,无需安装额外的软件包。

ts
if (!window.Turing) {
  throw new Error("未检测到 Turing Wallet");
}

const addresses = await window.Turing.connect();

最小 DApp 示例 ​

以下是一个完整的端到端流程 —— 检测钱包 → 连接 → 获取地址 → 发送交易:

ts
// 1. 连接钱包
const addresses = await Turing.connect();
console.log("已连接:", addresses);
// BVM 账户: { tbcAddress, btcAddress }
// EVM 账户: { ethAddress, bnbAddress }

// 2. 检查连接状态
const connected = await Turing.isConnected();
console.log("是否已连接:", connected);

// 3. 获取钱包信息
const { name, platform, version } = await Turing.getInfo();
console.log(`钱包: ${name} v${version} (${platform})`);

// 4. 获取公钥
const { tbcPubKey } = await Turing.getPubKey();
console.log("公钥:", tbcPubKey);

// 5. 发送 P2PKH 交易
try {
  const { txid, error } = await Turing.sendTransaction([
    {
      flag: "P2PKH",
      address: "收款地址",
      satoshis: 10000,
      broadcastEnabled: true,
    },
  ]);

  if (txid) {
    console.log("交易发送成功!txid:", txid);
  }
  if (error) {
    console.error("交易失败:", error);
  }
} catch (err) {
  console.error("未知错误:", err);
}

// 6. 断开连接
await Turing.disconnect();

支持的链 ​

Turing Wallet 是一个多链钱包。不同的 API 方法对应不同的链:

链方法地址字段
TBC (Turing BitChain)sendTransaction, signTransaction, signAssociatedTransaction, sendBatchRequesttbcAddress
BTC (Bitcoin)btc.sendTransaction, btc.signTransaction, btc.sendBatchRequestbtcAddress
Ethereumevm.sendTransactionethAddress
BSCevm.sendTransactionbnbAddress

错误处理 ​

大多数 API 方法在失败时返回 error 字段而非抛出异常。务必检查错误:

ts
const result = await Turing.sendTransaction(params);

if (result.error) {
  // 处理错误 —— 显示给用户、重试等
  console.error("错误:", result.error);
  return;
}

// 成功路径
console.log("txid:", result.txid);

signMessage、encrypt 和 decrypt 等方法通过抛出异常报告错误,需要使用 try-catch:

ts
try {
  const { sig } = await Turing.signMessage({
    message: "hello",
    encoding: "utf-8",
  });
} catch (error) {
  console.error("签名失败:", error);
}

离线签名(broadcastEnabled) ​

许多交易方法支持 broadcastEnabled 参数:

  • true(默认)—— 钱包签名并广播交易,返回 txid。
  • false —— 对于非 Merge 请求,钱包通过 txraw 返回本次请求的业务交易,由你自行广播。

独立的 FT_MERGE、STABLECOIN_MERGE、POOLNFT_MERGE 和 FTLP_MERGE 请求始终广播并返回 txid。如果非 Merge 业务操作返回多笔原始交易,必须按顺序处理。

ts
// 获取签名后的原始交易,不广播
const { txraw } = await Turing.sendTransaction([
  {
    flag: "P2PKH",
    address: "收款地址",
    satoshis: 10000,
    broadcastEnabled: false,
  },
]);

// 后续通过你自己的节点或 API 广播

下一步 ​

掌握了基础用法后,可以深入探索完整的 API: