From f2ad897dbe3ffdf24e2881b7752cc81b9410401f Mon Sep 17 00:00:00 2001
From: vitalibalashka <vitalybalashko@gmail.com>
Date: Mon, 7 Aug 2023 13:48:14 +0300
Subject: [PATCH] feat(BUX-157): disabling of a dust limit validation for txs
 with OpReturn

---
 model_draft_transactions.go | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/model_draft_transactions.go b/model_draft_transactions.go
index 3ca8b633..20e2619b 100644
--- a/model_draft_transactions.go
+++ b/model_draft_transactions.go
@@ -301,7 +301,7 @@ func (m *DraftTransaction) createTransactionHex(ctx context.Context) (err error)
 		feePerByte := float64(m.Configuration.FeeUnit.Satoshis / m.Configuration.FeeUnit.Bytes)
 
 		reserveSatoshis := satoshisNeeded + m.estimateFee(m.Configuration.FeeUnit, 0)
-		if reserveSatoshis <= dustLimit {
+		if reserveSatoshis <= dustLimit && !m.containsOpReturn() {
 			m.client.Logger().Error(ctx, "amount of satoshis to send less than the dust limit")
 			return ErrOutputValueTooLow
 		}
@@ -904,3 +904,12 @@ func (m *DraftTransaction) SignInputs(xPriv *bip32.ExtendedKey) (signedHex strin
 	signedHex = txDraft.String()
 	return
 }
+
+func (m *DraftTransaction) containsOpReturn() bool {
+	for _, output := range m.Configuration.Outputs {
+		if output.OpReturn != nil {
+			return true
+		}
+	}
+	return false
+}