Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="transaction"></param>
        /// <returns></returns>
        private bool isValidChangeTx(TransactionDetail transaction)
        {
            // amount check
            if (transaction.Amount > ticketCost)
            {
                return(false);
            }

            // category check
            //if (transaction.Category != "send")
            if (transaction.Category != "receive")
            {
                return(false);
            }

            // adress check
            //if (btc.ValidateAddress(transaction.Address).IsMine)
            if (!btc.ValidateAddress(transaction.Address).IsMine)
            {
                return(false);
            }

            // check if it's linked to a ticket transaction
            RawTransaction rawtransaction     = btc.GetRawTransactionObject(transaction.TxId);
            string         rawtransactionTxId = rawtransaction.Vin[0].TxId;

            if (!getTransactionOfType(Type.Ticket).Any(t => t.TxId == rawtransactionTxId))
            {
                return(false);
            }

            return(true);
        }
Пример #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="transaction"></param>
        /// <returns></returns>
        private bool isValidTicketTx(TransactionDetail transaction)
        {
            // category check
            if (transaction.Category != "receive")
            {
                return(false);
            }

            // adress check
            if (!btc.ValidateAddress(transaction.Address).IsMine)
            {
                return(false);
            }

            // amount check
            int[] ticket = null;
            if (!lottery.getTicketFromAmount(transaction.Amount, out ticket) && transaction.Amount != ticketCost + (2 * networkFee))
            {
                return(false);
            }

            return(true);
        }