public void Create(BaseTransactionInfo model) { using (var db = this.GetWalletContext()) { var entity = new BASE_TRANSACTION { ID = model.Id, TRANSACTION_ID = model.TransactionId, TRANSACTION_TYPE = model.TransactionType, FROM_ADDRESS = model.FromAddress, TO_ADDRESS = model.ToAddress, CHANGE_ADDRESS = model.ChangeAddress, FEE_ADDRESS = model.FeeAddress, FEE_RATE = model.FeeRate, ESTIMATE_SIZE = model.EstimateSize, AMOUNT = model.Amount, IS_SIGNED = model.IsSigned, BLOCK_HASH = model.BlockHash, CONFIRMATIONS = model.Confirmations, BLOCK_TIME = model.BlockTime, CREATE_DATE = model.CreateDate }; db.BASE_TRANSACTION.Add(entity); var errors = db.GetValidationErrors(); db.SaveChanges(); } }
public async Task <UnsignTransactionResult> CreateUnsignedTransaction(BTCTransferVM transferInfo) { var allUnspentCoins = await BTCOperator.Instance.ListUnspentAsync(transferInfo.FromAddress); var network = NetworkOperator.Instance.Network; var to = BitcoinAddress.Create(transferInfo.ToAddress, network); var change = BitcoinAddress.Create(transferInfo.ChangeAddress, network); var buildInfo = this.Build(to, change, allUnspentCoins, transferInfo.Amount, transferInfo.EstimateFeeRate); var txInfo = new BaseTransactionInfo { Id = Guid.NewGuid().ToString("N"), TransactionId = buildInfo.Transaction.GetHash().ToString(), TransactionType = (short)TransactionType.BTC, FromAddress = transferInfo.FromAddress, ToAddress = transferInfo.ToAddress, ChangeAddress = transferInfo.ChangeAddress, FeeAddress = transferInfo.FromAddress, FeeRate = transferInfo.EstimateFeeRate.SatoshiPerByte, EstimateSize = buildInfo.TransactionSize, Amount = transferInfo.Amount.ToDecimal(MoneyUnit.BTC), IsSigned = false, CreateDate = DateTime.Now }; TransactionDao.Create(txInfo); var result = new UnsignTransactionResult { OperationId = txInfo.Id, Transaction = buildInfo.Transaction, ToSpentCoins = buildInfo.InputCoins }; return(result); }