你的浏览器不支持canvas

C++从零开始区块链:区块链业务模块之余额检查

Date: Author: zhangn

本文章采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。转载请注明来自zhangn的云笔记

比特币中的余额检查实现起来好麻烦,严格来说比特币中并没有所谓的余额,具体请读者自行百度比特币相关的资料。

在本例中,我们采用一个效率低下,但很简单的方法:遍历整个区块链的所有交易,查找要查询的地址参与的所有交易,如果目标地址是支出方,就减少,是收入方就增加,便利后的结果就余额

int BlockChain::CheckBalances(const std::string &addr)
{
    int balan = 0;

    std::list<Block>::iterator bit;
    std::list<Transactions>::iterator tit;

    pthread_mutex_lock(&m_mutexBlock);
    for (bit = m_lst_block.begin(); bit != m_lst_block.end(); ++bit)
    {
        for (tit = bit->lst_ts.begin(); tit != bit->lst_ts.end(); ++tit)
        {
            if (tit->recipient == addr)
                balan += tit->amount;
            else if (tit->sender == addr)
                balan -= tit->amount;
        }
    }
    pthread_mutex_unlock(&m_mutexBlock);

    return balan;
}

对于本文内容有问题或建议的小伙伴,欢迎在文章底部留言交流讨论。