This development dispatch covers work completed since the Decred v0.1.3 release from April 10th, 2016. Since then, developers have merged 89 pull requests of code into 8 software repositories. New repositories were created and populated for an automated smart ticket purchaser known as
dcrticketbuyer and extensive Decred documentation known as
dcrdocs (
https://docs.decred.org). During this period, a total of 129 commits occurred in these repositories and represent modifications to the effect of 36,730 lines of code added to and 6,882 lines removed from the Decred codebase.
A series of RFP milestones were achieved and paid for from the development subsidy. Milestones paid for include (See:
Status and Expenditures):
- RFP-1: The proposed design is integrated into a single view (e.g. the Account Summary view) (bebd22a)
- RFP-1: The proposed design style is integrated into the entire application, including a stake ticket purchase view (56889f0)
A number of stake pools have come online in geographically diverse locations to support the network, which means users are no longer required to solo stake mine and can instead use a dedicated pool managed by skilled operators. These are, in alphabetical order:
Two new RFPs were opened for proposals and closed for review.
RFP-7 will establish Decred's identity, align its different platforms according to that identity, and redesign its landing site.
RFP-8 will bring a higher level language for Decred's transaction scripting system, which will enable users to create transaction scripts, such as smart contracts.
Binaries:
https://github.com/decred/decred-release/releases/tag/v0.1.4dcrd- Synced a large number of fixes, improvements, and optimizations from upstream through July (163-b0255e0, 164-a3ff9f1), August (166-1da2845, 172-bee3c25), September (174-885070a, 175-d5144c5, 177-2cc7e75, 178-28f5ce5, 180-8ff81ff), October (202-415ad8f, 205-85d85e8, 206-e8e81fe), and November (212-4bffbb1, 217-e955b1f, 218-a98085e, 219-ab38a2c, 220-0dd5db0) 2015
- Very old votes are now rejected from the memory pool by default (168-ebade40)
- Votes are now checked by the tickets they spend rather than the vote hashes, which fixes a cached block template issue (169-33dc0c7)
- Adjusted the getblockheader result to reflect changes required by the upstream sync (170-d293c9b)
- Improved memory usage when the sighashall optimization is set in chaincfg/params.go (171-653e13d)
- Fixed a legacy address encoding issue (179-118f795)
- Improved test coverage (181-4e14b54, 210-c052ff9, 214-001ecad)
- Changed the order of service flags to ensure their human-readable representation and to allow for the output to be deterministically tested (182-9c238a8)
- Fixed an issue where searchrawtransactionsresult missed various components of transactions (183-ac0d8fb)
- Added a reverse order option to the searchrawtransactions RPC command (185-718f0f4)
- Improved garbage collection percentage (187-f1f1933)
- Integrated a valid ECDSA signature cache in order to mitigate a certain DoS attack and as a performance optimization (189-e310d1d)
- Added a checkpoint for block 24,480 (190-aac2928)
- Updated the getinfo RPC command to include errors in the result (191-577f33c)
- Corrected verifymessage hash generation (192-9798cde)
- Added a new --minrelaytxfee option to allow the user to specify the minimum transaction fee in DCR/KB in which the fee is considered a non-zero fee (194-096e77d)
- Majorly refactored peer code into its own package and introduced a number of fixes, improvements, and optimizations (197-756eff2)
- Improved heap sorting (199-c3d7ede)
- Moved non-mempool specific functions to a new file (203-29a04bc)
- Added an optional locktime parameter to createrawtransaction (204-1987376)
- Moved DNS seed to chaincfg (209-1cd79a4)
- Fixed various issues with the peer and server packages (211-a27dc48, 215-619de72)
- Reworked and improved efficiency of stake submission (216-3799575)
- Improved error handling (222-708b400)
- Updated configuration (193-0c883ff), documentation (201-40d778d), initial protocol versioning (195-cb9d07a), and versioning (221-f3e603a)
dcrwallet- Improved block timestamping (240-e4ebb93)
- Disabled ticket purchase by default in preparation for dcrticketbuyer (244-4950977)
- Enabled stake pool mode for mainnet (245-61c3979)
- Added a guide that explains how to spend from a cold wallet while offline and added a utility called movefunds to sign offline transactions (252-7190018)
- Fixed an issue with fee calculation for revocations so that fees for revocations are now calculated on a per kilobyte basis. The wallet now also triggers winner and missed ticket notifications on start up, so that revocations for tickets that were missed while the wallet was offline will be triggered when the wallet is started (254-fa736fd)
- Updated documentation (243-222b7de), logging (246-c48265a), configuration (247-d5c9a96), and versioning (253-c9476fa)
dcrrpcclient- Synced from upstream through August (20-06e2185), 2015
- Fixed ticket fee info command handling (23-0e48ddc)
- Added an optional locktime parameter to createrawtransaction (24-7df7e90)
- Added a filteraddr parameter to searchrawtransactions (25-231790f)
- Updated documentation (21-51f8ef1) and RPC commands (22-3f0eb39)
dcrutil- Synced from upstream through July (10-b1f27b6), 2015
- Updated documentation (11-85fac3a)
dcrticketbuyer- Added a new user interface that shows the number of tickets purchased, fee prices, ticket prices, and the number of tickets in mempool. A sample configuration file is also included (1-471c747)
gominer- Fixed an issue with shutting down the miner (4-b935bbd)
- Removed unused constants (5-6a7a59b)
- Added a tunable intensity parameter (6-6b8bb1f)
PaymetheusDeveloper NotesGeneral use instructions for dcrticketbuyerdcrticketbuyer helps solve many of the current issues affecting ticket purchase in Decred, such as stabilizing the stake difficulty and ensuring that tickets have adequate fees at low difficulties. It is intended to be a powerful, set-and-forget replacement for the default ticket purchasing code in dcrwallet that does not take into account things such as recently purchased ticket fees, the next estimated stake difficulty prices, and the number of tickets currently in mempool. It automatically provides an advantage to those purchasing tickets at lower stake difficulties by intelligently setting ticket fees and ticket expiry. Larger stake miners may use it to ensure smaller swings in the ticket price, which will enable all users to better purchase tickets at the average ticket price.
An explanation of the features of dcrbuytickets is supplied in the sample configuration file distributed with the binary, or located here:
https://github.com/decred/dcrticketbuyer/blob/master/ticketbuyer-example.confThose who purchase small amounts of stake tickets will want to disable minpricescale and maxpricescale by commenting it out and setting a reasonable maxpriceabsolute. For persons with larger amounts of stake, it is recommended to have the price scaling features enabled.
dcrticketbuyer requires the following:
- dcrticketbuyer binary
- The webui/ folder included with the binaries to be located in the same directory as the binary from 1
- dcrd and dcrwallet set up and running. dcrwallet will need to be unlocked and contain funds for ticket purchases
Information about how to build the tool can be found here:
https://github.com/decred/dcrticketbuyerA thread for discussion of the tool can be found here:
https://forum.decred.org/threads/dcrticketbuyer-new-tool-for-automatic-ticket-purchase.3548/A sample configuration file has been provided. If you wish to use the tool on mainnet, you will need to change at minimum the following parameters in the sample file:
dcrduser, dcrdpass, dcrdserv, dcrdcert, dcrwuser, dcrwpass, dcrwserv, dcrwcert, testnet
Comment out features you do not wish to enable by adding a hash tag (#) in front of them.
Setup this file carefully if you are using coins on mainnet.
To start dcrticketbuyer with a configuration file, execute:
dcrtickeybuyer -C ticketbuyer.conf
If the HTTP monitoring server is available, you will be able to see a live chart feed of information about ticket purchasing that is updated every block. The default HTTP server port specified in the sample configuration is accessible in a browser at:
http://localhost:7770