Back to Blog
ReddCoinBlockchainC++

Building ReddCoin's Proof of Stake Velocity v2

ReddCoin has used Proof of Stake Velocity since 2014 to reward active participation rather than passive hoarding. Here's how PoSV v2 works under the hood — and why the design decisions matter for a social currency.

John Nash

Core Developer, ReddCoin

8 min read

ReddCoin launched in January 2014 as a social currency — a blockchain designed for tipping content creators and rewarding genuine community participation. From the beginning, the consensus mechanism had to reflect that purpose. Proof of Work rewards hardware. Proof of Stake rewards wealth. Neither rewards engagement.

Proof of Stake Velocity (PoSV) was our answer.

The Problem With Vanilla Proof of Stake

Standard PoS is simple: lock up coins, earn staking rewards proportional to your balance. The longer you hold without staking, the larger your "coin age" accumulates, and the larger your reward when you eventually do stake.

This creates a perverse incentive. The optimal strategy is to hold coins inactive for as long as possible, then stake once for a large reward. The network ends up with long periods of low participation punctuated by occasional activity spikes. For a social currency trying to encourage daily engagement, that's the opposite of what you want.

PoSV: Rewarding Velocity, Not Age

PoSV replaces coin age with a function that rewards both stake size and transaction velocity — how frequently a wallet participates in the network.

The core insight is straightforward: two wallets with identical balances should not receive identical rewards if one has been dormant for six months and the other has been transacting regularly. Activity should be a first-class input to reward calculation.

In PoSV v1, we modelled velocity as a function of recent transaction frequency. It worked, but the reward curve was blunt. Wallets with moderate activity were underrewarded relative to their contribution to network health.

What PoSV v2 Changes

The v2 redesign, implemented in C++ in the ReddCoin Core codebase, makes three meaningful changes to the reward calculation:

Smoother velocity decay. v1 used a step function — your velocity score was either above or below a threshold. v2 uses a continuous decay function, so rewards degrade gradually as a wallet becomes less active rather than falling off a cliff. This better models real user behaviour and removes the gaming incentive of hitting a threshold and stopping.

UTXO-level tracking. Rather than tracking activity at the wallet level, v2 tracks velocity per UTXO (unspent transaction output). This is more technically complex — it requires extending the UTXO database schema in coins.h and updating the serialisation logic — but it produces more accurate results. A wallet that receives a large deposit and immediately splits it into smaller outputs for regular use is correctly recognised as active.

Adjusted staking interval. The minimum staking age was revised to better balance security (you need some lock-up to prevent trivial double-spend attempts) against participation (too long a lockup discourages the regular activity PoSV is designed to reward).

The C++ Implementation

ReddCoin Core is a Bitcoin-derived codebase, which means the consensus-critical paths are in C++ with a strong emphasis on correctness over elegance. The PoSV v2 changes touch several files:

The kernel.cpp file contains the core stake modifier and hash target calculation. The velocity function lives here, taking a UTXO's history as input and returning a modifier applied to the target hash. A lower target means easier block finding — the reward mechanism works by making high-velocity UTXOs more likely to find a valid stake.

The validation.cpp changes enforce the new rules during block validation. Any node on the network must agree on whether a given block's stake is valid, which means the velocity calculation must be deterministic and reproducible from chain data alone.

coins.h and the associated serialisation code were updated to store per-UTXO velocity metadata. This required a database migration for nodes upgrading from v1 — handled via a one-time reindex that recalculates velocity scores from transaction history.

Why This Matters for a Social Currency

The goal was never to build a technically sophisticated consensus mechanism for its own sake. It was to align the economic incentives of the network with the behaviour we want to encourage: people using ReddCoin to tip content they value, engaging with communities, and transacting regularly rather than hoarding speculatively.

PoSV v2 does a better job of that than v1. The smoother reward curve means there's always an incremental benefit to being more active — there's no plateau where additional engagement stops mattering. UTXO-level tracking means the rewards are fair even across wallets with complex spending patterns.

What's Next

The PoSV model continues to evolve. Current areas of active development include better tooling for wallets to surface velocity scores to users — if you can see your current velocity and understand how it affects your rewards, you're more likely to engage in ways that benefit both yourself and the network.

The core C++ consensus code is stable. The work now is in making the system legible to ordinary users, not just developers reading the source.

ReddCoin is open source. The full implementation is available at github.com/reddcoin-project/reddcoin if you want to dig into the kernel code directly.