Summary:
We identified an issue where slashing transaction creation was failing when the calculated slashing amount — derived from the staking value multiplied by the slashing rate — could below Bitcoin’s dust limit of 546 sats. This threshold is conservatively set to ensure compatibility across all address types.
In the current implementation, if the slashing output is not an OP_RETURN, it is expected to be a standard spendable output and therefore must meet the dust limit requirement. As a result, when the slashed amount falls below 546 sats, the transaction fails to construct.
This logic is intentional to prevent invalid transactions from being accepted by Bitcoin nodes. However, for OP_RETURN outputs, which are unspendable, the dust rule does not apply — and such outputs are allowed to carry any value, including 0 sats.
The observed issue was caused by applying the dust limit universally, without checking for OP_RETURN. This has now been corrected by explicitly bypassing the dust check when the slashing output is of type OP_RETURN.
What's Changed
- fix: check slashing output for dust check by @jrwbabylonlab in #83
Full Changelog: v1.0.1...v1.0.2