列出来自bitcoind中给定地址的交易

问题描述 投票:0回答:4

有没有办法通过使用API RPC到bitcoind来列出给定地址的所有交易?实际上,我使用的是btcd,大多数非钱包功能与bitcoind相同,但我找不到任何方法来做到这一点。

bitcoin bitcoind
4个回答
7
投票

由于交易索引的方式,您无法使用 Bitcoind 执行此类查询,我假设 btcd 的情况相同。

如果您想获取此信息,您有以下几种选择:

  • 自己解析区块链并将数据存储在一个新的、索引更重的数据库中
  • 使用第三方服务,例如 Chain.com 或 Blockchain.info
  • 运行不同类型的节点。 Toshi 是 Coinbase 的比特币开源 Ruby 实现。该节点的数据库允许更丰富的查询,但需要更多的存储量。

编辑:Toshi 不再维护,并且 chain.com 不再提供此 API。


2
投票

btcd 最近合并了一项功能,该功能创建可用于查询特定地址的地址索引

https://github.com/btcsuite/btcd/issues/190

要启用此功能,请使用 addrindex 标志运行 btcd,如下所示 -

btcd --addrindex

可以使用新的 searchrawtransactions rpc 调用通过 RPC 查询交易。创建地址索引需要一段时间,所以要等到索引完成才能使用这个索引


0
投票

据我所知,没有方法可以列出给定比特币地址的所有交易。但您可以使用帐户。

您可以为每个账户创建一个比特币地址。并且有方法列出给定帐户的所有交易listtransactions

了解有关帐户的更多信息:https://en.bitcoin.it/wiki/Accounts_explained

Bitcoind API 调用列表:https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_Calls_list


0
投票

Blockchair API

现在一个很好的 API 是 Blockchair,例如通过增加日期来获取所有输出到

1MVpQJA7FtcDrwKC6zATkZvZcxqma4JixS
的交易,这是 cryptograffiti.info 的地址:

#!/usr/bin/env bash
set -eu
d=data/cryptograffiti-blockchair
i=0
# max allowed
limit=100
rm -rf "$d"
mkdir -p "$d"
while true; do
  f="$d/$i"
  echo curl "https://api.blockchair.com/bitcoin/outputs?offset=$((i * limit))&limit=$limit&s=time(asc)&q=recipient(1MVpQJA7FtcDrwKC6zATkZvZcxqma4JixS)"
  curl "https://api.blockchair.com/bitcoin/outputs?offset=$((i * limit))&limit=$limit&s=time(desc)&q=recipient(1MVpQJA7FtcDrwKC6zATkZvZcxqma4JixS)" | jq -r '.data[].transaction_hash' > "$f"
  if [ "$(wc -l "$f" | cut -f1 -d' ')" -lt "$limit" ]; then
    break
  fi
  i=$((i+1))
done
cat "$d"/* > data/cryptograffiti

您可以从 UI 中以交互方式构建此内容:https://blockchair.com/bitcoin/outputs?s=time(desc)&q=recipient(1MVpQJA7FtcDrwKC6zATkZvZcxqma4JixS)

TODO:即地址,从地址查找。

在 Ubuntu 23.10 上测试。

© www.soinside.com 2019 - 2024. All rights reserved.