 Hello everybody, and maybe it's too loud. I'm here about a work for Nomadic Lab, that it's a company that develops the TASUS software. Today I'm going to talk a bit about TASUS, to talk about governance and to talk about how this is relevant to FOSDM basically. TASUS, it's a project that started about five years ago, first as one person project, then founded, then we passed through donation round, and now we are on a stable network. Why is TASUS interesting to the FOSDM community? I insisted with my company to bring TASUS here to talk about TASUS in this context, because I think that the technology we are working on can be interesting, can be not saying life changing, but it can contribute to solve a few problems. So first of all, TASUS adopts an open development model. Everything it's on GitLab, you can find all our source code and work. We develop in the clear, we accept contribution from the community. The project itself is funded through a foundation, and all the projects, all the people working on TASUS are encouraged to use open source licenses, in particular all our software is released on the MIT license. The point that I want to make today is about governance. Governance is basically this idea on how we make the protocol of blockchain to evolve, and we have seen a few struggle, let's say in the last few years, namely in the Bitcoin and Ethereum communities with different folks for different reasons, sometimes economics, sometimes it's about personality and ego, sometimes it's about technical reasons. So today I want to offer a solution to this problem. So this is the slides that you should not do on blockchain presentation. What is the blockchain? Just I wanted to put out a few important key points. First of all, blockchain its immutability, its decentralization, and its security. This is where we put our foundations and these are all the key points that we try to address on our software and of course, not all the blockchains are there to these key points for some others, some like anonymity is important, for us the governance is important. So there is always trade-off in how to be secure, I want to be anonymous, how much centralization, so which consensus algorithm you want to use, how much how you want to be resilient, if you want to have open network or closed networks, etc. The building blocks of blockchain, I mean blockchain it's kind of this bubble word that a lot of people make fun of nowadays. I put one of these papers on the notice board and say, Nomadic Labs developed blockchain technology and there was a big lol underneath the word blockchain. I understand that nowadays has become kind of a bubble word because of all this ICO and all these scams around blockchain and the ups and downs on the markets and etc. But at the end of the day for people that kind of develop blockchain, blockchain is really easy, blockchain basically it's a database, decentralized database and it's based on public cryptography use digital signature and cryptographic as function. So the cryptography around the blockchain is not kind of complicated, it's something that has already been studied, at least the basic cryptography. Then if you go to zero knowledge proof and all these others can quantum cryptography, etc. Then it's different kind of research area. Then to have a blockchain, we need to have a consensus algorithm because it's decentralized so basically we have to propose a probabilistic solution to the Byzantine general problems. If you have a closed network, you can use the standard algorithms. If you have an open network then with the Bitcoin and in the last 10 years we've seen a lot of work done in that direction. Then at the distribution level you need a way to have all these nodes in the world talking to each other. Usually peer-to-peer network or gossip network it's used to low level communications. These are for me the three basically building blocks and ingredients that we use. We call them critical address because at the end of the day we just want to record and do a bit of bookkeeping on transactions and verify identity on users and of course ensure the invutability of this data. So the design goal of thesis are two main design goals. We want to, first of all, I want to stress the world's self-amending. That is where governance come in. Governance is the process where we upgrade the protocol. By this process we have to get together and decide where we want to go, which technological advancement we want to pursue, where what our users, for example, want or sometimes also the economic consideration. So if this upgrade is done, how the market or the people are reacting to this upgrade. So it's a lot of work to try to put people together. We, thesis focus on this governance to have an on-chain mechanism to allow this protocol upgrade. I'm going to explain a bit more how this works. The second big design goal of thesis it's about security and formal verification. In my company we all come from academia, we all people that we've been working in universities for about 10 years, and we are really focusing on trying to verify, part of the code is already verified, an extractor, the apple star, part for cryptography, for example, and we're working on at least establishing a framework to formally verify smart contracts. So once you develop on the blockchain, you have some mathematical insurance that your smart contract is going to adhere to your specifications. I'm going to talk mostly today about governance, but I don't want to forget that on our blockchain, basically it's a smart contract platform as well, but today I'm going basically to ignore this part and to focus on governance. So the protocol is the heart of the blockchain. If you look at what a node does, it's basically he receives a lot of blocks and operations, and the protocol analyze these blocks or operations, sometimes accept them, validate them, sometimes they refuse them. The one that validates using a form of consensual algorithm become part of the chain, and then they get redistributed to all the others. In our terminology, we call this the economic protocol, and this is just the only part that we want to change. We want to change the rules, how blocks and operations are expressed, validated, and redistributed on the network. Everything else is what we call the framework. So the thesis model is built on two main blocks. One, it's the protocol that we can change, we can amend, and we can innovate on, and this is the part that it's about governance. The second part is about the framework. The framework is basically all the tools and belts and whistles that you need to create a node and to make it work. So the framework is kind of generic. We try to specify the interface of this framework to insert your protocol and we invite other people to develop the same framework in either programming languages. So we are not the only one developing this part of the code. It's consensus protocol agnostic. So the idea that we can plug any consensus algorithm in this framework and implement, for example, other blockchain using the same software. Of course, there is a strong emphasis on verified components, and we try to adhere to kind of best practices from the engineering perspective. It's written in OCaml. OCaml is a programming language that has been developing in France in the last 25, 30 years. So you might know ReasonML that it's produced by Facebook. ReasonML, it's basically just a bit of syntax on top of OCaml. That is a strongly-typed functional language that we have been using for developing theses. Of course, this framework has already been using production. It's pretty stable and it's continuously evolving. Going more in details about this framework, basically there's a modular architecture. We have, of course, the software for nodes, the clients that we have a common line interface, and maybe we're going to compile all these in JavaScripts as well, and use the same software to have a web framework and to build extensions. Then we have modules to build the miners that we don't call miners because they don't mind anything, since it's proof of stake, but we call them bakers. French people like Croissant, on M l'Ambulangerie. It offers also an abstraction on a distributed peer-to-peer network. It offers a powerful and extensible RPC introspection mechanism. So by RPC that are typed and automatically generated, typed and generated by a library in the code, we're able to export large part of the blockchain via JSON objects and provide this easy access to the internal data structure of the node itself. It use certified cryptography, namely Ackelstar, that it's a library that probably it's already sitting in most of your devices since it's also used by Firefox, for example. Of course, it has a protocol compiler. The protocol compiler is this component that gets OCaml code and transform it in a byte code that then it's injected into the node, linked and then allows the node to behave in a different way. In the future, we also want to go toward the certified compilation pattern, so the compiler itself is certified and it's going to ensure that the protocol that you give is actually going to respect the specification with respect to the output of the compiler. So what is governance? Governance is basically the idea to establish a digital commonwealth by all the people that have stakes and tokens in the tasers network. This means that we want to give the community the possibility to decide how the protocol is going to evolve. It's not going to, we want to avoid the idea of creating fraction and frictions in the community to reduce hard forks. We want to allow people to vote and to take ownership on these votes. Sometimes this problem, it's about convincing the large majority of people that my protocol is better than yours. This is done via an on-chain system where there is a proposal that I'm going to explain in a moment, and then there is a vote. Of course, this system rewards innovation because developers that wants to help and develop a new protocol can be rewarded. This system can be even embedded in the protocol itself. So it's like in some blockchain system where the founders get a bit of tokens every time block is mined. This is the idea that a developer get rewarded automatically with a bit of tokens once is a protocol it's voted by the community and agree to work too. It's like a payment. This is not done, but it's a possible way of seeing this evolution of the problem. Of course, this can be all changed, so the community is going to decide which direction they want to go. So why we need governance today? Well, governance, it's basically the rule of law. The protocol is what decide which block goes in, which block goes out, and which transaction are accepted. We can think about the Bitcoin block size debate, the Ethereum hard forks, and of course, kind of all the struggles that we've seen in the last few years about the communities. I've already talked a bit about innovations and how contributors might be rewarded. Also, we want to stimulate innovation and kind of giving the possibility to allow this protocol to evolve faster. How the government's corollity works. Well, there is an upgrade proposal. Then there is a first round of approval that select a few of this proposal by supermajority vote. Then by supermajority vote, there is the final upgrade proposal, and the vote is done over a period of 24 days. This is one of these system where you can even change the way we vote on the protocol, of course, because this is part of the protocol, how this is done now. We're going to do our first protocol upgrade in a few months probably. So, this is going to put to the test. We have done some small upgrade, but this is going to be the first public big protocol upgrade. So, the main data structures that we use, it's a concurrent data structure that is represented by a shared model singleton, and it's basically a linked list of monads. This is what a blockchain is for us. We use a monadic representation, so we encapsulate everything in a monad. If we want to think about this, the monad that is Bitcoin basically, it's the set of unspent UTXO plus the total work plus the block number. The operation, of course, are the transaction. If we generally speaking, we formalize all these by function that is called applied that gets a state, gets a number of operations and give us the next state. So, where I want to go here, it's how actually we are going to choose one of these states, because of course, when we apply an operation, we can have multiple states, where we have a function that is called a score. So, all the blockchain can be summarized by a function that takes a function that apply and a function that is a score. Scores basically gets a state and tells us which one is the one that it's going to be selected by the consensus algorithm. In the self-amendment blockchain, we can pack, apply, and score inside the state. So, we get these two functions and we put them in a state. Then we have a new operation that is called change and gets two arguments, apply and score, and then we introspect this into the protocol itself. Basically, we add to the model itself a third function that allow to change the protocol itself. This is the idea how this protocol amendment works in practice. How can be done in the future? Well, we can have representative democracy, we can elect certain parties to make the decision for us, or we can have some kind of constitutionalism where we can decide only to change part of the protocol, but not others. For example, we don't want to change the way we vote on the protocol. For example, there are other many ideas that we can explore and go in the direction and I'm going to skip them for lack of time. So, what are the takeaway from today? This is a self-amending Crypto Ledger. So, I talk about the self-amending part and this is what was important for me. We developed this framework to be protocol agnostic. The idea that this protocol should evolve with the contribution of the community and I invite you all to have a look at it. We're going to publish more and more documentation and information as we go. It's a system that can be used to soften all these problems related to governance that we've seen in the last few years. Also, for me as a researcher, it's very important that as a framework, it's a framework where we can experiment with the new consensus algorithm. We can plug, for example, a consensus algorithm for a private blockchain and then use it in that way and then it wouldn't impact on the rest of the system. It's just one algorithm. My dream is to have a library of protocols that we can plug in Tesla and then can evolve all at the same time independently. So, if you have questions, I invite you and these are our contacts. We are desperately trying to hire system administrator and DevOps for us. Please come to talk to me if you have any questions. Thank you. Anyone a question? So, you said the code is self-modifying. I mean, you can vote to modify the code and it's in OCaml. Is there an interpreter in OCaml interpreter? Does OCaml have an eval function that I don't know about? How does that work? No, basically, it's compiled to native code and it's dynamically linked. How it works? Basically, we get a piece of OCaml code that it's stamped and signed by the person that wants to, by the developer. You send it to everybody else for evaluation. This gets compiled, tested and then when the code is actually voted for can be dynamically linked and we basically discard the old protocol and we have the new protocol coming in. I mean, it runs in a sandbox. So, it's not that it has full access to everything. It's actually very strict on environment. Any other questions? I think I get this, but what was your motivation choosing OCaml above other languages? What is? What was your motivation in choosing OCaml rather than other languages? So, as many of these things, they go by nationality. The person that invented Tesla, Sartre-Bretman, is French and he had French education and heard about OCaml. He went to a French company that proposed OCaml and so he went in that direction. But also because OCaml is statically, is a strongly typed system. And you can get some assurances by the type system itself. Anyone else? Question? No. You talked about some assurance, some verification. Is there formal verification? Can you speak to what you're able to do with OCaml because I just don't know what the state of the art is. So, it depends what you want to verify. If you want to have a full mathematical proof, then you have to use a program like Coq that is a formal verifier and code all your system in Coq and then maybe generate OCaml code out of it. But this is kind of the hopper part. By just using the type system of OCaml, you can kind of avoid runtime errors because all your types are, I mean if you trust the compiler. So, these are one of the insurances. It is, it is. So, I think the question was how many nodes are we running now? Well, actually I don't know. There is, if you want to check it, there is, I mean the main network is on. The foundation is running, I think about 40 nodes and we use these 40 nodes to bootstrap the rest of the network. And I think we have hundreds or hundreds of people running nodes. There is a website that is called tizascan.io and you have all the information about the running nodes, block, baked and transaction and movement of tokens over there. I think we have time for one last question. Somebody has another question? No? Okay, thank you. Thank you so much.