public void MinerSave() { if (httpPool != null) { Dictionary <string, MinerTask> miners = httpPool.GetMinerReward(out long miningHeight); if (miners != null && miningHeight + 3 < httpPool.height) { using (DbSnapshot snapshot = PoolDBStore.GetSnapshot()) { string json = snapshot.Get("Pool_H_Miner"); long height_miner = -1; if (!string.IsNullOrEmpty(json)) { long.TryParse(json, out height_miner); } if (height_miner == -1 || height_miner < miningHeight) { snapshot.Add("Pool_H_Miner", miningHeight.ToString()); snapshot.Add("Pool_H_" + miningHeight, JsonHelper.ToJson(miners)); snapshot.Commit(); httpPool.DelMiner(miningHeight); } } } } }
public void MinerReward() { if (httpPool != null) { Dictionary <string, MinerTask> miners = httpPool.GetMinerReward(out long miningHeight); if (miners != null && miningHeight + 3 < height) { string ownerAddress = Wallet.GetWallet().GetCurWallet().ToAddress(); var mcblk = BlockChainHelper.GetMcBlock(miningHeight); if (mcblk != null && mcblk.Address == ownerAddress) { var miner = miners.Values.First(c => c.random == mcblk.random); WalletKey walletKey = Wallet.GetWallet().GetCurWallet(); // 出块奖励 if (miner != null) { Transfer transfer = new Transfer(); transfer.addressIn = ownerAddress; transfer.addressOut = miner.address; transfer.amount = Consensus.GetReward(miningHeight).ToString(); transfer.nonce = TimeHelper.NowSeconds(); transfer.type = "tranfer"; transfer.hash = transfer.ToHash(); transfer.sign = transfer.ToSign(walletKey); minerTransfer.Add(mcblk.hash, transfer); } // 参与奖励 } httpPool.DelMiner(miningHeight); } } }