Exemplo n.º 1
0
        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);
                        }
                    }
                }
            }
        }
Exemplo n.º 2
0
        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);
                }
            }
        }