コード例 #1
0
        public void CheckTxOutDustRule_TxOut_Is_OpReturn_Pass()
        {
            var rule        = new CheckTxOutDustRule(this.network, this.txMempool, new MempoolSettings(this.nodeSettings), this.chainIndexer, this.loggerFactory);
            var transaction = CreateTransaction(Money.Coins(1), true);
            var mempoolValidationContext = new MempoolValidationContext(transaction, new MempoolValidationState(false))
            {
                MinRelayTxFee = this.nodeSettings.MinRelayTxFeeRate,
                ValueOut      = transaction.TotalOut
            };

            rule.CheckTransaction(mempoolValidationContext);
            Assert.Null(mempoolValidationContext.State.Error);
        }
コード例 #2
0
        public void CheckTxOutDustRule_Fail()
        {
            var rule        = new CheckTxOutDustRule(this.network, this.txMempool, new MempoolSettings(this.nodeSettings), this.chainIndexer, this.loggerFactory);
            var transaction = CreateTransaction(Money.Coins(0.000001m));
            var mempoolValidationContext = new MempoolValidationContext(transaction, new MempoolValidationState(false))
            {
                MinRelayTxFee = this.nodeSettings.MinRelayTxFeeRate,
                ValueOut      = transaction.TotalOut
            };

            Assert.Throws <MempoolErrorException>(() => rule.CheckTransaction(mempoolValidationContext));
            Assert.NotNull(mempoolValidationContext.State.Error);
            Assert.Equal(MempoolErrors.TransactionContainsDustTxOuts, mempoolValidationContext.State.Error);
        }
コード例 #3
0
        public void CheckTxOutDustRule_TxOut_Is_OpReturn_WithDustTxOut_Fail()
        {
            var rule = new CheckTxOutDustRule(this.network, this.txMempool, new MempoolSettings(this.nodeSettings), this.chainIndexer, this.loggerFactory);

            // Create tx with OpReturn output.
            var transaction = CreateTransaction(Money.Coins(1), true);

            // Add a dust output.
            transaction.AddOutput(new TxOut(Money.Coins(0.000001m), new Script()));

            var mempoolValidationContext = new MempoolValidationContext(transaction, new MempoolValidationState(false))
            {
                MinRelayTxFee = this.nodeSettings.MinRelayTxFeeRate,
                ValueOut      = transaction.TotalOut
            };

            Assert.Throws <MempoolErrorException>(() => rule.CheckTransaction(mempoolValidationContext));
            Assert.NotNull(mempoolValidationContext.State.Error);
            Assert.Equal(MempoolErrors.TransactionContainsDustTxOuts, mempoolValidationContext.State.Error);
        }