Beancounter

本文介绍了Beancounter,一个用于审计HD钱包的命令行工具,支持Electrum和Btcd后端查询。它能计算钱包余额,强调了隐私与准确性的权衡。Beancounter使用Go语言开发,适用于大型和复杂的钱包,包括多重签名和Segwit支持。
摘要由CSDN通过智能技术生成

Beancounter 是一个命令行实用程序,用于审核给定时间点(或块高度)的分层确定性(HD)钱包的余额。该工具旨在扩展并适用于具有大量地址或大量交易的钱包,支持范围从简单的手表钱包到更复杂的多重签名 + segwit。如果您好奇,这就是我们首先决定编写 Beancounter 的原因。

Beancounter目前支持两种类型的后端来查询区块链:

电子公共服务器。使用这些服务器时,Beancounter 的行为方式与 Electrum 客户端钱包类似。查询服务器以获取特定地址的交易历史记录。使用 Electrum 服务器是最简单的,但需要信任公共服务器才能返回准确的信息。还有潜在的隐私暴露。

私有Btcd节点。 Btcd是一个实现交易索引的比特币全节点。设置 Btcd 节点可能需要一些时间(初始同步大约需要 7 天),并且需要保持节点最新。然而,这样做的好处是可以更好地保证交易历史记录的准确性。

入门

安装中

需要 Go 1.11 或更高版本。

$ git clone https://github.com/square/beancounter/
$ cd beancounter
$ go build -mod=vendor

派生子公钥

假设我们想要跟踪 的平衡tpubD8L6UhrL8ML9...,并且所使用的推导是m/1'/1234/change/index

我们需要手动进行1234推导:

$ ./beancounter keytree 1234
Enter pubkey #1 out of #1:
tpubD8L6UhrL8ML9Ao47k4pmdvUoiA6QUJVzrJ9BXLgU9idRKnvdRFGgjcxmVxojWGvCcjMi6QWCp8uMpCwWdSFRDNJ7utizxLy27sVWXQT4Jz7
Child pubkey #1: tpubDBrCAXucLxvjC9n9nZGGcYS8pk4X1N97YJmUgdDSwG2p36gbSqeRuytHYCHe2dHxLsV2EchX9ePaFdRwp7cNLrSpnr3PsoPLUQqbvLBDWvh

然后我们可以用来tpubDBrCAXucLxvj...计算余额。

计算 HD 钱包的余额(使用 Electrum)

 
$ ./beancounter compute-balance --type multisig --block-height 1438791
Enter pubkey #1 out of #1:
tpubDBrCAXucLxvjC9n9nZGGcYS8pk4X1N97YJmUgdDSwG2p36gbSqeRuytHYCHe2dHxLsV2EchX9ePaFdRwp7cNLrSpnr3PsoPLUQqbvLBDWvh
...
Balance: 267893477

计算单个地址的余额(使用 Electrum)

 
$ ./beancounter compute-balance --type single-address --lookahead 1 --block-height 1438791
Enter single address:
mzoeuyGqMudyvKbkNx5dtNBNN59oKEAsPn
...
Balance: 111168038

计算HD钱包的余额(使用Btcd)

Beancounter 需要addrindex=1txindex=1、 和notls=1。如果您的节点位于远程服务器上,我们建议通过 ssh 或其他安全隧道传输 RPC 流量。

 
rpcuser=mia
rpcpass=ilovebrownies
rpclisten=127.0.0.1:8334
notls=1

blocksonly=1
addrindex=1
txindex=1

一旦 Btcd 启动并运行,您可以执行以下操作:

 
$ ./beancounter compute-balance --type multisig --block-height 1438791 --backend btcd --addr localhost:8334 --rpcuser mia --rpcpass ilovebrownies
Enter pubkey #1 out of #1:
tpubDBrCAXucLxvjC9n9nZGGcYS8pk4X1N97YJmUgdDSwG2p36gbSqeRuytHYCHe2dHxLsV2EchX9ePaFdRwp7cNLrSpnr3PsoPLUQqbvLBDWvh
...
Balance: 267893477

细节

Beancounter 是用 Go 实现的。我们选择 Go 是因为我们想要一个简单的构建和分发过程。我们赞赏交叉编译和分发没有外部依赖项的静态二进制文件的能力。

我们使用以下过程来确定给定区块高度下确定性钱包的余额:

  1. 派生外部(接收)和内部(更改)地址。
  2. 对于每个地址,查询后端以获取交易列表。我们不断派生额外的地址,直到找到大量未使用的地址。
  3. 修剪交易列表以删除比块高度更新的交易。
  4. 对于每笔交易,查询后端以获取原始交易。
  5. 对于每笔交易,跟踪输出是否属于钱包以及是否被花费。
  6. 迭代交易并计算最终余额。

贡献

我们感谢任何修复错误或添加功能的拉取请求!

如果您需要有关如何贡献的想法,我们将享受第三个后端(基于比特币核心,通过流式传输整个区块链来处理每个块)以及其他钱包类型(例如多重签名非隔离验证)。

额外的单元测试和对评论/文档的改进也总是受欢迎的。

执照

Copyright 2018 Square, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

原文来自: TP钱包--下载_最新TokenPocket钱包--|你的通用钱包
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值