Do you need a blockchain?

Find Out

Written by Matthew Davis. Inspired by doyouneedablockchain.com and David Gerard's blog.

Is the data about verifying or tracking physical things?

supply chain verification, electricity metering, house ownership...

Yes No

No, You don't need a blockchain

If you need to add a verification system to your verification blockchain, why do you need the blockchain?

Blockchains are no better at verifying things in the real world than any other database.

The hard part of verification is converting attributes of physical things into bytes. Blockchains cannot bridge the cyberspace-meatspace interface. They just take the bytes they're given and put them on hard drives, slowly.

No, you don't need a blockchain

The reason blockchains were invented was to make an immutable, censorship-proof database. This means no central authority should have the power to unilaterally modify records.

Editable blockchains are like infrared coloured fireworks. They're straightforward to build, but there's no point creating such a thing.

Just use a normal database. It will be faster, cheaper and greener.

Is this for securing an election?

Yes No

Paper trail or direct?

Will there be a first machine which prints out paper ballots, counted by a second machine at the end of the day? Or will the voter-facing machine write directly to the blockchain?

Paper trail Direct to blockchain

What about counting device security?

The main reason some elections use the two step process is that the paper ballots can be re-counted. A blockchain cannot detect whether the counting machine modified the numbers prior to signing the count.

What happens if an audit shows that a machine wrote a vote count to the blockchain which did not match the actual paper ballots?

Electoral staff will correct that Won't happen. If banks can make secure ATMs, Governments can make secure counting machines

No, you don't need a blockchain

The reason blockchains were invented was to make an immutable, censorship-proof database. This means no one has the power to modify or redact data on the blockchain.

Editable blockchains are like infrared coloured fireworks. They're straightforward to build, but there's no point creating such a thing.

Using any type of voting machine is a terrible idea. If you must do it, just use a normal database. It will be faster, cheaper and greener.

No, you don't need a blockchain

Cryptography is not the primary security measure for ATMs and online banking. It is that when customers lose money to a hack, the bank just pays back the customer out of their own pocket, and writes it off as an operational cost. This is cheaper than developing extreme security. Elections have no equivalent remediation.

The strongest threat banks must defend against is organised crime. The strongest threat an election system must defend against is a nation-state (such as the Kremlin or the NSA). The latter is far more formidable [1] [2] . In fact, there are fundamental mathematical facts which say that you can never be sure that a digital device is secure against a nation-state level attack.

Blockchains are not magic. Applications written on blockchains are actually far more buggy than normal ones. Blockchains are just a type of database. The security issues with voting machines encompass the whole ecosystem, not just the database.

Using any type of voting machine is a terrible idea. If you must do it, just use a normal database. It will be faster, cheaper and greener.

What about security?

How can you guarantee that the voting machine does not modify the data before signing it and writing it to the blockchain?

Blockchains are secure because of cryptography If banks can make secure ATMs, governments can make secure voting machines

No, you don't need a blockchain

Cryptography is not the primary security measure for ATMs and online banking. It is that when customers lose money to a hack, the bank just pays back the customer out of their own pocket, and writes it off as an operational cost. This is cheaper than developing extreme security. Elections have no equivalent remediation.

The strongest threat banks must defend against is organised crime. The strongest threat an election system must defend against is a nation-state (such as the Kremlin or the NSA). The latter is far more formidable [1] [2] .

Bank fraud is easily detected. Either your balance doesn't equal the sum of all transactions, or there is a transaction you don't recognise. Election fraud is impossible to detect, unless you forgo anonymity, or use paper ballots which can be re-counted. In practice, electronic ballot counting machines are consistently secured terribly. In theory, there are fundamental mathematical facts which say that you can never be sure that a ballot counting device is secure. This is why ballots should be counted by hand.

Blockchains are not magic. Applications written on blockchains are actually far more buggy than normal ones. Blockchains are just a type of database. The security issues with voting machines encompass the whole ecosystem, not just the database.

Using any type of voting machine is a terrible idea. If you must do it, just use a normal database. It will be faster, cheaper and greener.

No, you don't need a blockchain

The cryptographic algorithms behind blockchains are secure, but no one attacks a system at its strongest point. If anyone can compromise the device anywhere between user input and signing that input with a key, it does not matter how strong the algorithms are.

Even hardcore cryptocurrency enthusiasts cannot keep their keys and devices safe [1] [2] [3] [4] [5] [6] [7] .

In practice voting machines are usually shockingly insecure.

When the fate of a whole society is at stake, and the threats include other nation-states, you cannot assume that voting machines will remain secure. In fact, there are fundamental mathematical facts which say that you can never be sure that a voting machine is secure against nation-state level attacks.

Blockchains are just a type of database. The security issues with voting machines encompass the whole ecosystem, not just the database.

Using any type of voting machine is a terrible idea. If you must do it, just use a normal database. It will be faster, cheaper and greener.

What about security?

How can you guarantee that the votes are not tampered with on the voter's device, in the network, or the back end servers?

Blockchains are secure because of cryptography If banks can make secure websites and apps, governments can too

No, you don't need a blockchain

The cryptography behind blockchains is secure, but no one attacks a system at its strongest point. If an attacker acquires a voter's key, or compromises their device it does not matter how strong the algorithms are.

Even hardcore cryptocurrency enthusiasts cannot keep their keys and devices safe [1] [2] [3] [4] [5] [6] [7] . How could an average citizen possibly fare any better?

The threats to election security include whole nation-states. In practice, consumer devices are not designed for such an extreme threat model. In theory, there are fundamental mathematical facts which say that you can never defend a device against the kind of attacks which nation-states can execute.

Blockchains are just a type of database. The security issues with online voting encompass the whole ecosystem, not just the database.

Any type of online voting is a terrible idea. If you must do online voting, just use a normal database. It will be simpler, cheaper and greener.

No, you don't need a blockchain

Cryptography is not the primary security measure for online banking. It is that when customers lose money to a hack, the bank just pays back the customer out of their own pocket, and writes it off as an operational cost. This is cheaper than developing extreme security. Elections have no equivalent remediation.

The strongest threat banks must defend against is organised crime. The strongest threat an election system must defend against is a nation-state (such as the Kremlin or the NSA). The latter is far more formidable [1] [2] . In fact, there are fundamental mathematical facts which say that you can never be sure that a digital device is secure against a nation-state level attack.

Blockchains are not magic. Applications written on blockchains are actually far more buggy than normal ones. Blockchains are just a type of database. The security issues with online voting encompass the whole ecosystem, not just the database.

Any type of online voting is a terrible idea. If you must do online voting, just use a normal database. It will be simpler, cheaper and greener.

No, you don't need a blockchain

Blockchains are like a normal database, but deliberately slow to allow many parties to write without centralised coordination or authority.

If only one party is going to write to the database, just use a normal database. It will be faster, cheaper and greener.

Who else can write some data?

Only Some People Literally Anyone

No, you don't need a blockchain

You're only allowing trusted parties to write to the database. So you'll need an authority who approves or denies parties wanting to write to the database.

The reason blockchains were invented was to ensure that no one has the authority to deny anyone write access to the database.

Just use a normal database. It will be faster, cheaper and greener.

Can you rely on a trusted third party?

A regulator, a bank, PayPal etc.

Yes No

No, you don't need a blockchain

Blockchains were invented as a way to transact with untrusted parties.

If you and the counterparty can trust a third party, then you can transact with the untrusted parties via the trusted third party.

Just use the trusted party and a normal database. It will be faster, cheaper and greener.

Do you need the ability to delete data?

For example, the new GDPR laws mandate that under certain circumstances you must delete data when customers ask

Sometimes Never

No, you don't need a blockchain

The reason blockchains were invented was to make an immutable, append-only database. If you use a blockchain you cannot delete data in it.

Editable blockchains are like infrared coloured fireworks. They're straightforward to build, but there's no point creating such a thing.

Just use a normal database. You'll be able to comply with privacy laws that way.

Mistakes Happen

What will you do if incorrect data is written to the ledger?

Fix It Leave It

No, you don't need a blockchain

Blockchains are like a normal database, but deliberately slow to allow many parties to write without a central authority.

If one party has the power to overwrite other data then you have a centralised authority. So there's no point using a blockchain.

Just use a normal database. It will be faster, cheaper and greener.

No, you don't need a blockchain

The reason blockchains were invented was to create an immutable database. This means that data written to it cannot be deleted.

The only way you can modify a true blockchain is to convince everyone using it to instead use a new amended copy, and ignore the old copy. This is called a soft fork. This requires a lot of effort, and involves convincing a large community (who are not all trustworthy) to throw away the cherished immutability property of blockchains.

The unique value proposition of blockchains is that they are immutable. If you want to overwrite data then you do not want immutability. So just use a normal database.

Illegal Content

What do you do when a malicious party uploads hate speech, child porn, terrorist propaganda or other illegal materials to the database?

(That literally happened to the Bitcoin blockchain, and also to Ethereum.)

Delete It Leave It There Won't happen. Only nice people will be allowed to write to the blockchain

No, you don't need a blockchain

The reason blockchains were invented was to make an immutable, censorship-proof database. If you use a blockchain you cannot censor data written to it.

Editable blockchains are like infrared coloured fireworks. They're straightforward to build, but there's no point creating such a thing.

Just use a normal database. That way other parties can't make it illegal to store or transmit your own database.

Really?

This means that you and anyone else using your database will be violating the law (if such content is uploaded).

No, I don't want that Yes, that's fine

Who should be able to read this data?

Only some parties Literally Anyone

No, you don't need a blockchain

You're only allowing trusted parties to read the database. You'll need an authority who approves or denies parties wanting to read the database.

The reason blockchains were invented was to create a database that anyone can read or write to.

Just use a normal database. It will be faster, cheaper and greener.

Do you need to keep the data in one country?

Do you need to comply to data sovereignty laws?

Yes No

No, you don't need a blockchain

The reason blockchains were invented was to ensure that no one has the authority to deny read and write access to the database.

We've already established that untrusted parties can read the database. What's to stop them from making a copy of that data and sending it overseas?

Just use a normal database. That way you'll be able to monitor and control where the data resides.

Is financial cost important?

Yes No

No, you probably don't want a blockchain

Blockchains require many expensive computers, which burn a huge amount of energy playing Number Wang, to decide who gets to write to the database. Blockchains are deliberately expensive to run, by design. Also, buzzword consultants charge high fees.

I'm willing to pay more

How many writes do you need to deal with?

More than 3 per second Less than 3 per second

No, You don't need a blockchain

There's a law in mathematics that says you can't have truly distributed databases, without central orchestration.

Satoshi (the inventor of blockchains) found a loophole. It's possible, but only if you deliberately slow everything down, a lot.

Bitcoin is the world's most famous blockchain, and it can only process about 3 transactions per second. Other versions of that algorithm can deal with a little bit more, typically at the expense of security. Claims of substantially faster blockchains are usually vaporware.

If you need performance, just use a normal database.

Is reducing greenhouse gas emissions important?

Yes No

No, you don't want a blockchain

There's a law in mathematics that says you can't have truly distributed databases, without central orchestration.

Satoshi (the inventor of blockchains) found a loophole. It's possible by deliberately wasting electricity, spent powering entire warehouses full of computers playing Number Wang.

This results in unconscionably large emissions. For example Bitcoin now uses as much electricity as a whole country[1][2][3],

Other types of blockchains have been proposed. These are largely vaporware.

What about Chia? What about Ethereum?

Ethereum

Ethereum has finally swapped to a Proof-of-Stake model that means the supposedly decentralised and uncensorable system will become even more centralised than it already was with even more regulatory censorship than it already had. So you lose a lot of the unique value propositions of blockchains.

I don't care. I still want a blockchain!

Do you want a cryptographically secure append-only hash-based Merkle Tree database?

No Yes A what?

"Append-only" means you can only add new rows to the spreadsheet, without deleting or modifying previous rows.

A Hash-based Merkle Tree uses fingerprints of data to provide an easy way to check that the whole history of data entries matches what you expect.

Yes I want that

No, you don't want a blockchain

That's what a blockchain is.

Can you use Git?

Git is a popular tool for managing code. It also happens to be a cryptographically secure append-only hash-based Merkle Tree database.

It's designed to allow multiple people to modify files at the same time. It has a distributed, auditable history of all changes made to the data. Most developers already know how to use it, and there's a large ecosystem of tools and hosting systems for it.

If you want, you can use cryptographic signatures to verify writes to the files.

Yes No

No, you don't need a blockchain

Just use Git

Git repositories are like blockchains. The main difference is that they don't emit more pollution than whole countries[1][2][3].

Also, Git is an established, well proven technology which most developers already have the skills to use. Whereas blockchain projects are largely vaporware, with eye-watering consultancy price tags.

Are you making a new cryptocurrency?

No Yes

Yet another altcoin?

Is this fundamentally different to the hundreds which already exist?

It's for a different demographic or use case The codebase is substantially different

No, you don't need a blockchain

Yes, blockchains are the best way to make cryptocurrencies. However you shouldn't be making yet another shit-coin.

Yes, you do need a blockchain

Cryptocurrencies are one of the few use cases where blockchains are the best available choice. However, does the world really need another cryptocurrency?

Make sure your coin is uniquely useful. Also, be careful. The world of cryptocurrencies is not very kind to those who write buggy code or have consumer grade security [1] [2] [3] [4] [5] [6] [7] .

I hope the emissions, cost, low performance, legal risk and ethical costs are worth it.

No, you don't need a blockchain

Just use a normal database

It will be cheaper, greener, faster and more scalable

OK, maybe you should use a blockchain

I hope the emissions, cost, low performance, legal risk and ethical costs are worth it.