Notable features in XT
- Bigger blocks. This set of patches performs some small code refactorings, and implements support for switching to 2 megabyte blocks after January 2016 once 75%+ of mined blocks are voting for the change by setting flags in the block version field. Once supermajority has been reached, there is a grace period of four weeks before the rule change takes effect. After the switch the max block size limit increases to 2 megabyte blocks. The soft limit is set equal to the hard limit to avoid the need for miners to constantly reconfigure things.
- Bandwidth limiting. Set limitations on upload and download bandwidth. This allows you to run a full node without it interfering with other internet services used on your network such as Netflix. It can also be configured to use as much bandwidth as available, but have a total usage cap over a time period.
- Thin blocks. This set of patches add thin blocks making Bitcoin XT currently the fastest Bitcoin client on the network. Our thin block implementation reduces the size of downloading a new block by 85%. We support downloading thin blocks in parallel from multiple peers. This means that no single node can stall the download. The thin blocks patch can be configured for either for fast download (parallel) or bandwidth saving (no parallel).
- Double spend relaying. This set of patches makes the P2P network relay double spends when they are seen, so sellers can learn about attempts to defraud them faster and with a lower cost to the peer to peer network. The alternative approach, used today, requires finding and connecting to as many nodes as possible which is infeasible on mobile and wasteful even when it can be done. It also upgrades the Bitcoin-Qt wallet to show broadcast double spend attempts in red, adds a -respendnotify command line flag, and reports conflicts via the JSON-RPC API.
- Support BIP 64 ("getutxos"). This allows peers to request the contents of a ledger entry over the network. It is useful for the Lighthouse decentralised crowdfunding wallet to present a better user interface, and for miscellaneous other tasks.
- Refresh the DNS seed list. DNS seeds are used to discover network peers when a node is started for the first time, and by lightweight/SPV wallets. The DNS seed list in Core contains a seed that only yields a single working peer (the same one every time), and does not include some seeds that are available and run by known community contributors. This patch removes the single-peer seed and adds in the other seeds, to improve robustness and diversity.
- Anti-DoS attack improvements. This patch fixes an issue that allows a malicious peer to jam a node by repeatedly offering a transaction or block and then never delivering it.
- Anti-DoS attack improvements. It's currently possible to jam a Bitcoin node by connecting to it repeatedly via different IP addresses, as there is a fixed limit on how many connections a node will accept. Once full, no other peers or wallets can connect to it any more and serving capacity for new nodes and P2P wallets is reduced. If the attack is repeated against every node, the entire network could become jammed.
This patch set introduces code that runs when a node is full and otherwise could not accept new connections. It labels and prioritises connections according to lists of IP ranges: if a high priority IP address connects and the node is full, it will disconnect a lower priority connection to make room. Currently Tor exits are labelled as being lower priority than regular IP addresses, as jamming attacks via Tor have been observed, and most users/merchants don't use it. In normal operation this new code will never run. If someone performs a DoS attack via Tor, then legitimate Tor users will get the existing behaviour of being unable to connect, but mobile and home users will still be able to use the network without disruption.