Decred Journal – February 2023

Decred has celebrated its 7th birthday with 3 software releases, heavy development push, big staking activity and a stash of new content. Just another month.

Decred Journal – February 2023
Decred Journal – February 2023

Image: Decred Birthday Cake

Highlights of February:

  • Decred passed the milestone of 7 years in operation.
  • Decred DEX saw a v0.5.9 bugfix and polish release, and there are extensive reports of heavy dev progress, v0.6 is getting close.
  • Bison Relay v0.1.4 was released, improving UX, and an Oprah tipping bot is now operating on BR.
  • The Timestamply redesign is now live.
  • The ticket price saw a sharp drop followed by epic upswing, which took it to a new all time high.

Contents:

DCRDEX v0.5.9 Release

v0.5.9 was released with v0.6 just around the corner to enable automatically deployed Docker images for Umbrel. However, there are many other fixes in this release that were backported from v0.6 development:

  • Improved client database compaction to save disk space.
  • More accurate swap fee estimates.
  • Protections against zero fee swaps.
  • Improved performance.
  • Cleaned up logging.
  • Fixed about a dozen edge cases.

Full release notes and standalone DEX app downloads can be found here. Hashes and signatures are included that allow for verification that downloads have not been damaged or modified by third parties.

Bison Relay v0.1.4 Release

Bison Relay received another quality of life update with v0.1.4:

  • Everything works faster.
  • Adjustable font size.
  • Image and link attachments.
  • Right-side panel for easier access to actions on users and group chats.
  • More robust maintenance of key exchanges.
  • Tipping bot that rewards authors of valuable content.
  • Many other UX improvements.

Short video overview of new features is available here.

Get the latest release on the improved downloads page. Bug reports and feedback are welcome in GitHub issue tracker and the #br Matrix chat.

Development

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

dcrd is a full node implementation that powers Decred's peer-to-peer network around the world.

Most changes focused on making consensus deployment code more robust and easier to understand:

  • Reworked consensus deployment validation logic and tests to make it easier to modify and bring it more in line with the more modern coding practices used in the codebase. Terms "deployment" and "agenda" refer to consensus vote definitions that include description, vote choices, validity period, and other details.
  • Enforce globally unique vote IDs for different agendas. Technically it was not incorrect to reuse vote IDs, however various software in the Decred ecosystem implicitly assumes that IDs are unique across all agendas. This unwritten rule is now formalized to prevent confusion and simplify code dealing with it.
  • Simplified code that tracks the status of consensus rule changes.
  • Added a network parameter to force consensus votes to certain outcomes and activate their features accordingly. This has already been used on testing networks to quickly test features without going through an entire voting process. The way it worked though was found to be surprising behavior: "if deployment is not found in parameters for a given network, it is considered active". Other issues included complexity of testing the voting process itself, and such implicitly forced votes being invisible in commands like getblockchaininfo. All these issues were fixed and it is now easier to locate forced rules in the code. A safety check was also added to ensure the forced vote choices cannot be used on the main network.

Docker:

  • Added the ability to build Docker images for a specific Git version.
  • Print the dcrctl version in addition to the dcrd version since they come from separate repositories now.

Other:

  • Switch to new atomic types in unexported modules thanks to Go 1.19. This makes the code less prone to human error and a bit less verbose. Exported modules are upgraded in a separate PR which will be merged later to not force the consumers to newer Go versions too soon.
  • Updated connection request tracking to prevent concurrency bugs.
  • Fixed building on OpenBSD on riscv64 CPU architecture.
  • Updated build infra and docs for Go 1.20 and dropped support for Go 1.18.
  • Dependency updates.

dcrwallet

dcrwallet is a wallet server used by command-line and graphical wallet apps.

  • Fixed a deadlock in address discovery that could be triggered by a poorly timed getnewaddress command.
  • Updated the addrmgr module from dcrd for performance improvements under SPV mode when few quality peers are available.
  • Updated golang.org/x modules, including newer x/sys to support building on OpenBSD running on riscv64 CPU.

dcrctl

dcrctl is a command-line client for dcrd and dcrwallet.

  • Updated dependencies to latest modules. This allows building on OpenBSD riscv64 and also significantly reduces the indirect dependencies.

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:

vspd

vspd is server software for running a Voting Service Provider. A VSP votes on behalf of its users 24/7 and cannot steal funds.

  • Check if the VSP is closed much earlier, before dcrd/dcrwallet/database clients are initialized. This is more efficient and prevents possible errors.
  • Updated to Go 1.20.
  • Tests are now run as sub-tests to enable better reporting of test results and metrics.
  • Added tests for error handling that ensure vspd errors are correctly formatted, and non-vspd errors contain adequate information for debugging.
  • Removed dcrstakepool instructions from documentation as it is now defunct.

cspp

cspp is a server for coordinating coin mixes using the CoinShuffle++ protocol. It is non-custodial, i.e. does not hold any funds.

  • Updated CI to build on Ubuntu 22 with latest flint2 math library.
  • Added a solverrpc package as a drop-in replacement for existing solver. It allows to extract the interaction with C code (the flint2 math library) into a separate background process called csppsolver and talk to that process from pure Go code, which is more flexible.
  • Added build flags that allow to build an entirely standalone csppsolver executable with flint2 library embedded in it. Distributing such executable removes the need to install flint2.

DCRDEX

DCRDEX is a non-custodial, privacy-respecting exchange for trustless trading, powered by atomic swaps.

The v0.5.9 release was made to support the Umbrel integration, but it also includes many important fixes made in master since around December 2022:

  • Adjusted which swap fees are considered "best" for BTC and DCR. The best case fees occur when the entire order is consumed in a single match, i.e. 1 transaction and 1 output for the entire order. This affects fee previews shown when placing an order.
  • Automatically ignore very old notifications generated by old client versions.
  • Updated Docker config: optimized base images, switched DEX client to run as non-root user, removed unneeded files, and optimized Docker build for production. Among other things it helps to publish the DEX client in Umbrel app store.
  • Added GitHub workflow to build and publish release Docker images.
  • Updated dcrd's address manager module to fix high CPU use when running testnet SPV wallet for longer than a day.
  • Fixed the number of deleted orders and matches that is reported by archive cleanup functions.
  • Fixed pointless reconnect attempts when a "not standards compliant" certificate error is detected on some macOS systems.
  • Fixed client trying to run when accounts database failed to load.
  • Dependency updates, including minor security fixes.
  • Backported ~14 other fixes from master made in December-January.

All other changes below are in the master branch towards the next v0.6 release.

Client changes:

Client, fidelity bonds progress:

  • Implemented main bond lifecycle machinery for the client, including automatic bond rotation. When current bond is about to expire, it must be replaced by another bond at correct time to continue using the DEX without interruption. A diagram was added to explain the lifecycle of bonds.
  • Implemented maintenance of bond funds reserves. A portion of wallet's funds will be reserved for future bonds plus a buffer for transaction fees. When reserves are enforced, transactions like wallet withdraws or trading orders will be restricted to a lower available balance. Wallet balance report will show funds locked in existing bonds and reserved for future bonds. Bonds will use coin selection strategy that is different from one that funds trading orders. Orders try to consume fewer outputs to minimize fees (can spend more DCR and return excess as change), while bonds try to put an exact DCR amount into the time lock (and cannot rely on change output). Pre-sizing of inputs for swap transactions was enabled by default for DCR because it benefits bond management and DCR fees are cheap now. It will not be possible to disable accounts that have unspent bonds. Initial implementation supports only DCR bonds but the foundations have been added to allow bonds in other assets.
  • Changed registration UI flow to create a bond instead of paying a fee. User will have a choice how strong the bond should be. If account tier is below the trading level and there are pending bonds, Markets page will show bond confirmations required before the user can trade. Post Bond feature was added for manual bond posting.
  • Optimized coin selection algorithm to create bonds closer to the target DCR amount.
  • Completed, in progress, and remaining tasks for the bonds subsystem can be seen on this dashboard.
  • In the big picture, fidelity bonds are needed to transition from users paying fees to the server, to users locking funds while they use the server. Both approaches protect the server from spam and other undesired behavior. Bonds are more complex than fees but have advantages. Users can return locked funds when they no longer want to trade, and also bonds support the transition from standalone servers to a decentralized server mesh (with the fees system it would be unclear which servers should collect fees).

Client fixes:

Ethereum, RPC data providers:

  • Added ability for the DEX server to configure multiple Ethereum data providers and switch to another provider if active provider stops working.
  • Added monitoring of RPC provider health. Previously, ETH backend would only start if all configured providers could be connected to and had an updated blockchain. Now ETH backend will start if at least one provider connection works and reports a fresh block. After connection is established providers will be continuously monitored for healthy responses and the best providers will be used first.
  • Improved management of known and compliant RPC providers.
  • Fixed attempts to use RPC providers that have too old block headers, meaning they are not synced with the network.

Ethereum, swap fee optimization:

  • Made swap estimates aware of Ethereum block gas limit.
  • Attempt to use a lower gas limit for batched swaps (multiple swaps in one transaction) before giving up and failing with insufficient funds.
  • Adjusted fee estimates to lower and more realistic amounts.

Ethereum, other changes:

  • Clarified API versioning of ETH and its child token assets. For now token assets will use the same version as the parent asset. These version numbers will be used to determine if different clients and servers are compatible.
  • Removed the isRedeemable method from Solidity smart contracts for ETH and ERC-20 swaps, and disabled the use of estimateRedeemGas call. Both methods reveal a secret to the Ethereum node ahead of the redeem transaction. This was not a problem when the client was using a private node, but it becomes a vulnerability with public RPC providers, which DEX is forced to use since The Merge. Solidity compiler was updated to v0.8.18.
  • Build with go-ethereum code included by default. go-ethereum is popular Ethereum software that powers ETH and ERC-20 support in DCRDEX. Unlike the DEX, it is licensed under GNU Lesser General Public License (LGPL). The burden of this license may be unacceptable for closed source software willing to use DCRDEX and so a flag was added to exclude go-ethereum from the build.
  • Enabled ETH and USDC on mainnet and adjusted gas limits. Reduced redeem transaction confirmations from 10 to 3 since reorgs are considered very unlikely after The Merge. Smart contract enthusiasts can find the new swap contract for for ETH here, for ERC-20 here.
  • @chappjc tweeted that new contracts executed many atomic swaps with ETH and USDC on mainnet.
  • Bug fixes.

Ethereum's upgrade to proof-of-stake consensus (also called The Merge) happened to brick the light client used by DCRDEX, despite some expectation that it will work. This has delayed DCRDEX v0.6 quite a bit while a workaround had to be developed. Until light clients are fixed DEX users will have a choice of running an own full node or using centralized chain data providers like Infura, Ankr, and 8 others.

Umbrel app store integration:

  • New repository added to Decred GitHub organization for hosting Umbrel integration code. Umbrel users can follow the instructions to add this repository and install the DCRDEX package.
  • DCRDEX package was submitted to official Umrel app store for review. Unlike custom Community app stores it requires centralized approval.

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.

Documentation

dcrdocs is the source code for Decred user documentation.

Bison Relay

Bison Relay is a new social media platform with strong protections against censorship, surveillance, and advertising, powered by Decred Lightning Network.

Common changes in GUI and CLI apps in v0.1.4 release:

  • Added support for paying and sending multiple messages in parallel without waiting for server ack, which makes sending much faster.
  • Added support for sending and rendering of embeds (like images and download links) in private and group chats.
  • Improved tracking of encryption status and maintenance of key exchange (KX) resets. Added semi-automatic tools to detect and reset possibly broken key exchanges. Candidates for reset are users from which no messages have been received for a long time, or all users if own client has been offline for a long time.
  • Improved handling of new group chat messages received just after connecting to the server. This should show messages properly ordered by time, especially on slower connections.
  • Fixed a bug that prevented clean shutdown in some cases.
  • Fixed possible reconnect loops due to client trying to reuse the same payment.

GUI app changes in v0.1.4 release:

  • Added font size setting with 4 size choices.
  • Moved menu actions on users and group chats (List Posts, Pay Tip, etc.) to the right-side panel. This is similar to Element and easier to use.
  • Order of chat lists is saved across app restarts.
  • Use emoji font to render more characters and emojis.

Command-line app changes in v0.1.4 release:

Server and other changes in v0.1.4:

  • Added support for accepting multiple messages concurrently. By default a connected client can request up to 8 invoices for message sending before needing to pay for them. Server must detect the payment within 24 hours, otherwise a new payment will be required. Production server may use different parameters for this.
  • Store received messages so that clientrpc users may retrieve them. This prevents missed messages in bots and other automation tools.

Common changes in GUI and CLI apps merged in master towards the next release (v0.1.5):

GUI app changes in master:

  • Added a horizontal line marking the start of received unread messages. Removed display of avatar and username if subsequent messages come from the same author.
  • Added total DCR sent and received summaries to Payment Stats page.
  • Added QR codes for deposit addresses.
  • Hide advanced options by default on pages that prompt to open more LN channels.
  • Fixed loss of active chat selection when opening Chats section.

CLI app changes in master:

Other stuff:

  • Oprah is out! It is a tipping bot that follows users and rewards them for substantive posts or comments. Ask in the #br Matrix chat how to get tips from Oprah.

People

Community stats as of Mar 1 (compared to Feb 2):

  • Twitter followers: 53,064 (-204)
  • Reddit subscribers: 12,660 (-3)
  • Matrix #general users: 750 (+8)
  • Discord users: 1,557, verified to post: 932 (+6)
  • Telegram users: 2,756 (-60)
  • YouTube subscribers: 4,630 (-10), views: 224.6K (+2.3K)

Governance

In February the new treasury received 7,620 DCR worth $183K at February's average rate of $24.03. 3,389 DCR was spent to pay contractors, worth $81K at February's rate, or $67K at December's billing rate of $19.79.

The treasury spend tx had 27 outputs making payments to contractors, ranging from 3 DCR to 1,084 DCR. Most of this DCR was likely paid for December invoices, there is now a persistent lag between the end of the month and the creation of the TSpend for that month, so that by the time transactions are approved by stakeholders it is typically two months after the month when work was conducted.

Image: Decred Treasury monthly inflows and outflows.

As of Mar 14, combined balance of legacy and new treasury is 844,504 DCR (16.8 million USD at $19.88).

Image: Decred Treasury balance history.

There were no new proposals published in Feb, and the proposals which finished voting in the month were covered in the January issue of the Journal.

Network

Hashrate: February's hashrate opened at ~73 Ph/s and closed ~71 Ph/s, bottoming at 60 Ph/s and peaking at 83 Ph/s throughout the month.

Image: Decred hashrate.

Distribution of 66 Ph/s hashrate reported by the pools on Mar 1: Poolin 51%, F2Pool 38%, AntPool 11%, CoinMine 0.4%.

Distribution of 1,000 blocks actually mined by Mar 1: Poolin 54%, F2Pool 36%, AntPool 6%, likely BTC.com 4%.

Image: Historical pool hashrate distribution.

Staking: Ticket price varied between 207-496.5 DCR, with 30-day average at 263.8 DCR (+51.3).

After a dramatic drop to 140 DCR in January ticket price skyrocketed to set a new all-time high of 496.5 DCR. It returned to normal levels a week later and settled around 230 DCR.

Image: Ticket price made its biggest swing in history.

The locked amount was 8.76-9.69 million DCR, meaning that 58.5-64.9% of the circulating supply participated in Proof of Stake. This was also more volatile than usual.

Image: Drop and recovery of DCR locked in PoS.

VSP: The 16 listed VSPs collectively managed ~7,410 (-980) live tickets, which was 18.4% of the ticket pool (-0.4%) as of Mar 1.

The only gainers in February were dcrhive.com (+383 tickets or +74%) and vsp.decredcommunity.org (+202 tickets or +38%). The other 14 VSPs lost ~25% tickets on average, but the loss should be considered in context of the ticket pool size correcting from abnormal ~44,880 down to its target of 40,960 tickets.

Image: Distribution of tickets managed by VSPs.

Nodes: Decred Mapper observed between 175 and 188 dcrd nodes throughout the month. Versions of 176 nodes seen on Mar 1: v1.7.5 - 34%, v1.7.2 - 22%, v1.8.0 dev builds - 13%, v1.7.2 - 11%, v1.7.0 - 10%, v1.7.4 - 3%, other - 7%.

Image: Historical dcrd version distribution, data from nodes.jholdstock.uk. Data until Jan 2023 was incomplete.

The share of mixed coins varied between 59.2-60.4%. Daily mixed volume varied between 206-865K DCR.

Since a large portion of mixed coins comes from staking, the drop of staked DCR has resulted in a drop of mixed volume as well. It went back to normal towards the end of February as stake participation recovered.

Image: Drop and recovery of mixed and unspent coin percentage.

Image: Daily mix volume varied more than usual.

Decred's Lightning Network explorer has seen 158 nodes (+11), 305 channels (+44) with a total capacity of 115 DCR (+9), as of Mar 1. These stats vary depending on the LN node. For example, @karamble's node reported 172 nodes (+12), 385 channels (+38) and 168 DCR (+9) capacity on same Mar 1.

Outreach

Monde PR's achievements:

  • Secured 1 media interview
  • Pitched 3 commentary opportunities
  • Pitched 4 media opportunities

Secured the following media placements:

Commentary on Decred Magazine was originally drafted for a crypto publication but was not used. Instead of throwing it away it was repurposed and published on DM.

Events

Attended:

  • @arij organized a celebration of Decred's 7th anniversary at Technopark Casablanca for around 60 guests. The event began with a presentation of the project and its major milestones over the years, followed by remarks from the project's partners. New version of Decred Cake was spotted at the party. See more details in the report.

Image: Decred 7th birthday cake.

Media

Nostr users can now follow Decred announcements at: npub1decredzl29afqaalgw79kzz7cscrakzul00zgq9qymt4weqg03fsqmmnzd (preview). Post your public keys in this thread to help bootstrap a Decred community on Nostr.

Selected articles:

Decred Magazine engagement stats for February:

  • Total number of articles on DM: 409
  • Newsletter subscribers: 88
  • New DM posts and newsletters sent: 17
  • Active social media campaigns: 32
  • Completed social media campaigns: 32
  • Social media posts: 143
  • Likes: 678
  • Re-tweets: 148
  • Social media followers across all platforms and accounts (including @DecredSociety): 1,220

Decred Magazine has started building an audience on TikTok. Engagement with @decredmagazine is greatly appreciated.

Videos:

Livestream:

Audio:

Twitter Spaces:

Art and fun:

Decred is a true unicorn among the established cryptocurrencies. It's commonly described as an extremely versatile creature, a symbol of crypto purity and grace.

Translations:

Non-English content:

Discussions:

Other:

Markets

In February DCR was trading between USDT 21.71-28.52 and BTC 0.00095-0.00121. The average daily rate was $24.03.

Image: DCRDEX monthly volume in USD.

Relevant External

Localbitcoins, the longstanding facilitator of person to person Bitcoin exchanges, is closing down. After 10 years in action Localbitcoins could not withstand the "ongoing very cold crypto winter", and suspended trading on Feb 16, remaining online only for users to withdraw any balances.

Crypto exchange Kraken has settled with the SEC over "Unregistered Offer and Sale of Crypto Asset Staking-As-A-Service Program" and agreed to "Pay $30 Million to Settle SEC Charges". This has been presented as part of a larger crackdown on exchange provided staking services, where exchanges generate revenue by staking users' tokens and pay some proportion of this to the token holders. The stated motivation for these actions is to provide investors with reliable information about what custodians of their tokens are using them for, but as Kraken CEO Jesse Powell has tweeted, this is not as easy as filling in a form, and for companies that have tried to engage with the approval process it has not gone well.

The Oasis DeFi protocol was used to "counter-exploit" the hacker who stole 120,000 ETH from the Wormhole bridge in Feb 2022 and steal back funds they had deposited in the platform, after its developers were ordered to by a British High Court. After the Wormhole Bridge was exploited last year, Jump Crypto (its VC backer) stepped in to make users whole and has since been tracking the stolen funds with a view to retrieval. As reported by Blockworks, Jump Crypto likely played a key role in the retrieval, they provided funds to reclaim the collateral and close open positions and it is likely they are also the "Whitehat group" referenced in the Oasis blog post who provided a proof of concept on how the assets could be retrieved. The counter-exploit involved an upgradeable contract and adding a new signer to the 4-of-12 multisig that owns the Oasis contracts. It is not clear what the process was to generate the court order to perform the exploit.

Optimism, a layer 2 Ethereum chain, performed its second airdrop, sending 11.7 million OP tokens to over 300,000 addresses. This airdrop rewarded users who delegated their OP for governance, and users who spent more than $6 on gas fees, along with multipliers for delegating more for longer or using more gas. Optimism is committed to distributing 19% of its supply in airdrops, and the first one in May 2022 distributed 5%.

Facebook parent Meta reported losses of $13.7 billion in its Metaverse Division for 2022, and warned that the losses would accelerate further in 2023.

India is aiming to launch its CBDC by the end of 2023 and has two ongoing trials for a wholesale and retail facing CBDC which have been expanding, but not without difficulty. India already has a ubiquitous Unified Payments Interface (UPI) operated by banks which is widely used and exposes user data to the bank operators - the retail CBDC is seen as a way to offer a more cash-like and privacy respecting means of making payments without bank intermediaries.

The United Arab Emirates (UAE) central bank announced plans to issue a CBDC for domestic and cross-border payments as part of a new project to accelerate digital transformation.

In January National Australia Bank became the second major Australian bank to create a stablecoin (AUDN) to allow business customers to settle transactions on blockchain technology in real-time using Australian dollars. They aim to launch mid-year and support transactions including overseas payments and carbon credit trading, and the stated purpose is to boost the digital economy. This comes 9 months after Melbourne based rival ANZ created a similar product (A$DC). The Reserve Bank of Australia is exploring use cases for CBDC and will choose some pilot projects in the first half of 2023.

That's all for February. Share your updates for the next issue in our #journal chat room.

About

This is issue 56 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, editing, publishing: bee, bochinchero, Exitus, jz, l1ndseymm, phoenixgreen, richardred
  • reviews and feedback: davecgh, karamble
  • title image: arij, Exitus
  • funding: Decred stakeholders