예제 #1
0
        public Transaction SendCoin(AsymmetricKeyParameter _receiver, float amount)
        {
            if (GetBalance() < amount)
            {
                Console.WriteLine("!!! - Not Enough coin to send transaction. Transaction Discarded.");
                return(null);
            }

            List <TransactionInput> inputList = new List <TransactionInput>();

            float total = 0;

            foreach (var item in UnspentTransactionOutputList)
            {
                TransactionOutput UTXO = item.Value;
                total += UTXO.Amount;
                inputList.Add(new TransactionInput(UTXO.Id));
                if (total > amount)
                {
                    break;
                }
            }

            Transaction newTransaction = new Transaction(PublicKey, _receiver, amount, inputList);

            newTransaction.GenerateSignature(PrivateKey);

            foreach (TransactionInput input in inputList)
            {
                UnspentTransactionOutputList.Remove(input.TransactionOutputId);
            }
            return(newTransaction);
        }