What makes a blockchain developer?

The Computer Weekly Developer Network talks to Lars Brunjes, director of education at IOHK, the blockchain research and development company behind top 10 cryptocurrency Cardano.

Brunjes explains that blockchain protocols like Cardano have to be efficient, correct and secure.

After all, billions of dollars are at stake, so programmers have to be able to produce code with assurance levels normally used in space travel and for medical applications.

“At IOHK, we use the functional programming language Haskell to implement the Cardano protocol. As Computer Weekly readers will know, Haskell is very high-level and close to mathematics, which makes it easier to implement correct code than most ‘mainstream’ languages do, but using Haskell by itself is no guarantee for bug-free code. Our developers must not only be competent software developers fluent in Haskell, but also be able to understand and implement mathematical specifications and work with formal verification tools to reach as high a level of assurance as possible,” explained Brunjes.

Once the blockchain protocol has been implemented, Brunjes programmers can develop smart contracts on top of it, which will run on the blockchain.

Unexpected loopholes

“The correctness of the underlying protocol is no guarantee for the correctness of these contracts, though – a smart contract can contain unexpected loopholes that can turn out to be extremely costly. High level smart contract languages like IOHK’s Plutus (heavily inspired by Haskell) make it easier to avoid such pitfalls, but they still place high demands on the programmers’ ability to ensure (and ideally prove) their contracts’ correctness,” said Brunjes.

In summary, Brunjes explains that a blockchain programmer must be more than a competent software engineer.

They must be able to calculate and manage their code’s correctness and be familiar with formal verification techniques to ensure optimal quality and security.

< class="wp-caption-text">Brunjes: a blockchain programmer must be more than a competent software engineer.