The blockchain industry needs pragmatism – not idealism.

That was the focus behind a talk given by Cornell University associate professor Emin Gün Sirer at Business of Blockchain, a one-day conference held by MIT Tech Review and the MIT Media Lab yesterday. There, Sirer discussed the idea that while blockchains can be immutable, at some point in time, all cryptocurrency development teams have faced situations where they had to go back and rewrite the past.

“I’m here to tell you code is not law. You know what is the law? The law is the law,” Sirer told the crowd. “The code is buggy. That is what we have today.”

As an example, even bitcoin, he pointed out, has seen its fair share of snafus.

Sirer cited two instances, one in 2010, when a bug in bitcoin’s code led to the creation of 92m bitcoins (thereby breaking the hard-coded rule that only 21m bitcoin will ever exist), and another in 2013, when the bitcoin network split after a bug in the software created two divergent chains.

He also touched on the infamous hack on The DAO, an event last summer that ultimately led the ethereum smart contract platform to hard fork, and the role his team played in helping to review The DAO’s smart contract code and warn the community about its effects.

The DAO was an example of how exuberant people can become over the the potential of blockchains, which are, like every other software program, fallible.

Reminders ring

While much of his talk focused on public blockchains, Sirer went on to give guidance for developers in all areas of the industry today.

Exchanges where cryptocurrencies are traded (along with our mobile phones and computers that interface with them), he said, are simply not built for handling high value digital assets.

Further, he said private blockchains that use byzantine fault tolerant protocols are “doing it wrong”, stating:

“All of your nodes must fail independently, and yet you are deploying the same code on every machine.”

He later clarified this could create situations where issues with smart contract code held on private blockchain networks could cause all the computers in the network to be compromised.

Another problem, Sirer said, is that smart contracts are being coded in languages too similar to Javascript, making it difficult for coders to spot mistakes or to predict whether a smart contact will work the way it is intended.

Sirer ended his talk by stating that while blockchain is an exciting field, it needs to be approached in a rational, scientific manner that takes failure into account.

He said:

“There is a great promise at the end, but there will be many failures.”

Image via Amy Castor for CoinDesk