Difficulties with Democracy

Ross Nicoll bio photo By Ross Nicoll

So, there's three really big, mutually exclusive, themes to change requests for the coin:

  • Change proof of work algorithm
  • Proof of stake
  • Merged mining (with Litecoin or similar)

Lets say (because I think it's about right from the polls we've seen done), each of these have 30% approval. So, while there's some overlap, lets call that 80% approval for change. As a result, if we pick any single option, we're going to have 70% of the community annoyed at us. If we do nothing, we disappoint 80%, although at least stuck to the original description of the coin. This is why we've held off while we discuss and analyse in depth, before announcing intent to make any change.

With this in mind, we're continuing to warm to the idea of some proof of stake variant, switching somewhere past the 600k block. Note that as a timescale that's at least another 6 months. A lot of discussion has gone on, a lot of issues but some good ideas have been proposed on how we resolve them. Key goals  for why we're doing this, and how it will be approached:

  1. Stabilise the coin without depending on conventional mining (which is highly price dependent).
  2. Reduce wastefulness in the mining process.
  3. Give miners the best chance possible to achieve return on investment.
  4. Ensure the staking process is as stable as possible.
  5. Minimise disruption caused by the switch-over.

We're not leaping head-first into this; coin simulation tools are going to be written, to enable modelling of various approaches (PoS, PoS 2.0, PoSV, PoT, etc.), look at strengths and weaknesses, attempt to minimise risks of unexpected forks (as other coins have had with recent technology changes). There's still plenty of time for discussion, but we wanted to let you know we're here, we're paying attention, and we're doing something.

Next up; anonymity, the hot new feature in a lot of coins. Lets first talk about how anonymity works in Bit, Lite, Doge and other similar coins. When an address is generated, it's not associated with anyone. However, there is a public ledger (the block chain) of all transactions. Therefore, when you make an address known to belong to yourself, for example to allow tipping to it, or payment from an exchange, anyone can tell how much money has been sent to that address.

The obvious answer is to move the money to an address that's not publicly known... however that movement is also visible, so this doesn't really help. Instead, anonymisation is supported by something called "change addresses". When you receive Dogecoin, the amount you've received is stored in a transaction. When you spend Dogecoin, the client chooses transactions to spend, such that they exceed the value of the Dogecoin being sent. Transactions received at an address have to be spent as a whole (they're indivisible), however.

So, lets say you receive 50 doge, then another 50 doge, then want to spend 75 doge. Both transactions are spent, and you have 25 doge (I'm ignoring transaction fees for simplicity) left over. That change is sent to a new address, called a "change address". The theory is that in doing so, it's hard to tell which Dogecoin were spent, and which were change (and remained with the sender). Bitcoin have a good page discussing this and other ways of improving anomymity: https://bitcoin.org/en/ protect-your-privacy

This is all why it's important to use new addresses when receiving coins (especially for merchants, so your customers can't identify each other by looking for other coins going to the same address). There's also some issues with the change address system as currently implemented, in that typically the change is the smaller output of the transaction, which means it's possible to make statistical inferences over which output remains with the sender, and from that infer other transactions later on.

Darkcoin and similar resolve this by having much stronger anonymity, however this comes at a cost. The same openness of transactions in the blockchain allowed for some auditing of Bitcoins under Mtgox's control (for example  http://www.coindesk.com/gox-money-moving-through-block-chain/). It enables external auditing of funds held by companies (as they can sign messages to show they control specific addresses). It assists hugely with debugging of wallet problems (for example, confirming coins are received successfully), a task which is already challenging to perform in cryptocurrency.

So we opt for a balance; we're looking at better coin choosing algorithms to make it harder to statistically determine which addresses are change and which are "genuine" payments. Meanwhile please use new addresses for each transaction where possible.

Lastly, we need to talk about developer motivations. The core development team does not have large Dogecoin holdings, and while there is a development fund, at the moment the amounts paid are relatively small. There is nothing wrong with this, however it's important to understand that this model attracts developers who are not directly motivated by the money. That's good in many ways, but many in the community are displeased that we're not focusing efforts on the price.

You are, as always, welcome to contribute code, or to recruit further developers who contribute such code, or to work on adoption, or to add services that use Doge, if you wish to encourage the value of Doge. The price is not, however, the primary motivation of your existing core devs.