public BlockchainAddress FindByAddressAndPrivateKey(string address, string privatekey) { var cmd = new MySqlCommand("select * from BlockchainAddress where Address = @Address And PrivateKey = @PrivateKey ", ConnectionHelper.GetConnection()); cmd.Parameters.AddWithValue("@Address", address); cmd.Parameters.AddWithValue("@PrivateKey", privatekey); BlockchainAddress blockchainAddress = null; var reader = cmd.ExecuteReader(); if (reader.Read()) { blockchainAddress = new BlockchainAddress(); { Address = reader.GetString("address"); PrivateKey = reader.GetString("privatekey"); Balance = reader.GetString("balance"); }; } ConnectionHelper.GetConnection(); return(blockchainAddress); }
public BlockchainAddress FindByAddressAndPrivateKey(string address, string privatekey) { var cmd = new MySqlCommand( "select * from BlockchainAddress where Address = @Address And PrivateKey = @PrivateKey ", ConnectionHelper.GetConnection()); cmd.Parameters.AddWithValue("@Address", address); cmd.Parameters.AddWithValue("@PrivateKey", privatekey); var reader = cmd.ExecuteReader(); if (!reader.Read()) { return(null); } var blockchainAddress = new BlockchainAddress { Address = reader.GetString("Address"), PrivateKey = reader.GetString("PrivateKey"), Balance = reader.GetString("Balance") }; reader.Close(); Console.WriteLine("address" + blockchainAddress.Address); ConnectionHelper.GetConnection(); return(blockchainAddress); }
public BlockchainAddress FindByAddressAndPrivateKey(string address, string privateKey) { // Tạo connection đến db, lấy ra trong bảng shb account những tài khoản có username, password trùng. var cmd = new MySqlCommand( "select * from blockchain where address = @address and privateKey = @privateKey", ConnectionHelper.GetConnection()); cmd.Parameters.AddWithValue("@address", address); cmd.Parameters.AddWithValue("@privateKey", privateKey); // Tạo ra một đối tượng của lớp shbAccount. BlockchainAddress blockchainAddress = null; // Đóng Connection và trả về đối tượng này. var dataReader = cmd.ExecuteReader(); if (dataReader.Read()) { blockchainAddress = new BlockchainAddress() { Address = dataReader.GetString("address"), PrivateKey = dataReader.GetString("privateKey"), Balance = dataReader.GetDouble("balance") }; } ConnectionHelper.CloseConnection(); // Trong trường hợp không tìm thấy tài khoản thì trả về null. return(blockchainAddress); }
public BlockchainAddress GetAddressesInfo(string id, string networkName) { try { BlockchainAddress blockchainAddresses = null; switch (networkName) { case CryptoCurrency.BTC: blockchainAddresses = new BitcoinAddressRepository(Connection) .FindById(id); break; case CryptoCurrency.ETH: blockchainAddresses = new EthereumAddressRepository(Connection) .FindById(id); break; case CryptoCurrency.VAKA: blockchainAddresses = new VakacoinAccountRepository(Connection) .FindById(id); break; default: throw new Exception("Network name is not defined!"); } return(blockchainAddresses); } catch (Exception e) { Console.WriteLine(e); throw; } }
public object UpdateData(string address, string publicKey) { SecurityContext.DemandPermissions(new UserSecurityProvider(SecurityContext.CurrentAccount.ID), Core.Users.Constants.Action_EditUser); var currentAddressString = BlockchainLoginProvider.GetAddress(); if (!string.IsNullOrEmpty(currentAddressString)) { var currentAddress = JsonConvert.DeserializeObject <BlockchainAddress>(currentAddressString); if (currentAddress.PublicKey.Equals(publicKey)) { return new { isset = true } } ; LogManager.GetLogger("ASC.Api.Documents").InfoFormat("User {0} updates address", SecurityContext.CurrentAccount.ID); } var account = new BlockchainAddress { Address = address, PublicKey = publicKey }; var accountString = JsonConvert.SerializeObject(account); BlockchainLoginProvider.UpdateData(accountString); return(new { isset = !string.IsNullOrEmpty(BlockchainLoginProvider.GetAddress()) }); }
public bool UpdateBalance(BlockchainAddress currentLoggedInAddress, BlockchainTransaction transaction) { ConnectionHelper.GetConnect(); var trans = ConnectionHelper.GetConnect().BeginTransaction(); try { var cmd = new MySqlCommand("SELECT balance FROM blockchainaccounts WHERE address = @address", ConnectionHelper.GetConnect()); cmd.Parameters.AddWithValue("@address", currentLoggedInAddress.Address); var dataReader = cmd.ExecuteReader(); double currentBalance = 0; if (dataReader.Read()) { currentBalance = dataReader.GetDouble("balance"); } dataReader.Close(); if (transaction.Type == BlockchainTransaction.TransactionType.WITHDRAW && currentBalance < (double)transaction.Amount) { throw new Exception("Không đủ tiền trong tài khoản."); } if (transaction.Type == BlockchainTransaction.TransactionType.WITHDRAW) { currentBalance -= (double)transaction.Amount; } if (transaction.Type == BlockchainTransaction.TransactionType.DEPOSIT) { currentBalance += (double)transaction.Amount; } var cmd1 = new MySqlCommand("UPDATE blockchainaccounts SET balance = @balance WHERE address = @address", ConnectionHelper.GetConnect()); cmd1.Parameters.AddWithValue("@balance", currentBalance); cmd1.Parameters.AddWithValue("@address", currentLoggedInAddress.Address); var updateResult = cmd1.ExecuteNonQuery(); var cmd2 = new MySqlCommand("INSERT INTO blockchaintransactions (transactionId, senderAddress, receiverAddress, type, amount, createdAt, updatedAt, status) values ( @transactionId, @senderAddress, @receiverAddress, @type, @amount, @createdAt, @updatedAt, @status) ", ConnectionHelper.GetConnect()); cmd2.Parameters.AddWithValue("@transactionId", transaction.TransactionId); cmd2.Parameters.AddWithValue("@senderAddress", transaction.SenderAddress); cmd2.Parameters.AddWithValue("@receiverAddress", transaction.ReceiverAddress); cmd2.Parameters.AddWithValue("@type", transaction.Type); cmd2.Parameters.AddWithValue("@amount", transaction.Amount); cmd2.Parameters.AddWithValue("@createdAt", transaction.CreatedAtMLS); cmd2.Parameters.AddWithValue("@updatedAt", transaction.UpdatedAtMLS); cmd2.Parameters.AddWithValue("@status", transaction.Status); var transactionResult = cmd2.ExecuteNonQuery(); if (updateResult != 1 || transactionResult != 1) { throw new Exception("Không thể thêm giao dịch hoặc update tài khoản."); } trans.Commit(); } catch (Exception e) { trans.Rollback(); Console.WriteLine(e); return(false); } ConnectionHelper.CloseConnect(); return(true); }
public IEnumerable <BlockchainAddress> GetAccessAddresses(string fileId) { var accountsString = BlockchainAddress.GetAddress(fileId); var accounts = accountsString.Select(JsonConvert.DeserializeObject <BlockchainAddress>); return(accounts); }
public bool Save(BlockchainAddress blockchainAddress) { var cmd = new MySqlCommand("INSERT INTO blockchainaccounts (address, privateKey, balance) values (@address, @privateKey, @balance)", ConnectionHelper.GetConnect()); cmd.Parameters.AddWithValue("@address", blockchainAddress.Address); cmd.Parameters.AddWithValue("@privateKey", blockchainAddress.PrivateKey); cmd.Parameters.AddWithValue("@balance", blockchainAddress.Balance); var result = cmd.ExecuteNonQuery(); ConnectionHelper.CloseConnect(); return(result == 1); }
public async Task <WalletInfo> GenerateAddress(Currency currency, Guid userId) { logger.LogInformation("Start {Method} {Currency} {UserId}", nameof(GenerateAddress), currency, userId); NewWalletAddress result = null; //var customKey = CreateKey(userId); try { result = await addressService.GenerateAddress(currency); } catch (Exception e) { logger.LogWarning("Wallet was not created {Method} {UserId} {Exception}", nameof(GenerateAddress), userId, e.ToString()); logger.LogError("Wallet was not created {Method} {UserId} {Exception}", nameof(GenerateAddress), userId, e.ToString()); } if (result == null) { logger.LogError("Wallet was not created {Method} {UserId}", nameof(GenerateAddress), userId); //TODO: Try to use another gateway? return(null); } var blockchainAddress = new BlockchainAddress() { Type = BlockchainAddressType.Deposit, DateCreated = DateTime.UtcNow, GatewayCode = defaultGatewayCode, Address = result.Address, VerificationCode = result.VerificationCode, UserId = userId, IsActive = true, Currency = currency }; context.BlockchainAddresses.Add(blockchainAddress); await context.SaveChangesAsync(); logger.LogInformation("Wallet created {WalletId};Address:{Address};UserId:{UserId}", blockchainAddress.Id, result.Address, blockchainAddress.UserId); return(new WalletInfo() { WalletId = blockchainAddress.Id, Address = blockchainAddress.Address, Currency = blockchainAddress.Currency }); }
private static void GenerateTransactionMenu(GiaoDich giaoDich) { while (true) { Console.WriteLine("Please select the transaction type."); Console.WriteLine("=================================="); Console.WriteLine("1. Withdraw."); Console.WriteLine("2. Deposit."); Console.WriteLine("3. Transfer."); Console.WriteLine("4. Exit."); Console.WriteLine("==================================="); Console.WriteLine("Please enter your choice: "); var choice1 = int.Parse(Console.ReadLine()); switch (choice1) { case 1: giaoDich.Withdraw(); break; case 2: giaoDich.Deposit(); break; case 3: giaoDich.Transfer(); break; case 4: break; default: Console.WriteLine("Wrong choice, please try again!"); break; } if (choice1 == 4) { Console.WriteLine("Bye! see you again!"); currentLoggedInAccount = null; currentLoggedInAddress = null; break; } } }
public BlockchainAddress FindByAddress(string address) { var cmd = new MySqlCommand("SELECT * FROM blockchainaccounts WHERE address = @address", ConnectionHelper.GetConnect()); cmd.Parameters.AddWithValue("@address", address); var dataReader = cmd.ExecuteReader(); BlockchainAddress blockchainAddress = null; if (dataReader.Read()) { blockchainAddress = new BlockchainAddress { Address = dataReader.GetString(0), PrivateKey = dataReader.GetString(1), Balance = dataReader.GetDouble(2), }; } ConnectionHelper.CloseConnect(); return(blockchainAddress); }
public BlockchainAddress GetAddress(string addrress) { ConnectionHelper.GetConnection(); var queryString = "select * from `blockchain` where `address` = @address"; var cmd = new MySqlCommand(queryString, ConnectionHelper.GetConnection()); cmd.Parameters.AddWithValue("@address", addrress); var dataReader = cmd.ExecuteReader(); BlockchainAddress blockchainAddress = null; if (dataReader.Read()) { blockchainAddress = new BlockchainAddress() { Address = dataReader.GetString("address"), PrivateKey = dataReader.GetString("privateKey"), Balance = dataReader.GetDouble("balance"), }; } dataReader.Close(); ConnectionHelper.CloseConnection(); return(blockchainAddress); }
public BlockchainAddress FindByAddressAndPrivateKey(string address, string privateKey) { var cmd = new MySqlCommand( "select * from BlockChainAccount where address = @address and privateKey = @privateKey", ConnectionHelper.GetConnection()); cmd.Parameters.AddWithValue("@address", address); cmd.Parameters.AddWithValue("@privateKey", privateKey); BlockchainAddress blockchainAddress = null; var dataReader = cmd.ExecuteReader(); if (dataReader.Read()) { blockchainAddress = new BlockchainAddress() { Address = dataReader.GetString("address"), PrivateKey = dataReader.GetString("privateKey"), Balance = dataReader.GetDouble("balance") }; } ConnectionHelper.CloseConnection(); return(blockchainAddress); }
// public Wallet FindByAddress(string address) // { // try // { // string query = $"SELECT * FROM {TableName} WHERE Address = '{address}'"; // List<Wallet> wallets = FindBySql(query); // if (wallets == null || wallets.Count == 0) // return null; // return wallets[0]; // } // catch (Exception e) // { // Console.WriteLine(e); // return null; // } // } public Wallet FindByAddressAndNetworkName(string address, string networkName) { try { var walletId = ""; BlockchainAddress blockchainAddress = null; switch (networkName) { case CryptoCurrency.BTC: blockchainAddress = new BitcoinAddressRepository(Connection).FindByAddress(address); break; case CryptoCurrency.ETH: blockchainAddress = new EthereumAddressRepository(Connection).FindByAddress(address); break; case CryptoCurrency.VAKA: blockchainAddress = new VakacoinAccountRepository(Connection).FindByAddress(address); break; } if (blockchainAddress == null) { return(null); } walletId = blockchainAddress.WalletId; return(FindById(walletId)); } catch (Exception e) { Console.WriteLine(e); throw; } }
private static string ProcessSave(string fileId, TrackerData fileData) { Guid userId; var comments = new List <string>(); if (fileData.Status == TrackerStatus.Corrupted) { comments.Add(FilesCommonResource.ErrorMassage_SaveCorrupted); } if (fileData.Users == null || fileData.Users.Count == 0 || !Guid.TryParse(fileData.Users[0], out userId)) { userId = FileTracker.GetEditingBy(fileId).FirstOrDefault(); } File file; using (var fileDao = Global.DaoFactory.GetFileDao()) { file = fileDao.GetFile(fileId); } var docKey = DocumentServiceHelper.GetDocKey(file); if (!fileData.Key.Equals(docKey)) { Global.Logger.ErrorFormat("DocService saving file {0} ({1}) with key {2}", fileId, docKey, fileData.Key); StoringFileAfterError(fileId, userId.ToString(), DocumentServiceConnector.ReplaceDocumentAdress(fileData.Url)); return("0"); } try { SecurityContext.AuthenticateMe(userId); } catch (Exception ex) { Global.Logger.Info("DocService save error: anonymous author - " + userId, ex); if (!userId.Equals(ASC.Core.Configuration.Constants.Guest.ID)) { comments.Add(FilesCommonResource.ErrorMassage_SaveAnonymous); } } file = null; var saved = false; if (string.IsNullOrEmpty(fileData.Url)) { try { comments.Add(FilesCommonResource.ErrorMassage_SaveUrlLost); file = EntryManager.CompleteVersionFile(fileId, 0, false, false); using (var fileDao = Global.DaoFactory.GetFileDao()) { fileDao.UpdateComment(file.ID, file.Version, string.Join("; ", comments)); } file = null; Global.Logger.ErrorFormat("DocService save error. Empty url. File id: '{0}'. UserId: {1}. DocKey '{2}'", fileId, userId, fileData.Key); } catch (Exception ex) { Global.Logger.Error(string.Format("DocService save error. Version update. File id: '{0}'. UserId: {1}. DocKey '{2}'", fileId, userId, fileData.Key), ex); } } else { if (fileData.Encrypted) { comments.Add(FilesCommonResource.CommentEditEncrypt); } try { file = EntryManager.SaveEditing(fileId, null, DocumentServiceConnector.ReplaceDocumentAdress(fileData.Url), null, string.Empty, string.Join("; ", comments), false, fileData.Encrypted); saved = fileData.Status == TrackerStatus.MustSave; } catch (Exception ex) { Global.Logger.Error(string.Format("DocService save error. File id: '{0}'. UserId: {1}. DocKey '{2}'. DownloadUri: {3}", fileId, userId, fileData.Key, fileData.Url), ex); StoringFileAfterError(fileId, userId.ToString(), DocumentServiceConnector.ReplaceDocumentAdress(fileData.Url)); } } FileTracker.Remove(fileId); if (file != null) { var user = CoreContext.UserManager.GetUsers(userId); if (user != null) { FilesMessageService.Send(file, MessageInitiator.DocsService, MessageAction.UserFileUpdated, user.DisplayUserName(false), file.Title); } SaveHistory(file, (fileData.History ?? "").ToString(), DocumentServiceConnector.ReplaceDocumentAdress(fileData.ChangesUrl)); } Global.SocketManager.FilesChangeEditors(fileId, true); return(string.Format("{{\"error\":{0}{1}}}", saved ? "0" //error:0 - saved : "1", //error:1 - some error saved && file != null && file.Encrypted ? string.Format(",\"addresses\":[{0}]", string.Join(",", BlockchainAddress.GetAddress(file.ID.ToString()))) : string.Empty )); }
public bool UpdateBalance(BlockchainAddress currentLoggedInAccount, BlockchainTransaction transaction) { ConnectionHelper.GetConnection(); var tranB = ConnectionHelper.GetConnection().BeginTransaction(); try { var cmd = new MySqlCommand("select * from Blockchain where Address ,@address", ConnectionHelper.GetConnection()); cmd.Parameters.AddWithValue("@senderAddress", currentLoggedInAccount.PrivateKey); BlockchainAddress blockchainAddress = null; var reader = cmd.ExecuteReader(); double currentAccountBalance = 0; if (reader.Read()) { currentAccountBalance = reader.GetDouble("balance"); } reader.Close(); if (currentAccountBalance < 0) { Console.WriteLine("Không đủ tiền trong tài khoản."); return(false); } if (transaction.Type == 1) { if (currentAccountBalance < transaction.Amount) { Console.WriteLine("Khong du tien thuc hien giao dich"); return(false); } currentAccountBalance -= transaction.Amount; } else if (transaction.Type == 2) { currentAccountBalance += transaction.Amount; } var updateQuery = "update `BlockChain` set `balance` = @balance where accountNumber = @accountNumber"; var sqlCmd = new MySqlCommand(updateQuery, ConnectionHelper.GetConnection()); sqlCmd.Parameters.AddWithValue("@balance", currentAccountBalance); sqlCmd.Parameters.AddWithValue("@accountNumber", currentLoggedInAccount.PrivateKey); var updateResult = sqlCmd.ExecuteNonQuery(); var historyTransactionQuery = "insert into `BlockTransaction` (transactionId, type, senderAccountNumber, receiverAccountNumber, amount, message) " + "values (@id, @type, @senderAccountNumber, @receiverAccountNumber, @amount, @message)"; var historyTransactionCmd = new MySqlCommand(historyTransactionQuery, ConnectionHelper.GetConnection()); historyTransactionCmd.Parameters.AddWithValue("@amount", transaction.Amount); historyTransactionCmd.Parameters.AddWithValue("@type", transaction.Type); historyTransactionCmd.Parameters.AddWithValue("@receiver", transaction.ReceiverAddress); historyTransactionCmd.Parameters.AddWithValue("@created", transaction.CreatedAtMLS); historyTransactionCmd.Parameters.AddWithValue("@update", transaction.UpdatedAtMLS); var historyResult = historyTransactionCmd.ExecuteNonQuery(); if (updateResult != 1 || historyResult != 1) { } tranB.Commit(); } catch (Exception e) { Console.WriteLine(e.Message); tranB.Rollback(); return(false); } ConnectionHelper.CloseConnection(); return(true); }
public bool Tranfer(BlockchainAddress currentLoggedInAddress, BlockchainTransaction transactionHb) { var conn = ConnectionHelper.GetConnection(); var myTransaction = conn.BeginTransaction(); try { var balanceSender = new MySqlCommand("select * from blockchainaddress where address = @address ", conn, myTransaction); balanceSender.Parameters.AddWithValue("@address", currentLoggedInAddress.Address); double currentAccountBalance = 0; var reader = balanceSender.ExecuteReader(); if (reader.Read()) { currentAccountBalance = reader.GetDouble("balance"); } reader.Close(); currentAccountBalance -= transactionHb.Amount; var updateQuery = ("update blockchainaddress set balance = @balance where address = @address"); var sqlCmd = new MySqlCommand(updateQuery, conn, myTransaction); sqlCmd.Parameters.AddWithValue("@balance", currentAccountBalance); sqlCmd.Parameters.AddWithValue("@address", currentLoggedInAddress.Address); var updateRs = sqlCmd.ExecuteNonQuery(); var balanceReceiver = new MySqlCommand("select * from blockchainaddress where address = @address ", conn, myTransaction); balanceReceiver.Parameters.AddWithValue("@address", transactionHb.ReceiverAddress); double receiverBalance = 0; var readerReceiver = balanceReceiver.ExecuteReader(); if (readerReceiver.Read()) { receiverBalance = readerReceiver.GetDouble("balance"); } readerReceiver.Close(); receiverBalance += (transactionHb.Amount * 200); var updateQueryReceiver = ("update blockchainaddress set balance = @balance where address = @address"); var sqlCmdReceiver = new MySqlCommand(updateQueryReceiver, conn, myTransaction); sqlCmdReceiver.Parameters.AddWithValue("@balance", receiverBalance); sqlCmdReceiver.Parameters.AddWithValue("@address", transactionHb.ReceiverAddress); var updateResultReceiver = sqlCmdReceiver.ExecuteNonQuery(); var historyTransactionQuery = "insert into blockchaintransaction (TransactionId, Type, SenderAddress, ReceiverAddress, Amount, CreatedAtMLS, UpdatedAtMLS, Status) " + "values (@id, @type, @senderAddress, @receiverAddress, @amount, @createdAtMLS, @updatedAtMLS, @status)"; var historyTransactionCmd = new MySqlCommand(historyTransactionQuery, conn, myTransaction); historyTransactionCmd.Parameters.AddWithValue("@id", transactionHb.TransactionId); historyTransactionCmd.Parameters.AddWithValue("@type", transactionHb.Type); historyTransactionCmd.Parameters.AddWithValue("@senderAddress", transactionHb.SenderAddress); historyTransactionCmd.Parameters.AddWithValue("@receiverAddress", transactionHb.ReceiverAddress); historyTransactionCmd.Parameters.AddWithValue("@amount", transactionHb.Amount); historyTransactionCmd.Parameters.AddWithValue("@createdAtMLS", transactionHb.CreatedAtMLS); historyTransactionCmd.Parameters.AddWithValue("@updatedAtMLS", transactionHb.UpdateAtMLS); historyTransactionCmd.Parameters.AddWithValue("@status", transactionHb.Status); var historyResult = historyTransactionCmd.ExecuteNonQuery(); if (updateRs != 1 || historyResult != 1 || updateResultReceiver != 1) { throw new Exception("Không thể thêm giao dịch hoặc update tài khoản."); } myTransaction.Commit(); return(true); } catch (Exception e) { Console.WriteLine(e.Message); myTransaction.Rollback(); return(false); } finally { conn.Close(); } }
public bool UpdateBalance(BlockchainAddress currentAddress, BlockchainTransaction blockchainTransaction) { ConnectionHelper.GetConnection(); var tran = ConnectionHelper.GetConnection().BeginTransaction(); try { var cmd = new MySqlCommand("select * from BlockchainAddress where Address = @Address", ConnectionHelper.GetConnection()); cmd.Parameters.AddWithValue("@Address", currentAddress.Address); var reader = cmd.ExecuteReader(); double currentAddressBalance = 0; if (reader.Read()) { currentAddressBalance = reader.GetDouble("balance"); } reader.Close(); if (currentAddressBalance < 0) { Console.WriteLine("Khong du tien"); return(false); } if (blockchainTransaction.Type == BlockchainTransaction.TransactionType.WITHDRAW) { if (currentAddressBalance < blockchainTransaction.Amount) { Console.WriteLine("Khong du tien de thuc hien giao dich"); return(false); } currentAddressBalance -= blockchainTransaction.Amount; } else if (blockchainTransaction.Type == BlockchainTransaction.TransactionType.DEPOSIT) { currentAddressBalance += blockchainTransaction.Amount; } var updateQuery = "update `blockchainaddress` set `balance` = @balance where Address = @Address"; var sqlCmd = new MySqlCommand(updateQuery, ConnectionHelper.GetConnection()); sqlCmd.Parameters.AddWithValue("@balance", currentAddressBalance); sqlCmd.Parameters.AddWithValue("@address", currentAddress.Address); var updateResult = sqlCmd.ExecuteNonQuery(); var historyTransactionQuery = "insert into `blockchaintransaction` (TransactionId, Type, Amount, SenderAddress, ReceiverAddress, CreatedAtMLS, UpdateAtMLS)" + "values (@id, @type, @amount, @SenderAddress, @ReceiverAddress, @CreatedAtMLS, @UpdateAtMLS)"; var historyTransactionCmd = new MySqlCommand(historyTransactionQuery, ConnectionHelper.GetConnection()); historyTransactionCmd.Parameters.AddWithValue("@id", blockchainTransaction.TransactionId); historyTransactionCmd.Parameters.AddWithValue("@amount", blockchainTransaction.Amount); historyTransactionCmd.Parameters.AddWithValue("@type", blockchainTransaction.Type); historyTransactionCmd.Parameters.AddWithValue("@message", blockchainTransaction.Status); historyTransactionCmd.Parameters.AddWithValue("@SenderAddress", blockchainTransaction.SenderAddress); historyTransactionCmd.Parameters.AddWithValue("@ReceiverAddress", blockchainTransaction.ReceiverAddress); historyTransactionCmd.Parameters.AddWithValue("@CreatedAtMLS", blockchainTransaction.CreatedAtMLS); historyTransactionCmd.Parameters.AddWithValue("@UpdateAtMLS", blockchainTransaction.UpdateAtMLS); var historyResult = historyTransactionCmd.ExecuteNonQuery(); if (updateResult != 1 || historyResult != 1) { throw new Exception("Khong the giao dich hoac them tai khoan."); } tran.Commit(); } catch (Exception e) { Console.WriteLine(e); tran.Rollback(); return(false); } ConnectionHelper.GetConnection(); return(true); }
public bool UpdateBalanceBlockchain(BlockchainAddress currentLoggedInAddress, BlockchainTransaction blockchainTransaction) { // 4. Commit transaction. ConnectionHelper.GetConnection(); var transaction1 = ConnectionHelper.GetConnection().BeginTransaction(); // mở giao dịch. try { var cmd = new MySqlCommand("select balance from blockchain where address = @address", ConnectionHelper.GetConnection()); cmd.Parameters.AddWithValue("@address", currentLoggedInAddress.Address); BlockchainAddress blockchainAddress = null; var dataReader = cmd.ExecuteReader(); double currentAddressBalance = 0; if (dataReader.Read()) { currentAddressBalance = dataReader.GetDouble("balance"); } dataReader.Close(); if (currentAddressBalance < 0) { Console.WriteLine("Not enough money in the account."); return(false); } if (blockchainTransaction.Type == BlockchainTransaction.TransactionType.WITHDRAW && currentAddressBalance < blockchainTransaction.Amount) { throw new Exception("Not enough money in the account."); } if (blockchainTransaction.Type == BlockchainTransaction.TransactionType.WITHDRAW) { currentAddressBalance -= blockchainTransaction.Amount; } else if (blockchainTransaction.Type == BlockchainTransaction.TransactionType.DEPOSIT) { currentAddressBalance += blockchainTransaction.Amount; } else if (blockchainTransaction.Type == BlockchainTransaction.TransactionType.TRANSFER) { } var updateQuery = "update `blockchain` set `balance` = @balance where address = @address"; var sqlCmd = new MySqlCommand(updateQuery, ConnectionHelper.GetConnection()); sqlCmd.Parameters.AddWithValue("@balance", currentAddressBalance); sqlCmd.Parameters.AddWithValue("@address", currentLoggedInAddress.Address); var updateResult = sqlCmd.ExecuteNonQuery(); var historyTransactionQuery = "insert into `blockchaintransaction` (transactionId, type, senderAddress, receiverAddress, amount, message, createAtMLS, updateAtMLS, status) " + "values (@transactionId, @type, @senderAddress, @receiverAddress, @amount, @message, @createAtMLS, @updateAtMLS, @status)"; var historyTransactionCmd = new MySqlCommand(historyTransactionQuery, ConnectionHelper.GetConnection()); historyTransactionCmd.Parameters.AddWithValue("@transactionId", blockchainTransaction.TransactionId); historyTransactionCmd.Parameters.AddWithValue("@amount", blockchainTransaction.Amount); historyTransactionCmd.Parameters.AddWithValue("@type", blockchainTransaction.Type); historyTransactionCmd.Parameters.AddWithValue("@message", blockchainTransaction.Message); historyTransactionCmd.Parameters.AddWithValue("@createAtMLS", blockchainTransaction.CreateAtMlS); historyTransactionCmd.Parameters.AddWithValue("@updateAtMLS", blockchainTransaction.UpdateAtMlS); historyTransactionCmd.Parameters.AddWithValue("@status", blockchainTransaction.Status); historyTransactionCmd.Parameters.AddWithValue("@senderAddress", blockchainTransaction.SenderAddress); historyTransactionCmd.Parameters.AddWithValue("@receiverAddress", blockchainTransaction.ReceiverAddress); var historyResult = historyTransactionCmd.ExecuteNonQuery(); if (updateResult != 1 || historyResult != 1) { throw new Exception("cannot add a transaction or update an account, please check again."); } transaction1.Commit(); } catch (Exception e) { Console.WriteLine(e.Message); transaction1.Rollback(); // lưu giao dịch vào. return(false); } ConnectionHelper.CloseConnection(); return(true); }
public bool Transfer(BlockchainAddress currentLoggedInAddress, BlockchainTransaction blockchainTransaction) { ConnectionHelper.GetConnection(); var transaction1 = ConnectionHelper.GetConnection().BeginTransaction(); // mở giao dịch. try { // Kiểm tra số dư tài khoản. var selectBalance = "select balance from blockchain where address = @address"; var cmdSelect = new MySqlCommand(selectBalance, ConnectionHelper.GetConnection()); cmdSelect.Parameters.AddWithValue("@address", currentLoggedInAddress.Address); var dataReader = cmdSelect.ExecuteReader(); double currentAccountBalance = 0; if (dataReader.Read()) { currentAccountBalance = dataReader.GetDouble("balance"); } dataReader.Close(); if (currentAccountBalance < blockchainTransaction.Amount) { throw new Exception("Not enough money in the account."); } currentAccountBalance -= blockchainTransaction.Amount; //Tiến hành trừ tiền tài khoản gửi. // Update tài khoản. var updateQuery = "update `blockchain` set `balance` = @balance where address = @address"; var sqlCmd = new MySqlCommand(updateQuery, ConnectionHelper.GetConnection()); sqlCmd.Parameters.AddWithValue("@balance", currentAccountBalance); sqlCmd.Parameters.AddWithValue("@address", currentLoggedInAddress.Address); var updateResult = sqlCmd.ExecuteNonQuery(); // Kiểm tra số dư tài khoản. var selectBalanceReceiver = "select balance from `blockchain` where address = @address"; var cmdSelectReceiver = new MySqlCommand(selectBalanceReceiver, ConnectionHelper.GetConnection()); cmdSelectReceiver.Parameters.AddWithValue("@address", blockchainTransaction.ReceiverAddress); var readerReceiver = cmdSelectReceiver.ExecuteReader(); double receiverBalance = 0; if (readerReceiver.Read()) { receiverBalance = readerReceiver.GetDouble("balance"); } readerReceiver.Close(); // important. //Tiến hành cộng tiền tài khoản nhận. receiverBalance += blockchainTransaction.Amount; // Update tài khoản. var updateQueryReceiver = "update `blockchain` set `balance` = @balance where address = @address"; var sqlCmdReceiver = new MySqlCommand(updateQueryReceiver, ConnectionHelper.GetConnection()); sqlCmdReceiver.Parameters.AddWithValue("@balance", receiverBalance); sqlCmdReceiver.Parameters.AddWithValue("@address", blockchainTransaction.ReceiverAddress); var updateResultReceiver = sqlCmdReceiver.ExecuteNonQuery(); // Lưu lịch sử giao dịch. var historyTransactionQuery = "insert into `blockchaintransaction` (transactionId, amount, type, message, senderAddress, receiverAddress,createAtMlS, updateAtMlS, status) " + "values (@transactionId, @amount, @type, @message, @senderAddress, @receiverAddress, @createAtMlS, @updateAtMlS, @status )"; var historyTransactionCmd = new MySqlCommand(historyTransactionQuery, ConnectionHelper.GetConnection()); historyTransactionCmd.Parameters.AddWithValue("@transactionId", blockchainTransaction.TransactionId); historyTransactionCmd.Parameters.AddWithValue("@amount", blockchainTransaction.Amount); historyTransactionCmd.Parameters.AddWithValue("@type", blockchainTransaction.Type); historyTransactionCmd.Parameters.AddWithValue("@message", blockchainTransaction.Message); historyTransactionCmd.Parameters.AddWithValue("@senderAddress", blockchainTransaction.SenderAddress); historyTransactionCmd.Parameters.AddWithValue("@receiverAddress", blockchainTransaction.ReceiverAddress); historyTransactionCmd.Parameters.AddWithValue("@createAtMlS", blockchainTransaction.CreateAtMlS); historyTransactionCmd.Parameters.AddWithValue("@updateAtMlS", blockchainTransaction.UpdateAtMlS); historyTransactionCmd.Parameters.AddWithValue("@status", blockchainTransaction.Status); var historyResult = historyTransactionCmd.ExecuteNonQuery(); if (updateResult != 1 || historyResult != 1 || updateResultReceiver != 1) { throw new Exception("cannot add a transaction or update an account, please check again."); } transaction1.Commit(); return(true); } catch (Exception e) { transaction1.Rollback(); Console.WriteLine(e.StackTrace); Console.WriteLine(e.Message); Console.WriteLine(e.Source); Console.WriteLine(e.ToString()); return(false); } finally { ConnectionHelper.CloseConnection(); } }
public bool UpdateBalance(BlockchainAddress currentLoggedInAccount, BlockchainTransaction blockchainTransaction) { ConnectionHelper.GetConnection(); MySqlConnection mySqlConnection; var tran = ConnectionHelper.GetConnection().BeginTransaction(); try { var cmd = new MySqlCommand("select * from BlockchainAddress where Address = @Address", ConnectionHelper.GetConnection()); cmd.Parameters.AddWithValue("@Address", currentLoggedInAccount.Address); BlockchainAddress blockchainAddress = null; var reader = cmd.ExecuteReader(); double currentAddressBalance = 0; if (reader.Read()) { currentAddressBalance = reader.GetDouble("balance"); } reader.Close(); if (currentAddressBalance < 0) { Console.WriteLine("Khong du tien"); return(false); } if ((blockchainTransaction.Type = 1) != 0) { if (currentAddressBalance < blockchainTransaction.Amount) { Console.WriteLine("Khong du tien de thuc hien giao dich"); return(false); } currentAddressBalance -= blockchainTransaction.Amount; } else if (blockchainTransaction.Type == 2) { currentAddressBalance += blockchainTransaction.Amount; } var updateQuery = "update `BlockchainAddress` set `balance` = @balance where Address = @Address"; var sqlCmd = new MySqlCommand(updateQuery, ConnectionHelper.GetConnection()); sqlCmd.Parameters.AddWithValue("@balance", currentAddressBalance); sqlCmd.Parameters.AddWithValue("@address", currentLoggedInAccount.Address); var updateResult = sqlCmd.ExecuteNonQuery(); var historyTransactionQuery = "insert into `BlockchainTransaction` (transactionId, type, senderAccountNumber, receiveAccountNumber, amount, status)" + "values(@id, @type, @senderAccountNumber, @receiveAccountNumber, @amount, @status)"; var historyTransactionCmd = new MySqlCommand(historyTransactionQuery, ConnectionHelper.GetConnection()); historyTransactionCmd.Parameters.AddWithValue("@id", blockchainTransaction.TransactionID); historyTransactionCmd.Parameters.AddWithValue("@amount", blockchainTransaction.Amount); historyTransactionCmd.Parameters.AddWithValue("@type", blockchainTransaction.Type); historyTransactionCmd.Parameters.AddWithValue("@message", blockchainTransaction.Status); historyTransactionCmd.Parameters.AddWithValue("@senderAccountNumber", blockchainTransaction.SenderAddress); historyTransactionCmd.Parameters.AddWithValue("@receiverAccountNumber", BlockchainTransaction.ReceiverAddress); var historyResult = historyTransactionCmd.ExecuteNonQuery(); if (updateResult != 1 || historyResult != 1) { throw new Exception("Khong the giao dich hoac them tai khoan."); } tran.Commit(); } catch (Exception e) { Console.WriteLine(e.Message); tran.Rollback(); return(false); } ConnectionHelper.GetConnection(); return(true); }
public IActionResult About() { var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json"); IConfigurationRoot Configuration = builder.Build(); decimal surcharge = Convert.ToDecimal(Configuration["surcharge"]); decimal coinWeight = Convert.ToDecimal(Configuration["coinWeight"]); ViewData["Message"] = "Your application description page."; string meetingId = HttpContext.Session.GetString("activeVoteContractAddress"); List <SHOAccount> shoaccounts = Context.shoaccounts.AsQueryable().ToList(); string publicAddress = "1zzzJv5hYmWbN79zHm5f4ZQRR8k9GWQTf"; if (meetingId != "-1") { //////////////// List <Question> questions = _blockchainContext.questions; List <BlockchainAddress> blockchainAddresses = new List <BlockchainAddress>(); foreach (SHOAccount shoaccount in shoaccounts) { foreach (Question question in questions) { BlockchainAddress blockchainAddress = new BlockchainAddress(); decimal totalCoins = Convert.ToDecimal(shoaccount.AvailableShares) * coinWeight + Convert.ToDecimal("0.02"); string transactionid = sendCoinsToAddress(publicAddress, totalCoins.ToString()); Console.Write(transactionid); blockchainAddress.isFirstTransaction = true; blockchainAddress.publicAddress = publicAddress; blockchainAddress.generalFundPublicAddress = publicAddress; blockchainAddress.meetingId = meetingId; blockchainAddress.controlNumber = shoaccount.ControlNumber; blockchainAddress.quid = question.quid; blockchainAddress.coins = totalCoins.ToString(); blockchainAddress.transactionId = transactionid; blockchainAddress.currentTransaction = true; blockchainAddresses.Add(blockchainAddress); } //} ///////////////////////////////////// //for (int x = 0; x < 50000; x++) //{ // foreach (Question question in questions) // { // decimal totalCoins = Convert.ToDecimal("1000") * coinWeight; // string transactionid = sendCoinsToAddress(publicAddress, totalCoins.ToString()); // Console.Write(x.ToString() + " " + transactionid); // InitialTransaction initialTransaction = new InitialTransaction(); // initialTransaction.transactionId = transactionid; // initialTransaction.controlNumber = "444"; // initialTransaction.meetingId = meetingId; // initialTransaction.quid = question.quid; // initialTransaction.publicAddress = publicAddress; // initialTransaction.amount = totalCoins.ToString(); // initialtransactions.Add(initialTransaction); // } //} } Console.Write(DateTime.Now.ToString() + "\n"); Context.blockchainaddresses.InsertManyAsync(blockchainAddresses); Console.Write(DateTime.Now.ToString() + "\n"); } else { } return(View()); }
public bool FindByAddress(BlockchainAddress currentLoggedInAddress, BlockchainTransaction transaction) { throw new NotImplementedException(); }
public bool UpdateBalanceBlockchain(BlockchainAddress currentLoggedInAddress, BlockchainTransaction blockchainTransaction) { ConnectionHelper.GetConnection(); var transaction1 = ConnectionHelper.GetConnection().BeginTransaction(); try { var cmd = new MySqlCommand("select balance from BlockChainAccount where address = @address", ConnectionHelper.GetConnection()); cmd.Parameters.AddWithValue("@address", currentLoggedInAddress.Address); BlockchainAddress blockchainAddress = null; var dataReader = cmd.ExecuteReader(); double currentAddressBalance = 0; if (dataReader.Read()) { currentAddressBalance = dataReader.GetDouble("balance"); } dataReader.Close(); if (currentAddressBalance < 0) { Console.WriteLine("Không đủ tiền trong tài khoản."); return(false); } if (blockchainTransaction.Type == BlockchainTransaction.TransactionType.WITHDRAW && currentAddressBalance < blockchainTransaction.Amount) { throw new Exception("Không đủ tiền trong tài khoản."); } if (blockchainTransaction.Type == BlockchainTransaction.TransactionType.WITHDRAW) { currentAddressBalance -= blockchainTransaction.Amount; } else if (blockchainTransaction.Type == BlockchainTransaction.TransactionType.DEPOSIT) { currentAddressBalance += blockchainTransaction.Amount; } else if (blockchainTransaction.Type == BlockchainTransaction.TransactionType.TRANSFER) { } var updateQuery = "update `BlockChainAccount` set `balance` = @balance where address = @address"; var sqlCmd = new MySqlCommand(updateQuery, ConnectionHelper.GetConnection()); sqlCmd.Parameters.AddWithValue("@balance", currentAddressBalance); sqlCmd.Parameters.AddWithValue("@address", currentLoggedInAddress.Address); var updateResult = sqlCmd.ExecuteNonQuery(); var historyTransactionQuery = "insert into `BlockChainTransaction` (transactionId, type, senderAddress, receiverAddress, amount, message) " + "values (@transactionId, @type, @senderAddress, @receiverAddress, @amount, @message)"; var historyTransactionCmd = new MySqlCommand(historyTransactionQuery, ConnectionHelper.GetConnection()); historyTransactionCmd.Parameters.AddWithValue("@transactionId", blockchainTransaction.TransactionId); historyTransactionCmd.Parameters.AddWithValue("@amount", blockchainTransaction.Amount); historyTransactionCmd.Parameters.AddWithValue("@type", blockchainTransaction.Type); historyTransactionCmd.Parameters.AddWithValue("@message", blockchainTransaction.Message); historyTransactionCmd.Parameters.AddWithValue("@senderAddress", blockchainTransaction.SenderAddress); historyTransactionCmd.Parameters.AddWithValue("@receiverAddress", blockchainTransaction.ReceiverAddress); var historyResult = historyTransactionCmd.ExecuteNonQuery(); if (updateResult != 1 || historyResult != 1) { throw new Exception("Không thể thêm giao dịch hoặc update tài khoản."); } transaction1.Commit(); } catch (Exception e) { Console.WriteLine(e.Message); transaction1.Rollback(); return(false); } ConnectionHelper.CloseConnection(); return(true); }