Sunday, December 24, 2017

A Crypto on the Edge of Forever

Now that the dust has settled from more than twenty countries of travel, dozens of conferences, major events and community meet and greets this year, I’ve finally had the time to reflect on the progress of the Cardano project as well as some of the lessons I’ve learned. It’s honestly been the most challenging year of my life filled with drama, stress, death and some unbelievably cruel people.

It’s also been one of the most rewarding and joyful having the chance to meet thousands of passionate and kind fans, technologists and scientists- I can see the inspiration that Charles Dickens had when he said it was the best of times and the worst of times.

The reality is that the internet and in particular the cryptocurrency space can be a really toxic place if you allow it to get to you. There were times after reading some blog post or comment on reddit that I seriously questioned if this effort was worth it. I can understand why Mike Hearn left Bitcoin.

But I’ve never been here for the short term, it’s always been the dream of finding a way to get financial services to the three billion people who don’t have them using technology that was only a dream a generation ago. And I think we are making great progress there.

In January of 2017, Cardano was still mostly in a very early alpha stage. We had tremendous engineering difficulty getting Haskell, our devops and the new protocols such as Ouroboros and Scrape to play nicely together. Rather it was a constant learning curve of how to tame the three headed dragon of research, decentralized teams and exotic programming languages while managing the expectations of a huge community.

As an aside, Cardano has one of the fastest growing and most intelligent fanbases. We actively invited people who care about formal methods, peer review and functional programming to come see what we are working on. These people aren’t swayed by jargon or flashing marketing. They were born with bullshit detectors in their cribs

I’ve gained significant strength and a much needed boost in morale from interacting with our community. For example, one member asked about how we were verifying the proofs in the Ouroboros paper and I posted a link to Kawin’s Isabelle repo. Most would simply say that’s nice and move on. This member took the time to read the code and mentioned we have a long way to go with specific examples.

For most people, Isabelle is a name followed by a lake in Minnesota. For our community, some can actually read the code and comment on it. That’s a rare gift and it’s the privilege of a lifetime to be in this kind of environment (we ending up hiring the person who commented on the code).

Moving through the months, Cardano moved from the lab to a series of testnets to eventually being released in September. Dealing with these transitions gave us a newfound appreciation for just how many different computer and network configurations exist. I can almost feel a windows force ghost whispering “I told you so” in a smug voice.

We designed the Byron (the September release of Cardano) to be the minimum viable product necessary to test the concepts Cardano is built upon. We wanted to run Ouroboros in a production setting to see epochs function properly. We wanted extensive logging of both the edge nodes and relays to see how our network is being used. We wanted to have third parties play with our APIs and tell us where we screwed up (boy did they ever!). We wanted to test the update system a few times.

Overall, the experiment has been a tremendous success. There are several thousand edge nodes concurrently connected to the network. There are several exchanges and other third parties using our software in the harshest possible way. There is a wealth of data flowing in that is giving us a much better sense of what we need to do to make Cardano better.

Since launch, we’ve already pushed three updates to the network without incident. We’ve started a very rapid redesign of our middleware and its associated APIs to make it easier for third parties to integrate. We’ve started a series of systematic improvements to our network stack that will be finished with the Shelley release that should dramatically improve things.

However, what excites me most about 2018 is that Cardano is starting to open up to the world. Delegation and staking will be rolled out all throughout Q1 and Q2 in coordination with the community. Soon we’ll have a testnet running IELE allowing developers to play around with our smart contract model for the first time. And we’ll be deploying our first verified protocol with Praos thereby engaging the formal methods community.

Constantly living in the moment, one tends to eschew Cardano’s vast scope in exchange for the problem of the week. But looking at our ever growing whiteboard series demonstrates how many brilliant people wake up every morning thinking about how to solve the problems of scalability, interoperability and sustainability. These aren’t just hypothetical lectures. They are backed by papers, funding and developers working full time.

Then there are the new things. Professor Rosu’s and Runtime Verification’s work on K and semantics based compilation isn’t just really smart competitive differentiation, it’s literally moving the chains of the entire field of programming language theory. The Cardano project is creating a financial incentive to have correct by construction infrastructure from virtual machines to compilers. Our success means you don’t have to hand write this code ever again- not just in a cryptocurrency context; in a general context.

Our research efforts at Tokyo Tech under Professors Mario Larangeira and Bernardo David with multiparty computation is rapidly bringing these protocols into practical use. Kaleidoscope and Royale are case studies on how to achieve everything that Ethereum does off chain, in a low latency setting, privately and at a scale of millions of concurrent users each in their own domain. Further abstractions will push this work into more useful domains like decentralized exchange. And eventually DApp developers will be able to integrate these protocols into their code via libraries.

Professor Bingsheng Zhang’s research on treasuries and voting is groundbreaking. It’s giving our project the ability to have a discussion about how should changes to cryptocurrencies be proposed, debated, approved and funded. What’s most special here is the interdisciplinary nature of the effort that can draw from political science, game theory, sociology, open source software governance and computer science. There is something for everybody.    

Moving into 2018, we are going to open this discussion up by both engaging the community directly and by holding a conference in Switzerland. More details will be published later, but the basic idea is that this area isn’t a Cardano problem. It’s a cryptocurrency problem. And there are many great projects from Dash to Pivx who are trying to solve it in a novel way. We ought to talk to each other.

I could continue enumerate our research efforts (there’s a lot more to write), but I think the point has been made. Cardano isn’t a cryptocurrency as much as it is a movement of minds who are frustrated with the way technology works in practice.

The functional programming community has had for decades great solutions to many of the problems plaguing modern developers, but they have been historically ignored. Our RINA guys if given a chance could build a much better and more fair internet. Layering protocol development with formal methods extracts a much cleaner and more meaningful design process where ambiguity and hand waving is slain.

What Cardano has given us is a chance to answer if only the world worked this way with why not? We have the freedom to dream again and the freedom to try new things without asking permission. I even have a chance to work with my heroes like Phil Wadler. 2018 is going to be one hell of a year.

Thanks for reading


Phil Wadler and Me hanging out at Edinburgh

Saturday, December 2, 2017

My Thoughts on the Tezos Issue

As a long time forum lurker in the Tezos community and having read the Goodman whitepaper back in 2015, I’ve always admired and respected what the project is attempting to achieve. It’s a nice blend of governance, formal methods and functional programming. Given that Arthur is French, I can forgive the obvious mistake of using Ocaml instead of Haskell (yes I’m biased), but I’ve been a bit puzzled by the crisis that has befallen the project.

First a brief summary of my understanding of Tezos. It’s a cryptocurrency that is seeking to define itself in terms of three subprotocols say <Network, Transaction, Consensus>(0) and then describe these subprotocols in a machine understandable format. Then they introduce an on-blockchain voting mechanism V that allows holders of Tezos tokens to propose a new <Network, Transaction, Consensus>(k) to fork the ledger. Should it pass this becomes the new Tezos.

It’s an elegant idea and one that promotes discussion on two axises. First, the notion of formal specification of a cryptocurrency. There have been numerous attempts to do this academically as a whole via IC3 or in part via Bartoletti et. al’s work, but building a system around it is both ontologically really interesting as well as practical for cross comparisons. IOHK has pursued less ambitious work via collaborating with Alex Chepurnoy on Scorex.

Second, there is the idea of creating an ideal voting system that is both secure and fair as well as incentivized enough to expect reasonable participation of the eligible voters. Here we are confronted with who are actually eligible and what is reasonable. Who and how people get to vote are more important than what is being voted on.

As fun as it is to discuss the technology or ideas, the vogue topic is a governance crisis at Tezos. They apparently opted to have a fairly strange structure where capital pools in one place and is precommitted to buy IP from another place to benefit some group. Semantics and other vagaries aside, a fight in the heavens and some bad press have spilled out into the public domain yielding threats of lawsuits and some small class action lawsuits.

It’s somewhat ironic- in a dark Irish way- that the venture focusing most on governance is running into a governance crisis, but the good news is that it’s actually completely solvable. It appears the structures chosen were designed for the following reasons:

  1. Ensure insiders get fair compensation for their early work and risk taking
  2. Minimize regulatory risk
  3. Protect project capital in a safe jurisdiction
  4. Provide project oversight that is independent of the will of a single group      

Well as people aren’t getting along it seems that the structures are deadlocked. Trying to fire people isn’t going to make things any better. Furthermore, the longer the fight goes on the more angry (i.e. more tortuous) the Tezos buyers will be. Calls for refunds will convert into class action participants. A rush to deliver Tezos to market as a bastardized product won’t likely solve the problem. Nor will hiding behind purchasing agreements that claim everything is a donation, we have no relationship with you and expect nothing. People wouldn’t threaten to sue if there wasn’t some intention at the end of the rainbow.

So to clean up the mess here’s what I would do if I was the arbitrator. First, there is a loss of faith and trust in the Tezos Foundation. Whether this is fair or unfair is completely irrelevant. Funds from the Foundation and its assigns need to be transferred to an independent trust subject to an audit that covers both accounting and conduct. The audit report must be made public alongside all contractual obligations of Tezos Foundation with third parties and employment agreements.

Next, in terms of the IP transfer. The sale of software isn’t a bright idea. Transfer pricing considerations aside, there is software and there is specification. Tezos is a concept that can be formalized on paper in a machine understandable way. Then there is the software that actually runs the concept. Arthur and company should write formal specs and sell the specs to the Foundation.

Then the Foundation can submit a request for bids from software development firms to build Tezos from this spec and accept the best three bids. There is well more than enough capital in the foundation to diversify the development and it de-risks the project from over-reliance on a single vendor. A third party could be retained such as the Gallium team at Inria to select the top three. They are some of the most qualified in the world for such a task.

The best part of this process is that the community can have a lot of input about their expectations in terms of communication, accountability and transparency of the development process. With ETC, we have made it a point to always broadcast our development standups on a weekly basis on youtube via hangouts. With Cardano we have monthly counters and weekly reports. These metrics could be built into contracts.

Finally, there is the issue of liquidity. Tezos buyers are trading futures at the moment. I’d recommend issuing an ERC20 token that will be an airdrop target and getting it listed on as many exchanges as possible. This will provide liquidity for those who have lost faith and allow new actors to enter the ecosystem through the secondary market. It also reduces pressure considerably to deliver a product for the sake of delivering one thus a more natural process can take place.

As a parting note, there has been a lot of tough press about the project. I’ve personally gotten some and I understand how hard and frustrating it can be. But also understand that the investigative journalists didn’t raise a quarter billion dollars. Tezos did. They also didn’t start the board fight.

So it would be good to hold a media roundtable with Johann and the rest of the foundation board as well as the other relevant parties and let the media ask their questions. Silence and obfuscation are only going to promote deeper inquiry and more aggressive stories.

At the end of the day what is driving the stories is a concern that people who bought the token are being defrauded or treated unfairly in some way. The only way to clean this up is to explain why they are not. Hiding solves nothing.        

I doubt my opinion matters much, but thanks for reading and I hope it all gets resolved.