美文网首页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