OP RETURN
- Diverter_NoKYC
Gents,
A little background and info on the Ocean Mining/ Samourai situation.
OP RETURN is a transaction output in bitcoin that is provably unspendable and allows for storing data bytes. This data is prunable, meaning once a node has downloaded the bitcoin blockchain it can discard unnecessary info, such as these OP RETURN codes and not have to store them forever. Prior to 2014 transactions containing OP RETURN were not related by all nodes, even though they were “valid” transactions. In 2014 Bitcoin Core v0.9.0 was released and included a default setting to relay OP RETURN codes up to 40 bytes in length. Then, in 2016 Bitcoin Core v0.11.1 increased this OP RETURN relay default to 80 bytes length. It has remained at 80 bytes for going on 8 years now.
Luke Dashjr, a Core dev, use to run a mining pool called Eligius. He always considered anything like OP RETURN “spam” and “abuse” of the chain. So in his old pool he began filtering out all “spam”, and notably also began enabling literal blacklists to prevent transactions from gambling operations like SatoshiDice being mined into a block. See article here. He is notorious for this stance, including comments that BIP47 (PayNyms) notification transactions are spam due to their usage of OP RETURN and should not be implemented at all.
Now, with the backing of Jack Dorsey, Luke has essentially reopened his Eligius mining pool, but under the name Ocean Mining. The name changed, but his supposed “spam” filtering did not. Luke maintains his own custom fork of Bitcoin Core called Knots. Rather than using Bitcoin Core to create block templates for his mining pool, he is using his custom fork. In this fork, he changed the rules set in Bitcoin Core, so instead of relaying transactions with an OP RETURN of 80 bytes or less, Knots only includes OP RETURN transactions of 42 bytes or less. The difference in code between Bitcoin Core, which nearly everyone runs, and his custom Knots fork is very clear.
Bitcoin Core OP RETURN relay code is at https://github.com/Flavien/bitcoin/blob/a9306587a42eac7fb889b9c8d03140980fdf1398/src/script/standard.h#L28 while Luke’s custom Knots fork is at https://github.com/bitcoinknots/bitcoin/blob/aed49ce8989334c364a219a6eb016a3897d4e3d7/src/script/standard.h#L39
Samourai Whirlpool uses the ZeroLink protocol, and an initial “setup” transaction called a Tx0 (Tee Ex Zero, or Transaction Zero). In this transaction there is contained an OP RETURN output which facilitates spoofing protection amongst other functions, and it contains 46 bytes. So when Luke’s Ocean Mining Pool builds a block template to mine, it will exclude all Whirlpool Tx0’s because the 46 bytes exceeds Luke’s custom 42 bytes setting. Put another way, Ocean Mining is considering Whirlpool Tx0’s in the same boat with Ordinals or Inscriptions–Luke says they are all “spam” and that miners literally have a DUTY to filter out “spam”.
Additionally, Samourai has implemented BIP47 Reusable Payment Codes, also known as PayNyms. In PayNyms, when you want to “connect” to another PayNym user so you can derive addresses that only the two of you know (a huge privacy boost) you have to send a “notification transaction”. This initial notification transaction contains an OP RETURN output as well, but this output must contain the full 80 bytes allowed by Bitcoin Core. So again, by using Knots instead of Core, Ocean Mining would not consider a PayNym notification transaction as valid, it would consider it “spam” and not include it in their block template.
There are plenty of opinions to be had on this subject, but the facts remain that Bitcoin Core consensus rules allow a transaction with an OP RETURN up to 80 bytes to be completely valid. Luke’s custom fork called Knots changes those consensus rules to only allow 42 bytes. Ocean Mining is using Knots to build blocks, so as of December 6, 2023 any block mined by Ocean Mining will exclude/filter out all Samourai Whirlpool Tx0’s and PayNym notification transactions.