Esempio n. 1
0
        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);
        }