Relicense the stratum subsystem under the terms of the Mozilla Public License 2.0, which allows it to be extracted and used in Bitcoin Core without engaging the GPL's viral clauses. This is, in principle, something that is not to be done lightly, since those GPL clauses protect the rights of users. However in this instance I, the sole author of the stratum subsystem, deemed that the presumed greater adoption of merged mining benefits all to a larger degree.
Add auxiliary work registration to the stratum mining subsystem. This allows a single stratum connection to be used for connecting the auxiliary chain (bitcoind) to the freicoin miner, and for multiplexing multiple mining users along that connection. Auxiliary commitments are compactly served to the upstream miner, while still reporting second-stage work units as needed.
Allow the specification of extranonce1 and an unconstrained nVersion on submission, since the merge-mined chain has little control over what extranonce and version bits are set by the upstream miner.
A large number of small fixes to the stratum mining subsystem to improve performance, stability, and logging.
Once merged, this PR adds sufficient capability to serve work to upstream merge-mining servers implemented in Bitcoin Core. There will be a separate PR to add this capability to the bitcoin-merge-mining-13 and later branches of the tradecraft repository.
This pull request accomplishes a couple of tasks:
extranonce1
and an unconstrainednVersion
on submission, since the merge-mined chain has little control over what extranonce and version bits are set by the upstream miner.Once merged, this PR adds sufficient capability to serve work to upstream merge-mining servers implemented in Bitcoin Core. There will be a separate PR to add this capability to the
bitcoin-merge-mining-13
and later branches of the tradecraft repository.