private void OnRequestBlocksMessage(object sender, MessageEventArgs e)
        {
            var message = e.Message as RequestBlocksMessage;
            var blocks  = new List <Block>();

            foreach (var hash in message.Hashes)
            {
                if (hash == "0")
                {
                    return;
                }
                var block = db.GetBlock(hash);
                if (block != null)
                {
                    blocks.Add(block);
                }
            }

            //если пришел пустой запрос, отсылаем последний блок
            if (message.Hashes.Count == 0)
            {
                blocks.Add(db.GetLastBlock());
            }

            var messageToSend = new BlocksMessage(blocks);

            net.SendMessageToPeer(messageToSend, e.SenderAddress);
        }
        private void MakeBlock()
        {
            var transactions = db.GetFreeTransactions(CommonHelpers.TransactionsInBlock);

            if (transactions.Count < CommonHelpers.TransactionsInBlock || !VotingsUser.CreateOwnBlocks)
            {
                return;
            }

            //помечаем их как ожидающие, поскольку сейчас создадим блок
            foreach (var item in transactions)
            {
                db.MarkTransaction(item, TransactionStatus.InPendingBlock);
            }


            var lastBlock = db.GetLastBlock();
            var newBlock  = new Block(transactions, lastBlock);

            //проверка блока и добавление его в базу
            if (CheckBlock(newBlock))
            {
                //отправка блока всем клиентам
                var list = new List <Block>();
                list.Add(newBlock);
                var message = new BlocksMessage(list);

                net.SendMessageToAllPeers(message);
            }
        }