@blooo/hw-app-acre

中文文档
1.1.1发布于 2024/10/25Apache-2.0TypeScriptESM + CJS近 30 天下载 3137

Ledger 硬件钱包 Acre 应用程序 API

中文使用文档
文档目录29 节
  1. @blooo/hw-app-acre (英语)
  2. 您是否将 Ledger 支持添加到您的软件钱包中 ?
  3. API 密码
  4. 毕生灵
  5. 亩
  6. 占地面积
  7. 脱钩
  8. 创建交易日志
  9. Acre 撤回数据
  10. 地址格式
  11. 账户类型
  12. 单键账户
  13. 获取 Taproot 输出键
  14. 用户
  15. 客户端命令解释器
  16. 默克尔化Psbt
  17. 默克勒语Name
  18. 默克勒地图
  19. 钱包政策
  20. 提取
  21. 最后确定
  22. 已清除 投入
  23. 写入 Push
  24. 静态V2
  25. 序列化交易输出
  26. 签名P2SH 切换
  27. 交易投入
  28. 交易产出
  29. 交易

GitHub 图像, (中文(简体) ), 编导 Devs Discord, (中文(简体) ), 开发者门户

@blooo/hw-app-acre (英语)

Ledger 硬件钱包 Acre JavaScript 绑定. 也支持许多代币.


您是否将 Ledger 支持添加到您的软件钱包中 ?

您可能正在使用这个软件包与 Acre Nano App 通信 .

为了顺利和迅速地实现一体化:

  • 见开发者关于 开发者门户 财务报告和审定财务报表
  • 继续 解析器 与开发者支持和开发者社区聊天.

API 密码

目录

毕生灵

BIP32 比特币钱包的路径处理

此文件提供了处理 BIP32 路径的功能, 用于分级确定(HD)钱包. 它包括从不同格式转换BIP32路径的功能, 从扩展公钥(xpubs)中提取组件,并操纵路径元素.

亩

Acre应用API.

参数

  • transport 用于通信的运输层.
  • scrambleKey 此参数被贬值而不再需要.
  • currency 要使用的货币,默认为"比特币".

实例

import Acre from "@blooo/hw-app-acre:";
const acre = new Acre({ transport, currency: "bitcoin" });

获取WalletXpub

获得带有分类器的 XPUB

参数
  • arg {路径 : 字符串, xpubVersion : (中文(简体) ) 编号{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢 衍生参数*路径:账户水平的BIP 32路径. (例如: 引出路径 84'/0'/0' 沿着 purpose' / coin_type' / account' 标准,目的=84,硬币 类型=0,账户=0)
    • xpubVersion:所使用硬币的XPUBVersion. (指分类账/包装/催眠资产/弧/克) xPUBVersion 值(如果需要)

回返 答应<字符串> 翻译: 账户的 XPUB

获取Wallet 公钥

参数
  • path 字符串 a BIP 32路径(即: purpose’ / coin_type’ / account’ / change / address_index 标准)

  • opts {验证: 布尔*,格式: 地址格式{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

  • options 具有可选这些字段的对象:* 验证( 布尔) 是否要求用户确认设备上的地址

    • 格式("legacy""legacy""p2sh"""bech32""bech32m""cashaddr"),用于使用不同的比特币地址来取材. 编号 通常使用:* 有44'路径的遗留格式

    • 有49'路径的 p2sh 格式

    • bech32 有 84' 路径的格式

    • bech32m 有 86' 路径的格式

    • 比特币现金

实例
acre.getWalletPublicKey("44'/0'/0'/0/0").then(o => o.bitcoinAddress)
acre.getWalletPublicKey("49'/0'/0'/0/0", { format: "p2sh" }).then(o => o.bitcoinAddress)

回返 答应公共钥匙: 字符串比特币地址: 字符串,链码 : 字符串}>

符号

您可以按照 Bitcoin 签名格式签名信件, 并检索 v, r, s 给定信件和账户的 BIP 32 签名路径 .

参数
实例
acre.signMessage("44'/60'/0'/0'/0", Buffer.from("test").toString("hex")).then(function(result) {
var v = result['v'] + 27 + 4;
var signature = Buffer.from(v.toString(16) + result['r'] + result['s'], 'hex').toString('base64');
console.log("Signature : " + signature);
}).catch(function(ex) {console.log(ex);});

回返 答应校对:soup 编号时,r: 字符串时,s: 字符串}>

创建支付交易

要签名涉及标准( P2PKH) 输入的交易, 请使用以下参数调用创建 Transferction

参数
  • arg 创建交易日志
  • inputs 是一个[交易,输出 index,可选赎回脚本,可选序列]的数组,其中 * 交易是这个 UTXO 先前计算的交易对象
    • 输出 index 是用于输入此 UTXO 的交易中的输出( 从 0 计算)
    • 赎回脚本是可选的赎回脚本,用于消耗隔离的目击输入
    • 序列是用于此输入的序列号( 当使用 RBF 时), 或非存在
  • associatedKeysets 是指向每个UTXO所使用的私有密钥路径的 BIP 32 路径数组
  • changePath 是一个可选的 BIP 32 路径, 指向用于计算更改地址的公钥路径
  • outputScriptHex 是交易中要签名的十六进制序列化输出,包括引导 vararg voutCount
  • lockTime 是要签名的交易的可选锁定时间, 或默认( 0)
  • sigHashType 是要签名的交易的散列类型,或默认(全部)
  • segwit 是一个可选的布尔表示wether是否使用 segwit。 这包括被包裹的Segwit.
  • additionals 用于本地 segwit 输出的附加选项列表 * “ bech32 ”
    • “bech32m”用于支出 segwit v1+ 产出
    • "abc" 对于 bch
    • btg的"黄金"
    • 被"废"了
    • zcash 的“ zcash ”
    • 使用 BIPxxx 的“ bipxxx ”
    • 用于表示zec交易的"树苗"支持树苗(将设定在419200区块上)
  • expiryHeight 是 Zec 超冬/ 幼苗 Txs 的可选缓冲
  • useTrustedInputForSegwit 用于sigwit交易的信任输入。 如果应用版QQ 1. 4.0,这应该是真的.
实例
acre.createTransaction({
inputs: [ [tx1, 1] ],
associatedKeysets: ["0'/0/0"],
outputScriptHex: "01905f0100000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88ac"
}).then(res => ...);

回返 答应<字符串> 翻译: 已签名的交易准备播放

签名P2SH 交易

要获得多签名( P2SH) 输入的签名, 请使用 flowlowing 参数呼号 P2SH Transaction async

参数
  • arg 签名P2SH 切换
  • inputs 是[交易,输出 index,赎回脚本,可选序列]的数组,其中*交易是此UTXO之前计算的交易对象
    • 输出 index 是用于输入此 UTXO 的交易中的输出( 从 0 计算)
    • 赎回脚本是与当前 P2SH 输入相关的强制赎回脚本
    • 序列是用于此输入的序列号( 当使用 RBF 时), 或非存在
  • associatedKeysets 是指向每个UTXO所使用的私有密钥路径的 BIP 32 路径数组
  • outputScriptHex 是交易中要签名的十六进制序列化输出
  • lockTime 是要签名的交易的可选锁定时间, 或默认( 0)
  • sigHashType 是要签名的交易的散列类型,或默认(全部)
实例
acre.signP2SHTransaction({
inputs: [ [tx, 1, "52210289b4a3ad52a919abd2bdd6920d8a6879b1e788c38aa76f0440a6f32a9f1996d02103a3393b1439d1693b063482c04bd40142db97bdf139eedd1b51ffb7070a37eac321030b9a409a1e476b0d5d17b804fcdb81cf30f9b99c6f3ae1178206e08bc500639853ae"] ],
associatedKeysets: ["0'/0/0"],
outputScriptHex: "01905f0100000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88ac"
}).then(result => ...);

回返 答应<阵列<字符串>> 已签名的交易准备播放

交易

对于您交易中包含的每个UTXO,请从此UTXO中使用的交易原始序列版本创建交易对象.

参数
  • transactionHex 字符串 原始十六进制序列化交易
  • isSegwitSupported (单位:千美元)布尔 无效 未定义(中文(简体) ) 是布尔表示是否支持 segwit(可选,默认) false(中文(简体) )
  • hasExtraData 是布尔语( komodo、 zencash 和 zcash 在其交易中包含额外数据, 其他人不包含) (可选, 默认) false(中文(简体) )
  • additionals 阵列<字符串> 翻译: 添加选项列表( 可选, 默认) [](中文(简体) )
实例
const tx1 = acre.splitTransaction("01000000014ea60aeac5252c14291d428915bd7ccd1bfc4af009f4d4dc57ae597ed0420b71010000008a47304402201f36a12c240dbf9e566bc04321050b1984cd6eaf6caee8f02bb0bfec08e3354b022012ee2aeadcbbfd1e92959f57c15c1c6debb757b798451b104665aa3010569b49014104090b15bde569386734abf2a2b99f9ca6a50656627e77de663ca7325702769986cf26cc9dd7fdea0af432c8e2becc867c932e1b9dd742f2a108997c2252e2bdebffffffff0281b72e00000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88aca0860100000000001976a9144533f5fb9b4817f713c48f0bfe96b9f50c476c9b88ac00000000");

回返 交易 交易对象从原始十六进制交易中除去

序列化交易输出

将交易输出顺序为十六进制

参数
实例
const tx1 = acre.splitTransaction("01000000014ea60aeac5252c14291d428915bd7ccd1bfc4af009f4d4dc57ae597ed0420b71010000008a47304402201f36a12c240dbf9e566bc04321050b1984cd6eaf6caee8f02bb0bfec08e3354b022012ee2aeadcbbfd1e92959f57c15c1c6debb757b798451b104665aa3010569b49014104090b15bde569386734abf2a2b99f9ca6a50656627e77de663ca7325702769986cf26cc9dd7fdea0af432c8e2becc867c932e1b9dd742f2a108997c2252e2bdebffffffff0281b72e00000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88aca0860100000000001976a9144533f5fb9b4817f713c48f0bfe96b9f50c476c9b88ac00000000");
const outputScript = acre.serializeTransactionOutputs(tx1).toString('hex');

回返 缓冲

获得信任输入

信任的输入是需要签名的 UTXO 的散列 对于遗产交易,应用程序有一些APDU流 来检查UTXO的金额, 通过解析创建此 UTXO 的交易

参数

回返 答应<字符串> 翻译:

获得信任的输入BIP143

信任输入是需要签名的UTXO的散列. BIP143用于Segwit输入.

参数

回返 字符串

签名退出

用私人密钥签名 Acre 退出信件 根据比特币签名格式提供的导出路径 并返回 v, r, s.

参数
  • $0 {路径 : 字符串,退出数据 : Acre 撤回数据{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢

    • $0.path
    • $0.withdrawalData
实例
      var withdrawalData = {
        to: "0xc14972DC5a4443E4f5e89E3655BE48Ee95A795aB",
        value: "0x0",
        data: "0xcae9ca510000000000000000000000000e781e9d538895ee99bd6e9bf28664942beff32f00000000000000000000000000000000000000000000000000470de4df820000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001000000000000000000000000006083Bde64CCBF08470a1a0dAa9a0281B4951be7C4b5e4623765ec95cfa6e261406d5c446012eff9300000000000000000000000008dcc842b8ed75efe1f222ebdc22d1b06ef35efff6469f708057266816f0595200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000587f579c500000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000001a1976a914c8e9edf5e915c0482b1b236fc917011a4b943e6e88ac000000000000",
        operation: "0",
        safeTxGas: "0x0",
        baseGas: "0x0",
        gasPrice: "0x0",
        gasToken: "0x0000000000000000000000000000000000000000",
        refundReceiver: "0x0000000000000000000000000000000000000000",
        nonce: "0xC",
      };
      acre.signWithdrawal({"m/44'/0'/0'/0/0", withdrawalData}).then(function(result) {
        var v = result['v'] + 27 + 4;
        var signature = Buffer.from(v.toString(16) + result['r'] + result['s'], 'hex').toString('base64');
        console.log("Signature : " + signature);
        }).catch(function(ex) {console.log(ex);});

符号ERC4361

用私钥在 Ethereum 签名( ERC-4361) 中签名 根据比特币签名格式提供的导出路径 并返回 v, r, s.

参数
实例
acre.signERC4361Message("44'/60'/0'/0'/0", Buffer.from("Example ERC-4361 message").toString("hex")).then(function(result) {
  const v = result['v'] + 27 + 4;
  const signature = Buffer.from(v.toString(16) + result['r'] + result['s'], 'hex').toString('base64');
  console.log("Signature : " + signature);
}).catch(function(ex) {console.log(ex);});

回返 答应校对:soup 编号时,r: 字符串时,s: 字符串}>

说明: 消息限制在最多128个字符行.

回返 答应校对:soup 编号时,r: 字符串时,s: 字符串}>

占地面积

此类执行与 AcreBtcOld 相同的接口( 原为 名称为 Btc ),但与 Acre 从1.0.0 版本的硬件应用交互 它使用与比特币应用软件版本2.1.0+相同的APDU协议. 本协议在下列地点记录在案: https://github.com/blooo-io/app-acre/blob/develop/doc/acre.md 互联网档案馆的存檔,存档日期2014-12-22

由于接口必须与 AcreBtcOld 兼容,所以方法 这班人很笨手笨脚的 因为需要适应传统 将数据输入PSBT进程.

获取WalletXpub

这是一种允许用户在标准路径上获得xpub的新方法. 标准路径描述于 https://github.com/blooo-io/app-acre/blob/develop/doc/acre.md#描述

这归结为路径(比特币为N=0,测试网为N=1) : M/44'/N'/x'/** M/48'/N'/x'/y'/** M/49'/N'/x'/** M/84'/N'/x'/** M/86'/N'/x'/**

该方法之所以被添加,是因为硬件app v2+中增加了安全性. 这个 新硬件应用将允许导出任何 xpub 至并包含 标准衍生路径最深的硬化键,而旧的应用程序 将允许导出任何密钥.

这给这个班级的来电者造成了一个问题,他们只是 让Wallet PublicKey () 调用, 这意味着他们必须调用 xpub 他们自己:

假设此类的用户想要在标准上创建一个账户 xpub 路径, M/44'/0'/Z'。 用户必须获得父密钥指纹(见BIP32) 要求母键 M/44'/0'。 新的应用不允许,因为 它只允许输出最深的硬化路径。 所以选择是 允许从应用程序中请求 M/44'/0',或添加新函数 "GetWalletXpub"("Get WalletXpub").

我们选择添加一个新的功能,这可以大大简化客户端代码.

参数
  • $0 {路径 : 字符串, xpubVersion : (中文(简体) ) 编号{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢

    • $0.path
    • $0.xpubVersion

回返 答应<字符串> 翻译:

获取Wallet 公钥

这种方法返回公钥、比特币地址和链码 为特定的导出路径.

限制 : 如果路径不是标准路径的叶节点,则地址 将是空字符串“ ”, 详情请参见 this. getWalletAddress () .

参数
  • path 字符串
  • opts {验证: 布尔*,格式: 地址格式{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

回返 答应公共钥匙: 字符串比特币地址: 字符串,链码 : 字符串}>

创建支付交易

构建并签署交易。 参见 Acre.cre.createPayment Transaction for 详细介绍如何使用这种方法.

此方法会将遗留参数转换为 最后签字并敲定的 psbt 和提取的完全签字 交易返回.

参数

回返 答应<字符串> 翻译:

符号

用私有密钥签名任意的十六进制格式信件 根据比特币签名格式提供的导出路径 并返回 v, r, s.

参数
  • $0 {路径 : 字符串,退出数据 : Acre 撤回数据{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢

    • $0.path
    • $0.withdrawalData

回返 答应校对:soup 编号时,r: 字符串时,s: 字符串}>

签名退出

用私人密钥签名 Acre 退出信件 根据比特币签名格式提供的导出路径 并返回 v, r, s.

参数
  • $0 {路径 : 字符串,退出数据 : Acre 撤回数据{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢

    • $0.path
    • $0.withdrawalData

回返 答应校对:soup 编号时,r: 字符串时,s: 字符串}>

符号ERC4361

签名 ERC-4361 (与 Ethereum 一同签名) 格式化消息, 并使用私有密钥 根据比特币签名格式提供的导出路径 并返回 v, r, s.

参数
  • $0 {路径 : 字符串,信息Hex: 字符串{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢

    • $0.path BIP32 用于签名的密钥的导出路径
    • $0.messageHex ERC-4361 格式化信件,以十六进制格式签名

回返 答应校对:soup 编号时,r: 字符串时,s: 字符串}>

脱钩

此函数返回基于地址格式的描述模板 . 见 https://github.com/blooo-io/app-acre/blob/develop/doc/wallet.md 互联网档案馆的存檔,存档日期2013-12-22 详细情况 比特币描述模板.

参数

  • path 字符串 a BIP 32路径

  • opts {验证: 布尔*,格式: 地址格式{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

  • options 带有可选这些字段的对象 : * 校验( boolean) 将要求用户确认设备上的地址

    • 格式("legacy""legacy""p2sh"""bech32""bech32m""cashaddr"),用于使用不同的比特币地址来取材. 编号 通常使用:* 有44'路径的遗留格式

    • 有49'路径的 p2sh 格式

    • bech32 有 84' 路径的格式

    • bech32m 有 86' 路径的格式

    • 比特币现金

实例
acre.getWalletPublicKey("44'/0'/0'/0/0").then(o => o.bitcoinAddress)
acre.getWalletPublicKey("49'/0'/0'/0/0", { format: "p2sh" }).then(o => o.bitcoinAddress)

回返 答应公共钥匙: 字符串比特币地址: 字符串,链码 : 字符串}>

创建支付交易

要签名涉及标准( P2PKH) 输入的交易, 请使用以下参数调用创建 Transferction

参数
  • arg 创建交易日志
  • inputs 是一个[交易,输出 index,可选赎回脚本,可选序列]的数组,其中 * 交易是这个 UTXO 先前计算的交易对象
    • 输出 index 是用于输入此 UTXO 的交易中的输出( 从 0 计算)
    • 赎回脚本是可选的赎回脚本,用于消耗隔离的目击输入
    • 序列是用于此输入的序列号( 当使用 RBF 时), 或非存在
  • associatedKeysets 是指向每个UTXO所使用的私有密钥路径的 BIP 32 路径数组
  • changePath 是一个可选的 BIP 32 路径, 指向用于计算更改地址的公钥路径
  • outputScriptHex 是交易中要签名的十六进制序列化输出
  • lockTime 是要签名的交易的可选锁定时间, 或默认( 0)
  • sigHashType 是要签名的交易的散列类型,或默认(全部)
  • segwit 是可选布尔表示是否使用 segwit
  • additionals 用于本地 segwit 输出的附加选项列表 * “ bech32 ”
    • "abc" 对于 bch
    • btg的"黄金"
    • 被"废"了
    • zcash 的“ zcash ”
    • 使用 BIPxxx 的“ bipxxx ”
    • 用于表示zec交易的"树苗"支持树苗(将设定在419200区块上)
  • expiryHeight 是 Zec 超冬/ 幼苗 Txs 的可选缓冲
  • useTrustedInputForSegwit 用于 sigwit 交易的信任输入
实例
acre.createTransaction({
inputs: [ [tx1, 1] ],
associatedKeysets: ["0'/0/0"],
outputScriptHex: "01905f0100000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88ac"
}).then(res => ...);

回返 答应<字符串> 翻译: 已签名的交易准备播放

创建交易日志

类型 : {输入: 阵列< [交易, (中文(简体) ), 编号, (中文(简体) )字符串 无效 未定义页:1编号 无效 未定义>, 相关关键元件: 阵列<字符串>, 更改页 : 字符串*,输出脚本Hex: 字符串,锁定时间 : 编号? ,西格哈什Type: 编号♪ 笨蛋: 布尔*,补充: 阵列<字符串>, 过期高度 : 缓冲*,使用信任的输入ForSegwit: 布尔,在DeviceStreaming上显示:函数(arg0:{进步: 编号,共计: 编号,索引: 编号} : 无效? , 在 DeviceSignature requestd: 函数 (: 无效? ) , 在 DeviceSignatureGranted: 函数 (: 无效? )

属性

Acre 撤回数据

Acre VistrawalData 类型包含以下与退出交易相关的属性,其中每个属性为十六进制字符串.

属性

地址格式

地址格式是遗留下来的 | p2sh | bech32 | bech32m | cashaddr

类型 : ("legacy" | "p2sh" | "bech32" | "bech32m" | "cashaddr"(中文(简体) )

账户类型

包含账户类型之间的差异, 例如 p2wpkh, p2wpkh Wrapped, p2tr. (原始内容存档于2017-09-29).

条件

从公钥列表中生成脚本PubKey(输出脚本). 如果有的话 p2sh 赎回脚本或 p2wsh 见证 脚本需要它也会被设定在 返回的支出条件.

公用钥匙是33字节 ecdsa 压缩公用钥匙.

参数

回返 支出状况

输入

将 psbt 与账户类型特定数据填入输入.

参数
  • i 编号 填充输入地图的索引
  • inputTx (单位:千美元)缓冲 | 未定义(中文(简体) ) 包含已用产出的全部交易 。 这可能 被省略为自来水.
  • spentOutput 废产出 已用产出的金额和支出状况
  • pubkeys 阵列<缓冲> 翻译: 参与输入的33字节 ecdsa 压缩公钥
  • pathElems 阵列<阵列<编号>> 与阴道对应的路径,顺序相同.

回返 无效

设置输出

将 psbt 与一个输出的账户类型特定数据相匹配。 这是典型的 变动产出和其他产出 被花费了.

参数
  • i 编号 要填充的输出地图索引
  • cond 支出状况 该产出的支出条件
  • pubkeys 阵列<缓冲> 翻译: 此输出涉及的33 字节 ecdsa 压缩公钥
  • paths 阵列<阵列<编号>> 与阴道对应的路径,顺序相同.

回返 无效

获取描述

返回该账户类型的描述模板。 目前仅 默认描述板是允许的, 但可以在 未来。 关于描述符的更多信息, 请参看类钱包政策 模板.

回返 默认描述图

单键账户

扩展基账

单个签名账户的超級. 这会确保公交车 方法参数中的数组和路径数组包含完全一个元素 并称为一种抽象的方法来进行实际的工作.

获取 Taproot 输出键

从内部密钥计算出自根输出密钥 。 此输出密钥将 在自来水输出中用作目击程序。 内部密钥有微调 根据BIP341中的建议: https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki#cite ref-22-0. 互联网档案馆的存檔,存档日期2011-12-2

参数

  • internalPubkey 缓冲 32 字节 x 唯一的自带根内部密钥

回返 缓冲 输出密钥

用户

此类封装了所记录的APDU协议 https://github.com/blooo-io/app-acre/blob/develop/doc/acre.md 互联网档案馆的存檔,存档日期2014-12-22

参数

  • transport 运输

客户端命令解释器

此类将发送来自硬件设备的客户端命令 适当的客户端命令执行。 这些客户端的命令 通常请求从 merkle 树或 merkelized 地图中获取数据 .

客户端Command 解释器通过添加 merkle 树和 它应该能够为硬件设备服务。 这个班 完全不懂它掌握的数据的语义 为默克勒数据服务。 它甚至不知道这是什么背景 执行, ie SignPsbt, 获取WalletAddress等.

如果命令向客户端显示结果, 如 signPsbt 所做的, 生成 数据在命令完成后可以通过调用 get Yielded () 访问, 他们将依自己进球的顺序返回.

参数

  • progressCallback 函数 (): 无效

默克尔化Psbt

扩展 PsbtV2

此类通过对不同的多维度的多维度来计算 PSBTv2 psbt 地图。 用于交易签名过程中, 硬件应用程序可以从中请求 psbt 的特定部分 客户端代码,并确保响应数据实际上属于psbt. 原因是应用程序可用的内存有限, 所以它不能总是存储完整的 psbt 在记忆.

签署过程记录于 https://github.com/blooo-io/app-acre/blob/develop/doc/acre.md#sign psbt (英语)

参数

默克勒语Name

这个班级执行Ledger Acre应用软件使用的Merkle树, 记录在 https://github.com/blooo-io/app-acre/blob/develop/doc/merkle.md 互联网档案馆的存檔,存档日期2013-12-22

参数

默克勒地图

执行“默克尔化地图”,记录在 https://github.com/blooo-io/app-acre/blob/develop/doc/merkle.md#merkleized-maps (中文(简体) )

由两棵树组成,其中一棵是用于 一个地图和一个用于同一地图的值,因此两个墨克尔 树有相同的形状。 承诺是数字要素 键的正弦根后接 值为 merkle 根.

参数

钱包政策

Bitcon 硬件应用程序使用类似描述符的东西来描述 如何从密钥构造输出脚本。 “Wallet政策”包括: 和"密钥"列表。 关键是 序列化的 BIP32 扩展公用密钥,并添加一些衍生路径 资料。 记录如下: https://github.com/blooo-io/app-acre/blob/develop/doc/wallet.md 互联网档案馆的存檔,存档日期2013-12-22

参数

  • descriptorTemplate 默认描述图
  • key 字符串

提取

此执行 BIP370 (PSBTv2) 的“ 交易提取器” 角色 https://github.com/bitcoin/bips/blob/master/bip-0370.mediawiki#交易-摘录器) (中文(简体) ). 不过 bIP174部分记录了该角色(PSBTv0) https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki#交易-摘录器) (中文(简体) ).

参数

回返 缓冲

最后确定

这大致实现了BIP370(PSBTv2)的"输入定稿器"角色 https://github.com/bitcoin/bips/blob/master/bip-0370.mediawiki (英语)) (中文(简体) ). 不过 bIP174(PSBTv0)中记录了该角色 https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki 互联网档案馆的存檔,存档日期2014-10-04) (中文(简体) ).

验证所有输入都有一个签名, 并设置输入 FinalScript Witness 和/或输入 FinalScriptSig 取决于已用产出的类型。 干净 字段,部分签名,还原脚本 进取道.

参数

  • psbt 静态V2 带有所有签名的 psbt 添加为部分 sigs 通过 PSBT IN PARTIAL SIG 或 PSBT IN TAP KEY SIG

回返 无效

已清除 投入

删除 psbt 中不再有阴性字段.

注意,Spec没有说任何关于去除接地的字段 比如PSBT OUT BIP32 DERIVATION PATH等,所以我们保留它们 却不知道为什么 我想我们也应该去除它们.

参数

写入 Push

写入脚本将操作推到 buf, 它看起来不同 根据数据大小。 见 https://en.bitcoin.it/wiki/Script#Constants (中文(简体) )

参数

  • buf 缓冲器 要写入的缓冲器
  • data 缓冲 缓冲器被推.

静态V2

部分执行已签名的 Bitcoin 交易版本 2, BIP370, 如 记录 https://github.com/bitcoin/bips/blob/master/bip-0370.mediawiki (英语) 财务报告和审定财务报表 https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki 互联网档案馆的存檔,存档日期2014-10-04

Psbt是一个数据结构,可以携带与 a 相关的所有相关信息 在签名过程的所有阶段进行交易。 从建造 未签名交易取出最后的序列交易准备 广播.

这种实施仅限于分类账中需要的 任务,这意味着对多相或自带脚本等特性的支持 未执行路径支出。 具体来说,它支持p2pkh, p2wpkhWrapped InP2sh, p2wpkh 和 p2tr 密钥路径开支.

这个课是故意哑的,所以很容易增加支持 未来需要的压缩字段.

序列化交易输出

参数

实例

const tx1 = acre.splitTransaction("01000000014ea60aeac5252c14291d428915bd7ccd1bfc4af009f4d4dc57ae597ed0420b71010000008a47304402201f36a12c240dbf9e566bc04321050b1984cd6eaf6caee8f02bb0bfec08e3354b022012ee2aeadcbbfd1e92959f57c15c1c6debb757b798451b104665aa3010569b49014104090b15bde569386734abf2a2b99f9ca6a50656627e77de663ca7325702769986cf26cc9dd7fdea0af432c8e2becc867c932e1b9dd742f2a108997c2252e2bdebffffffff0281b72e00000000001976a91472a5d75c8d2d0565b656a5232703b167d50d5a2b88aca0860100000000001976a9144533f5fb9b4817f713c48f0bfe96b9f50c476c9b88ac00000000");
const outputScript = acre.serializeTransactionOutputs(tx1).toString('hex');

回返 缓冲

签名P2SH 切换

类型 : {输入: 阵列< [交易, (中文(简体) ), 编号, (中文(简体) )字符串 无效 未定义页:1编号 无效 未定义>, 相关关键元件: 阵列<字符串>, 输出脚本Hex: 字符串,锁定时间 : 编号? ,西格哈什Type: 编号♪ 笨蛋: 布尔*,交易维斯顿: 编号{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢

属性

交易投入

交易产出

交易

版本与发布记录

@blooo/hw-app-acre 共发布 3 个版本,首次发布于 2024/09/25;过去 12 个月发布了 0 个版本。

版本发布日期距今
1.1.1latest2024/10/252 年前
1.1.02024/10/232 年前
1.0.12024/09/252 年前

关于 @blooo/hw-app-acre 的常见问题

@blooo/hw-app-acre 是什么?

Ledger 硬件钱包 Acre 应用程序 API

如何安装 @blooo/hw-app-acre?

在项目目录运行 npm install @blooo/hw-app-acre,或使用 pnpm add / yarn add / bun add。

@blooo/hw-app-acre 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@blooo/hw-app-acre 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@blooo/hw-app-acre 可以商用吗?

@blooo/hw-app-acre 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@blooo/hw-app-acre 的下载量有多少?

根据 npm 官方下载统计,@blooo/hw-app-acre 在 2026/10/09 – 2026/11/07 这 30 天内被下载 3,137 次,日均约 105 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@blooo/hw-app-acre 还在维护吗?

最新版本 1.1.1 发布于 2024/10/25(2 年前);至今共发布 3 个版本,其中过去 12 个月发布了 0 个;首次发布于 2024/09/25。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。