This development dispatch covers work completed since the Decred v0.1.4 release from May 27th, 2016. Since then, developers have merged 58 pull requests of code into 6 software repositories. During this period, a total of 53 commits occurred in these repositories and represent modifications to the effect of 9,220 lines of code added to and 4,481 lines removed from the Decred codebase. Two additional stake pools have also come online to support the network (in alphabetical order): https://dcrstakes.com https://stake.decredbrasil.com Binaries: https://github.com/decred/decred-release/releases/tag/v0.1.5 dcrd Synced a large number of fixes, improvements, and optimizations from upstream through November (223-26a3200, 229-08f7b6b), December (230-fe65e81, 231-77b2c53, 235-e433c18) 2015, and January (240-e190b7f, 243-1c4314e, 244-7d4646c, 246-0aeccc0, 253-6febb7b, 255-16a5842, 256-4e878a8), 2016 Introduced the concept of a new interface named TxSource which aims to generically provide a concurrent safe source of transactions to be considered for inclusion in a new block. This is a step towards decoupling the mining code from the internals of dcrd. Ultimately the intent is to create a separate mining package (225-9031d85) Introduced a new mempool config in preparation of moving mempool to its own package (226-d73e576) Created a skeleton mining package as a step towards decoupling mining code to ultimately house all of the code related to creating block templates and CPU mining (227-42550a5) Added DisableRelayTx to config to set a value in the version message which informs the remote peer on whether to send inv messages for transactions (228-f0389a3) Simplified PushAddrMsg to ensure that all addresses have an equal chance of being included in the addr message and moved the pseudorandom number generator seeding to package level so that it can be overridden for testing if required (232-c9c32d5) Cleaned up wire code (233-c44f08b) Improved test coverage (236-18e35fe) Optimized the filter address handling code in the RPC server (237-d1d65c7) Improved JSON RPC consistency (238-164f677) Fixed ticketfeeinfo sorting (239-33bcf33) Implemented a sendheaders command to request that a peer send header commands instead of inv commands when announcing new blocks (241-1cb038c) Consolidated several public methods to make the creation of inbound and outbound peers more homogeneous (242-0d67c15) Implemented banning based on dynamic scores. Dynamic ban scores consist of a persistent and a decaying component. The persistent score can be used to create simple additive banning policies. The decaying score enables the creation of evasive logic which handles misbehaving peers (especially application layer DoS attacks) gracefully by disconnecting and banning peers attempting various kinds of flooding. Dynamic ban scores allow these two approaches to be used in tandem (245-e3c5cd5) Added a logger message containing the time it takes to process a block (247-e47d83c) Modified the peer package to add support for the sendheaders protocol message (254-208eaba) Prevented nodes from repeatedly requesting and rejecting the same transaction as different peers inv the same transaction (257-5125078) Simplified block template exports (258-2ad0b1a) Optimized map limiting in the block manager to improve efficiency (259-c21db7a) Modified the chaincfg package to register the default network params via the init function instead of manually hard coding their data into the maps. This is less error prone when adding new default networks (260-d6ac2f0) Consolidated tests into the chaincfg package (261-848d9fc) Created mempoolPolicy to configure the mempool policy and decouple the values from the internals of dcrd to move closer to a mempool package (263-157d1cd) Fixed an issue that often caused slow processing of calls through the block manager (265-eda86f5) Created a new internal package for fast access to live tickets (roughly 14x faster access) (266-92635a4) Added rescan and scanfrom options to importprivkey and importscript (267-63fc4e7) Updated documentation (234-3117ae7, 248-2030b4d, 252-8a9956d, 262-9b3e7d7), formatting (249-d3ef588), naming (250-70f6de8), and versioning (268-b869593) Credits: @ay-p, @ceejep, @chappjc, @davecgh, @dhill, @Dirbaio, @kefkius, @Javed Khan, @jcv, @jolan, @jrick, jzbz, jongillham, mvdan, shphrd, tb00, wallclockbuilder dcrwallet Removed unused functions (256-8eebdff) Fixed an issue where transactions were previously removed in the forward order when rolling back a block, which may cause transaction faults if there are transaction chains. Instead, roll back in the reverse order (263-3e31373) Added new optional resyncing options to importscript and importprivkey for convenience. A rescan height can be included as the last argument so that the user can easily rescan from a height that is not the genesis block (264-3942d8b) Updated versioning (265-cc02f1b) Credits: @ay-p, @ceejep, @jcv, @jrick dcrrpcclient Added gettickets to the wallet RPC client handlers (26-65f9d22) Added rescan options for importprivkey and importscript (27-f3c620d) Credits: @ay-p, @ceejep, @jcv dcrutil Added AmountSorter used by the median function in ticketfeeinfo (12-4a3bdb1) Credits: @ay-p, @ceejep, @chappjc, @jcv dcrticketbuyer Set HTTP server to localhost only by default (3-cef1a81) Fixed an issue where the fee from a difficulty window could incorrectly return as zero if the first window was the newest, incomplete window and there were not any new tickets in that window yet. This has been corrected by checking for the size of the first window, and also by skipping any zero fee windows (5-e30f1c5) Added the ability to choose which price average to use. Before, the user could only use the average of the pool price and the VWAP price for the ticket average price if not specifying a price target. Now users can select the mode of their choosing using the avgpricemode flag, and also the number of blocks to use in the calculation of the VWAP (6-700ecd3) Added a warning on startup if the wallet is not connected or unlocked (7-5cc29df) Updated configuration and fixed an unlikely simnet panic (8-65641c4) Credits: @ay-p, @ceejep, @jcv dcrweb Rewrote the landing page, made it cleaner, smaller, and SEO friendly (4-1b17a2d) Added a stake pool finder utility and caching infrastructure for the block height display (5-) Added the latest stake pools to the finder utility (6-53c795a) Credits: @Fsig, @jcv, @jolan
Already a new release! So much quality work done. The Decred dev team never ceases to amaze with its efficiency. Kudos.
Is it just me? I'm getting a panic: runtime error: invalid memory address or nil pointer dereference on linux-arm build. Version 0.1.4-beta runs fine...
@Hazard that is an arm only bug. There is a fix in upstream btcd https://github.com/btcsuite/btcd/commit/432ad769521704fe91f8801cc878842c68e0ad0c that we need to import to fix it.
@toad If you don't mind compiling from source @ay-p just committed the fix earlier today (and I tested it on a raspberry pi.
This version crashed on two different 32-bit Win7 systems (Intel i5 and i7) Fresh install. Dcrd syncs to latest block OK and dies immediately after this with several pages of crap flying by to fast to read.
@Nimrod have you tried the latest master? The raspberry pi/arm bug is technically a bug for 32 bit platforms but most of use don't have any 32 bit machines left other than arm boxes so we never really get to see it on 32 bit windows, mac, or linux.
Nope. Downloaded the pre-compiled binaries today. OK. Good to know about few testers with 32-bit windows. I will be running at least one of these machines 24/7 for the next few years on 32-bit win 7 due to some legacy software.