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); }
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); }
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); }