private static Transaction AddTransaction(UInt16 Index) { Console.Clear(); Console.Write("Transaction Data: "); string Data = Console.ReadLine(); return(_chain.AddTransaction(config, Index, "Network", "Network", Data)); }
public string GetKey() { var rsa = new RSACryptoServiceProvider(1024); RSAParameters parameters = rsa.ExportParameters(true); Key key = new Key(HashGenerator.CalculateHash(Convert.ToBase64String(parameters.D))); key.PublicKey = HashGenerator.CalculateHash(key.PrivateKey + parameters.D + parameters.DP + parameters.DQ + parameters.Exponent); Transaction tx = new Transaction(TestWalletAddress, key.PublicKey, 50); tx.SignTransaction(new Key() { PrivateKey = TestKey, PublicKey = TestWalletAddress }); KevCoin.AddTransaction(tx); // KevCoin.MinePendingTransactions(TestWalletAddress); return($"Private key: {key.PrivateKey}" + $"\nPublic key: {key.PublicKey}" + $"\nYour free reward of 50 coins is added to pending transactions."); }
public IActionResult AddTransaction([FromBody] AddTransactionViewModel model) { try { var transaction = _blockchain.AddTransaction(model.Sender, model.Receiver, model.Amount); return(Ok(transaction)); } catch (Exception ex) { return(BadRequest(ex.Message)); } }
static void Main(string[] args) { Blockchain blockchain = new Blockchain(); blockchain.AddTransaction(0, 200, 866m); Console.WriteLine(blockchain.MineFirstPendingTransaction(2)); var hash = blockchain.Chain[1].Transactions[0].Hash; string hashString = string.Empty; foreach (var currByte in hash) { hashString.Insert(hashString.Length, ((int)currByte).ToString("X4")); } Console.WriteLine(hashString); }
public async Task <IActionResult> CastVote(UserSignedVoteDTO userSignedVoteDto) { var user = await _userManager.FindByNameAsync(userSignedVoteDto.UserName); // var result = await _userManager.VerifyUserTokenAsync(user, "EVoting", "Vote", userSignedVoteDto.Token); // if (!result) return Unauthorized(); var userDetail = await _context.UserDetails.FirstOrDefaultAsync(x => x.UserId == user.Id); var voteToCheck = new Vote() { EncryptedIV = userSignedVoteDto.Vote.EncryptedIV, EncryptedKey = userSignedVoteDto.Vote.EncryptedKey, EncryptedVote = userSignedVoteDto.Vote.EncryptedVote, VoterId = userSignedVoteDto.Vote.VoterId }; var userSignatureCheck = CryptoService.VerifySignature(Converters.ConvertToByteArray(voteToCheck), userSignedVoteDto.Signature, userDetail.PublicKey); if (!userSignatureCheck) { return(Unauthorized()); } var authPrivateKey = _authService.GetPrivateKey(); var authSignedVoteDto = new AuthSignedVoteDTO() { Vote = userSignedVoteDto.Vote, Signature = CryptoService.SignItem(Converters.ConvertToByteArray(userSignedVoteDto.Vote), authPrivateKey) }; //////////////////////// NODE PART TODO: Move to real nodes //////////////////////////////////// var authPublicKey = _authService.GetPublicKey(); var authSignatureCheck = CryptoService.VerifySignature(Converters.ConvertToByteArray(authSignedVoteDto.Vote) , authSignedVoteDto.Signature, authPublicKey); if (!authSignatureCheck) { return(Unauthorized()); } var nodePrivateKey = _nodeService.GetPrivateKey(); var nodeSignature = CryptoService.SignItem(Converters.ConvertToByteArray(authSignedVoteDto.Vote), nodePrivateKey); var transaction = new Transaction() { EncryptedIV = authSignedVoteDto.Vote.EncryptedIV, EncryptedKey = authSignedVoteDto.Vote.EncryptedKey, EncryptedVote = authSignedVoteDto.Vote.EncryptedVote, VoterId = authSignedVoteDto.Vote.VoterId, Signature = nodeSignature }; var nodePublicKey = _nodeService.GetPublicKey(); _blockchain.AddPublicKey("node", nodePublicKey); var transactionAddCheck = _blockchain.AddTransaction(transaction); if (!transactionAddCheck) { return(Unauthorized()); } _blockchain.MineBlock(); return(Ok(new BaseResponseDTO() { Success = true, Message = "Vote registered succesfully." })); }