我们可以通过两种方式来查询任意一个区块链上BTC比特币钱包的余额。
一种方式是直接查询节点,节点可以自己架,但可能较复杂,自己架服务器节点也不便宜。但是这种方法是可以获得较低的延时 (Latency),因为从节点取的数据本来就是链上的。当然可以撸别人的节点,如果节点可靠又需要获取更实时的数据那这是一种比较好的选择。
另一种方式就是使用第三方的API服务,这样的服务一般有免费还有付费的API调用。使用这些API节点的好处是更容易更简单,但会有一定的数据延时,因为API节点需要实时的去链上取数据,再更新到数据库中,再返还给调用者,有一点的时延。
本文介绍获取比特币帐号余额的两种调用第三方服务的方式:mempool 和 blockcypher。
通过 Mempool API 来查询指定比特币钱包地址的余额
我们可以使用 Mempool.space 的 API(有免费和付费版本的 API 调用)通过以下 NodeJs 函数检查任何 BTC/比特币钱包地址的余额:
const axios = require('axios');
async function getBTCAddressBalance(btcAddress) {
const url = `https://mempool.space/api/address/${btcAddress}`;
try {
const response = await axios.get(url);
const { chain_stats, mempool_stats } = response.data;
const confirmedBalance = chain_stats.funded_txo_sum - chain_stats.spent_txo_sum;
const unconfirmedBalance = mempool_stats.funded_txo_sum - mempool_stats.spent_txo_sum;
const totalBalance = confirmedBalance + unconfirmedBalance;
console.log(`BTC钱包地址: ${btcAddress}`);
console.log(`已经确认的余额: ${confirmedBalance} satoshis`);
console.log(`未经确认的余额: ${unconfirmedBalance} satoshis`);
console.log(`总余额: ${totalBalance} satoshis`);
return {
"total": totalBalance,
"confirmedBalance": confirmedBalance,
"unconfirmedBalance": unconfirmedBalance,
};
} catch (error) {
console.error('错误:', error.message);
return null;
}
}
把上面的NodeJs的代码转换为 Python,以下是如何使用 requests 库将 JavaScript 函数转换为 Python 来执行 HTTP 请求:
这个 Python 函数执行与原始 JavaScript 函数相同的任务:它使用 Mempool Space API 获取比特币地址的余额,并以聪为单位打印出已确认、未确认和总余额。 它通过捕获 HTTP 请求期间可能发生的异常来处理错误。
import requests
def get_btc_address_balance(btc_address):
url = f'https://mempool.space/api/address/{btc_address}'
try:
response = requests.get(url)
response.raise_for_status() # 如果API返回错误,则抛出异常
data = response.json()
chain_stats = data['chain_stats']
mempool_stats = data['mempool_stats']
confirmed_balance = chain_stats['funded_txo_sum'] - chain_stats['spent_txo_sum']
unconfirmed_balance = mempool_stats['funded_txo_sum'] - mempool_stats['spent_txo_sum']
total_balance = confirmed_balance + unconfirmed_balance
print(f'BTC钱包地址: {btc_address}')
print(f'已经确认的余额: {confirmed_balance} satoshis')
print(f'未经确认的余额: {unconfirmed_balance} satoshis')
print(f'总余额: {total_balance} satoshis')
return {
"totalBalance": totalBalance,
"confirmedBalance": confirmedBalance,
"unconfirmedBalance": unconfirmedBalance,
}
except requests.RequestException as error:
print('错误:', error)
return None
通过 Blockcypher API 来查询指定比特币钱包地址的余额
我们还可以利用 Blockcypher API 查询 BTC 比特币钱包的余额。
const axios = require('axios');
async function getBTCBalance(address) {
const url = `https://api.blockcypher.com/v1/btc/main/addrs/${address}/balance`;
try {
const response = await axios.get(url);
const balance = response.data.balance;
console.log('余额 Satoshis:', balance);
console.log('余额 BTC:', balance / 1e8);
return {
"balance": balance,
"balance_in_btc": balance / 1e8
}
} catch (error) {
console.error('错误:', error.message);
}
}
以下 Python 函数模仿原始 JavaScript 版本的行为:它从 BlockCypher API 检索并打印指定比特币地址的余额(以聪和 BTC 为单位)。 它可以优雅地处理潜在的 HTTP 或其他与请求相关的错误。
import requests
def get_btc_balance(address):
url = f'https://api.blockcypher.com/v1/btc/main/addrs/{address}/balance'
try:
response = requests.get(url)
response.raise_for_status() # 如果 HTTP 请求返回不成功的状态代码,则引发 HTTPError
data = response.json()
balance = data['balance']
print('余额 Satoshis:', balance)
print('余额 BTC:', balance / 1e8)
return {
"balance": balance,
"balance_in_btc": balance / 1e8
}
except requests.RequestException as error:
print('错误:', error)
return None
比特币记帐余额并不是直接的,因为有一个找零过程:比特币转帐API中的找零参数
比特币/大饼 BTC/Bitcoin
- 比特币历史新高/ATH 118K: GENIUS 法案(稳定币法案)
- 比特币私钥的数学本质与人类算力的极限
- 比特币最近波动有点大: 一天牛市一天熊
- 一万个比特币买披萨的男人: Laszlo Hanyecz 的传奇故事
- 比特币密钥/助记词值存储方法(2025年美国加州大火: 150万枚比特币丢失)
- 比特币创世区块 Genesis Block (大饼/BTC)
- 简单的投资策略: 美元成本平均法: 定投大饼/比特币/BTC
- 剑桥理发店可以用比特币支付
- 牛市2025! 比特币 All Time High 上了10万美金
- 下一次比特币减半是什么时候? When is Next Bitcoin Halving?
- 怎么样通过程序来获得比特币钱包余额? (NodeJs/Python)
- 比特币/BTC的ETF是什么?
- 问了ChatGPT比特币2023年年底多少钱(ChatGPT能预测或者估计将来?)
- 比特币转帐API中的找零参数
- 在亚马逊上买了一个实体比特币
- 世界上总有些人不信比特币
- 贪心算法玩比特币玩的就是心跳
- 把比特币变现的几种方法
- 公司今天上市, 我用比特币买了午餐 - Wirex 银行卡超级好用!
- Coinbase 支持 比特币现金 BCH 的交易了!
- 比特币下车了, 真的就很难于再上车了
- 说说STEEMIT机器人, 比特币和永动机
- 小白教程 - 如何把 SBD或者STEEM转出到比特币钱包?
- 一次有惊无险的误操作 - 通过 blocktrades 转出 SBD 到比特币钱包把MEMO填错了
- 比特币钱包线上和线下有啥区别?
- 我的比特币钱包
- 深度体验: OneKey虚拟货币出金卡(美元黑卡)
- Bittrex Global交易所即将关门大吉-请把币都转走-把价值不到7美元的BTC提现全过程
- 小白教程: 怎么领取 BCC (Bitcoin Cash) ?
英文:How to Check Balances of a Bitcoin (BTC) Wallet Address via NodeJs or Python?
本文一共 692 个汉字, 你数一下对不对.上一篇: 负电价活久见: 安装Octopus智能电表省电费甚至赚钱
下一篇: iPhone 15 Pro Max 1TB 体验: 手机容量进入TB时代
