Dd-20: V0.7.0 (12/26/16)

Discussion in 'Development Dispatches' started by moo1337, Dec 26, 2016.

  1. 2017/12/15 - Decred v1.1.2 released! → Release Notes  → Downloads
  1. moo1337

    moo1337 Moderator

    Jul 25, 2016
    #1 moo1337, Dec 26, 2016
    Last edited by a moderator: Dec 26, 2016
    # Dd-20: V0.7.0 (12/26/16)


    This development dispatch covers work completed since the Decred v0.6.0 release on November 09, 2016. Since then, developers have merged 187 pull requests into 10 repositories (see below for more detailed changes).

    Here are direct links to the Windows installers for Paymetheus:

    Installer: https://github.com/decred/decred-release/releases/tag/v0.7.0
    Binaries: https://github.com/decred/decred-binaries/releases/tag/v0.7.0

    decrediton Linux: https://github.com/decred/decred-bi...ad/v0.7.0/decrediton-0.7.0-linux-amd64.tar.gz
    decrediton OSX: https://github.com/decred/decred-binaries/releases/download/v0.7.0/decrediton-0.7.0.dmg

    This release contains bug fixes and improvements for dcrd, dcrwallet, and Paymetheus.

    This includes the first release of decrediton, a new, cross-platform GUI for decred. This is not a feature complete version of decrediton. Simple operations (creating wallet, importing a seed, sending and receiving decred) are supported. This is primarily a demo of decrediton rather than a production ready tool. Please try it and report any issues or additional features you would like on the [github page](https://github.com/decred/decrediton/issues). Currently binaries are only provided for 64 bit Linux and OSX.

    Paymetheus has added seed restoration as well as the ability to show rescan progress.

    dcrd has various bugfixes and infrastructure improvements for voting in a future release.

    A new rpc command to resync has been added to dcrwallet. The functionality from dcrticketbuyer has been added to dcrwallet. See this commits for details on using the new functionality instead of the seperate dcrticketbuyer binary.

    gominer and copay are unchanged so there are no new binaries for them. You should use the previous release for either of them.

    • Updates for dcrd JSON-RPC websocket API changes. (PR#40)
    • Fix return result type for Version(Async) RPCs. (PR#41)
    • Switch goclean to use metalinter. (PR#43)
    Credits: @jrick and @jcv

    • Refactor to integrate pkg ticketbuyer for automated ticket purchases (PR#374)
    • Remove Wallet.ChainSynced/SetChainSynced APIs. (PR#378)
    • Fix a bug in the semver compatibility check. (PR#380)
    • Update dependencies. (PR#381)
    • Add Rescan RPC to the gRPC server. (PR#382)
    • Marginally clean up acct/addr discovery code. (PR#383)
    • Update gRPC client doco for changed requirements. (PR#391)
    • Fix an improperly formatted error found by Travis. (PR#396)
    • Update dcrutil version (PR#398)
    • Add controlled startup RPCs to the gRPC interface. (PR#399)
    • Sp fix (PR#400)
    • Move decision to send attached block notifications to caller. (PR#403)
    • Catch up version on main branch (PR#408)
    • Change WalletService.GetTransactions to return stream. (PR#409)
    • Improve error handling by ignoring less errors. (PR#410)
    • Correctly handle duplicate blocks in the main chain. (PR#413)
    • Require seed parameter for LoaderService.CreateWallet RPC. (PR#415)
    • Name WalletLoaderService correctly in documentation. (PR#417)
    • Remove database if wallet.Loader.CreateNewWallet errors. (PR#419)
    • Update JSON-RPC help. (PR#422)
    • Disable broken tests so working tests can be run. (PR#423)
    • Reenable tests on travis. (PR#424)
    • Remove internal/legacy/* packages. (PR#427)
    • Add links to WalletLoaderService Methods (PR#428)
    • Pull in latest dcrd version. (PR#429)
    • Implement the rescanwallet JSON-RPC. (PR#430)
    • config: add --piperx (PR#432)
    • Remove cmd/dropwtxmgr and doco references to it. (PR#434)
    • Actually require the wtxmgr namespace to exist. (PR#435)
    • Fix --create by creating the transaction manager. (PR#437)
    • Remove -v from go test on travis. (PR#438)
    • Update decred deps to pull in new dcrutil. (PR#440)
    • Add tlscurve option to specify TLS curve. (PR#442)
    • Fix possible exceptions in example gRPC clients. (PR#445)
    • Use atoms, not Satoshis, in example clients. (PR#447)
    • Add gRPC SeedService. (PR#449)
    • Change --profile to take a listen address (or many). (PR#450)
    • Allow --piperx=0 (stdin). (PR#452)
    • Add WalletService.ConstructTransaction RPC. (PR#455)
    • Verify that addresses are intended for the active net. (PR#457)
    • ticketbuyer: Stop purchaser on client shutdown (PR#469)
    • Allow running either the new or old ticket buyer. (PR#470)
    • Serialize calls to ticketbuyer Purchase. (PR#472)
    • Revert change to default ticketmaxprice option. (PR#475)
    • ticketbuyer: Fix set split tx, ticket fees (PR#478)
    • ticketbuyer: Fix use of maxpriceaabsolute, txfee (PR#479)
    • Improve efficiency of triggering the ticket buyer. (PR#480)
    • bump wallet vote version to 3 (PR#461)
    • Update internal glide deps for 0.7.0 (PR#486)
    • Bump for v0.7.0 (PR#459)
    Credits: javed-khan, @jrick, @jcv, jzbz, @ay-p, @dhill

    • blockchain: simplify logic in checkCoinbaseUniqueHeight (PR#440)
    • ErrBadStakevaseScrVal -> ErrBadStakebaseScrVal (PR#444)
    • blockchain: remove redundant check (PR#449)
    • blockchain: pruneStakeNodes never returns an error (PR#450)
    • Glide update at the beginning of 0.7.0 (PR#458)
    • blockchain: Remove unnecessary RuleError.GetCode. (PR#459)
    • travis: 1.7 -> 1.7.3 (PR#460)
    • peer: use atomics instead of mutexes (PR#461)
    • peer: Extract protocol negotiation from main read and write loops (PR#462)
    • blockchain: Associate time src with chain instance. (PR#463)
    • wire: Export transaction tree constants. (PR#464)
    • blockchain: optimize HaveBlock (PR#465)
    • wire: Consolidate tests into the wire pkg. (PR#466)
    • multi: Upstream chainhash abstraction sync (PR#467)
    • blockchain: LogBlockHeight only needs a wire.MsgBlock.. (PR#471)
    • multi: Upstream parameter abstraction sync (PR#473)
    • dcrd: Simplify shutdown signal handling logic sync. (PR#474)
    • license: add title (PR#475)
    • txscript: Expose AddOps on ScriptBuilder. (PR#476)
    • docs: Add chainhash to README.md (PR#477)
    • server: Remove superfluous check in OnMemPool. (PR#478)
    • mempool: Optimize the votes map slices. (PR#479)
    • stake/dcrjson: Simplify code with gofmt -s. (PR#480)
    • server: Optimize get mining state code. (PR#482)
    • mempool: Remove exported InsertVote function. (PR#483)
    • mempool: Rename GetVoteHashesForBlock & remove err. (PR#484)
    • mempool: Decouple mining-specific logic. (PR#486)
    • stake: Convert TxType constants to enum syntax. (PR#488)
    • multi: Restore correct upstream majority version code. (PR#490)
    • Bump to v0.6.1 (PR#492)
    • rpcserver: Return RPC errors from block template. (PR#494)
    • mempool: Refactor mempool code to its own package. (PR#496)
    • dcrjson: Add rescanwallet JSON-RPC request. (PR#500)
    • Add unit tests. (PR#504)
    • Fix typo. (PR#505)
    • Remove -v from go test. (PR#507)
    • Pull in latest dcrutil. (PR#508)
    • add more checkpoints for upcoming release (PR#509)
    • Test another failing condition in validate.go (PR#511)
    • Fix output formatting in a unit test. (PR#513)
    • blockchain: Make params used in tests match. (PR#517)
    • fullblocktests: Limit tickets to target pool size. (PR#518)
    • fullblocktests: Generate subsidy for voted block. (PR#519)
    • Implement stake voter version interrogation command. (PR#522)
    • rpc: Add missing StakeVersion to getblock verbose (PR#529)
    • Implement softfork mechanism. (PR#524)
    • Validate softforking consensus rules (PR#526)
    • Bump for v0.7.0 (PR#515)
    Credits: @dhill, @moo1337, @ay-p, @davecgh, @jrick, @jcv, @jolan

    • Bump for v0.6.1 (PR#77)
    • Remove -v from go test. (PR#80)
    • Bump for v0.7.0 (PR#81)
    Credits: @jcv

    • Decrediton hello world, from electron-quick-start example on github (PR#2)
    • Add in basic rigging and some button PoC (PR#4)
    • Fix README.md typos and errors. (PR#6)
    • Initial framework commit. (PR#7)
    • Fix grpc client connectivity and get balance button click PoC (PR#9)
    • Update README.md for accurate deving (PR#10)
    • Add rough cut of LoginForm and rigging in place to share grpcClient (PR#11)
    • Strip down react/redux to basic components to build up from (PR#12)
    • Add webpack configs from electron-react-boilerplate (PR#16)
    • First major introduction of bootstrap and various other front end pieces (PR#17)
    • Update package.json for decrediton and packaging (PR#18)
    • Update .gitignore (PR#23)
    • Add sidebar and proper login/getbalance state handling (PR#25)
    • Add WalletLoaderService functionality to prepare wallet for actions (PR#35)
    • Reenable ssl for grpc. (PR#38)
    • Use .decrediton instead of .dcrwallet (PR#41)
    • Launch dcrd and dcrwallet on startup. (PR#43)
    • Fix possible exception in cert load. (PR#46)
    • Correct app name and menu links. (PR#47)
    • Set version to something more reasonable. (PR#48)
    • Use decred icon instead of default in packages. (PR#49)
    • Combine duplicate code for rpc cert loading. (PR#51)
    • Finish boilerplate for redux/grpc calls (PR#52)
    • Change babel-core version back to 6.18.2 due to 6.20.0 breaking (PR#53)
    • Add basic boilerplate/impl of grpc notifications to actions (PR#54)
    • Add final boilerplate for grpc control (PR#55)
    • Various fixes for control api and first pass on receive page (PR#56)
    • Move config options to file instead of hardcoding. (PR#58)
    • Explicitly set rpc ports for dcrd. (PR#62)
    • Add eslint with basic rules. (PR#63)
    • Add material-ui React component implementation remove react-bootstrap (PR#66)
    • Remove leftover grpc binary (PR#67)
    • Add eslint-formatter-pretty back. (PR#69)
    • Start on cleaning up based on eslint. (PR#72)
    • Address more lint issues. (PR#74)
    • Add some basic instructions to the README (PR#77)
    • Use the same license all over. (PR#79)
    • Add constructTransaction and loadActiveDataFilters gRPC (PR#80)
    • Make port in README.md match defaults in code. (PR#88)
    • GetStarted funnel revamp, plus lots of other fixes (PR#89)
    • Remove passphrases from redux state (PR#90)
    • Construct/Sign/Publish tx split apart and given proper forms (PR#91)
    • Adds button on Home page to allow for users to start rescan (PR#95)
    • Add CircularProgress components (PR#97)
    • Add SeedService to allow for new seed generation and existing seed processing (PR#98)
    • Add VersionService to ensure that decrediton is running on expected dcrwallet version (PR#99)
    • Rough first pass to display getTransactions (PR#103)
    • Add disclaimer for initial release (PR#111)
    • Allow packaged app to find api.proto. (PR#115)
    • Update README for mac. (PR#117)
    • Bump for v0.7.0 (initial release) (PR#92)
    • Fix path to dcrd directory on macOS and windows. (PR#120)
    Credits: @ay-p, @jcv, @dhill

    Public keys

    The file cmd/dcrinstall/pubkey.go contains the decred public key which is used to check the signed manifest in the release. You can compare the contents of this file to what you get from a keyserver to confirm that dcrinstaller is using the proper key.


    The Decred installer will only work on Windows 7 and above.
    chappjc, travanx, Reynold and 6 others like this.
  2. Emilio Mann

    Emilio Mann Full Member
    Advocate (Facebook)

    Jan 9, 2016
    GUI wallets for Mac and Linux!
  3. Alexoz

    Alexoz Member

    Thank you guys!
  4. jy-p

    jy-p Sr. Member

    Jan 2, 2016
    It was mentioned on slack/IRC that this DD was technical and didn't make the release tangible for the layperson. Here's a breakdown of the most important parts of this release.

    Stake version soft fork

    In order to enable hard fork voting, we implement a soft fork that makes use of the existing block version in block headers, vote version and the stake version in block headers. Those familiar with Bitcoin may be aware that soft forks are implemented via the block version in the block header, where the network begins enforcing and rejecting blocks of lower version at certain activation thresholds, e.g. if 75% of the blocks in a trailing window of 1000 blocks are version 3, blocks with version less than 3 are rejected by the network. This process is entirely controlled by the PoW miners, so in Bitcoin, this process depends only on the PoW miners and not the rest of the network. In Decred, we require a second version in the block header to enable hard fork voting, called the stake version, and this version being incremented corresponds to the start of voting on a new set of issues that are encoded in votebits that are part of each vote cast by stakeholders. Decred uses the existing Bitcoin method for incrementing the block version in its block headers, but to increment the stake version, the block version must already be incremented and 75% or more of the votes cast in a stake version interval must be of a particular version, e.g. version 3. The rules for starting a new voting period can be reduced to asking a couple straightforward questions:
    • Did all the PoW miners upgrade to the latest dcrd release?
    • Did 75% or more of the stakeholders voting in the last stake version interval upgrade to the latest dcrwallet release?
    If these 2 conditions are satisfied, the stake version is incremented and the next voting period begins. There is a third condition, but it is more technical and messy to explain, so I'll gloss over it.

    The purpose of this soft fork is to act as a signaling mechanism that indicates the network is ready to upgrade consensus. Since this soft fork behavior is fundamental to how Decred hard fork voting will work, we have exhaustively tested the various scenarios that can occur at the ends of stake version intervals. This work was completed by @moo1337 and @davecgh. The code to activate the soft fork was roughly 1500 lines, but the test coverage was roughly 2500 lines. These tests simulate an entire blockchain and ensure that stake version changes behave properly under all conditions, including both positive and negative tests and behavior under reorganizations. We will strive to maintain this level of test coverage for any future consensus changes that occur as part of hard fork voting. If you're interested in checking out the code, have a look at dcrd pull requests 524 (soft fork) and 526 (test coverage).


    As part of our effort to get a GUI wallet that runs on all major platforms, we started work on decrediton, which uses Electron, React and Redux frameworks. In a single release, @ay-p has gotten most of the basics working for decrediton. Despite being in a very much "alpha" state, it can create simple transactions, generate a new seed, restore from seed, and receive payments. It does have a notable deficiency with the transaction history, but fixing that requires some more substantial work on the gRPC decrediton uses to interact with dcrwallet. By the next release, decrediton should allow users to do most things they can already do with the command line wallet, dcrwallet. In the meantime, do understand this is very much a work-in-progress and there will be something more "beta" available by early February.


    Some users may have noticed that dcrticketbuyer has been static for this release despite several open issues. This is because the code from dcrticketbuyer has been migrated to a separate package inside dcrwallet. This was done because in order to buy tickets, you need a wallet, so rather than require users to run 2 processes, a wallet for buying tickets and a ticket buyer, only 1 process is required. Another reason this was done is that automatic ticket purchasing in Paymetheus or decrediton creates a mess when using a standalone ticket buyer versus something integrated into wallet. The migration took @Javed Khan a while and it has now landed in dcrwallet.

    If you have any further questions about the release, feel free to ask.
    Reynold, N3wb1e, Emilio Mann and 3 others like this.
  5. N3wb1e

    N3wb1e New Member

    Jun 12, 2016
    Good work! Keep it up.
  6. davecgh

    davecgh Hero Member
    Developer Organizer

    Dec 31, 2015
    United States
    I realize the intent was a high level overview, and I think the post did a good job of providing that, however I'd like to clarify that instead of all PoW miners, it is technically only 75% since what really happens is once 75% of pow miners upgrade, enforcement of the new stake version semantics defined for block version 3 starts. It is not until 95% when version 2 blocks will start to be rejected, so it is possible to reach an enforced voting period without all PoW miners upgraded. In practice, once the 75% threshold is received it shouldn't be long before the 95% threshold is reached and once that one is reached, it will necessarily go to 100% in short order due to rejection of old blocks at which point it will indeed become all PoW miners.
    Reynold and raedah like this.
  7. Reynold

    Reynold Member

    Jan 28, 2016
    Overwrote binaries, running good so far.
    Thank you devs again!
  8. Newdcr

    Newdcr New Member

    Apr 1, 2016
    #8 Newdcr, Dec 28, 2016
    Last edited: Dec 28, 2016
    Great Job, we need the developer team never stop, always work for the future.
    I believe that our currency will be the first very soon in ( CryptoCurrency )
  9. Alexoz

    Alexoz Member

    Yer never give up! Most of start-ups fail because they give up... But here it's a currency :cool:
  10. Reynold

    Reynold Member

    Jan 28, 2016
    I have a question about the getbalance. Here are some getbalance commands and the results below:

    dcrctl --wallet getbalance
    dcrctl --wallet getbalance "*" 1 spendable
    dcrctl --wallet getbalance "*" 1 locked
    dcrctl --wallet getbalance "*" 0 fullscan
    dcrctl --wallet getbalance "*" 0 all

    This is an old wallet that I recently drained and moved my DCR to a new one. I ran the rescanwallet but still get the same results, I'm wondering what the 15.### DCR is and is it possible to get it back?

    Thank you.
  11. MarSas

    MarSas New Member

    Feb 12, 2016
    Locked in a ticket?
  12. Reynold

    Reynold Member

    Jan 28, 2016
    Locked is showing 0, and live is also 0:

    dcrctl --wallet getbalance "*" 1 locked
    dcrctl --wallet getbalance "*" 0 locked
    dcrctl --wallet getstakeinfo
    "blockheight": 94103,
    "poolsize": 43519,
    "difficulty": 72.12447373,
    "allmempooltix": 36,
    "ownmempooltix": 0,
    "immature": 0,
    "live": 0,
    "proportionlive": 0,
    "voted": 929,
    "totalsubsidy": 1678.68224036,
    "missed": 18,
    "proportionmissed": 0.01900739176346357,
    "revoked": 18,
    "expired": 11
  13. chappjc

    chappjc Full Member
    Developer Pool Operator (PoS)

    Check the output of listaccounts.
  14. Reynold

    Reynold Member

    Jan 28, 2016
    dcrctl /C dcrctl.conf --wallet listaccounts
    "default": 0.02985777,
    "imported": 0
  15. sambiohazard

    sambiohazard Sr. Member

    Jan 21, 2016
    @Reynold i think its a unconfirmed revoke transaction. I have one in my wallet and despite doing everything devs told me it remains unconfirmed and funds locked.
    Reynold likes this.
  16. ay-p

    ay-p Full Member

    Dec 7, 2015
    @sambiohazard can you PM me the unconfirmed revoke tx hash? here or IRC is fine. We'll try and investigate this further
    Reynold likes this.
  17. jack.liver

    jack.liver New Member

    Feb 1, 2016
    there's a guide to dcrticketbuyer settings or a discussion thread ?
  18. jcv

    jcv Full Member

  19. ay-p

    ay-p Full Member

    Dec 7, 2015
    @sambiohazard we're you able to reseed and see if those ssrtx were still "stuck" ?
  20. Shadowlance

    Shadowlance Full Member

    Jan 9, 2016
    I'll try and get around to updating those if I can pull myself away from Warframe...

Share This Page