C++從零開始區塊鏈:區塊鏈業務模組之餘額檢查
阿新 • • 發佈:2018-11-03
比特幣中的餘額檢查實現起來好麻煩,嚴格來說比特幣中並沒有所謂的餘額,具體請讀者自行百度比特幣相關的資料。
在本例中,我們採用一個效率低下,但很簡單的方法:遍歷整個區塊鏈的所有交易,查詢要查詢的地址參與的所有交易,如果目標地址是支出方,就減少,是收入方就增加,便利後的結果就餘額
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;
}