Monday Monero Missive #7

Hello, and welcome to our seventh Monero Missive!

Major Updates

  1. We've had an incredibly positive response to our ongoing need for donations, and we'd like to thank everyone that has donated and continues to donate. Several pools have stepped up to donate some of their fees to us - CryptonotepoolUK, for instance, has a 1% fee, but the entirety of the fee is donated. Risto Pietila has also kindly setup a donation "Hall of Fame", which has been taken over by cAPSLOCK, and can be found here. This, and all the ongoing donations, are critical to our ability to spend even more time and energy on Monero, and are greatly appreciated.
  2. Now that the CryptoNote whitepaper has been peer reviewed by our mathematicians and cryptographers, they have begun initial work reviewing the implementation thereof. This is most especially important, as Monero has inherited quite a bit from the CryptoNote reference code. The initial focus is on the cryptographic primitives and higher-level cryptographic functions, which will be evaluated by code analysis as well as by running test vectors (that are different from those in the Monero test suite) against those functions. The methodologies and results will, of course, be published in due time.
  3. A number of important and critical dev efforts are under way, most notably the embedded database work (to cut down on the RAM requirement), the daemonising work (to allow for a much more stable environment for exchanges, pools, merchants, and other automated systems), and the QoS work (to reduce and limit the bandwidth requirements). Technical updates on these are in the dev diary below.
  4. We'd like to officially welcome Pavel Kravchenko as a key technical contributor to Monero. With a PhD in Information Security, specialising in public key infrastructures, he will be devoting some time to tackling the larger issues that Monero faces in its drive to become a truly private, untraceable cryptocurrency.
  5. Further to the last missive, the German word list has been completed, and work has begun on the Portuguese version. This is very early work, and is very important to our ensuring that it fits well with our current mnemonic system.

Dev Diary

Blockchain: abstraction of the blockchain storage functions is basically complete, and the next step will be to start integrating LevelDB so that we have a baseline for our performance testing. A number of the key-value stores / embedded databases that we will be evaluating are forked from LevelDB, so it makes sense to start with that. This is moving out of "core" and into "blockchain" for categorisation going forward. The ongoing progress on this can be followed here:

Core / Wallet: much of the work on daemonising Monero has been complete. On Unix-like systems (Linux, OS X) the daemon backgrounds correctly, and commands can be run against the daemon (through command line arguments or RPC calls). On Windows the daemon can install itself as a Windows service, and can subsequently be managed through the standard Windows service system. The Windows service can also be removed by the daemon. Similarly, rpcwallet has inherited this functionality, with the difference that rpcwallet can run in multiple instances (whereas the daemon only allows a single instance). This covers edge cases where a single machine needs to have multiple wallets accessible via multiple rpcwallet instances.

RPC: a new get_connections RPC call has been added to the daemon and merged into master. This is needed by the DNS seed control software, which is at a very early stage. Once complete the hardcoded seed nodes will be removed in lieu of DNS seeds. At a later stage when the DNS seed control software is feature complete, there will be a call for 4 or 5 people who are happy to run DNS seeds on an extremely long-term basis.

RPC: due to some exchanges finding it difficult to poll get_payments, an urgent change has been made to allow for get_payments to take multiple payment IDs are input, as well as a block height to scan from (excluding older transactions). This will break compatibility with the classic get_payments, and will thus be moved to a call of its own. The initial commit can be found here, and tested if you are feeling particularly brave:

Core: initial work has been completed on the QoS bandwidth control. If you'd like to take a look at the commits to have an extra set of eyes on it, it can be found here:

Until next week!