public void CreateUser(string publicKey, string name, string id) { var user = Transaction.CreateUserTransacton(publicKey, name, id, db.GetLastUserCreation().Hash); if (CheckTransaction(user)) { var list = new List <Transaction>(); list.Add(user); var message = new TransactionsMessage(list); net.SendMessageToAllPeers(message); } }
public void CreateVoting(List <string> candidatesHashes, string votingName) { var prevVoting = db.GetLastVoting(); var voting = Transaction.StartVotingTransation(candidatesHashes, votingName, prevVoting.VotingNumber + 1, prevVoting.Hash); if (CheckTransaction(voting)) { var list = new List <Transaction>(); list.Add(voting); var message = new TransactionsMessage(list); net.SendMessageToAllPeers(message); } }
public void CreateVote(string candidateHash, string votingHash) { var voting = db.GetTransaction(votingHash); var vote = Transaction.VoteTransaction(candidateHash, voting.Hash, voting.VotingNumber); if (CheckTransaction(vote)) { var list = new List <Transaction>(); list.Add(vote); var message = new TransactionsMessage(list); net.SendMessageToAllPeers(message); } }
public void BanUser(string publicKey, string cause) { var prevTransaction = db.GetUserCreation(publicKey); var userBan = Transaction.BanUserTransaction(cause, publicKey, prevTransaction.Hash); if (CheckTransaction(userBan)) { var list = new List <Transaction>(); list.Add(userBan); var message = new TransactionsMessage(list); net.SendMessageToAllPeers(message); } }
private void OnRequestTransactionsMessage(object sender, MessageEventArgs e) { var message = e.Message as RequestTransactionsMessage; var transactions = new List <Transaction>(); foreach (var hash in message.Hashes) { var tr = db.GetTransaction(hash); if (tr != null) { transactions.Add(tr); } else { //если не нашли транзакцию, ищем по хешу пользователя //сначала отсылаем бан, чтобы запросившая транзакция правильно проверялась var userBan = db.GetUserBan(hash); if (userBan != null) { transactions.Add(userBan); } var userCreation = db.GetUserCreation(hash); if (userCreation != null) { transactions.Add(userCreation); } } } if (message.Date > 0) { //получаем все свободные транзакции, а не только с даты, поскольку иногда дата указывается неверно в запросе (поздняя) //transactions.AddRange(db.GetFreeTransactionsFromDate(message.Date0, CommonHelpers.TransactionsInBlock)); transactions.AddRange(db.GetFreeTransactions(CommonHelpers.TransactionsInBlock)); } if (transactions.Count > 0) { var messageToSend = new TransactionsMessage(transactions); net.SendMessageToPeer(messageToSend, e.SenderAddress); } }