C++從零開始區塊鏈:區塊鏈業務模組之挖礦
阿新 • • 發佈:2018-11-03
挖礦就是找到一個滿足工作量驗證條件的工作量證明,當一個節點找到了一個工作量證明之後,首先以給自己新增一個挖礦交易的形式進行金額獎勵,即新增一個付款地址為0,收款地址為自己的交易到自己的交易記錄。然後錄他會將自己記錄的所有交易資訊打包程一個區塊,並向其他節點進行廣播。其他節點接收到以後會對工作量證明進行驗證,驗證通過後就會將該區塊掛到自己的區塊鏈上,等下次與主鏈同步的時候同步到主鏈上。
為了簡化驗證一個工作量證明是否已經存在與鏈上的工作,每次挖礦都從上一個區塊的工作量證明開始。
std::string BlockChain::Mining(const std::string &addr)
{
//挖礦的交易,交易支出方地址為0
//每次挖礦成功獎勵10個幣
Block last = GetLastBlock();
int proof = WorkloadProof(last.proof);
Transactions ts = CreateTransactions("0", addr, 10);
InsertTransactions(ts);
Block block = CreateBlock(last.index + 1, time(NULL), proof);
return GetJsonFromBlock(block);
}
以上就是挖礦流程,建立交易和區塊將在下篇介紹,如何廣播到P2P網路中以後再介紹。