Bitcoin Unlimited Code Changes
gandrewstone merged 1 commit by ptschip from “ptschip:dev_minerelay” into “BitcoinUnlimited:dev”. During the merge, 3 files were changed for a total of 31 additions and 12 deletions. These changes deal with the clients “minrelaytxfee” system. Bitcoin Unlimited, as a fork of the lineage bitcoin full node software, has an infrastructure very similar to the other larger bitcoin software variants. However, as software development evolves and changes, certain lineage systems that migrate over into newer clients become obsolete under the different visions each team holds.This Pull Request fits this example. Previously, the clients “minrelaytxfee” system was configurable by the user. The Unlimited team eventually replaced this system with “minlimitertxfee”. This Pull Request removes “minrelaytxfee” from the list of user configurable values in the client as the system is no longer valid for users. This Pull Request was in review for over a month and half as developers ptschip and Justaphf discussed commit optimizations and the potential for future work to be added on top of these changes. The entire dialogue between the reviewers gives an insight into future code updates that the team will be working on, and can be read here.
gandrewstone merged 12 commits by ptschip from “ptschip:dev_xthin” into “BitcoinUnlimited:dev”. During the merge, 5 files were changed for a total of 354 additions and 59 deletions. These changes deal with the clients “X ThinBlocks” and their testing. Following the attacks on the users of bitcoin Unlimited full node software, the Unlimited team took measured steps to carefully review and optimize the ThinBlocks system, as it was this system that provided the attack vector. These changes bring several new tests and checks for the ThinBlock system written by the creator of X ThinBlocks ptschip. The tests deal with many elements of the ThinBlocks system including locking behavior, protocol message processing, and system misbehavior. The changes in this Pull Request were reviewed by the Unlimited team, and the Release Manager for bitcoin Classic zander. Following a week of “Work in Progress” and a further week of review, these changes were merged. The changes bring greater stability to the client, ensuring proper operation of the ThinBlocks system and it’s utilities for block propagation.
gandrewstone merged 3 commits by ftrader from “ftrader-bitcoinunlimited:feature/script_to_remove_trailing_ws” into “BitcoinUnlimited:dev”. During the merge, 2 files were changed for a total of 72 additions and 0 deletions. These changes add a new contribution script to the client to help control “trailing whitespace”. Trailing whitespace in the coding sense are the empty spaces comprised of spaces or tabs at the end of a line of code prior to the next line. Trailing whitespace is universally detested in the development universe, and is considered a bad house keeping practice. These changes bring a script to the client that will automatically remove trailing whitespace from any file entered into the command line of the client. The script does come with several limitations, including not making any backups of the modified files, as well as the assumption that the modified files will be kept on memory. ftrader also commented on these changes having the potential to clean files client wide. He writes: “I’m not going to submit a Pull Request for the removal of the existing whitespace at this time due to possible conflicts with other Pull Requests. At a suitable time, perhaps the ‘BitcoinUnlimitedJanitor’ can use it to run a general cleanup.”
Bitcoin XT Code Changes
dgenr8 merged 1 commit by dagurval from “dagurval:thinbl-exceptions” into “bitcoinxt:master” within 1 file for a total of 16 additions and 18 deletions. These changes are the merging of the Pull Request dagurval submitted for review one week prior. The changes deal with client handling of ThinBlocks, and include code cleanups and optimizations for the aforementioned systems.
Bitcoin Core Code Changes
iaanwj merged 9 commits by jonasschnelli from “jonasschnelli:2017/02/qt_bump” into “bitcoin:master”. During the merge, 6 files were changed for a total of 407 additions and 224 deletions. This Pull Request was built on top of two different respective Pull Requests. These changes deal with the Wallet of the client and its “Bumpfee” features. The content of this Pull request deals with many elements of Bumpfee, and modify many of it’s code locations and behaviors. As this Pull has been open since February 3rd, many comments have been over the course of it’s review. Expressing a desire to keep different systems parceled with their own code, developer iaanwj stated: “I’m not entirely happy with the current trend of moving everything wallet related to CWallet – we’re creating a “god class”. It would be nice to see if we can parcel up the functionality and separate concerns, to avoid a huge file and exponentially growing complexity.” jonasschnelli addressed this concern by completely rewriting the factor for Bumpfee, moving all relevant code into it’s own folder “feeBumper.cpp”, eliminating the potential “God Class” some other developers were discussing in this example. jonasschnelli also went a step further in refining the infrastructure of Bumpfee by separating the stages of the system into 3 classes: Bump, Sign, and finally Commit. As the sign functionality is a newer feature of “CWallet”, the developer stated that this feature can eventually be used by “CreateTransaction” as well.
iaanwj merged 4 commits by NicolasDorier from “NicolasDorier:inputcoin” into “bitcoin:master”. During the merge, 5 files were changed for a total of 71 additions and 47 deletions. These changes deal with the clients Wallet by refactoring some of it’s code. Refactoring in the coding sense is the restructuring of existing code in a way that does not alter it’s external behavior. The changes in this Pull Request do exactly by taking the system the code had been using, and simplifying. The original class of code being used was titled “std::pair<const CWalletTx*, unsigned int>” and was described the developer as: “ugly to read, and easy to mess up”. These changes begin by renaming this code to the simpler “CInputCoin”. Following this, the changes then take “CInputCoin” and transforms it into it’s own class. Lastly, these changes allowed some lines of code that were related to the original complicated class to be rewritten thanks to the simplified and streamlined new class. In addition to being far easier to modify and understand in the future,the code set up by these changes enables greater ease within other ongoing work the Core development team is performing. Specifically, the developer states that this Pull Request simplifies the work performed in a different Pull Request which functions as an extension of “FundRawTransaction”.
iaanwj merged 3 commits by jnewbery from “jnewbery:logging_rpc” into “bitcoin:master”. During the merge, 7 files were changed for a total of 123 additions and 12 deletions. These changes deal with the clients available Remote Procedure Calls and the logging of data. These changes take advantage of a software library called “libevent”. Libevent provides an Application Program Interface to developers by which multiple asynchronous events can occur. It is used in these changes as a means to achieve data logging within the client when the Remote Procedure Call that these changes implement is engaged. In addition to adding this Remote Procedure Call to the client, these changes also modify two elements of the code base to compliment it. The first set of changes allows all categories except “libevent” itself to be reconfigured during the running of the Call. The second set of changes modifies the “InitHTTPServer()” to allow any “leveldb” logging to be reconfigured during run time as well. Also of note within this pull request, and in the developers own words, this new Remote Procedure Call is programmed to throw an error message if: “The libevent version does not support debug logging; and the user tries to update only the ‘BCLog::LIBEVENT’ flag”.
The scaling debate is approaching its breaking point, and now more than ever, it is important for every individual, not just miners and software developers, to do their part. All readers are recommended to download and establish a full node supporting the client of their choice should they have the technological and economical means to do so. Download links for each of the major full node clients:
– Bitcoin Unlimited – (Pro immediate block size increase via hard fork, Emergent Consensus)
– Bitcoin Classic – (In line with the view points of bitcoin Unlimited, Emergent Consensus)
– Bitcoin XT – (In line with the view points of Classic and Unlimited)
– Bitcoin Core – (Block size increase slowly over several years, immediate soft fork w/ Segwit)
If any reader feels daunted, confused, or overwhelmed by this task, please do not hesitate to reach out