有没有办法通过使用API RPC到bitcoind来列出给定地址的所有交易?实际上,我使用的是btcd,大多数非钱包功能与bitcoind相同,但我找不到任何方法来做到这一点。
由于交易索引的方式,您无法使用 Bitcoind 执行此类查询,我假设 btcd 的情况相同。
如果您想获取此信息,您有以下几种选择:
编辑:Toshi 不再维护,并且 chain.com 不再提供此 API。
btcd 最近合并了一项功能,该功能创建可用于查询特定地址的地址索引
https://github.com/btcsuite/btcd/issues/190
要启用此功能,请使用 addrindex 标志运行 btcd,如下所示 -
btcd --addrindex
可以使用新的 searchrawtransactions rpc 调用通过 RPC 查询交易。创建地址索引需要一段时间,所以要等到索引完成才能使用这个索引
据我所知,没有方法可以列出给定比特币地址的所有交易。但您可以使用帐户。
您可以为每个账户创建一个比特币地址。并且有方法列出给定帐户的所有交易listtransactions。
了解有关帐户的更多信息:https://en.bitcoin.it/wiki/Accounts_explained
Bitcoind API 调用列表:https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_Calls_list
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 上测试。