在比特币生态和去中心化应用(DApp)开发过程中,与钱包的高效、安全集成是构建优秀用户体验的关键环节。注入型 Provider API(Signet)正是一种基于 JavaScript 的强大工具,它允许 DApp 项目请求用户账户信息、读取链上数据,并协助用户完成消息和交易签名。本文将全面解析该 API 的核心功能、使用方法及典型应用场景。
什么是注入型 Provider API (Signet)?
注入型 Provider API(Signet)是由 OKX 开发并嵌入至用户访问的网站中的一套 JavaScript 接口。开发者可通过这套接口实现与比特币兼容链的交互,包括获取账户地址和公钥、发起消息签名以及处理比特币交易(PSBT)等操作。
需要注意的是,使用 BTC Signet 功能要求钱包扩展版本为 2.82.32 或更高。
连接钱包:okxwallet.bitcoinSignet.connect()
通过调用 connect() 方法,DApp 可以与用户的钱包建立连接,并获取当前账户的基本信息。
参数
无
返回值
返回一个 Promise 对象,解析后包含以下属性:
address:当前账户的地址(字符串类型)publicKey:当前账户的公钥(字符串类型)
典型使用场景
在用户登录或授权操作时,调用此方法可快速获取其钱包地址,用于身份验证或显示账户信息。
消息签名:okxwallet.bitcoinSignet.signMessage()
signMessage 方法用于对指定字符串进行签名,支持两种签名算法。
参数
signStr:需要签名的数据(字符串)type:签名类型,可选值为"ecdsa"或"bip322-simple",默认为"ecdsa"
返回值
- 返回 Promise,解析结果为签名字符串
功能说明
该方法适用于需要对消息进行密码学签名的场景,如身份验证或数据完整性校验。
签署PSBT交易:okxwallet.bitcoinSignet.signPsbt()
Partially Signed Bitcoin Transaction (PSBT) 是一种常用的比特币交易格式。signPsbt 方法能够对传入的 PSBT 进行签名,并支持丰富的参数选项。
参数
psbtHex:待签名的 PSBT 的十六进制字符串options:可选配置对象,包含以下属性:autoFinalized:是否在签名后自动完成 PSBT 最终化,默认为 truetoSignInputs:指定待签名的输入数组,每项可包括:index:输入的索引号address或publicKey:用于签名的私钥对应的地址或公钥sighashTypes:Sighash 类型数组(可选)
disableTweakSigner:禁用 tweakSigner,用于直接使用原始私钥进行签名(可选)
返回值
- 返回 Promise,解析为签名后的 PSBT 十六进制字符串
注意:若 PSBT 输入使用 Taproot 地址,生成待签名的 PSBT 字符串时需为每个输入添加公钥。
如果您希望实际操作并查看签名效果,可以 👉 查看实时签名工具 进行进一步尝试。
批量签署PSBT:okxwallet.bitcoinSignet.signPsbts()
如果需要同时处理多个 PSBT 交易,可使用 signPsbts 方法进行批量签名,其参数结构与 signPsbt 类似。
参数
psbtHexs:待签名的多个 PSBT 十六进制字符串构成的数组options:可选配置对象数组,每项配置与signPsbt的 options 结构相同
返回值
- 返回 Promise,解析结果为已签名的 PSBT 十六进制字符串数组
常见问题
Q1: 什么是注入型 Provider API?
A: 它是一种嵌入在网页中的 JavaScript 接口,使 DApp 能够安全地与用户钱包交互,包括读取账户数据、签名消息及交易。
Q2: 使用 BTC Signet 有什么前提条件?
A: 需要安装指定版本的钱包扩展程序(版本2.82.32及以上),并确保 DApp 运行在支持的环境中。
Q3: signMessage 方法中的两种签名类型有何区别?
A: “ecdsa” 是一种常用的椭圆曲线数字签名算法,“bip322-simple” 则是专为比特币消息签名设计的标准,具体选择需根据应用场景和兼容性要求决定。
Q4: 在签署 PSBT 时,什么情况下需要禁用 TweakSigner?
A: 当使用 Taproot 地址并希望直接使用原始私钥而非调整后的密钥进行签名时,可设置 disableTweakSigner 为 true。
Q5: 如何确保签名操作的安全性?
A: 所有签名请求均需经过用户明确授权,私钥不会离开用户钱包,签名过程在本地完成。
Q6: 是否支持批量交易签名?
A: 是的,signPsbts 方法支持同时签署多笔 PSBT 交易,显著提升多交易场景下的操作效率。
通过合理使用注入型 Provider API,开发者可以构建出功能强大、用户体验良好的比特币 DApp。如需了解更多高级功能及最佳实践,请 👉 获取进阶集成方法。