- Aug 19, 2015
- 18
- 37
Why does XT exist?
Back in the bad old subversion/sourceforge days, while Mike was building bitcoinj (the library running in most Android and Desktop SPV implementations), getting Core to merge patches to help support SPV clients was relatively straightforward.
Over time, getting anything merged into Bitcoin Core has become harder. Now to some extent, that's a good thing, the bar in terms of security and performance needs to increase.
The problem is that that goal often conflicts with the goal of making full nodes useful to other bitcoin clients on the network.
More and more of the goals Mike was trying to achieve (with bitcoinj, with Lighthouse) in terms of letting anyone use those products without relying on a central server, became harder over time.
The breaking point was pull request 4351: https://github.com/bitcoin/bitcoin/pull/4351
It got merged, then reverted when it turned out to allow overrunning the 32MB limit on network messages, then attempts at fixing that and getting the code merged back in went nowhere. There were a lot of arguments about the proper role of full nodes, whether ever serving unauthenticated data (if nothing better could be done) was justifiable, and, of course, the inevitable personality clashes.
At that point there were a few options:
1. Force users of lighthouse to run their own full node and use the RPC commands.
2. Use a centralized server as a fallback.
3. Fork Bitcoin Core, and hope there's enough uptake to support Lighthouse users.
A few more patches, and a blocksize limit change later, here we all are.
I'll keep posting to this thread with descriptions of the various patches in XT, what they do, why they're not accepted in Core. Hopefully this helps demistify the changes, and Bitcoin development as well:
Patches:
- getutxos
- Fixes for inv blinding.
Back in the bad old subversion/sourceforge days, while Mike was building bitcoinj (the library running in most Android and Desktop SPV implementations), getting Core to merge patches to help support SPV clients was relatively straightforward.
Over time, getting anything merged into Bitcoin Core has become harder. Now to some extent, that's a good thing, the bar in terms of security and performance needs to increase.
The problem is that that goal often conflicts with the goal of making full nodes useful to other bitcoin clients on the network.
More and more of the goals Mike was trying to achieve (with bitcoinj, with Lighthouse) in terms of letting anyone use those products without relying on a central server, became harder over time.
The breaking point was pull request 4351: https://github.com/bitcoin/bitcoin/pull/4351
It got merged, then reverted when it turned out to allow overrunning the 32MB limit on network messages, then attempts at fixing that and getting the code merged back in went nowhere. There were a lot of arguments about the proper role of full nodes, whether ever serving unauthenticated data (if nothing better could be done) was justifiable, and, of course, the inevitable personality clashes.
At that point there were a few options:
1. Force users of lighthouse to run their own full node and use the RPC commands.
2. Use a centralized server as a fallback.
3. Fork Bitcoin Core, and hope there's enough uptake to support Lighthouse users.
A few more patches, and a blocksize limit change later, here we all are.
I'll keep posting to this thread with descriptions of the various patches in XT, what they do, why they're not accepted in Core. Hopefully this helps demistify the changes, and Bitcoin development as well:
Patches:
- getutxos
- Fixes for inv blinding.
Last edited: