EB136 – Arthur Breitman: Tezos - A Self-Amending Crypto-Ledger

20 Jun 2016 · 1:13:36

Arthur Breitman, lead of the Tezos project, explains why he sees control of a cryptocurrency as a governance problem rather than a technical one, and how Tezos lets stakeholders vote on changes to its own rules, an idea drawn from the self-amending game Nomic. He outlines the planned process of proposals, approval voting, a 60% vote and a trial period on the testnet, along with delegated voting keys and his doubts about the current quorum rule. He also discusses futarchy, argues that smart contracts mostly need simple business logic, and presents a strongly typed, formally specified contract language that suits formal verification. He closes with a possible Bitcoin-based token distribution and a target launch in late summer or early fall.

Speakers

Topics

Transcript

[Music] this episode of epicenter Bitcoin is brought to you by Jax Jax is the userfriendly wallet that works across all your devices and handles both Bitcoin and ether go to jx. and embrace the future of cryptocurrency wallets welcome to Center Bitcoin the show which talks about startups Technologies and projects driving decentralization and the global blockchain Revolution my name is Brian faan Crane and I'm me Roy today we are going to talk to Arthur breitman who's

the lead of the tesos project tesos is aiming to launch a cryptocurrency with a very unique governance mechanism and uh smart contract system we'll talk to arur about uh what's special about tasos but before we begin let's have a short intro from Arthur Arthur your intro hi uh my name is Arthur bman uh uh I grew up in French which is why I have a bit of a French accent uh I've been uh working in uh Finance over the past 10 years and uh I've also been uh involved into cryptocurrencies and in particular um I was involved with tesos which um is a cryptocurrency that aims to solve a weird problem which is which many people

don't see as a technological problem but which I think is is a governance problem and the governance problem is the idea of thing who really controls a currency uh and if you're thinking of something like Bitcoin you might say okay what controls the limits on bitcoin you know why is there 21 million Bitcoin and the naive answer is to say well it's a code you know the code of Bitcoin is a rule the code is what determines how many Bitcoins you have and then the question is says well yes but what deserves a fork and is is a fork you say well you know I can always use the original version of Bitcoin I'll only use a version which has 20 1 million coins okay but if you do that um then what about what what are other people going to do you know are they

going to use the same version as you or are they going to use the new version which maybe has 30 million coins and what really matters is what other people are going to do what other people are going to value and what they're going to value is going to depend on what they perceive other people are going to Value it's a sort of a beauty contest and that's that is completely a social phenomenon essentially if there's a perception that a certain Fork is valid that a certain Fork has Authority then people are going to be following that and that is essentially is what's going to control the governance you might think that you're escaping it by having these inflexible rules but you're not so the closest thing that you have is basically a cultural very strong um cultural bias towards saying No this

should be the rules and any departure from those rules is seen as IL legitimates it's sort of a taboo but that taboo can be broken and many people have been talking about uh actually breaking it for for Bitcoin so instead of trying to have this weird system where we try to keep uh Forks to a minimum I want to have a system where we can have Forks but whenever they happen they're not going to happen through this informal process where it's whoever can you know shout the loudest or have the most natural Authority um I want the process to be formal and so the the way tesos offers to do that is basically to put all the stakeholders of the currency um in in control I want all the updates

to the protocol to happen within the protocol um and when I I started thinking about that when someone said uh it was a conference and and and someone said hey you know if you're not mining in Bitcoin you're not in in control because miners control Bitcoin and I was like well you know that's not completely true because if everyone changes their clients then you know there's nothing that minor can do about it you know if everyone decides you know what tomorrow we want to switch to a different mining algorithm all the miners would be screwed and there's nothing they could do about it um but also I I don't want the Min even if the miners were in charge I don't want the miners to be in charge their incentives are not aligned to the holders of the currency so who's really in charge and I wanted to put the

uh I wanted to put the stakeholders of the currency in charge of all the um the changes that could happen and at the time of the when the when the tesos uh paper came out in 200 4 basically the T the paper made the point of like look you know I'm going to sound crazy paranoid right now because obviously the cevs are are these great and nice people but you know caves could could use their influence to try to push for forks and then we had this huge battle about block size and I was like oh my God it's actually you know it's it's actually happening we have this governance um problem um now this you know um and yeah and the funnest thing it was like okay you know we're trying to solve a problem which is essentially a problem of

consensus on what the protocol should be and we have this consensus form forming technology which is a blockchain to begin with so why not use it to form the consensus on what we actually want to do and so it starts sounding very loopy because you're thinking okay we're going to use a blockchain to change what the blockchain is doing and yes so this is actually exactly what we do um we have rules on tesos um that allow people to vote on a change to what the rules are going to be including the rules for voting and so that's um there that ID was developed by a philosopher named Peter subber Peter subber came up

with a game called nomic and the idea of nomic is that you start with a set of small rules but the small rules allow for changes to the rules themselves and then you can grow the game like this now some of you might have played nomic and if you've ever played nomic you know that the games can be pretty crazy and that's because the rules are designed to be very open-ended uh in tesos we have open Ed rules but we also start with a seed protocol and that seed protocol is going to Define what you can um sorry it's going to define the first Rules by which you're going to be able to make changes and those rules are conservative you in general you don't want to have too many changes you only want to have a

change if there's a clear majority in favor of that change and the idea is to progressively become attracted to a better and better governance system so depending on when you start on this governance landscape you can either diverge and get something that's going to be completely crazy and useless or you can converge towards good governance and that's where uh I'm hoping I'm placing the original uh protocol in okay that's very interesting and uh yeah very thorough introduction that I think already address a lot of the questions that we were going to have I think what's particularly interesting is that you've with Tesla know because you starting this in 2014 you're working on a lot of the things

that now have become kind of pressing issues right so the one thing is the question of incentives right so between Miners and the the token holders then there's the the question of how does one upgrade the protocol and I think you're certainly right that now that is widely perceived to be a massive issue certainly in Bitcoin ethereum well we'll see um and and that you started working on this explicitly so early on why do you think why do you think you saw that as problems back then but others didn't I I think that people really

wanted to believe that you know code was going to replace all of these social problems they they really want you know um there was this very very popular meme at the time and it's kind of died off a little bit which is you know Bitcoin is based on mass H nothing you know Bitcoin is completely mathematical there's nothing you can do to break it and so on so forth mass is this platinic thing which is pure and Incorruptible and therefore nothing bad can happen to bitcoin because mass and the idea is like yes well you know there is some mess but it's still embedded into society and you know bad things can happen and and people with very reluctant to even ADM the possibility that this type of thing would happen they would say well you know you can always use a real version of Bitcoin

that is so true and and it's such it's just such a patently ridiculous statement to say like you know Bitcoin Securities is like math right because it just very clearly is not right this an economic security models and if the minor want to do something else then math is not going to help you one little bit so I I think that's a great point I mean there there is to be sure there is some mass that does give you strong guarantees so for example the mass behind uh hashing function even though it's not proven there's there are very very strong conjectures that would tell us that you know the mass you know indeed you will need astronomical amounts of power if you wanted to

reverse a hashing function of computing power and I'm not just talking about a lot you know billions of computing power we're talking about you know orders of magnitude which are similar to like the energy in the universe this or or or like a star this type of um this type of guarantees so these are very very strong guarantees and then you have the consensus itself which is based on the idea that well you know we hoping that the miners are not going to get compromised you know you know they're not going to get kidnapped and forced to um the mining pool operators are not going to get kidnapped and forced to do a fork uh we suppose that they actually care about making money and they don't want to destroy the network they're all this type of assumptions and these have nothing to do with mathematics you can

have the best you know you you can have all the proofs you want about reaching consensus in the end it depends on miners deciding to do the right thing and that's going to be an economic and social problem and not not a mathematical one yeah very interesting like I I've been I I read your paper a year back and over the past year I've increasingly kind of realized that like like the Visionary aspect of your paper cuz you know you're working on governance when none of these problems were seemed obvious and then I finally decided okay let's have you on the show I mean thanks for having me yeah like thanks for coming on cuz like this is really the kind of conversation we've we've been

wanting to have for a long time especially Brian I think now uh let's get into the uh mechanics of of this protocol upgrades right like let's go down down and dirty so the base is like let's let's assume tesos is starts off as a proof of stake system right we'll not not get into DET details of proof of state so so there's a blockchain which means there's like a network there's a a set of transaction rules right so how how how what consideres a valid valid transaction Etc and then there's a set of consensus rules that's how any blockchain protocol that's how the seed starts how can let's say we call the seed S1 or something how

can you go from S1 to S2 which is and say an upgraded version of S1 in tesos okay uh so the way you go from S1 to S2 depends on rules which are embedded in S1 uh you know I'm still working on those rules but the the general outline for the rules in S1 is that you have a two-phase vote the first part is people are going to make propositions so what does a proposition look like so in tesos we try to have many layers of encapsulation uh in order uh um to give us some guarantee about the safety of the system and at the top layer you have something called the economic protocol and it doesn't know

anything about the network it doesn't know anything about your file system or Hardware or anything like that it's a very very uh it's a it's as small as possible piece of code that describes all the rules that you're using for making transaction and for deciding which branch is a valid Branch uh inside the blockchain now and this piece of code basically can be swapped you can repace this piece of code with another one so right now this piece of code is S1 as you call it you could replace it with S2 so the first thing you're going to do is that people are going to take S1 maybe fix some bugs make some changes call it S2 then they're going to Hash S2 and they're going to publish the hash on a

blockchain and say hey here's a proposal I want to do this and of course if you just see the hash you don't know what the proposal is but while they'll do probably you know in they'll post on GitHub their proposal and then they'll say like hey everyone you know this is my proposal look at it and because the hash is on the blockchain people can check that the hash corresponds to the to the to the proposition now the first round is called approval voting and approval voting is a very robust voting procedure it will use it was used in the Republic of Venice it has very good properties and the idea is that let's say there is 100 proposal everyone looks at every proposal and say I like this one or I don't like this one I like this one I don't like this one then you sum

all the yes and the Nays for each proposal and you take the one which was most popular now that one is going to be subject to a vote itself and for that vote we're going to require a majority of 60% of people so once you've decided what we're going to voting on then we're going to decide okay do we want this or not just just briefly inter interrupting here yes so you said you know there may would be a variety of proposals people would vote on it and then the one with the highest would get through but what time period are we talking about here I mean if are votes happening like is there a set period I don't know once a month where one can submit proposals and then through the next weeks the votes or how does that work how would that work so I think in right now initially

the city protocol uh has uh allowance for quarterly votes and it's basically on the order of months between each uh each steps you know for propositions votes uh acceptance and so and so forth so so let's say there was a a bug found or so that that wouldn't be a way to upgrade the protocol you know if if there's an emergency or some flaw is found yeah yes it's not it's not a good emergency procedure the idea is that if we find some bugs and of course you know you're going to time you're going to tend to find bugs early on if you find some bug you can issue a patch and why why why wouldn't you want to use the Govern

procedure to uh to do that well because of governance procedure you want it to be slow and you want it to be careful and conservative but bugs are not very controversial you know if you find a bug like you know there in 2010 um Bitcoin had this overflow bug where you know you could create a transaction which had billions of Bitcoin on each side starting from zero because of an integer overflow and you know of course they reverted that there was a patch because it was there was no question that this was invalid it was it was very obvious so if you have this kind of very very obvious bug you can have a patch because there's so widespread consensus that you're not doing anything wrong when you're pushing this patch it's for the stuff that is more controversial and and the stuff

that is more controversial generally does not require an immediate fix so I I I I it's not it's not a good mechanism for that it's think of it more of like okay we have this new mechanism for scaling but uh it has some trade-offs what do we want to do that's not something you need to push in an emergency let's take a short break to talk about Jax Jax is a cryptocurrency wallet created by the people at the central now there are two cryptocurrencies that matter at the moment one is Bitcoin and one is ether but using them can be tricky what wallet you use how do you secured them where did I leave my umbrella it's all a big mess and that's where Jax comes in Jax

is a UniFi wallet it works across all your devices it works for the Android phone Apple iPhone it works for your desktop computer and they have browser extensions for Chrome and Firefox and it works for both currencies at the same time it works for Bitcoin and it works for ether one of the things that makes Jax as delightful as walking through the fifth atoni small of Paris on a Sunday morning and getting a whiff of fresh pastries is how they leverage HD wallets so they use a 12-word single backup seed for all three currencies and make it super easy to sync your wallets across all your devices so if you're using the Chrome extension or the desktop app you just whip out your phone scan the QR code and boom your wallets are synced

and plus uh the people at Jax take your security very seriously it's open source so anybody can look at the code and plus they never hold any customer funds all the keys are stored locally uh on the client side so go to ja.io that's jx. download the Jax wallet right now and understand what it's like to use a Next Generation wallet we'd like to thank Jack for their support of epicenter let's try to make make make this Make This brilliant concept a bit uh tangible so so let's let's go back to this story where with what happened with Bitcoin when Gavin came up with the idea of increasing the block size right so initially initially there was a lot of debate like Gavin said 20 MB blocks lots

of debate at some point Gavin and and Mike uh hn they realized that uh typing into Bitcoin for Bitcoin talk Forum isn't going to help anymore so they said okay we are going to go for a hard folk and we are going to try to convince all of these miners to uh to also potentially accept that hard folk signal their intent to accept that hard folk and then if 75% or whatever percent signal their intent then we are going to go ahead with it right now now let's imagine that same scenario happening with something like tesos in this case what would happen as I imagine it would yeah maybe

maybe the charismatic Gavin Anderson of tazos comes and says okay we should do this and then he tries to convince the minor or stakeholders of tesos to do this but the stakeholders can always say hey if you have such a cool idea why don't you go through the governance process that is built in our blockchain itself rather than try to convince us to do a hard folk yeah that's exactly right so I I think it ties into a question that people sometimes ask in politics um you know what if you look at the US Constitution what makes it self-enforcing because people say well the Constitution is not self- enforcing you know it's just a a set of rules so why why would it have any weight on what

people actually do and the reason is that most power most political power is held through shelling points they're held through game theortical focal points and the idea is the following if you break a set of established rules then you become suspicious and then there is implicitly coordination against you so of course someone could propose a hard Fork someone could propose in you know what let's move in this different direction but like you're saying if you start doing that people are going to saying wait a second you know we have a mechanism for doing this why are you bypassing the mechanism if you're bypassing the mechanism then you must be doing something wrong and by default we're going to be against you so that's

how you essentially protect yourself against outside influ outside Forks because they're seen as illegitimate by default because you have this allowance for Forks if you never needed any Fork if you never needed any upgrade anything then we wouldn't need this whole governance procedure we would have just something that never changes but if you need to have changes you can't can't have you can't just say like oh well we'll have the changes come from the outside because if you do that then how do you sort between you know the good ones and and and the bad ones so this is this is enally why um I'm not just pushing the problem further by integrating it inside the blockchain I'm creating the expectation that all changes have to come through this

procedure have to come to this approval this is essentially how institutions work institutions work because people form expectation around them and they form expectation about what other people's expectation are going to be this is great cuz because as you know may pointed out before that i' been sort of asking people like every every time somebody came with like some new protocol whether it's you know or talking with ethereum or Bitcoin or zcash or all these other things so so what's the mechanism going to be by which You' sort of decide on the evolution of the protocol and nobody ever had a particularly you know coherent answer I mean there could have been various

degrees of coherent answers but nobody really uh built a system that takes this into account from the outset and Designs a mechanism of this upgrading in so I'm really exciting excited that you've done that here thank you I'm excited too let's have like a small naughty problem out of the way now now now you're saying that any any potential upgrades to the product protocol have to go through a two-phased voting process where we first try to sort through all of the proposal out out there and at a certain time point and say okay which one are we going to really consider and then in the next phase stakeholders are going to vote on it and you need 60% of

the coin holders to vote Yes to a proposal to finally upgrade the blockchain what happens when stakeholders don't end up voting and you don't have Quorum like this even though the Dow just left a month uh we saw this that a lot of very important proposals to the Dow ended up getting just five or 6% of uh very low voter turnout so what happens then yeah it's a big problem so I have three mitigations to that the first one is that um in every contract that you have on tesos you can set a key for a delegate and there are two reasons for

doing that one is that in general you don't want to be making voting decisions with a key that hold your funds because you you could be putting that key at risk maybe you want to have this key in a cold wallet so you want to have a different key for just voting Which is less sensitive than actually spending your money but you could also put the key of someone else so you can have a system like liquid democracy where you're saying okay you know what I don't trust myself to evaluate propositions on this network but I do trust these people you know I think they're good people they're making good decisions so I'm going to give them my voting Power by choosing my key and if they start doing things I don't like then I can change it I can you know in in one transaction I

can say okay you know what now I'm going to give my voting power to someone else so the fact that many I think the reason many people didn't vote in a dow is that many people were just buying these tokens uh for speculation they were saying like oh maybe I'll go up you know I'll buy some they're not really interested in participating and people are always going to be doing that and if people do that at least I want them to be able to say okay and I'll just delegate my voting power to someone else so that gives you a way to really increase your Quorum but even if you do that people are going to lose coins uh PE delegates are going to lose their keys and people are not going to upgrade the delegates so the current way this works in in um in tesos which would be

the second level of protection is that at every election you sense what the Quorum is and your required Quorum goes down at every election based on the participation in the previous one I'm not happy with this mechanism because if you have low participation for a lot of Elections you could weaken your system to the point where few people could change uh could change the balance of things so I don't really like this very much fortunately uh it's something that can be changed in S2 or S3 um so the the type of things that I have in mind for uh for changing this are essentially um requiring proofs of activities uh uh maybe yearly or so for for uh for coins

to be able to participate in votes so that you can sense the Quorum not based on like whether or not people are voting but whether or not people are making transactions or possibly charging people for not uh participating or for not having valid uh delegates there are many solutions that can be uh that can be implemented I think the I think for the first few elections we should be okay but it's something that we'll need to address in the future so is this built already or is this a concept like right now with tasers does there exist already the mechanism of for example having a separate key that do voting and delegation and all these things yes so uh absolutely so the the the project has been in development for two years we

have about uh we have an alpha so uh most of it work I can tell you the thing that doesn't quite yet work so to give you an idea because that's a much shorter list so the things that do not work quite yet we have the mechanism for changing the protocol on a fly and for voting we don't have yet at the network layer the uh rule for downloading the protocol from your peers uh you know you can download block transactions we're not yet downloading new protocols um you know you mentioned it was a two-phase uh for the vote it's actually three-phase um because at the end of the second phase basically you replace your test net so the test net of S1 become S2 then you keep that for a

month and then at the end of that you have another vote saying okay okay we tested that for a month do we really really want this and then if you say Yes again then S2 becomes uh S1 so that um the test net right now has a couple bugs and we are still working as well on uh the forging clients which is the clients that people run to actually like create blogs and send them to the network the rest which is a consensus algorithm Works um changing the protocol Works uh transactions smart contracts all of that is uh all that is implemented so now in your in your position paper um you mentioned you

mentioned that futari can also be used to decide on protocol upgrades right and across the whole ethereum ecosystem like futar is this bus word supposed to be the end of the governance problem but I haven't actually seen it working ever um so are are are you are you are you going to try to implement futaki in seed one or do you expect further iterations of the protocol to get a faki like governance system also in definitely further uh FY has not been tested I have somewhat uh conservative rules for changing the protocol uh I'm

very excited about the prospects for it especially since um you have a natural Target for the fter key which is a value of the token itself um so you know just just to explain quickly in fter key the idea is to say we are going to the slogan that Robin Hansen has is uh vote on uh values and bets on beliefs and the idea is that we should decide what we want first and that may be a collective decision but that how to implement it how to get there we can have prediction markets and those prediction markets are uh going to tell us conditionally which proposal is the most likely to uh to succeed so here we have a natural value which might be the value of the tokens themselves and we have also a blockchain

which is a really good a good medium for uh organizing this prediction Market uh to begin with so it is uh it is an interesting uh it is an interesting ID some of the limitations uh possibly of that ID is that you have a moral hazard sometimes so you know if you make the prediction that if a certain policy is taken then you know uh good thing uh good things will happen you could bet against that and then out of Bend you could try to make sure that the policy will not happen um or if you don't have very liquid markets uh you could have uh you could possibly have some people

influence the decision uh maybe by pouring money into it now Robin hunson thinks that's not the case um that you know if you start having that people will just Arbitrage it and make even more money by correcting the market I'm willing to accept it's possible for very liquid markets I don't know I don't know for sure that it does happen with um with L liquid markets what I do know and I think that's very important is something that people don't talk about when they talk about fkey in Robin Hanson's proposal of prediction markets the mar there is a market maker in these markets and that market maker is subsidized and the idea is that you are taking money and you're giving it to someone and that someone is going to lose money to more informed Traders and

this is a very important aspect because you cannot do all this research of finding out which policy is the best without actually investing money and investing time in it and so this is why there's a subsidy and often times people think that oh you can just have a prediction market and people will bet well there's this thing called a no trade cem which means that if you're not trying to hedge a risk if you're not trying to invest in a business you should not be betting on a market because if you're betting and someone else takes your bet then they probably know more than you do so people are overconfidence and since they're overconfidence they're going to bet anyway but you cannot just use people's overconfidence in order to subsidize your research you need to have another source what's really nice with a governance system like uh like tesos is

that in tesos we can say hey you know what we'll issue coins and those coins will be used to subsidize the market making so you can actually um get a liquid Market out of this um so that's that's one possibility however to go back to your original question like do we want to have that in Squad no certainly not and not even in S2 what we would want is probably to have two systems in parallel one where we have okay we'll have futter key but then we'll have another another round of voting on top of that to act as a fail safe and the way I look at voting um I'm not P so I'm I'm I'm not I don't think that voting leads to very good decisions in general but I do think that voting is a good mechanism for avoiding really bad decisions uh it's it's a it's more of

the VTO tool than it is of than it is a decision tool so possibly something like that possibly you know fter key to decide something and then uh a veto power there's is interesting um in lonstein you know small European country it's a monarchy but they have a Constitution and the Constitution says that the people can actually vote out the Monarch and that's I think that's an interesting system because you're saying no you know what we're not going to actually ask you to pick someone but if get really bad you can get someone out and you know I I think democracies has many many flaws but one of the things that it gets right I think is this ability to take people out of

office cool very interesting so one of the things that you wrote about in the tesas paper which I I I didn't fully understand or didn't understand really at all so I would love to dive into so I said that tesus can instantiate any blockchainbased ledger so it can instantiate something like Bitcoin some like ethereum can you explain what that means uh yes so when I was thinking about uh trying to replace the protocol with something else you know trying to change what should be the change and one one way to do this would be to say well you know the protocol is just some executable that you run on your machine so we'll just change that you know we'll

just send you a batch to the binary and that's not a very good that's not a very good model because people have many different platforms and you might want to have different implementation so you needed to change something more parametric uh something um something smaller that would describe uh the protocol in an an an ambiguous way and so in order to do that I said okay so what constitutes a blockchain algorithm you know what are all the parameters that come into it and if you think about it they all pretty much look at the following thing you have a state that you want shared between many people and you want the state to be changeable so I'll take the example of Bitcoin in

Bitcoin this state is the state of unspent transaction outputs if you want a snapshot of Bitcoin at at a given time that's basically what it is it tells you okay these are all of the available addresses and the scripts that are associated with them and this is what you can spend anything that happened before is only Ed for validation and then you have operations so in operations on bitcoin is a transaction you take an inspect output and then you you transform it into another you take a bunch of inspect outputs and then you transform them into another Bunch uh of unpent outputs so you have operations you have blocks which are uh sets of operations and you have a state so your

brocken protocol is basically the following you have a function which I call apply which takes a state takes a block applies the operations of the blocks to the state and gives you a new state or possibly tells you this is invalid okay so now let's say you do that well the problem is that if you have many people editing the state at the same time you're not going to end up with a nice linked list like a blockchain you're going to end up like a tree it's going to be a huge tree with many many Forks so you want to say okay well I don't want a tree I just want one version of reality um I just want one leaf of that tree and so you have a second function which is going to tell you how real is that Branch you know how

valuable is that branch and you're going to just pick the branch which is the the most canonical the most valuable and in Bitcoin that would be the branch with the most total hashing power or in a proof of stake system it might be the branch with the most signature in a centralized system it might be the branch that has been signed by uh the the The Trusted uh centralized parties and so as long as you have a protocol that implements this two function apply and a fitness fun function that tells you which Lea to piig you can Implement any auction protocol almost any um I think that so if you have things like ghost where you're rewarding Uncle blocks it's not going to be uh it's not going to be expressible in that framework so I don't

think you can express etherum exactly but you can get things which are very close to uh very close to that and all of the uh all of the other protocols can be uh can be expressed in that framework so so if I understand it correctly what you're saying is that because tesas can evolve right and because you can change change variety of rules and and looking at it in this in this General way of having a block some transformation and then the new block or uh because of that uh tasos could evolve to do what ethereum does to do what Bitcoin does or to do some variety of other things so it could essentially evolve into pretty much any uh cryptocurrency protocol

that's right yeah so so basically it's like it's like this seed that has this Evolution mechanism inbuilt and it can evolve probably in probably it has many different directions it can evolve towards and yeah the stakeholders pick which direction to go and if you think that your if you own units of this currency and you think the other guys that are owning units of this currency are smart and you will evolve in a great Direction then uh you might just end up building a a really valuable system right that's a hope and it's very important so there's this concept uh in mathematics called bin of Attraction you have it's in optimization when you're trying sometimes to optimize

a function you will start with a point and then you will follow gradient and you'll try to get a better a better point so you'll start with a value and you say okay I move it a little in this direction and make it better a little in Direction you make it better and you end up at the bottom of a valley and it matters greatly where you where where you where you start because if you if you start near a poor equilibrium then you might go in that direction instead so it's important that the seed protocol it doesn't have to be perfect it just had to be in the right Basin of Attraction it just had to be in a place such that starting from this position and following the rules we're going to end up with a better set of rules and a virtu and a virtual

Circle oh that's an awesome analogy right like you're talking about greedy optimization right is that correct uh yes so so uh most most optim most numerical optimization local optimization is is going to be greedy if you look for example at you neural Nets now are are popular again uh what they're doing when they're when they're learning is that they they look at an example they see you know they see the mistake they make when they're trying to classify it and then they move a little bit in a direction that would have made them better at classifying it so they're very myopics they just try to greedily uh improve the uh improve the system and we can be a little less greedy with this because it's not you know you have a lot of people who think about the protocol

and they're going to try to go in in the right direction uh the reason I mentioning this is that people who have played NX they say like oh well you know this is crazy because people are just going to vote for all these crazy roles and then you're going to just like devolve into something really bad and it's possible if you start from you know if if you're way too willing to accept any type of changes at the beginning then yes you could you could go into this crazy spiral when it just becomes kind of a joke but if you're close enough to a solid state where you know where you have these virual circles then you then you can get something uh really good out of it so your role as if I understand what you're saying correctly it's like your

role as a founder of tasos is like you conceive the governance mechanism you conceive the process yes that's a big contribution but your other big contribution has to be that the seed protocol has to start off with a set of fun functionality uh core functionality that is such that it leads the community to go in a in a virtuous Direction rather than in a in a chaotic Direction Where Community doesn't know what's the final destination where it wants to go right that's kind of your your kind of it's like you have this responsibility on your shoulder to come up with a good seat protocol because the further evolution is going to depend on the starting State on the initial state

right yes yes I mean and and and it's almost every institution you can think of has crazy past dependency I mean you know like people in the US today are are talking about Constitution and they're talking about decisions that were were hundreds of years ago so if you think of like the weight that that implic I I I don't know if you know the the framework of the Constitution had this idea of like the weight of their words but it's but it's huge and so you yes you can you can have tremendous repercussions way way way down the line today's magic word is evolution that's e v o l u t i o n head over to Let's talkit pon.com to sign in into the

magic word and claim your part of the listener reward so uh like I I could go on and on about this topic for a long time but there are other interesting aspects of tasos that we need to touch upon and there are other interesting topics we want to talk about with you so one of them is smart contracts and the seed protocol of tados as I understand it is also innovating on how how smart contracts should work right so tell us a a bit about all of the Innovations you're doing on the smart contract side hi yes so um yeah I I believe smart contracts are very uh are very important to have and they

solve uh a lot of problems um that uh are interesting in The decentralized Ledger space so one of the reasons not to get smart contracts is to say well you know all you need is to have this mechanism for transferring tokens and then you can just rely on third parties uh in order to execute those contracts and the problem with that is well there's one of trust because you need to be able to trust a a third party but there's also one of uh automation it is very nice when you know that the network is just going to work on itself you know that you don't have to worry about the up time of the third party you know that you don't have to uh to pay them you know you don't have to give them Keys it's just going to be automatically executed by the network there's a lot of

value to that there's also value in the it that smart contracts can act as escrow so right now you see uh things like ogre for example on ethereum in their prediction markets and one of the beauty of it is that they are able to build that and as a company they're not holding anyone's fund which legally um helps them because they're saying well you know it's a smart contract so who is the custodian the custodian is the network itself so that's uh that that's why why I have Smart contracts why am I doing it differently than ethereum so there's a kind of dichotomy in how ethereum sees its own smart contract on the one hand they are saying like well the world's computer you know you can buy all these computations and

so on so forth but on the other and and that's also why you know they're trying to to optimize the uh the AEM virtual machine they're trying to make it fast and so and so forth but on the other hand if you if you look at what people actually want to use this for most of the logic you want in Trans in smart contracts is not you don't you don't want to be running competition you want to be running very very simple business logic it's basically if and then it's it it doesn't you know you're not going to be running protein folding distributed on the ethereum network it would be crazy because all the computation is done many many times that's not what it's for it's not the world's computer it's a bunch of very simple business roles that you're implementing uh so a lot of the features such as saying like

Okay you know we're going to have unlimited execution time and you pay for this execution first of all that doesn't work and that doesn't work because if you go out and say okay I'm going to create a contract and that contract basically you create an infinite Loop and then you put a huge transaction fee and you say okay this is a gigantic transaction fee because this contracts it actually runs for hours you put this you put this transaction out and you say okay now I mine it and I pay myself the fee so you haven't lost anything now the other miners they have two choice either they just trust you they say like well you know what I'm just going to I'm just going to say like yeah sure that's fine or they waste all their time verifying

this and so you you're going to have a problem which is you're only rewarding the person who Minds a block and whereas you should be rewarding everyone for the computation so instead of doing that and in in practice in ethereum they have a cap limit which is going to be the block gas limit so instead of doing that we say okay you know what we're just going to rate limit that we're going to make people pay for every resources that they use so there's going to be a limit on the computation time so that we are sure that everyone can all the participants can verify it and there's uh there's no way to game this uh the system by having these very long computations we're going to make you pay for storage how much you're storing and so on so forth can I interrupt briefly here yes so that that

was a very interesting point right that so let's say I'm I'm a big ether minor I can put some gigantic pointless thing into the block I mind myself pay myself the big fee so it actually doesn't cost me anything and then it kind of creates a big cost for the network so I think that's an very interesting flaw uh quite obvious one um but so how is that different here cuz so here we have a cap which is basically saying okay we're going to allow you to run a certain amount of computation and it's not going to be a it's not going to be a crazy amount and the amount that will let you basically think of it as you would think about the block size it's it's a threshold that as long as it's underneath this it's

reasonable to be doing that but then I could still put in like loads and loads of pointless computations no yes and so it's optimized so that the amount of computation that you could have total in a block is always going to be reasonable and you have that you know you you have that as well in uh in uh in eum with the gas limits what I'm what I'm saying here is not that eum has this like very very large flow what I'm saying is that the idea that oh you're just paying for competition time is is not uh is it's not really sound because you're not really you're not really trying to do this very complicated calculation you know you're just trying to run very U you're just starting to run simple

business logic however it's very important to get that logic right and in order to get it right what we have is a smart contract language which has a full formal specification and which is very strongly typed and the ID behind this is that we don't want to say oh we're going to have this low level assembly and we're going to optimize it because no we're not we're not we're not trying to run this numerical computations we're we're trying to do something precise and know exactly very well what we're doing and so this language allows you to get very strong guarantees about the behavior of your contract so there's a field called formal verification which

uh has been you know has been existing for a while it's um it's has existed pretty much as long as computer science has existed it was uh really pushed by uh computer scientists for example like irn dictra was explaining hey you know it's very important that we produce proofs mathematical proofs that the program that we write are correct and in fact what he was suggesting was saying you know instead of writing a program and then writing the proof that it's correct we're going to try to write the program and grows a proof with it so program can be a proof in itself now one way you can do some of that is by having um very strong typing guarantees so strongly typed languages like haskal and okl for example have these properties

where you have very strong guarantees at compiled time that you're not going to have two objects of widely different types uh be confused and it's not going to you know it's not going to remove any bug but it does remove a lot of bug one of the experience that many people who uh work with these languages have is that when they write some code very often you know they it will not compile and getting it to compile very often is a very similar process as what other people might experience debugging but the very difference is that once you've compiled it you have much you're going to have much less bugs than you would have otherwise the idea of formal verification is super

that even further instead of just checking checking types we're going to check every property so you write a smart contracts and you're going to say okay I want to have the property that money is never going to leave the contract at a greater rate than you know a certain amount per day and this is a mathematical property and you're going to be able to produce a proof of this property by looking at the code of the contract now in principle you could do this with any language you know I could give you any Lang any programming language and sure you could make a mathematical proof but for that to happen that language needs to be very ambiguous it needs to have a full formal specification and also if your language is just some basic assembly that shifts

some values in Ram it's going to be much harder to come up with these proofs than if your language has a certain structure now the language of the smart contract for stos has been designed uh to begin with to um facilitate those proofs and the people have been working with are actually people who have a lot of expertise in the field of formal verification I don't think it's perfect uh first of all because people are not necessarily going to write these proofs though I want to encourage them to and and the system definitely does that but also because it's it can be difficult you know it can be difficult to produce this proofs I try to make it as easy as possible what I want to in vision for the future is to have a um a description language so

imagine that instead of encoding what your contract will do at every step you encoded instead properties of the contract you said okay this contract will you know this contract has to pay this much when such a certain Com when certain uh properties are true this contract has can never spend more than x you just write a of constraints that you want on your program and as humans it's very much easier for us to express what we want in terms of constraints rather than in term of behavior so you should be able to write all these constraints and then have a compiler automatically takes those constraints and produce code that is going to validate those

constraints produce a minimal smart contract that can actually um satisfies those so that that is not S1 just to be very clear S1 has a very nice formally specified language that will make it easy to write proofs but this is where we want to be headed a few weeks ago we told you about the Gtech blockchain contest we asked you to submit your blockchain startup ideas for your chance to win 50,000 in grant money from rwe Gtech and gumbus well over 100 startups submitted their ideas including 16 of you are listeners well the results are in and the winner of the grand prize is arcade City a project with the radical idea to cut the middleman out of Rod sharing and the Run ups are cargo chain a blockchain

distance to improve international trade especially in the shipping industry and Clippers a decentralized permanent document storage solution intended to guarantee intellectual property without a middleman congratulations to the winners and we wish you lots of success with your projects if you have a blockchain startup out year and think Berlin could be the home where you you are going to grow your company into a billion doll Behemoth then make sure you check out Gtech or the Gtech entrepreneurship Center G has a lot of programs workshops startup acmy uh provide office space to help companies grow quickly work on really Innovative Concepts so make sure you check out their website check out Gtech

Berlin that's GT c. p l i n and we hope to see some of you in Berlin soon we would like to thank GTE rwe and gumbus for their support of epicenter Bitcoin so if if you can kind of contrast here the sort of ethereum approach right so solidity being quite similar to JavaScript and being kind of made in a way that's hopefully reasonably easy for people to you know code some smart contracts but then issuing being here that well lots of Errors right different types and stuff like that and then also when it gets compiled down that stuff is hard to

analyze and hard to do proofs on whereas um the tasos approach is sort of enforcing as much as possible using a language that is verifiable and that kind of prevents a lot of box being created is that the kind of accurate description of the two approaches yeah absolutely and and in fact so um I uh I saw recently that the solidity compiler is not deterministic so you don't you know you don't always necessarily produce the same uh the same assembly code for serum which is uh which is crazy dangerous because you want to be able to analyze what the

contract does and so you don't want to be you don't want to be just given a bunch of uh of assembly code and say okay you know this is this is what you're putting Mone into this is very uh this is very dangerous and we've seen that with a with a DA which basically had this huge bug you know yesterday uh $50 million worse were stolen from the uh from the contract you want to have contracts which can be verified which can be inspected AUM has this philosophy of trying to make the language as minimalistic as possible and I think that works well if you're designing a CPU something very general purpose but for smart contracts I think you want to have a rich language at the basis of it with a formal specification so that you

know exactly what you're doing but you want to have these high level Primitives that allow you to Express meaningfully what you're doing and not just say like okay we're just going to be shifting a lot of bits people need to be able to inspect the contracts and understand what's happening okay so I think like uh like your answer is is brilliant and um I'm going to try to kind of boil it down into uh into some examples right and and maybe maybe I'll be all wrong so so the first thing you say is the language should be should should be strongly typed so by that I mean uh so so so typing meaning like any variable

could have you know it could be uint uint 32 string Etc you're saying like the language should have a lot of different types there should be while compiling uh the language should guarantee that there's never a step in the code where you are adding like a string to a uint right by default whenever you wrote a codee and maybe it has some error where you're adding a string like meah to an integer like 1 2 3 uh and this kind of error is there and that's going to you know halt the code during execution so this kind of code would never compil down and it would be very hard to get it the code to compile

because it's verifying in whether in all of these conditions there are errors like these or not right yes that's that's that's one aspect of it the second aspect you say say is um that you should be able to have proofs so the the example I uh that comes in my head when when you say this is so let's let's see let's let's take what happened to the Dow so for like I've studed kind of the contract of the Dow and what roughly what happened is in the Dow whenever you make a withdrawal let's say there's like one variable that tracks how much withdrawal was made and then there are actual transactions which are doing the withdrawals now in the Dow code it there

was a possibility to have this variable stay the same while there were output transactions happening so normally the way the Dow authors is intended is whenever there's a withdrawal this uh varable should uh record that but there was a possibility that was the hack basically where uh instead of changing this value you could still do a withdrawal or instead of changing this value only once you could withdraw or 10 times so when you say a formal proof should be allowed what that means is once I wrote the smart contract I can prove that whenever there is a withdrawal this variable will definitively be uh changed or incremented or decremented whichever way

I like it right so I can prove to anybody that something like the Dow hack could never happen inside my code right so uh yeah so that something you could prove absolutely what you want you would want to prove a more General thing so and I'll just say word about proof after this but what see you would want to prove for example is say Okay I want to prove that it's never possible for people to use a split procedure to get more token than they actually control to begin with that's a property you would want to prove you don't even want to prove something about that variable because maybe they would be another way to do it you want to prove this high level properties so with proofs it's always possible that you

will forget to prove something you will prove a lot of properties in the system and then and there's one property you care about that you will forget to prove however the alternative to proves uh which is most commonly done today is unit test so with a unit test you have a piece of code and then you think of many many different cases and you make sure that your test has a that your program has a correct behavior for each of these tests and that's a really good thing and people don't always do it but it's very important to uh to test your program proofs is like a super version of test instead of testing specific problems you can test very large classes of problem instead of saying I want to make sure that I get the right output in this instance you want to make you say I want

to make sure that my output always has certain properties for these very large classes of instance so you can you can get much stronger guarantees you would want to make many proofs not just one proof you w want to prove that people cannot you know get away with steal money from the fund you will prove you will want to prove that the fun cannot disappear do all these do all these sorts of proof that's the type of thing you would expect to go back about uh the first thing about types so I use strongly typed and uh I I I use the word Loosely many people people sometimes mean different saying what I really am talking about is static type checking where you're making sure that at compile time you're looking at all the types and

you know that they you know that the logic of your program is going to be correct regardless of what your input is going to be so you give the example of adding a string in an in and yes uh so that's something you would catch but you might saying okay well what's a big deal I don't see myself adding a string to an end how is that a real problem so the idea is that you can use a type system to uh get a little more out of it so for example you will give a different type to a token than you would give to an integer so for example you might be counting uh the number of people who participate in the contract and then you might be counting uh how many tokens you have well you might you never want to actually sum those two numbers because

they they're both integers but they mean completely different thing and with a type system you can make sure that all the types that represent money for example or that represents token or that represent votes are always are not going to mix they're always going to be the WR type and that's the type of bug that that you might have and that you would catch okay that's that's that's super interesting so I've I've Al also kind of read in some of your writings that um you've said that formal verification is uh is as a discipline has been has had a long history but U never found a lot of practical application and you said the technolog is now mature and we should

use this technology in smart contract so I would like to ask like why hasn't it found a lot of applications still so formal verification is difficult uh it's really hard to come up with this proofs what has happened recently in recent years is that we've come up with better and better proof assistance so um one of the uh proof assistance uh that uh I'm I'm trying to work with is a proof assistant called uh it's a French word Coq it means a rooster uh and you know the entire tesos code base is written in a camel is written in a camel you can take programs in this language and Export them to C so there's

a lot of symbiosis between the two languages so this proof assistants have become much better so now we're able to make more proofs but it's still expensive to make a proof so the right circumstance under which you might want to use formal verification is when you have a small code base because it's easier to make a proof about a small piece of code than about a very large piece of code and when you have a lot of value at stake so right now uh the place where it's happening is aerospace engineering so in aerospace engineering engering they have some programs and they're sometimes small programs but if they get it wrong it's very very expensive to fix right maybe your rocket blows up so they're using formal verification because it's a good use case smart contracts is a perfect use case for formal verification because

there's a lot of value at stake and there's a small piece of code so this is exactly in the sweet spot where we should be doing it it's you know we're not going to be doing formal verification on verifying something like an entire operating system anytime soon but we can do it for smart contracts and we absolutely should okay so I think I think I think this is like an awesome section and perhaps perhaps we should have you on later to kind of drill down into this a bit but if you if you're kind of listening to this section and and maybe maybe this section went a went very technical so I I'll just give you kind of an analogy for it so so imagine like when we invented like I don't know steam engines and we had boilers and steam engines so these were devices

where we were burning coal putting steam into it the risk was you put too much steam into it it bursts and if you look at the history of steam engine technology for the first 100 Years A lot of people died because steam engines and boilers burst then we invented something which is was a safety wall right once you put too much steam inside it there's going to be a wall that's that will open and let the steam out and that has resulted in so many lives saved over over time right so you can think of smart contract technology today what we have with solidity to be like something like the steam engine with no safety walles so in in the hands of an inep programmer you could have conditions where things happen and a lot of money

is lost but there is this particular technology where you could Institute something like safety walls which are like formal proofs that say a certain type of thing can never happen inside this particular code so it's like the safety valve of smart contra cont technology that Arthur here is talking about right would that be a good analogy Arthur yeah I think so and uh I was uh you know I was sad to see after the Dow we had a lot of people online saying like oh well this shows why smart contract can never work and this you know this shows why you know we need to have all this institution instead and and deal with the problem socially the you know a lot of people were saying the idea of like oh

replacing contracts with code can never work because people will always make mistake and I'm like okay hang on hang on I don't want smart contracts to die because of uh a mistakes like this because I think they're a very very promising technology but and there's been a lot of research uh Andrew Miller has done uh tremendous work uh showing how easy it is for people to get them wrong to make small mistakes um they will that will have large consequences and people have been ignoring that research and they really should not because it's it's it's it's it's it's super it's super important to get it right but it's possible we actually have the techn techology to make sure that the smart contracts don't blow up in our face like a like a steam engine so we talked before a little bit

about where tesas is at and it sounds like you know you're very far and a lot has been built and you've been working on this for two years so what's next for tesas and when is the uh the thing actually going to launch so hopefully uh we're trying to uh Target launch end of the summer early fall uh that would be ideal uh maybe midall if uh if we get a little delayed um one of the things that is uh a blocker right now is making sure that the that the network is resilient to do because I think that a lot of new networks tend to be dust by people who don't want to see new networks and so we

want to make sure that we have uh enough resilience at least to sustain uh to Su a launch and that requires uh that requires a lot of testing so mostly this some you know there's some buges a few features which are not implemented some rough patches but mostly we're um mostly we have a we have a working uh prototype uh we've had for a while it's really uh a lot of polishing work uh happening right now and also you know um I was not really promoting disos for a long time and uh right now I uh I went back to promoting it I want to get people interested uh in a project and I want people to hear about it before we launch I don't want to uh launch it and no one

knows about it and I mean launch with a proof of stake system right there's not going to be mining so how is the currency or the tokens is there going to be a crowd sale or is there going to be some other way of Distributing those uh so we're looking at several options at the moment one of the option that we are definitely going to have it might not be the only thing uh you mentioned crowd sale there might be some form of crowd sale um one of the option we're looking at is doing something like a Bitcoin drop and the idea is the following um the idea is that we take a snapshot of the Bitcoin blockchain and then we take the snapshot and we put it we put it into a miracle tree and then

we embed the root of that tree inside the Genesis block of tsos and what it what it gives you is possibility of saying let's say I own some Bitcoins I can form a proof that I own an unpend output you know at this at this stage of Bitcoin I can insert that proof as a special transaction inside the tesos blockchain and receive tokens so that's one way to uh that's one way we can use to um to distribute the token to distribute some tokens okay very interesting yeah and uh and so you mentioned also that tesos is is a company so and you've kind of been bootstrapping that do you see a longer term business model here for the company or what's the relationship going to be

between the entity and the protocol itself right oh I I'll just add something to the previous question which is that you know even though there's no mining there is block forging and there is a reward for actually participating into the uh the proof of stti uh activity which is um very it has I think it's very very slightly inflationary at the beginning but it's not it it's um it's it's nominal inflation which means that it doesn't really devalue the currency because you basically receive it in proportion to the tokens that you already hold so it only change the nominal of the uh of the currency it doesn't mean that it doesn't dilute uh

anyone the uh but the other thing also is that if you don't want to uh if you don't want to be participating in proof of stake you can delegate it to someone else and that person is going to collect rewards so people who actually contribute resources to the network who run nodes actually receive uh can receive tokens out of of out of doing this so regarding yes so the cont you know the tus project has been bootstrapping for a while um going forward uh I think in practice you know who's going to propose you know S2 S3 S4 and so on so forth uh I think for the for the time being uh most of the you know most of the protocol updates are going to uh are going to come uh are going to come from us uh for the time

being the idea of having the governance model is not so much that that we're so bad at making proposition that we really need anyone else to be doing it it's is a safety valve uh it's the idea of saying okay you know we don't want I don't want we don't want to turn evil and just start saying like Okay you know now we have to take our CH our uh we have to like uh you have to take or change if you look at it you know you might say okay what's what's eum governance model where do they have the ethereum foundation okay but then yesterday we already had uh this big questions like well you know should they do a Forex should they not do a Fork to save it Dow and then they were like well we let the miners decide and like wait a

second you know what does the miners have to do you know what does the miners have to do with this you know they're not they're not the one holding the eers they're not the stakeholders so yeah for for for the time being we're we're going to be basically proposing upgrades to the protocol and try to make it as good as we can cool uh fantastic Arthur thanks so much it was a it was a really great discussion and and super interesting now you mentioned that you know you're sort of gearing up to launch and you would like to get people more involved uh where can they go and and what can they do to to get involved in the project so right now so okay so this is this is an important question sometimes people say like oh well you know where's

your where's your git repository or sometimes they say where's your GitHub because git can only exist on GitHub uh but we have not released a source because of tsos so tsos is going to be released open source you know there's no way you can do a decentralized ledger without having an open source code base um the reason we have not released the the source code is that when eum launched it had it had a source code out but it also had a very long road show you know there were a seral meetups all across the world people were talking about it and so and so forth so they had this perceived legitimacy we're a very very small project if I release you know if we releas the source code immediately there are some people who are going to there's some people who are immediately going to

try to Fork it and who going to try to uh and who are going to try to launch it and people did this with theerum and the reason they didn't really succeed is because people were still following the main project so we want to build this legitimacy first to be seen as yes you know this is the official tesos development before we actually release anything uh we will release the code of course prior to the launch because we want as many people looking at it as possible before we uh we launch anything but that's probably not going to happen until September uh I'm giving a talk at the Str group conference in September and so yes the code will be uh available by then um but so what can people do right now for contributing I would like to get

uh people to start discussing about the projects you know seeing what their IDs are uh for governance seeing you know what they would like to see in uh uh in tesos we have uh a smart contract language um which tries to have as many uh high level primitive as possible it would be great to start seeing tools uh to build around this language uh compilers all this type of uh all this type of stuff but for now I would like to get some I would I would like to get some awareness I would like to get people starting talking about it and uh and giving feedback on the project okay well thanks so much and of course we'll we'll put links to the website white paper uh and and the other stuff you've written on there and

there's a way to sign up for the mailing list as well so maybe people want to do that if they want to kind of keep a breast of the latest developments here uh Arthur thanks so much for coming on it was a great pleasure likewise thank you very much so yeah with that we're at our end so epis and Bitcoin is part of the LTB Network you can get this show and many others at let's talk bitcoin.com we're also still doing this uh t-shirt contest so if you leave us an iTunes review just send us an email at show epb.com and we'll email you one of those so thanks so much and we look forward to being back next week [Music]

[Music] n