Image: The Perfect Storm by @Exitus
Highlights of July:
- Votes on the two consensus changes (PoW hash function and PoW/PoS subsidy split) concluded with near unanimous support, the changes will activate in late August (so upgrade to v1.8).
- Cypherpunk Times launched its rebranded site (formerly Decred Magazine), and onboarded its first project besides Decred to contribute content, Firo.
- Discord is now bridged to the Matrix rooms again with a new improved bridge that allows Matrix users to block individual Discord users, the approval procedure for new members on Discord has also been improved.
Join us in showcasing the cryptocurrency revolution, one newsletter at a time. Subscribe now to get daily news and market updates right to your inbox, along with our millions of other subscribers (that’s right, millions love us!) — what are you waiting for?
Upgrade for the Coming Fork!
Development
dcrd
dcrd is a full node implementation that powers Decred's peer-to-peer network around the world.
The following work has been merged in master towards future releases:
- Updated GetBlock and GetBlockHeader commands to show the new proof of work hash. For blocks after DCP-11: Change PoW to BLAKE3 and ASERT activates, the proof of work hash will be the new BLAKE3 hash. For blocks prior to DCP-11, the block hash and the proof of work hash will be identical. This update enables consumers like dcrdata to easily access the new hashes.
- Updated the Docker image to build the dcrd binary with newer Go and Alpine Linux. Node admins can consider Docker a good security option as opposed to using a virtual machine which has a much bigger attack surface.
- Updated the RPC server to dynamically reload new RPC certificates without shutting down and restarting. This is a quality-of-life improvement for node admins, since it enables them to hot-swap the server certificate/key pair, as well as any potential client certificates. For example, a certificate update is required when the RPC server is exposed publicly and its IP address or domain name changes. Another example is when client certificates need to be modified to revoke clients, add new ones, or allow existing clients to change their private keys. This update is robust, minimizes disk access, does not require platform-specific dependencies, and is resilient against user-errors to avoid breaking a working config.
- Explicitly configured RPC clients connecting to dcrd via HTTP to use TLS v1.2 or higher. This was already the implicit minimum, but now it is more clear.
Developer and internal changes merged in master:
- Updated the comments detailing the ASERT calculation coefficients in the mining code so that they match the consensus code comments.
- Added a new linter, addressed some linter complaints, and moved linting logic to its own script outside of the testing script.
- Updated Github Actions, and ensured that the continuous integration actions happen in the correct order.
- Updated golangci linter, and changed its method of installing from curl to go install, which has the benefit of reducing potential security risks from supply-chain attacks. Also, cached the binary for faster future runs.
- Current versions of Go have a confusing way of handling loops. Both "for loops" and "range loops" treat internal loop variables ambiguously, which has led to code which is difficult to read and tricky to debug. Devs have had to treat loops with an abundance of caution, yet still potentially deal with annoying errors. A full explanation of the problem can be read here, especially the section which talks about the rationale. Future versions of Go (likely 1.22) will introduce a breaking change to how loops are handled. While the new loop semantics will be less confusing and error-prone, projects will have to set a very high minimum supported Go version to avoid bugs when compiled with older Go. To ensure the dcrd code will work correctly with Go 1.22, as well as remain backwards-compatible and compile correctly with older versions of Go, all necessary loops were updated. This will avoid any potential issues before they even have a chance to arise.
dcrwallet
dcrwallet is a wallet server used by command-line and graphical wallet apps.
The following work has been merged in master towards future releases.
The primary improvements users may notice are related to purchasing tickets through a VSP:
- Fixed broken retrying logic for errored VSP ticket purchases. This issue affected many users. Any ticket purchases which worked first time were unaffected, but any purchases which ran into an error were not being retried, which would lead to tickets not being added to the VSP and votes being missed. Thankfully, re-registering the ticket with a different VSP was a workaround, but obviously it was poor UX.
- Fixed a bug where the fee payment status check could be unreasonably delayed. The VSP client delays actions by some random duration in order to help protect privacy. With this incorrect delay calculation the wallet would report fee payments as being unconfirmed for up to 2 hours until the next check happens, when actually the fee has been sent and confirmed. Now the user wallet will update sooner.
- Require VSP clients to wait for the VSP to confirm fee payments before considering a VSP ticket fully purchased. This eliminates multiple problematic edge cases caused by users broadcasting their own fee transactions, such as paying too low of a fee or sending payment to the wrong address. It is a preventative fix for extremely unlikely cases which have not been seen in the wild.
- Fixed a bug where some VSP tickets could be skipped and not updated during various stages of the VSP ticket management lifecycle. No users have reported any issues caused by this bug. The improved error handling code uses the new Errors.Join feature that was made available by updating to Go 1.20, which is discussed below.
Developer and internal changes merged in master:
- Removed an unused variable and a confusing custom error function from dcrwallet's internal errors definition.
- Dropped support for Go 1.19, and bumped support to Go 1.20 and 1.21.0-rc3. This is because Go 1.19 doesn't have Errors.Join.
- Added the new Errors.Join function from Go 1.20's standard library. This new function is a simple way to wrap several error messages together. In Go 1.19 and previous, it was somewhat possible with the Errors.Is/As functions, but wrapped errors could be hidden, which made error tracing quite difficult. Errors.Join is a much better solution.
Additionally:
- Updated the LRU cache to use Go Generics and accept multiple variable types. LRU a standard caching schema which removes the Least Recently Updated values once the cache is full. The main advantage of a generic LRU cache is to reduce code duplication and unlock easier code reuse. This has the added benefit of more explicit code by specifying the types for each new LRU cache instance, as well as better code verification by the compiler. Generics were added in Go 1.18 (March 2022), and are relatively controversial, but only because they have tradeoffs that devs must consider. Ideally, the Go compiler would treat generic functions the same as it would treat functions with specific variable types, and each would be equally as optimized. In practice, this isn't always the case. The benefits of generics sometimes come at the cost of more complexity and slightly slower performance. In this case, dcrwallet currently makes minimal use of generics, so the performance impact is minimal.
- Improved and polished wallet tests, including removing redundant code.
dcrctl
dcrctl is a command-line client for dcrd and dcrwallet.
The following work has been merged in master towards future releases:
- Removed stale dependencies from the main module, and updated the dcrd and dcrwallet modules to their latest versions. Notably, this makes dcrd's new verbose results of getblock and getblockheader available.
- Updated the README to recommend that developers use local Go Workspaces when working with development versions of dcrd and dcrwallet.
Decrediton
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).
In progress:
- Updating to React v18
- Ledger backend functions and user interface
- Updating French and Chinese translations
vspd
vspd is server software used by Voting Service Providers. A VSP votes on behalf of its users 24/7 and cannot steal funds.
- Fixed transaction broadcasting logic to not generate an error when the transaction already exists (which is not a problem). This missing error condition was noticed when investigating the broken retry issue in dcrwallet's VSP client. It's a preventative fix, there have been no reported issues caused by this bug.
Lightning Network
dcrlnd is Decred's Lightning Network node software. LN enables instant and low-cost transactions.
- Improved tracking of closed channels. It's been observed on Decred LN mainnet that some channels that have been closed on-chain are still being announced on the network. While the root cause has not been determined, this change reduces the amount of invalid channel announcements and their negative effects, specially for nodes running in SPV mode (such as Bison Relay clients). This is implemented by saving channel IDs that are known to be closed and using that information to skip invalid updates or avoid expensive operations.
DCRDEX
DCRDEX is a non-custodial, privacy-respecting exchange for trustless trading, powered by atomic swaps.
- Server: Increase order limits as users lock more funds in bonds and ensure accounts with positive tier always have a positive order limit, big enough for at least a single lot. This should fix inability to submit orders for some users.
- Client: Ensure the server is aware that the client has completed the trade. In certain cases the client would fail to inform the server of a completed match, which could negatively affect account's reputation. With this fix the client will keep retrying the message until the server receives and acknowledges that the client has redeemed (received) the funds.
- Client: Updated btcwallet and neutrino dependencies to fix crashes in the built-in BTC wallet. Developers normally avoid upgrading dependencies in released versions to not introduce new bugs. This case is an exception however, considering the trouble caused by the bug, and that the next major release of DCRDEX is still quite far away.
Below are changes merged in master towards future releases.
Client:
- Improved app setup flow. After setting app password the user will be shown Quick Configuration page that allows to enable DEX servers and select which wallets to activate. After that, a new page will remind the user to back up their app seed. Landing page shown after the setup has been changed to Wallets.
- Switched from WebView to MacDriver library on macOS. This enables native macOS behavior like: keeping the app running without windows, creating new windows, and having a dock icon menu.
- Disallow making transactions if the wallet is not synced and has no peers to sync from. This avoids transactions that never get mined and confuse users.
- Fixed misleading "Action required to trade" startup message asking the user to add more bonds. It could happen when bond transactions have not been sent yet and the user just needs to wait without taking any action.
- Fixed a bug where green triangle markers for own orders were not always shown on the depth chart.
Client, internal changes:
- Implemented function to place multiple orders in one go for Decred, Ethereum, and Ethereum token wallets. This will be used by the market making bots and may unlock trading optimizations.
- Refactoring and test code improvements.
- Updated npm dependencies to fix security warnings (affected packages were not used by the DEX at runtime).
Bitcoin, internal changes:
- Fixed bug in coin selection logic. It was not critical as it only affected the MultiTrade function, which is in not in production use yet.
Ethereum:
- Added fiat values to the token approval form. A one-time approval is required to allow the swap contract to handle tokens (such as USDC) on behalf of the user. Both granting and revoking this permission requires a small ETH transaction.
Highlights of work-in-progress:
- Decred: foundations for DCR staking.
- Polygon: infrastructure work including USDC swap contract.
- Dash: full node wallet support.
- Firo: Electrum light wallet support.
- Balance management for market making bots.
Image: Reworked app setup flow in DCRDEX
Image: Dock menu in macOS will list all DEX windows
dcrdata
dcrdata is an explorer for Decred blockchain and off-chain data like Politeia proposals, markets, and more.
- Added the new BLAKE3 proof of work hash to the block details page. If dcrdata is running with a fairly new version of dcrd, it will make use of its newly updated GetBlockHeader command to obtain the PoW hash faster.
Timestamply
Timestamply is a free service for timestamping files powered by Decred blockchain. A timestamp proves that a certain file has existed at a certain moment of time. This has a range of applications in protecting data integrity.
- Updated GitHub actions to build with Go 1.20, as well as add linters and fix their complaints.
- The JavaScript library for Decred timestamping, dcrtimejs, has been imported from its original location to become a part of the decred GitHub account. dcrtimejs v1.0.0 release has been funded by the treasury as a key element of the Timestamply redesign proposal.
Bison Relay
Bison Relay is a new social media platform with strong protections against censorship, surveillance, and advertising, powered by Decred Lightning Network.
GUI and CLI apps:
- Added syncfreelist config option to tune the bbolt database used by the internal Lightning Network node. Setting it to false improves running performance at the cost of startup performance.
GUI app:
- Improved post comments UX, now comment threads can be collapsed or expanded.
- Fixed a bug where News Feed did not render embedded images and showed "--embed" code instead.
CLI app:
- Added basic /backup command.
- Added content filtering system which can block messages from being displayed to the end user at the client level. To create a filtering rule the user needs to specify in what context it will work (direct chats, group chats, posts, post comments, or all) and what content it should match (can be simple strings or regular expressions). Try /help filters add and /help filters addrule to learn how it works. Currently, it is only exposed in the CLI app but the low level parts can be wired to GUI app in the future.
Other
- All legacy VSPs (called "stakepools" back then) have been removed from dcrwebapi, the service that powers Decrediton and the VSP list at decred.org. Legacy VSPs have been deprecated with the release of vspd in 2020 and all known public servers have shut down by around 2022.
People
Community stats as of Aug 1 (compared to Jul 2):
- Twitter followers: 53,328 (-230)
- Reddit subscribers: 12,747 (+9)
- Matrix #general users: 797 (+10)
- Discord users: 1,589 (+3), verified to post: 643 (+8)
- Telegram users: 2,355 (-7)
- YouTube subscribers: 4,640 (+0), views: 232.5K (+1.4K)
Governance
Image: Lower DCR/USD contributes to higher treasury outflows
Image: Treasury balance USD equivalent
There were 4 proposals that finished voting in July:
- A proposal to fund development of the Decred.club website with Chinese language content and grow a community around it for $2,400 was rejected with 28% Yes votes and 26% turnout.
- A proposal to rebrand Decred Magazine to Cypherpunk Times and continue producing it for another year with an increased budget of $44,000 - was approved with 95% Yes votes and 47% turnout.
- A proposal to produce 90-second videos of people in ski masks talking about Decred in 12 languages at a cost of $23,650 was approved, with 75% Yes votes and 42% turnout.
- A proposal to produce a promotional website for DCRDEX at a cost of $2,000 was rejected, with 30% Yes votes and 34% turnout.
Network
Image: Decred hashrate
Image: Historical pool hashrate distribution
Image: Ticket price stabilizing
Image: Total locked DCR retesting its ATH
Image: Monthly missed tickets went down after a small uptick in June
Image: Distribution of tickets managed by VSPs
Image: Most of the network is running v1.8.0
Image: Node operators have been quick to upgrade to v1.8.0. The red area before Jan 2023 indicates incomplete data we had at that time.
Image: DCR StakeShuffle volume
Image: Transaction volume has taken a summer vacation. The metric is defined by Coin Metrics.
Image: Decred's Lightning Network node count growing slowly
Image: Decred's Lightning Network capacity stabilized around 200 DCR
Ecosystem
Voting Service Providers:
- New VSP at vote.dcr-swiss.ch has voted its first mainnet tickets and applied to get listed in Decrediton wallet and the VSP page. DCR Swiss has a low fee of 0.25%. Out of 14 existing VSPs this is the third lowest fee after dcrhive.com (0.1%) and vspd.bass.cf (0.2%).
Wallets:
- Android and iOS Decred wallets will stop syncing in late August when new consensus upgrades activate. The apps have been removed from Google Play and Apple Store to prevent users from installing apps that are no longer maintained. If you have used Android or iOS Decred wallets feel free to comment in a Reddit survey.
Exchanges:
- EXMO announced on July 6 that they will delist DCR and 3 other tokens by July 20 due to low liquidity. EXMO was the only exchange to list DCR via a non-expensive proposal that got approved in May 2019 and fulfilled in June 2019.
- #trading members discovered on July 9 that DCR was trading around $20 at Indian Bitbns while it was around $16 on other exchanges. As of July 31 DCR was still trading at a premium and with significant 24-hour volume of $68K making DCR/INR a top 10 pair at Bitbns (if we trust reported volumes of course). DCR price chart suggests it was listed in May 2022.
Communication systems:
- Public access to Twitter has been mostly unavailable between June 30 and July 5. Browsing Twitter required login and was subject to rate limits even for paid accounts. According to Elon Musk it was a temporary emergency measure to combat AI bots which were pulling so much data from Twitter that it effectively became a denial of service attack. Public API restrictions also broke Nitter, a lightweight alternative for browsing @decredproject and other accounts. Login requirement was removed on July 5. Despite all problems and revelations Twitter remains Decred's main outreach platform with 53.3K followers as of Aug 1.
- The two-way bridge between Matrix and Discord is back! It was made possible by the new user verification flow that is much better at preventing spam. The new bridge allows blocking individual Discord users on the Matrix side without affecting other Discord users, this was not possible with the old bridge. Also, message editing should propagate in both directions. New bridge is hosted by t2bot.io, a free service providing bots and bridges for Matrix communities. It is operated by a single person and is supported by donations. As of writing the following Matrix rooms are bridged to Discord: #101, #dex, #marketing, #media, #memes, #proposals, #showerthoughts, #support, and of course #trading.
Other news:
- In May both @StakeShuffle_ and @dcrtimestampbot announced that the bots are "down until further notice due to recent twitter-api changes". The bots have been developed by @cli_query and sponsored by a total of 3 low-budget proposals. It appears that developer time is limited to maintain these projects, but the Python source code of StakeShuffle_ and dcrtimestampbot is available on GitHub for contributors to pick up and improve.
- Cypherpunk Times is live. See the Outreach section below for more details.
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.
Outreach
Cypherpunk Times engagement stats for July:
- Total number of articles on Cypherpunk Times: 497
- Newsletter subscribers: 104
- New CT posts and newsletters sent: 18
- Active social media campaigns: 68
- Completed social media campaigns: 2
- Social media posts: 128
- Likes: 496
- Re-tweets: 120
- Social media followers across all platforms and accounts (including @DecredSociety and the old @decredmagazine): 1,440
Monde PR's achievements:
- Pitched two commentary opportunities
- Pitched three story ideas to target crypto publications
- Secured one media interview
Secured the following media placements:
- @Tivra took part in a Twitter Space hosted by The Rollup podcast talking about DCRDEX.
Media
Selected articles:
- How-to DCRDEX on Raspberry Pi with Umbrel by @karamble
- Is it time to overcome traditional social media? by @Joao
- The ripple effect on cryptocurrency regulation by @Tivra
- Decred vs Ethereum: Staking on the future by @Joao
Videos:
- Decred DEX standalone: Atomic-swaps in a web browser by @phoenixgreen - also as a text post
- Decred Decentralized Exchange: Creating a fidelity bond by @phoenixgreen - also as a text post
- Bison Relay Lightning Network management: How to rebalance your channels by @phoenixgreen - also as a text post
- Using market maker bots on decentralised exchange: first look by @phoenixgreen - also as a text post
Livestream:
- Living on crypto & the freedom of exchange by @phoenixgreen and @Exitus feat. Joel Valenzuela of Dash, Reuben Yap of Firo, and @Tivra
Audio:
- Crypto Evolution: Rising above volatility with vision - Twitter Space by @Tivra feat. @Exitus and Joel Valenzuela discussing the shutdown of DashDirect and Cake Pay, tipping, P2P services, and more - also as a podcast
Art and fun:
- July is the National Bison Month in the U.S.
- DEX island by @OfficialCryptos
- Supply shock infographic by @Tivra
- Decred art contest by @Exitus - four winners got their DCR
- Decred elevator pitch contest by @Tivra had two winners
- DCR top tier list by @Void
Image: DCR top tier list by @Void
Translations:
- How-to DCRDEX on Raspberry Pi with Umbrel - in Chinese by @Dominic
- Using market maker bots on decentralised exchange: first Look - in Chinese
- Note that all content translated to Chinese is published on WeChat since 2019.
- Decred Journal May-June got a total of 3 new translations to Arabic (@arij, @abdulrahman4) and Chinese (@Dominic). Thank you for your work!
Discussions:
- ChatGPT4 attempting to decrypt @saender's TA
- We need a new Internet on Hacker News
- A reply to James Prestwich's question "so did Decred ever change the world?"
Markets
In July DCR was trading between USDT 13.70-19.75 and BTC 0.00047-0.00064. The average daily rate was $15.40.
Image: DCR performance compared to other privacy coins by @saender
Image: Decred Pricing Metrics by @bochinchero
Image: DCR/BTC in June-July
Image: DCRDEX monthly volume in USD does not like summer time
Relevant External
About
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, editing, publishing: bee, bochinchero, Exitus, jz, karamble, kozel, l1ndseymm, phoenixgreen, richardred, zippycorners
- reviews and feedback: davecgh, jholdstock
- title image: Exitus
- funding: Decred stakeholders