Bitcoin Unlimited Code Changes
gandrewstone merged 3 commits by sickpig from “sickpig:deadalnix-cpp11” into “BitcoinUnlimited:dev”. During the merge, 4 files were changed for a total of 16 additions and 14 deletions. These changes include a back port from bitcoin Core developer theuni, and were made as an update for users with OSX operating systems. Specifically, the changes fix the dependency files for QT builds within the client for Mac software prior to MacOS Sierra. QT is a framework of tools written in C++ that assists in cross platform application development. These changes optimize the client for users with OS X operating systems seeking to build with QT.
gandrewstone merged 2 commits by deadalnix from “deadalnix:univaluevariadictpl” into “BitcoinUnlimited:dev”. During the merge, 2 files were changed for a total of 19 additions and 26 deletions. These changes were backports from bitcoin Core developer iaanwj. These changes were added to the bitcoin Unlimited client as a means of taking advantage of C++ and it’s different features. In particular, these changes were made to bring the usage of “variadic templates” into the client. A variadic template is a template that is capable of accepting a variable of arguments from the user. It allows the clients to become flexible and efficient, handling more than one input at a time should the need arise. These changes force the usage of variadic templates client wide, and optimize the code for this in the “LogPrint” and “errors” systems.
gandrewstone merged 1 commit by deadalnix from “deadalnix:leveldbnoatomic” into “BitcoinUnlimited:dev”. During the merge, 2 files were changed for a total of 2 additions and 19 deletions. These changes were updates to “leveldb” in the client. LevelDB is an easy to use key-value storage library of particular use with string keys and string values. This software was developed by a pair of Google employees. Since the use of C++11 is standardized for the bitcoin Unlimited client, certain variables and parameters from older commits are becoming un-needed. In this case, leveldb atomics no longer need to referenced by the client when building as they are guaranteed with C++11. These changes remove this checking for atomic flags as a whole, speeding up client performance, and tightening the code base.
gandrewstone merged 2 commits by deadalnix from “deadalnix:cpp11consistency” into “BitcoinUnlimited:dev”. During the merge, 3 files were changed for a total of 3 additions and 3 deletions. These changes were a pair of backports from bitcoin Core, and are various updates that take further advantage of C++11. One of these commits deals with defining a particular enum within the client. An “enum” is a contraction of “enumerated type”, and in the programming sense, defines a distinct data entity consisting of a number of constants (enumerators). C++11 supports a wide range of enumerations, and these changes updated the system “BlockStatus” to be defined by one such set: “uint32_t”. The other changes present in these commits modifies the “auto_ptr” system to the C++11 specific “unique_ptr” system. This silences a potential deprecation warning within the client.
Bitcoin Classic Code Changes
zander merged 5 commits by deadalnix from “deadalnix:ctaes” into “bitcoinclassic:master”. During the merge, 10 files were changed for a total of 1,474 additions and 1 deletion. These changes bring a large addition of code back ported from the bitcoin Core development team. These changes add to the Classic client “CTAES”, or rather “Constant Time Advanced Encryption Standard”. This code module was developed by the Core team to be an extremely efficient, stripped down encryption / decryption version of “Advanced Encryption Standard” running in constant time. This module was based upon a research paper titled “Faster and Timing-Attack Resistant AES-GCM”, and does not include pre-computed tables or data-dependent branches.
zander committed 1 commit by soeren-b-c from “soeren-b-c:master” into “bitcoinclassic:master”. During the merge, 19 files were changed for a total of 36 additions and 36 deletions. These changes remove an unnecessary semicolon present in the code for “Add_Serialize_Methods”. These simple removals do not alter the client performance, and eliminate a small anomaly from the code base. This also ensure that the code base is optimized and efficient, providing an excellent branching point should anyone wish to build off the Classic software.
zander merged 1 commit by deadalnix from “deadalnix:sublime” into “bitcoinclassic:master”. During the merge, 1 files was changed for a total of 4 additions and 0 zero deletions. These changes see the inclusion of a few lines of code in the “.gitignore” system. Any file listed under .gitignore is intentionally untracked and is intended to be specifically ignored by the client. These additions add the “sublime text” project files to the .gitignore system merely as a matter of preference, and does not alter or modify the clients performance.
Bitcoin Core Code Changes
iaanwj merged 10 commits by TheBlueMatt from “TheBlueMatt:2016-12-recent-tx-cache-cmpct” into “bitcoin:master”. During the merge, 11 files were changed for a total of 105 additions and 31 deletions. These changes were made as a method to reconstruct compact blocks. Utilizing recently rejected, orphaned, and replaced transaction memory pool data stored in “CTransactionRefs”, compact blocks are reconstructed. These changes establish a buffer of CTransactionRefs circulating at all times to help cushion the memory being used by this data. As there isn’t currently an infinitely sized buffer of CTransactionRefs available, this smaller buffer with sizes of 100 transactions each will provide a measure of memory relief for the time being with the opportunity to expand it in the future should it prove necessary.
iaanwj merged 3 commits by jonasschnelli from “jonasschnelli:2016/12/fix_frt_adr” into “bitcoin:master”. During the merge, 5 files were changed for a total of 50 additions and 4 deletions. These changes affect the wallet software of the client, in particular the “fundrawtransaction” system. These changes add a new boolean option to fundrawtransaction. A boolean option is a data type with only two possible values: true or false. In this example, the boolean option “reserveChangeKey” was added to fundrawtransaction with the default setting of true. Prior to version 0.14 of the Core client, fundrawtransaction would add a “change-outputs” to the outputs a funded transaction. Following this, the public key generated from the key pool would not be marked “change-address key”, and would return to the source, resulting in possible address reuse. These changes add the reserveChangeKey functionality to the system with the default boolean of “true”. This serves the used key from the key pool, eliminating the possibility of the wallet reusing an address.
iiaanwj merged 3 commits by morcos from “morcos:notifyOnRemoval” into “bitcoin:master”. During the merge, 5 files were changed for a total of 103 additions and 21 deletions. These changes are a solution to an issue raised by developer TheBlueMatt. These changes focus on transactions that have been evicted from the mempool, in particular how the client identifies and reports them to the user. The first major element of these changes is the inclusion of 2 new notifications for added / removed entries to the mempool. These 2 new notifications, (in a simplified form: NotifyEntryAdded, and NotifyEntryRemoved), make it possible for a separate piece of software to subscribe to and monitor the mempool for these types of transactions. The next element of the changes is the addition of this aforementioned monitoring software: “MemPoolConflictRemovalTracker”. In the developers own words, this software: “tracks transactions that have been removed from the mempool due to conflicts and then passes them through SyncTransaction at the end of its scope”. The next element of these changes affects the aforementioned “SyncTransaction system by updating it description files to better describe how it is used in conjunction with “MemPoolConflictRemovalTracker”.
iaanwj merged 1 commit by jnewberry from “jnewbery:CONTRIBUTINGcomponents” into “bitcoin:master”. During the merge, 1 file was changed for a total of 22 additions and 1 deletion. These changes update a text file that specifies contributing to the Core client. The changes clearly outline the acceptable prefixes that developers should employ in their titles as a reference to the particular systems their pull requests affect. The Core development GitHub uses prefixes in their pull request titles for easier sorting and navigation, and this updated list of acceptable prefixes provides more concise house keeping policies for developers.
Some News From The Bitcoin Ecosystem
The annual “Satoshi Roundtable” event was held this past week at a “secret location” in North America. The event is touted as one of the more productive annual gatherings of prominent bitcoin leaders for a simple reason: the conference is invite only. The methodology for this exclusivity removes the advertising and bloat of a traditional bitcoin conference from the mix, and instead frees up time for straight forward discussion. This approach of invites only is double edged however, for in addition to being extremely exclusive and secretive, these conferences carry a reputation of controversy. Stephen Pair, CEO of Bitpay, described his experience with this previous years conference as “a very productive waste of time”. He would go on to expound these thoughts in a short Medium article. Previous conference attendee Brian Armstrong, CEO of Coinbase, also shared his take away from the 2016 conference within the Coinbase blog. Regardless of controversy, these gatherings still possess the potential for an open discussion between individuals holding differing opinions on very important subjects. As news of the happenings from this years round table trickle in over the coming weeks, there will hopefully be new forms of agreement and consensus forming within the bitcoin ecosystem.