美文网首页bitcoin
比特币钱包-btcwallet(四)账户余额统计

比特币钱包-btcwallet(四)账户余额统计

作者: 链人成长chainerup | 来源:发表于2019-10-17 11:11 被阅读0次

本文将讲解账户余额的统计。

1 getbalance 账户层面的余额统计 主干流程

// zp 为账户名
btcctl --simnet --rpcuser=rpcuser --rpcpass=rpcpass --wallet getbalance zp

核心流程是 https://github.com/btcsuite/btcwallet/blob/7abdd4f8ad7dcf22c5dd90d123b0c137f93d3879/rpc/legacyrpc/methods.go#L435

var account uint32
    // 根据账户名获取当前钱包,BIP44格式下的accountnumber
        account, err = w.AccountNumber(waddrmgr.KeyScopeBIP0044, accountName)
        if err != nil {
            return nil, err
        }
// 根据account number获取余额。
        bals, err := w.CalculateAccountBalances(account, int32(*cmd.MinConf))
        if err != nil {
            return nil, err
        }
        balance = bals.Spendable
    }
// 返回BTC格式的余额。
    return balance.ToBTC(), nil

其中 CalculateAccountBalances的核心流程是


CalculateAccountBalances.png

2 获取所有UTXO的逻辑:

(1)从未被消费的bucket中获取未消费输出
(2)从已经打包,但是未被包含进的bucket中获取未消费输出。

3 参考文献

btcwallet 源码 btcwallet version 0.7.0-alpha

4 其他

本文是《循序渐进比特币》的第十篇-《btcwallet(四)账户余额统计》。
如果有疑问,可以直接留言,也可以关注公众号 “链人成长chainerup” 提问留言,或者加入知识星球“链人成长”~

相关文章

网友评论

    本文标题:比特币钱包-btcwallet(四)账户余额统计

    本文链接:https://www.haomeiwen.com/subject/wbtvpctx.html