Thank you all for being a part of Cardano

10 October 2017 Charles Hoskinson 3 mins read

Thank you all for being a part of Cardano - Input Output

Thank you all for being a part of Cardano

Over two years ago IOHK joined a movement to build a truly unique collection of technology that married the best engineering principles with the dreams of scientists in far removed universities. It was a tremendously ambitious and complex project to grasp. Tens of millions of dollars would need to be gathered, long term roadmaps developed, research institutions established and properly managed as well as numerous entities staffed. In short, it was an insane project to attempt. Yet we attempted it.

Now there are well over 100 people working full time on the Cardano project, three research centers drafting peer reviewed papers, a legion of haskell developers pushing the limits of the language and three well capitalized entities with a mandate and funding to build Cardano until 2020 - IOHK, the Cardano Foundation and Emurgo.

It’s both unbelievable and humbling to see how far we have gone in such a short time. Cardano is literally evolving computer science from semantics based compilation to entirely new cryptographic protocols to formal verification of code. Cardano also managed to build an amazing community more than 10,000 strong in a slow and methodical way.

We launched the mainnet recently with very little fanfare and marketing. Rather it seems to be a small stop on a much longer and more elegant journey. While it’s certainly a challenging sojourn, I’m confident that we have come to know it and have developed the endurance to survive.

In reflection, I’ve been to over 30 countries since we started our journey. I’ve met thousands of people ranging from the bizarre to the saintly with a few notorious ones littered in between. The most remarkable thing so far has been experiencing the near unlimited excitement and youth regardless of where I went.

The world really does seem like it’s ready for a new financial system. It’s hard to say if Cardano can get us there, yet we aren’t alone any more. There’s now an army of some of the best throughout the world on this journey. Leaderless, inspired and brilliant, it’s an honor to be among them. I never believed I could be part of something like this movement.

Thank you all for being part of Cardano. Thank you for your patience when we have fallen. Thank you for your support and kind words. Thank you for your dreams. Now let’s get back to the road ahead. I’ve come to know this place for the first time.

Blockchain meets big ideas in Aspen

Ron Paul among speakers discussing the future of finance and decentralisation at three-day event

28 September 2017 Jane Wild 7 mins read

Blockchain meets big ideas in Aspen - Input Output

No taxes, no government and the principle of doing others no harm are the founding ideals for a proposed new sovereign country where citizens can live as they choose. This vision of a libertarian utopia created through the purchase of sovereign land was laid out last week in Aspen, by early bitcoin investor Roger Ver, who told an audience that he was in talks to buy land. Rules for the proposed sovereign territory were few, such as no exporting of weapons or drugs and that there would be an age of consent. There would be no membership of the United Nations and no nuclear weapons. "As long as it’s peaceful, you can do whatever you want," said Ver, calling for libertarians and constitutional experts to join his plan. "Even if you love government control, you should love our project," he said, "so all us crazy libertarians can go off and create our own land. All you government loving people can sit back and say to us ‘look how you screwed things up’. But I don’t think we are going to fail," he concluded to applause from the audience.

Ambitious ideas like Ver’s Free Society weren’t in short supply during the three-day Nexus conference at Colorado’s Aspen Institute. The institute – surrounded by mountain peaks carpeted in red and gold fall colours – is more used to hosting the global elite rather than the dreamers and doers pushing for new ways of doing things at Nexus, whose conversations centred around liberty, decentralisation and the future of finance. Blockchain was a core theme of the event, with a predictable number of attendees planning an ICO, but there was also discussion of the future of cryptocurrencies.

Panel at Nexus 2017 Panel at Nexus 2017. Left to right: Roger Ver, Stacy Herbert, Max Keiser, Charles Hoskinson.

Charles Hoskinson, CEO of IOHK, explained how cryptocurrencies would have to develop before they could fulfil some of the transformative roles that have been predicted for them. "The third generation of cryptocurrencies that are coming are really going to be valuable, to change things and allow us to grow," said Hoskinson. "And allow these things to get enough users where they can really start influencing law and governments and central banks. Those cryptocurrencies will require governance, scalability, interoperability." Governance would mean that there would be a democratic way to make improvement proposals and changes to the blockchain, Hoskinson said. And cryptocurrencies of the future would have metadata attached to them, to allow financial transactions to reveal more about the story behind them than simply showing that A sent money to B. Interoperability would allow new blockchains to interact with legacy financial systems. "Interoperability’s incredibly important," he said, "otherwise you have two financial systems which are at war with each other."

Summing up, Hoskinson said: "the good news is that within three to five years, almost all of these problems can actually be rigorously solved." And some of the most exciting developments would relate to the social aspect of cryptocurrencies, where people would have to find new ways to get consent, around issues like voting. "Cryptocurrencies are societal evolution happening in real time," he said. Later, Charles was also part of a lively panel that included the hosts of the Keiser Report show – Stacy Herbert and Max Keiser – as well as Roger Ver and Rob Viglione, founder of ZenCash. Discussion topics included why there was less drama about the Ethereum chain split compared to Bitcoin scaling, ICOs, and the claims from Jamie Dimon, CEO of JP Morgan, that Bitcoin was a fraud. Dimon was ridiculed for his lack of understanding of cryptocurrency, with Ver offering to give Dimon a tutorial. A focus on the future united most conference attendees, but equally important was the historical context that brought them to where they were. Ron Paul, who Hoskinson worked for during Paul’s 2008 bid for the Republican candidacy, came on stage to a standing ovation and chants of "End the Fed".

Charles Hoskinson and Ron Paul
Charles Hoskinson and Ron Paul
Despite admitting he had much to learn about how blockchain worked, the libertarian politician who is now in his eighties praised the industry’s creativity. Technology should not be an arm of the government, he warned, and the internet was being coopted by commercial interests. "Technology is helping us, in a free society it helps improve our living condition," he said. In a tour de force through libertarian thought, he recounted his early career in medicine eventually brought to an end by his interest in how the monetary system worked. Saying that there had been decades of monetary policy failure, from the collapse of Bretton Woods system in the 1970s, Paul attacked the march of Keynesian ideology and a system swollen with debt, leading to the 2008 global financial crisis. "We do want to get rid of the Fed and we should start with auditing the Fed and understanding why we need to know about it," Paul said. "The American people deserve to know what’s going on." Central banking was a relatively new concept, he said, predicting the end of a system that would self destruct as it sank under the weight of debt.
Jesse Ventura and Ron Paul Jesse Ventura and Ron Paul

Backing what Paul said afterwards, Jesse Ventura, ex-wrestler and former governor of Minnesota, told IOHK that personal debt kept people from being free, in a system designed to lock people into debt. "If you are in debt you can be controlled," Ventura said. "If people ran their finances like the government run theirs you’d be a homeless person living on the street out of a bag. You can’t live in a world of negative money." Paul cut a humble figure as fans queued to have their picture taken with him, and later held a television studio discussion with Ventura, a tall and imposing presence sporting a Rolling Stones bomber jacket and a US Navy Seals cap – both former employers of his. Other speakers at the conference included early Bitcoin adopter and investor Eric Voorhees, and Patrick Byrne, CEO of Overstock, who spoke about his new blockchain exchange that would list ICOs, and which he said had approval to operate from the US Securities and Exchange Commission. Longtime gold bug and Bitcoin sceptic Peter Schiff debated with crypto advocate Max Keiser, who in trademark showman style tore up US dollar bills on stage.

Colin Cantrell, one of the organisers of the event, said that one of the aims of Nexus was to bring great minds together and inspire change. "We’re going through a very difficult time globally, there’s a financial crisis. At times like this we need to bring people together, to inspire people to see that we have options, not to worry about the problems but focus on the solutions. We wanted to keep it balanced, everyone has their own skills to bring to the table." Music was never far away, with bands playing on site, and in the evenings a roster of acts played at venues in the centre of Aspen. Some of those who walked round the compact town centre would chance across bears that had come down from surrounding mountains to search for food ahead of their winter hibernation.

On the last night the IOHK team saw a classic American taxi pull up in Aspen. A closer inspection into the cab revealed the unlikely sight of a keyboard, drum pad and a kaleidoscope of coloured beams, and an interior of multi coloured lights and naturally, lasers. Destination unknown, the music kicked in, with Jon Barnes drumming along with a twirl of his sticks, or hammering the keyboard, whilst also managing to drive and talk. Hunter S Thompson, Aspen's countercultural son had taken a ride in Barnes's Ultimate Taxi, of course.

"Remember what Hunter said," said Barnes. "Yesterday's weirdness is tomorrow's reason why", a quote that may resonate with many blockchain fans. We stepped out of the taxi, and he had one last trick. Holding a fan of one dollar bills, he snapped his fingers and instantly they each became 20 dollar bills. And with that he drove off into the night.

IOHK Spotlight – Alan Verbner

Building a future for Ethereum Classic in Argentina

21 September 2017 Laurie Wang 4 mins read

IOHK Spotlight – Alan Verbner - Input Output

IOHK Spotlight – Alan Verbner

What is money and how is it created? And how can we make a better financial system? Alan Verbner, an Ethereum Classic developer on Team Grothendieck at IOHK, started asking these questions as he lived through the volatile economic crisis in Argentina from 1998 to 2002. During this time, Argentina had defaulted on billions of dollars worth of debt. People protested in the streets and roared their disapproval of the government.

“I no longer believed that banks and money were necessary. Society will find a way to survive without them,” Alan said. He saw that local citizens in his country were unable to take their money out of the bank to access their savings, and long queues formed outside banks across Argentina as people desperately tried to get hold of their money. In January 2002, the government decided to devalue the peso, and abandon the peg to the US dollar, which resulted in the peso rapidly losing its value with respect to the US currency over just a few months.

Alan explains that this was when his interest in blockchain and cryptocurrencies began. He despised corruption and wanted to find an alternative solution for the citizens of his country.

Alan started to read more about Bitcoin, and researched the white paper by its creator, Satoshi Nakamoto. He was hooked, joined Argentina’s growing blockchain community, and the rest is history.

Since then, Alan focused his efforts on getting into the blockchain industry. Following his interest in computers, developed at an early age from the influence of his mother’s technology career as a bank IT professional, Alan studied at the Engineering University of Buenos Aires and became a software engineer.

After graduation, Alan created Atix, which is a company he co-founded with three friends from university. They work on software development, and half the company are working in the area of blockchain. Alan decided to base his company at Bitcoin Embassy, a key meeting place for many of the leading minds in bitcoin development in the country.

He is optimistic about the future of crypto in Argentina’s bustling blockchain community. "Our country has the ideal conditions for crypto development. We have highly skilled and passionate people looking to contribute to the industry. For example, our office is located in a building where about eight crypto companies have their space and meetups are held every week with interesting debates taking place," Alan said.

It was at Bitcoin Embassy where Alan met Charles Hoskinson, the CEO of IOHK, and he was given the opportunity to work in Team Grothendieck on Ethereum Classic development. They built and recently launched the beta version of an Ethereum Classic client, Mantis, in the functional programming language Scala.

On the programming language of choice for ETC development, Alan is a fan of functional programming because it has allowed him to create less verbose, more readable and secure code. For him, Scala is a solid and fun language to work with. It has a lot of tools and useful libraries, for example Akka). Last but not least, it runs on a Java virtual machine so he is able to support different platforms (see the Mantis documentation for instructions) without any extra effort.

Alan Verbner

Being a remote team based in Argentina, and working with other distributed teams in IOHK globally, has been less complicated than most would expect. Alan and the team ensures that they have the discipline and precision to make everything work like a Swiss watch. This includes two main goals, one is communicating successfully with daily standup meetings to discuss tasks and key blockers, and the second is a strong and well defined code review process to catch bugs and establish a consistent coding style.

As someone who lived through pivotal moments in a country where corruption and poverty have been two big themes in society, Alan envisions a future where blockchain can address these issues. He would love to see a world where blockchain technology is being applied to areas such as voting transparency, microlending and fair access to financial services, immutable government data release, and trusted financial systems for all. “We are yet to see the various use cases blockchain technology can contribute to. I'm confident that the ecosystem will mature and become part of our daily life,” Alan said.

To find out more about Alan and our other talented Team Grothendieck members working on the ETC development of Mantis, check out our IOHK team page.

Cardano prepares to launch

Development during the past weeks has strengthened the network

1 September 2017 Charles Hoskinson 4 mins read

Cardano prepares to launch - Input Output

Developing Cardano is no small feat. There is no other project that has ever been built to these parameters, combining peer reviewed cryptographic research with an implementation in highly secure Haskell code. This is not the copy and paste code seen in so many other blockchains. Instead, Cardano was designed with input from a large global team including leading experts and professors in the fields of computer programming languages, network design and cryptography. We are extremely proud of Cardano, which required a months-long meticulous and painstaking development process by our talented engineers. With that in mind, I’m pleased to report that we are finally reaching the end of development. The target launch date is September 29 and this is based on all current, known information. We had originally planned to launch by the end of August, so there have been a few additional weeks of development. The extra time was partly due to our team uncovering a few unexpected bugs which delayed testing of the overall network. It also took longer to set up Cardano’s internal test network than expected. But during those extra weeks, we have also been able to make enhancements to dramatically improve Cardano’s performance. 

One of the things engineers did to improve Cardano’s performance was to change the format of messages that are sent between nodes on the network. We upgraded our binary serialisation format from a custom version to one based on an open, common standard that means third parties, such as exchanges, will find it easier to build their own nodes, and our system becomes more transparent.

In recent weeks, engineers also made improvements to the network layer, rewriting code to make it run faster. The system is more stable under load and the number of transactions per second is higher. We are further improving the transaction speeds of the network and in the coming months after release will demonstrate our results. These two improvements took a few weeks to fully implement and test.

We have now added additional protection against DDoS, or distributed denial of service, attacks. The network’s core nodes have been placed behind firewalls, so they are not accessible from the public internet. This gives us some protection against this type of attack, because potential attackers can’t reach Cardano’s core nodes. To do this, we surrounded the core nodes with proxies, called relay nodes, which by contrast are visible to the internet. As their name suggests, these nodes relay messages to the core nodes. Even if there was an attack, the blockchain would be protected because the core nodes are not directly exposed.

We have also introduced improvements to Cardano’s delegation scheme, which keeps the network running even if its end users are not online, to strengthen it against attacks to its signature scheme. This provides an element of future-proofing by preventing attackers from stealing funds if new attacks against its signature scheme are discovered in the future. Cardano is based on proof of stake, so our solution is that Ada holders will have separate public-private keys for their coins and for their stake and the public key for the coins will not be published. This is the first step of a long term strategy to harden Ouroboros against quantum computers, a process which will require new research.

While all this work was going on during the past few weeks, the team has done a lot more testing, which is always good. We found bugs, which we fixed, and the testing gave us a better assurance of quality.

Recently, IOHK research – our Ouroboros and SCRAPE papers – were also accepted to two major conferences, ACNS in Japan, and Crypto 2017 in the US, and we were very proud our work has been recognised by the academic community and has been peer reviewed. A major exchange that has agreed to list Ada at launch has also been integrating with Cardano’s network. As a result, we have been adding some recommended features and minor changes.

All this development work has meant that Cardano’s code has changed, sometimes significantly. That means everything has to be retested. You can’t simply update code and assume that everything will be fine. The process of releasing a new version of the software takes a couple of weeks because that is how long it takes to test, and fix bugs and carry out tasks such as preparing new installers.

Development has been a lengthy process but we are now very pleased to share a detailed plan showing the launch countdown. Cardano is a unique and very special product and we look forward to passing it into your hands.

How we test Cardano

The importance of testing our cryptocurrency systems

30 August 2017 Duncan Coutts 8 mins read

How we test Cardano - Input Output

How we test Cardano

Testing is of course critically important to a cryptocurrency because the correctness and robustness of the system are what you rely on to keep your money safe, and ensure that you can spend it when you need to. So as you would expect, as our development team is getting ready for the Cardano mainnet release, testing is one of the main things that is on our minds.

There are many different ways in which we test Cardano and in this post we will talk about several.

Testing can be divided into two main kinds: functional and non-functional:

  • Functional testing is about checking that all the system's components meet their specifications.

    Functional testing is done with components on their own, in which case we call it unit testing or component testing. It is also done with all the components together, in which case we call it integration testing or system testing.

    These kinds of tests are typically of the form: given some scenario, and certain inputs, the component or system produces the correct output or takes the correct next action.

  • Non-functional testing reveals "how" the system behaves, including the performance of the system, the resources it uses and how the system behaves when under great load or attack.

We have a few major parts of the Cardano system: the core, the wallet backend and the Daedulus frontend. Different parts of the system are appropriate to test in different ways.

Public testnets


The most visible form of testing is of course the public testnets where we ask users to try the system out. This is a kind of beta testing. This is just the tip of the iceberg compared to all the testing we do internally, but it is still very useful because it covers a different set of problems compared to our internal tests.

Users have a huge variety of desktop computers, both in hardware and configuration. It is impossible for us to test all the combinations that our users have. So having lots of real users try out the system really helps to find those strange combinations where something does not work well, and gives us the confidence that we will not bump into similar problems for mainnet.

A testnet release helps us test usability of the system: our websites, the installers, the Daedulus interface and how many cryptocurrency concepts people need to know to use the system.

There is no escaping the fact that a public testnet release is in some ways more "real" than any test situations we can construct artificially. Though we can certainly push the system to breaking point using our internal stress tests, there are complexities of a real world deployment that are hard to replicate in an artificial test.

Finally, it also helps our team practice making public releases, which helps us work out the kinks in our processes so that we can avoid problems during the mainnet release or later updates. And it's not just our developers and technical operations teams, a successful launch also depends on our communications and support teams. The very process of getting questions, feedback and problem reports from users during the testnet phases helps us to make sure that our support teams have the right procedures in place so that we can be confident that they can help everyone effectively during and after the mainnet launch.

Automatic unit and component testing


We have an increasing collection of fully automatic functional tests that cover various important parts of the logic in the core and wallet backend. These are functional tests in that they check that each component meets its specification.

These tests are run automatically by our continuous integration system, which means they are run before any change to the code is accepted into our master branch. This helps to protect us against introducing regressions.

Wherever possible we make use of property based testing, rather than simple individual unit tests. Classic unit tests for a component tend to simply use a specific set of inputs and check that a specific output is produced. To comprehensively test a component in this style often requires a large number of specific pairs of input and expected output. This is laborious and tends to miss corner cases that programmers do not think of. By contrast, property based testing involves taking the component's high level specification and reformulating the specification as an executable property. That means that for any specific inputs the property can actually be executed to check that the property is true for those inputs. These properties are expressed in the same programming language as the code being tested. The technique then involves checking the property on hundreds or thousands of test inputs. The technique is to use systematic random generation to produce test inputs. This means that programmers do not have to think of lots of test inputs and it avoids human bias. So it tends to give much better test coverage with less effort.

Specifically, we use the QuickCheck system for property based testing. Perhaps the greatest advantage is that it makes developers think in terms of the specification and properties of their code, rather than individual inputs and outputs. This is a much higher level way of thinking about code and helps to produce simpler more reliable code.

System level tests and performance tests


While all the unit and component testing gives us confidence that each part of the system works ok on its own, system level tests are to check if the parts all work together as a whole.

For this we have to set up a cluster of machines and configure them to run the blockchain protocol together. The main functional test that we use works like this: we have a special transaction generator program that constructs tens of thousands of transactions and submits them to nodes in the cluster. The code is instrumented to record certain key events in a log file, such as when each transaction reaches each node. We let this run for around an hour. At the end of the run we have a tool that analyses the blockchain and the log files from all the nodes. This checks that all the transactions that were submitted did make it into the blockchain. It also checks if there were any unexpected forks in the blockchain or missing blocks. In normal conditions there will be no forks or missing blocks.

We can use the same basic approach to test the system when we deliberately attack it, such as taking out nodes, or preventing nodes from talking to each other for a while. In this case we expect temporary forks or missing blocks, but we can check that the system recovers properly.

We use the same basic approach for non-functional performance tests. We adjust the transaction generator to submit transactions at a higher rate to stress the system and see how high we can push the throughput before it hits a bottleneck. We can also check that even though the system has hit its maximum capacity it continues to function in a stable way.

Throughput, meaning transactions per second, is important but so is latency. By latency we mean how long it takes for a transaction to get into the blockchain. Our analysis tool can also determine the distribution of latency. A low latency with little variance shows us that transactions are flowing smoothly to the nodes that create blocks and that those nodes are creating blocks on time.

Frontend testing


Our Daedalus frontend team have a fully automated set of tests that cover every function of the user interface. In turn this also tests every interaction between the wallet frontend and wallet backend. So this also gives us an automatic integration test for the combination of the wallet frontend and backend.

Frontend testing is a bit different from most other testing. Most testing works by a test program directly using a program interface, whereas frontend testing requires interacting with an actual human interface. User interface testing frameworks simulate what a real user does: clicking buttons and typing in web form boxes.

The result is actually rather fascinating to watch: it's as if an invisible robot is sitting at the computer typing and clicking very quickly to set up accounts, send transactions and all the other things.

Daedalus acceptance tests – a fully automated set of tests that cover every function of the user interface.

Security auditing


Counterintuitively, when it comes to cryptography and security -- which cryptocurrencies of course rely on completely -- testing is in fact not very effective. Testing usually shows us that the expected things do work, but it's hard to use normal testing to show that unexpected things cannot happen. And showing that some hacker cannot subvert the system is just the kind of thing that is hard to test for.

The solution is not testing but auditing by experts in cryptography and security. This means experts carefully reviewing the designs to check that the arguments for why the system should be safe are sound, and also reviewing the code to make sure the code matches up with the design.

Of course, the basic design for the proof of stake blockchain used in Cardano has already been peer reviewed by academic cryptographers. There are other parts of the system that we have had to develop in the last year -- beyond just the blockchain -- and the most security critical parts of those have been reviewed by our research team, and also by an external security audit team. Additionally, the security audit team have reviewed many of the most important parts of the code to check that the code matches the design.

Conclusion


A cryptocurrency system is a surprisingly complex piece of software and it has to work correctly, be robust to deliberate attacks and have good performance. Of course Cardano is a new from-scratch cryptocurrency, not based on any existing system, so all of it has to be carefully tested or reviewed.

Hopefully this post has given you some insight into how much is involved in testing Cardano, and how serious we are about security, robustness and performance.