Decred Journal — December 2021
- Decred’s first payment to contractors from the new treasury was approved by a decentralized vote and sent.
- Development work for the DCP-10 consensus change was completed. It will change the PoW/PoS reward split from 60%/30% to 10%/80%.
- Politeia v1.3.1 bugfix and polishing release was deployed.
- New participation records have been set in proposal voting, staking, and mixing systems.
- The first release candidates for v1.7 were opened for testing in early Jan.
- A proposal for funding the third phase of DCRDEX development was published in early Jan.
v1.7 Release Testing
Release candidate builds for the upcoming v1.7 “Based Bison” release are available for testing. Make sure to verify the downloads before running. For extra safety testnet coins can be used for testing until the final release is out.
All help to make the final release bug-free and polished is greatly appreciated. Please report any issues in #support chat in Matrix, Discord, Telegram, or directly in the appropriate GitHub repo. Good hunting!
Vote on Treasury Spends
Starting with the payment for November work, payments to contractors will from now on be made from the new treasury following the decentralized voting process.
If you use the command-line tools to solo vote please set your preference in the following manner:
dcrctl --wallet settreasurypolicy "03f6e7041f1cf51ee10e0a01cd2b0385ce3cd9debaabb2296f7e9dee9329da946c" "yes or no"
That command sets how your wallet votes for treasury spend transactions (“tspends”) signed by that key. The key
03f6e704... represents the current management of the treasury and the command sets your trust to it.
You can verify this key in the DCP-0006 or in the source code. The voting is semi-automated with this one-time configuration, but it is possible to vote on individual tspend transactions when more granular control is needed.
Currently, tspends can only be voted on by solo stakers, VSP support is in the pipeline to allow Decrediton users to participate.
The work reported below has the “merged to master” status unless noted otherwise. It means that the work is completed, reviewed, and integrated into the source code that advanced users can build and run, but is not yet available in release binaries for regular users.
dcrd is a full node implementation that powers Decred’s peer-to-peer network around the world.
Development work for the upcoming “Change PoW/PoS Subsidy Split To 10/80” consensus change has been completed, including the agenda definitions, the consensus vote with new consensus rules and tests, and the DCP-10 document with technical details. A small geek bonus of this change is it will increase the theoretical supply limit from the uncomfortable 20,999,999.99800912 to a more satisfying 21,000,000.00015952 DCR.
primitives package has been kickstarted with initial proof-of-work functions, calculations of merkle tree roots, and functions for generating and verifying inclusion proofs (along with full tests, benchmarks, and docs). New PoW functions build upon the new optimized
uint256 package and are much faster than the ones in use currently.
primitives is a large refactoring plan to collect core consensus code in one place.
Other merged changes:
AssumeValidparameter and config option to skip certain validation checks prior to the specified block (which is assumed valid). Compared to using checkpoints for the same purpose,
AssumeValidallows skipping more validation work and gives greater flexibility to node operators and developers (for testing).
- added an additional child key derivation method that strictly conforms to the BIP-32 standard, to be used by DCRDEX. Decred’s current method differs from the standard for legacy reasons.
Maintenance, refactoring, and cleanup:
- moved the
uint256package from internal staging area and released it as v1.0.0 of the new
math/uint256module. The original plan was to keep it inside the
primitivesmodule, but this move allows to release it sooner to serve projects outside of Decred. The new location also better reflects that it is a general purpose package, unlike
primitives, which will be focused on Decred specifics.
- initial work to refactor peer banning and ban score tracking into a
- changed RPC server to submit transactions directly now that piping it through
netsyncis no longer needed
- updated module dependencies for the upcoming release
dcrwallet is a wallet server used by command-line and graphical wallet applications.
- added an optional parameter to set treasury vote policy specific to a treasury key or a ticket hash (will be used by VSP staking)
- return more useful info from address validation in gRPC and JSON-RPC methods
- added gRPC method to import extended public key
- added gRPC method to import voting accounts derived from a different seed (may be used by staking with Trezor and vspd)
- upgraded to
cspp/v2module which includes an additional post-quantum key exchange
- added a config option to limit CSPP server connections per change amount
- migrated to the new
stdscriptpackage from dcrd
- fixed possible issues with 1-deep reorgs in SPV mode
listreceivedbyaccountwith imported BIP-44 accounts
Decrediton is a full-featured desktop wallet app with integrated voting, StakeShuffle mixing, Lightning Network, DEX trading, and more. It runs with or without a full blockchain (SPV mode).
- added a filter by tx ID to Transaction History and Ticket History views
- updated DCRDEX module to pull in v0.4 features
- added experimental SPV support for Decred DCRDEX wallets
- fixed 3 display issues for watch-only wallets
- fixed an issue with upgrading certificates for some older wallets
- reused a few more components from the pi-ui library (highlighted text, paginator, toggle, buttons and icons)
- made many productivity enhancements to the translator tool
- updated English strings for translation and removed old Transifex files
Changes in the pi-ui library (shared by Decrediton and Politeia):
- added clickable icon component
- added new icons for Decrediton
- updated select component to match new design specs
If you would like to add or update a Decrediton translation, please ask in our #translations chat room.
Politeia is Decred’s proposal system. It is used to request funding from the Decred treasury.
User-facing changes merged in December:
- removed Markdown link button from editor toolbar to prevent user errors
- fixed missing proposal published and edited dates
- fixed downloading of vote timestamps
- fixed user menu alignment
- fixed infinite loading on admin approved list
Internal GUI changes:
- added data mocking for proposal creation and editing flows, to enable automated UI testing without connecting to a backend
politeiavoter command-line app:
- improved reporting of “already voted” errors
- improved UX of
- fixed stopping the process with Ctrl-C
- allow retrieving all comment votes without specifying the user ID filter (this was requested to better analyze the proposal process)
- added a cache for proposal status to speed up loading of approved proposals
- execute batch reads concurrently to improve performance
- converted route page sizes to plugin settings to remove duplication and make it easily configurable by a sysadmin
- ensure consistent ordering of returned records
- tell clients if comments extra data is allowed in the policy response
- fixed handling of more than 32,767 votes by loading records in multiple SELECT queries
dcrlnd is Decred’s Lightning Network node software. LN enables instant and low-cost transactions.
- updated to latest Decred modules
cspp is a server for coordinating coin mixes using the CoinShuffle++ protocol. It is non-custodial, i.e. does not hold any funds.
- implemented post-quantum key exchange based on Streamlined NTRU Prime 4591⁷⁶¹. This key exchange occurs in addition to an x25519 key exchange as previously, such that if a weakness in sntrup4591761 is discovered, the security won’t reduce to anything worse than just x25519.
- added tags to signed key exchange messages to prevent signature forgery
- check all signed messages for valid signatures (future-proofing the code if it will be used as part of a decentralized coordination protocol)
DCRDEX is a non-custodial exchange for trustless trading, powered by atomic swaps.
First release candidates for the massive upcoming v0.4 release have been tagged. Advanced users can check the
release-v0.4 branch and read the release notes with upgrade instructions, or try DCRDEX integrated into Decrediton’s release candidates.
User-facing changes merged in December:
- fixed volume on depth and candlestick charts
- changed how keys are derived from the app seed to use strict BIP-32 (for compatibility with more wallets)
assetseedcommand-line app that takes the DEX app seed and derives a wallet seed+password pair for a particular asset. The latter may be usable in some wallet software for accessing funds outside of DEX applications (e.g. btcwallet).
- disallow Bitcoin Core’s new Descriptor Wallets until they support the required key export method
- migrated to dcrd’s new
- final dependency upgrades in preparation for the v0.4 release
- several fixes have been backported to the v0.2 release branch since both v0.3 and v0.4 rely on the unreleased v1.7 of dcrd and dcrwallet
Progress towards Ethereum support:
- implemented ~8 more core methods out of a long 27-item checklist. Along the way, the codebase is being continuously refactored to support account-based assets like Ethereum (originally DCRDEX was built for UTXO-based coins).
- added funding validation for account-based assets
- handle different versions of the swap contract
- added failure reasons to the swap contract
- added wallet config option for the gas fee limit
- settled on simpler definition of “coin ID” for Ethereum
- simplified detection of reorgs and added a script to test them
- fixed client balance calculation
- keeping up with Ethereum’s hardforks and breaking changes in the toolchain
Check the new development proposal for a report of Phase 2 and the roadmap for Phase 3.
- allow the user to hide wallet balance to improve privacy
- notify the user when the storage space is low
- consistently use term “seed words”
GoDCR is a lightweight desktop wallet app with integrated staking, privacy, and Politeia browsing.
- implemented initial steps of the DEX flow (create app password, pay the reg fee, select DEX server)
- added options to turn off Politeia and transactions notifications
- made it harder to accidentally send from the unmixed account (it may undo the privacy gains of mixing)
- ~17 bug fixes
Merged in dcrlibwallet library (shared by Android/iOS wallets and GoDCR):
- updated DCRDEX dependencies to pull in the new DCR SPV wallet support
- added DEX client features to the MultiWallet manager
Progress towards the v1.0 release can be tracked here.
dcrdata is an explorer for Decred blockchain and off-chain data like Politeia proposals, markets, and more.
- removed one redundant database index
- enforce a minimum required version of PostgreSQL
- updated dependencies: npm, DCRDEX v0.4, dcrd’s
- Bug Bounty program posted a status update: all-time 209 submissions were processed and 19 were eligible for a payout. One minor submission will be revealed once enough users update to the upcoming 1.7 release.
- @fst_nml posted a progress update on Decred+THORChain integration with first successful DCR swaps against BCH and RUNE on a privatenet. There is a detailed dev log of the work and challenges.
Community stats as of Jan 2:
- Twitter followers: 50,916 (+800)
- Reddit subscribers: 12,488 (+82)
- Matrix #general users: 599 (+14)
- Discord users: 2,175 (-48)
- Telegram users: 3,160 (+130)
- YouTube subscribers: 4,640 (+20), views: 200K (+2K)
In December the new treasury received 10,252 DCR worth $816K at December’s average rate of $79.59. 1,006 DCR was spent to pay contractors, worth $80K at December’s rate, or $109K at November’s billing rate of $108.13. As of Jan 6, combined balance of legacy and new treasury is 753,934 DCR (47.8 million USD at $63.37).
Decred’s first spend from the new treasury was approved by a decentralized vote!
On Dec 18 the transaction paying 1,006 DCR to contractors was broadcast to the network along with an announcement with instructions on how to vote and verify the treasury key. The vote started on late Dec 18 and finished on Dec 28 when the transaction was mined in block 619,776. Out of 17,280 max eligible tickets, 6,269 had voted Yes and 0 had voted No by Dec 28, which created an insurmountable tally of Yes votes and triggered the “short-circuit” system to finish the vote 2 days sooner than the maximum 12 days. This algorithm allowed to make the decision faster and pay the contractors earlier.
Back in June, the first attempt to pay from the new treasury failed due to a bug making the safety system too aggressive and blocking the payment. That voting was still notable for showing an impressive 69% ticket participation and 100% support. Since then the contractors have been paid from the legacy treasury, but recently the unintended limit of 0.15 DCR has ended and it allowed to start making full payments from the new treasury. A consensus change was developed to correct the behavior and prevent this scenario in the future, voting to activate it will start when enough users upgrade to the upcoming v1.7 release.
On Politeia, voting on the block reward change proposal exposed a bug that prevented some late votes from being counted. It started on Dec 9 18:36 UTC when the highest ever voter participation rate surpassed 32,767 votes (78% of all eligible tickets) and hit an unintended internal limit. In the remaining ~25 hours of voting, clients were unable to cast their votes or start new vote trickling processes with politeiavoter (trickling that had started prior to the last ~25 hours could still continue). Importantly, the bug could not have changed the vote outcome, e.g. even if 8,752 remaining eligible tickets all voted No it would still pass with 79% Yes. The fix was included and deployed with v1.3.1, see #1605 for technical details. This bug only related to the Politeia vote, it does not affect the consensus vote that will be triggered by the release of v1.7.0.
Proposal activity in December:
- The proposal to change the block reward distribution was approved by Politeia vote with 91.7% approval and turnout of 79%. It has also collected a record of 166 comments.
- A proposal for further funding of the @StakeShuffle_ Twitter bot was submitted. The requested sum of $1,684 would cover work done to improve the bot and hosting for 2022.
See Politeia Digest issue 50 for more details on the month’s proposals.
Hashrate: December’s hashrate opened at ~430 Ph/s and closed ~380 Ph/s, bottoming at 247 Ph/s and peaking at 535 Ph/s throughout the month.
Distribution of hashrate reported by the pools on Jan 2: Poolin 47%, AntPool 26%, F2Pool 10%, ViaBTC 7%, Luxor 6%, BTC.com 3%, OKEx 0.3%, CoinMine 0.1%. Distribution of 1,000 blocks actually mined before Jan 2 closely matched the reported numbers.
VSP: On Jan 2, ~6,550 (-250) live tickets were managed by listed vspd servers and 171 (-28) by listed legacy dcrstakepool servers. Collectively the 7 legacy and 15 new VSPs managed 16.7% (-0.8%) of the ticket pool. The 3 unlisted but still active legacy VSPs managed 39 (-6) live tickets.
The count of VSP-managed tickets has been trending down since at least June 2021 when this observation started at ~9,300 tickets (22.7% of the ticket pool).
Nodes: Throughout December there were around 180 reachable nodes according to dcrextdata.
Node versions as of Jan 1 snapshot (216 total, dcrd only): v1.6.2–62%, v1.7 dev builds — 13%, v1.6.0–10%, v1.6.1–8%, v1.6 dev builds — 3%, v1.5.2–2.3%, v1.5.1–1.4%.
The share of mixed coins varied between 54.4–56.9% and set a new all-time high with the sum of mixed unspent coins above 7.8 million.
Year 2021 had the highest transaction volume:
Warning: the authors of the Decred Journal have no idea about the trustworthiness of any of the services above. Please do your own research before trusting your personal information or assets to any entity.
Decred announcements are now also published on Odysee, in addition to all video content mirrored from YouTube. Users of Odysee or the LBRY network can support Decred content by tipping or staking LBC (staked coins can be withdrawn at any time).
The chat bridge between Telegram @Decred and Matrix #101 rooms was deactivated due to a large amount of spam. The spam was removed automatically by the moderation bots on the Telegram side but had to be manually cleaned up in the Matrix room. The bridge between Matrix and Discord #101 rooms remains.
The highly-discussed block reward change proposal made an appearance on Hacker News.
Monde PR’s achievements for December:
- pitched two stories/PR opps to finance and crypto publications
Secured the following news articles:
- Decred was mentioned as a top crypto in CoinDesk. The article was syndicated to Nasdaq and Yahoo!.
- an article in Finder.com featuring commentary from @jz on Litecoin
- an article in Finder.com featuring commentary from @jz on Ripple
- an article in Geek Culture featuring commentary from @jz on Ethereum. The article was also syndicated to Concierge.
- Decred in Depth 45 — with Jake Yocom-Piatt — Changing PoW/PoS subsidy split by @elima_iii (youtube)
- Decred Price Analysis — 17th December 2021 by Brave New Coin (youtube)
- Decred Journal November 2021 was translated to Arabic (@arij, @abdulrahman4) and Chinese (@Dominic). Thank you all!
In December DCR was trading between USD 60.05–110.95 / BTC 0.00129–0.00234. The average daily rate was $79.59.
The Sushiswap AMM DEX is the subject of a scandal after it emerged that 0xMaki had been forced out of their role by a clique of senior developers and that the team is riven by internal conflict.
BadgerDAO was the subject of a hack involving a compromised Cloudflare API key, which was used to inject malicious code for a subset of site users, leading to the loss of $130 million in assets, with $9 million being recovered thus far and a plea for more to be returned by the hacker. The funds were not returned, and the BadgerDAO community has moved to determining how to make restitution for victims of the hack. There is an interesting dynamic at play here where the stolen funds fall into three tranches with different remedy mechanisms — and the top 10 token holders were the most severely affected, representing a loss that the treasury cannot cover with available funds. One major victim of the BadgerDAO hack was the Celsius network, which reportedly lost $50 million.
Users of popular NFT trading platform OpenSea became eligible to claim a new token (SOS) on Dec 24, and by Dec 26 over 200,000 wallets had claimed it. The token was not produced by OpenSea themselves, who have instead hinted at an IPO, but was rather released by a pseudonymous developer, using the public record of OpenSea NFT trades to determine eligibility to claim SOS. The market cap of SOS hit $200 million within two days, as initial votes were passed to set up liquidity provision incentives and other token distribution details. The issuance plans for SOS include reserving 20% to provide support to OpenSea users, particularly hack victims.
The EOS validators have moved to block the payment of $250 million worth of EOS to Block.one. Block.one was due to receive 67 million EOS over a 6–7 year period, with half of these tokens going to Brock Pierce. This comes as part of an ongoing dispute over EOS intellectual property, which the community of validators wishes to acquire but which is currently held by the Bullish exchange (reasons unclear).
Public goods funding platform Gitcoin deactivated a grant for one of the recipient teams because the team conducted some activities in Iran and had recently been de-funded by Consensys. Gitcoin also completed round 12 of its grants program, which saw $3.1 million donated from 27.2K donors.
“The Internet Computer” held a major round of voting to approve future direction of research and development work, with 25 different proposals to vote on and DFINITY foundation abstaining from the vote. The voting period for these proposals was just 24 hours and all 25 were approved with 5–6% approval (minimum requirement of 3% voting power voting yes) and very little opposition.
That’s all for December. Thanks for reading!
The Future of Decred Journal
45 months of Decred Journal was a great ride but recent issues were getting increasingly harder to make due to lack of time and energy. I plan to stop producing DJ after this issue, take a break, and do other things I wanted to do in Decred and beyond.
I will be around in chats to help anyone willing to take over the production of DJ, either as it looks today, or in a refreshed form to make it better.
Thank you to all contributors, translators, and most importantly readers, for this amazing journey! (@bee)
This is issue 45 of Decred Journal. Index of all issues, mirrors, and translations is available here.
Most information from third parties is relayed directly from the source after a minimal sanity check. The authors of the Decred Journal cannot verify all claims. Please beware of scams and do your own research.
Credits (alphabetical order):
- writing and editing: bee, bochinchero, degeri, l1ndseymm, richardred
- reviews and feedback: davecgh, lukebp
- title image: saender
- funding: Decred stakeholders