We are excited to announce a new digital currency, Decred. The main technical features of Decred and the motivation for including them are discussed in my previous blog entry.
Decred is an open, progressive, and self-funding cryptocurrency with a system of community-based governance integrated into its blockchain. At its core is a hybridized proof-of-work proof-of-stake (PoW/PoS) consensus system that aims to strike a balance between PoW miners and PoS voters to create a more robust notion of consensus. The project is a result of the theoretical proposals brought by proof-of-activity (PoA) and MC2 in 2013. Decred development started in April, 2014 with a single developer and expanded to include the btcsuite developers shortly thereafter.
Decred is built in the spirit of open participation and we have provided below a full disclosure of the technical features of the system, wallets and mining, initial funding and distribution, project governance and development, and a group contribution timeline. We hope to launch mainnet on January 18th, 2016, and will provide additional details in this thread. Everyone is welcome to participate, and you are certainly welcome to join the development and project groups if you have interest in contributing to our efforts!
The features below are implemented in Decred and will be available in full at launch. For a deeper description, please consult the Decred Technical Brief (DTB001):
- Novel hybridized proof-of-work/proof-of-stake (PoW/PoS) consensus system – A decentralized lottery is used to select PoS miners to vote on PoW blocks. The PoW and PoS subsidies account for 60% and 30% of each total block subsidy, respectively. This system is based on that of MC2, which is very similar to, but developed independently from, Proof-of-Activity (PoA) by Iddo Bentov, Charles Lee, Alex Mizrahi and Meni Rosenfeld.
- Cold staking and decentralized stake pooling – The ability to generate new coins without the risk of having your coins online when PoS mining. The PoS mining system has also been engineered with distributed, decentralized stake pooling in mind, so that even those with small amounts of stake can participate in network validation.
- Internal voting system for the addition of new features and hard or soft fork selection – Both PoW and PoS miners can vote for features and issues through bit flags, providing a sensible mechanism for resolving disputes about the features of the blockchain.
- Immutable transaction hashes (“transaction IDs”) by separating transaction signatures from the rest of the transaction data – A permanent fix for transaction hash malleability has been implemented that prevents mutability of the transaction hash by separating it from its input signatures. This allows more efficient SPV validation. Fraud proofs have also been added.
- Elliptic curve cryptography over secp256k1 with optional Curve25519 support – The Bitcoin scripting system has been modified to allow for simple, drop-in addition of new elliptical curve digital signature algorithms.
- Schnorr signatures with threshold n-of-n support – In addition to supporting Schnorr signatures, groups of signers can now jointly sign transactions off-chain in constant size signatures, ensuring higher privacy and less blockchain bloat.
- Script enhancements and new OP codes – New OP codes have been added to the existing Bitcoin scripting engine, and extensions for the plug-in use of future scripting engines have been added.
- PoW mining using BLAKE256 hash algorithm – Inspired by Bernstein’s Chacha stream cipher, SHA3 finalist BLAKE256 offers speed as well as high security.
- Compatibility with Bitcoin transaction scripting system – Decred’s scripting system has been derived from Bitcoin’s with care in ensuring that all future updates to the Bitcoin transaction script will be easily extensible to Decred. Further, any newly created functionalities will also be devised with backwards compatibility with Bitcoin in mind.
- Modularized, easy-to-use Golang btcsuite codebase – Thanks the to the codebase inherited from btcsuite, adding new features to the daemon or wallet will be facile. Decred will episodically sync updates from btcsuite, so that it benefits from the latest developments in Bitcoin.
- Hierarchical deterministic (HD) wallets – Wallets use a seed to deterministically generate addresses, so your wallet can be restored from a single BIP0032 seed.
- Transaction expiration – Transactions have a new expiration field to prevent inclusion into the blockchain after a certain height.
- Patches for intrinsic Bitcoin bugs – Extra push for multisignature scripts has been removed, SIGHASH_SINGLE behavior has been corrected.
- Approximately 21 million coins – Exponential decay in subsidy or the number of coins generated per year.
- Self-funded development via block subsidy – In order to have an ongoing source of funding for development work, a consensus rule has been added to allocate 10% of each block subsidy to a development organization. This entity is transparent and responsible for funding development work performed by current and new developers so that the project remains sustainable without a funding dependence on outside forces in the future. Decred therefore improves with growth in a sustainable way and is accountable only to its users.
Wallets and Mining
- Web wallet service – In order for users to have access to a GUI on all platforms, we have created a web wallet service forked from BitPay’s Copay wallet and its dependencies. This wallet allows users to access all the basics with Decred: sending and receiving coins, multisig transactions.
- Command-line wallet – For more advanced users, we have a command-line wallet, dcrwallet. dcrwallet allows users to mine PoS and collect rewards by participating in the PoW/PoS consensus system.
- Simple GPU miner – A simple AMD GPU miner that connects to a local daemon will be available before launch. In the future, proper getblocktemplate functionality will be enabled and pool software will be made available.
Initial Funding and Airdrop
Decred opted for a different funding model in an attempt to shift the risk carried by supporters to the developers of the project. Instead of asking interested parties to fund the development of the software, the developers decided to pool funds together and carry the project to completion before making it public. The consensus was that this is an ethical path given the realities of funding software development, due to the fact that the developers alone carry the risk of the project failing, whereas in the past potential users were expected to pay for coins before any code was written. We felt this was unjust.
The development of Decred was funded by Company 0 and from the pockets of its developers individually. The cost of developing the project, in terms of developer pay, totals to approximately USD 250,000, which Company 0 paid to developers. An additional amount of approximately USD 165,000 has been allocated for unpaid work and individual purchases by developers. We felt that the most equitable way to handle compensation for these expenses was to perform a small premine as part of the project launch. The model is unusual in that no developer received any amount of coins for free – all coins owned by developers will either purchased at a rate of USD 0.49 per coin from their own pockets or exchanged for work performed at the same rate.
The premine consists of 8% of the total supply of 21 million coins, meaning the premine consists of 1.68 million coins. Rather than allocating the entire premine to the bring-up costs, we decided to split the premine equally between compensation for bring-up and an “airdrop”, where we freely give an equal amount of coins to a number of airdrop participants. This means Company 0 and its developers will have put roughly USD 415,000 into the bring-up since April, 2014 and receive 4% of the total supply, 840,000 coins (at USD 0.49 per coin). The remaining 4% will be spread evenly across a list of airdrop participants as part of an effort to build the Decred network and decentralize its distribution. Coins held by Company 0 will be used to fund its ongoing work on open source projects, such as Decred and btcsuite.
Giving away these coins in an airdrop allows us to accomplish several things at once for the project: enlarge the Decred network, further help decentralize the distribution of coins, and allow us to get coins into the hands of people who are interested in participating in the project. Decred is fundamentally about technological progress, so the airdrop will target individuals that have made contributions to advance technology in its various forms. The maximum number of airdrop participants is capped at 5,000 individuals, so we recommend registering sooner rather than later. These coins will be given away unconditionally and there is zero expectation of Decred receiving anything from you in return for these coins.
Sign up for the airdrop is currently open, but the airdrop registration will commence on January 4th, 2016. People who have been selected to participate in the airdrop will receive an email that contains a link to a web registration form. This form will require airdrop participants to enter an address to which their coins can be sent. Binaries and source code will be made available so that you can generate a wallet seed and an address for your airdrop coins. Once you have entered your receiving address into the airdrop webform and submitted it, you will receive your coins on the projected launch date of January, 18th, 2016.
Project Governance and Development
In addition to the technical features that make up the technology, Decred as a project introduces several development and governance features and proposals to ensure and steer long-term growth. We encourage participants to discuss these topics earnestly, as we want to ensure the system of development and governance is built on a solid foundation.
- A multi-stakeholder development ecosystem that welcomes and empowers participants who want to build new functionality and improve on existing features.
- Any party can submit feature proposals and developers are paid for work to fulfill requirements. This is done in full view of the community in a system designed to fight against ingroup-outgroup dynamics.
- The initial contributors are the developers responsible for btcsuite (est. early 2013 – present).
- A proposal for a layered form of transparent meritocratic governance that extends beyond proof-of-work and proof-of-stake mechanisms to bring forward and represent insider and outsider voices in the community.
- A proposal for bottom-up decision-making through the Decred Assembly, an evolving and inclusive list of community members who make non-financial contributions to the project through their work and effort.
- The project is bound by the Decred Constitution on the core principles of finite issuance, privacy, security, fungibility, inclusivity, and progressive development of the technology that keeps these principles together.
Group Contribution Timeline
Below are key points of free and open-source contributions made by the Decred developers to the digital currency ecosystem since 2013. The largest of which is the btcsuite package, which comprises a suite of packages and tools for working with Bitcoin in Golang, and includes btcd, a full node, mining capable, Bitcoin implementation. To date, the total contribution across btcsuite represents 98,046 lines of code, 44,576 of which are test coverage.
This timeline illustrates a long-term and focused commitment to the creation, improvement, and maintenance of free and open-source cryptocurrency software, which will extend to Decred, and serve as a baseline for what users can expect from the project in the future.
- 05/01/13 – btcd: a bitcoind alternative written in Go
- 05/08/13 – btcwire: The bitcoin wire protocol package from btcd
- 05/13/13 – btcjson: The bitcoin JSON-RPC package from btcd
- 05/29/13 – btcdb: The bitcoin database package from btcd
- 05/29/13 – btcutil v0.0.1
- 05/31/13 – btcutil v0.0.2
- 06/13/13 – btcscript – the script package from btcd
- 07/19/13 – btcchain: The bitcoin chain package from btcd
- 10/03/13 – btcd: Not your mom’s Bitcoin daemon
- 10/05/13 – btcd v0.3.0-alpha
- 10/16/13 – btcd v0.3.1-alpha
- 10/23/13 – btcd v0.3.2-alpha
- 10/05/13 – btcutil v0.1.0
- 11/13/13 – btcwallet and btcgui: Wallet handling for btcd
- 11/14/13 – btcwallet v0.1.0
- 11/14/13 – btcd v0.3.3-alpha
- 11/14/13 – btcutil v0.1.1
- 11/18/13 – Deslugging in Go with pprof: btcd
- 11/22/13 – btclog v0.0.1
- 12/13/13 – btcd v0.4.0-alpha
- 01/10/14 – btcutil v0.2.0
- 01/14/14 – btcd v0.5.0-alpha
- 01/15/14 – btcwallet v0.2.0
- 01/16/14 – btcwallet v0.2.1
- 01/19/14 – Redecentralization: building a robust cryptocurrency developer network
- 02/05/14 – btcd v0.6.0-alpha
- 02/05/14 – btcutil v0.3.0
- 02/05/14 – btclog v0.0.2
- 02/11/14 – btcwallet v0.3.0
- 02/12/14 – Transaction Malleability: No Shortcuts Allowed
- 02/21/14 – btcd v0.7.0-alpha
- 03/16/14 – 2014 Summer Internships: hacking on Bitcoin with Go
- 05/26/14 – btcd v0.8.0-beta
- 05/26/14 – btcwallet v0.4.0-alpha
- 04/25/14 – Btcd + getwork + cgminer = profit
- 05/12/14 – Introducing btcrpcclient – Bitcoin RPC Made Easy
- 05/24/14 – Btcd Beta Announcement
- 08/27/14 – BIP0064 – Not yet.
- 09/21/14 – btcd v0.9.0-beta
- 09/21/14 – btcutil v0.4.0
- 09/21/14 – btclog v0.0.3
- 10/25/14 – btcsim: simulating the rise of Bitcoin
- 10/27/14 – Monetas brings colored coins to btcd
- 01/04/15 – The Bitcoin Consensus Red Herring
- 03/02/15 – Btcsuite: Code Migration and Btcd 0.10.0 Release
- 03/02/15 – btcd v0.10.0-beta
- 03/04/15 – btcwallet v0.5.0-alpha
- 03/07/15 – btcwallet v0.5.1-alpha
- 03/11/15 – Btcwallet 0.5.0 Release and Roadmap
- 05/06/15 – Btcsuite: Announcing Btcd 0.11.0 Release
- 05/06/15 – btcd v0.11.0-beta
- 05/27/15 – Btcwallet 0.6.0 Release
- 05/28/15 – btcd v0.11.1-beta
- 05/28/15 – btcwallet v0.6.0-alpha
- 11/22/15 – Btcsuite: Announcing Btcd 0.12.0 Release
- 11/22/15 – btcd v0.12.0-beta
- 11/22/15 – btcutil v0.5.0
- 11/23/15 – btcwallet v0.7.0-alpha
- 11/30/15 – Bitcoin’s biggest challenges
- 12/07/15 – Iterating Bitcoin
- 12/14/15 – Decred announcement