Jeff Coleman at ETHWaterloo: Blockchains and Mechanism Design
ETHGlobal·Tue, Oct 9, 2018, 12:00 AM
Jeff Coleman is a professional technology consultant living in Toronto, Canada. He is a passionate innovator, educator, and an expert in the emerging field of cryptographic blockchain technologies. At ETHWaterloo he gives a talk on mechanism design with thoughts on when you actually need a blockchain. To learn more about ETHWaterloo, visit https://ethwaterloo.com.
Transcript
thanks for sorry I was instructed as I walked up to let you know that we're using the hashtag-- eath waterloo eth waterloo for questions that you might have that arise in response to these talks at the end we will be taking some questions and we'll be doing that based on the hashtags so get to Twitter if you have questions about this yeah so I figured that since this is the the big words night I would talk about mechanism design tonight how many of you know what I'm talking about when I talk about mechanism design raise your hand all right this is that's pretty good that means this is an ethereal hackathon normally there would be no hands so the idea of mechanism design is pretty simple mechanism design is a field of mathematics it's our decision theory or economics everybody wants to lay claim to it and the basic idea is it's it's often called reverse game theory so in game theory we have some game we have some kind of system that you're participating in and we have a player who's who's deciding moves in that game and they want to choose the best moves they want to choose the moves that that lead to the kind of outcomes that they want mechanism design is the same thing except instead of being the player you're the person designing the game and we call these games mechanisms because you know want to reuse the name game that would be lame and the reason I'm gonna talk about mechanism design this evening is my end goal here is I want to give you a set of tools for thinking about how do you come up with things to build blockchain applications around and for me this story is really about mechanism design the the things that that make problems blockchain ER particular aspects of the mechanism design and so I want to kind of get you into the mindset of thinking about things from a mechanism design perspective and that also I lets you use that lens to identify opportunities for where you can build interesting and useful blockchain applications so it's not terribly theoretical we'll start little theoretical and then we'll get a little more practical so in the blockchain context when people talk on mechanism design it's really one simple mechanism that has at least 90% of the focus and that's basically the financial contract most of when you hear people talking about writing things on block seems like it here and we talk about smart contracts that term contract is a holdover from people thinking about the mechanism design of a financial contract and financial contracts are awesome I don't want to knock them I realized that financial contract is a large enough topic that even in the traditional world you can have lawyers who specialize in mutually exclusive types of financial contracts so good for them but I think it's kind of boring and kind of limited and what I want to do in this presentation is talk about something a little bit bigger about opening up our eyes to more than just the mechanism of a financial contract we understand this this idea of you know I'm gonna pay you on the condition that you do something for me that's a pretty basic design and there are a lot of applications that can be built around that idea what I want you to come away from this talk thinking is that there are a lot more different types of situations to which the same mentality can be applied when building an application so the real title of my talk is everything as a mechanism here's what I mean by everything is a mechanism a mechanism is basically a system a way of doing things that in some way shapes the behavior of the participants towards some goal and the goal is a little bit well some mechanisms don't really have goals you can argue there's naturally occurring mechanisms but in our context because we're gonna be designing the mechanisms and we're thinking about it from a design perspective a mechanism design perspective we're gonna have a particular goal in mind and I just want to go through some regular everyday examples and try to rethink them a little bit from a mechanism perspective and get it get the ball rolling here with some ideas so let's take something like spam filtering spam filtering is a mechanism when you design the system of spam filtering there's a couple of goals that you want to shape behavior towards one of the most important things that that you want as a designer of the spam filter is usually to shape the behavior of the person who is potentially receiving the spam this might seem counterintuitive initially you might think that spam is all about can we get someone to stop sending us junk well most spam filters today don't work by trying to stop people from sending you junk mostly the way they work is they try to get you the user to click that spam button when it's something that spam and the fact that you take that action train some algorithms so that it can simply read all of your mail and determine as something comes in whether or not it's been so the person whose behavior is being shaped primarily by that type of spam filter is you and it's comparatively effective I don't get a lot of spam in my inbox anymore but it's not the only way to think of designing the mechanism you could look at that same mechanism and say what what are the end goals now the actual transmission of email is not particularly expensive so it's not a huge cost that's incurred on the system to send all this information back and forth unless you're in ISP who has to deal with spam bots and botnets and and all those kinds of fun things or if your server gets compromised or okay look there are a lot of things and so another way that we could look at a mechanism like spam filtering is what if we has said one of this mechanism to shape the behavior of the person doing the spamming and that means we would have to come up with a completely different technique I'm not even going to suggest where that technique is we're just using this as an example employment employment is a mechanism again this might seem like kind of a simple financial contract type situation but employment actually leverages a lot of other things a lot of the things that people get out of the employment experience are actually things that shape their behavior more strongly than just the financial interaction a lot of people get stability out of employment they get predictability out of employment they get a sense of identity a sense of camaraderie a sense of achievement there are all kinds of aspects in which employment as America affects behavior now we're stepping into this new trend where employment is maybe not the only exclusive way that we think about incentivizing or shaping behaviors towards the goal of producing productive results and also having people satisfied with their meaningful accomplishments in life among many other goals so again I think this is a mechanism that if we wanted to you we could stop and say maybe there's some different ways we want to shape the behavior here we mean we can redesign this a little bit drug addiction I mentioned that not all that some mechanisms can be naturally occurring and sometimes the goals that a mechanism shapes you towards are not desirable the the chemicals in our brain that normally reward us for good things or that identify positive things our environment can also be directly exploited with chemical triggers and these can prove incredibly effective at shaping human behavior but again perhaps not in the direction that we want so not all mechanisms are positive but again some of them can prohibit entually be reshaped legal systems this is kind of an obvious one you might wonder what it's doing in in this list I think most of you probably would have expected to see a legal system as a method of shaping human behavior but the perspective I want you to take on the idea of legal systems as mechanisms is that a particularly GLE system or a particular set of laws is usually trying to shape a particular type of outcome one of the one of the ways that you can look at the problem of shaping a particular outcome is to ask yourself is there a different way that I could achieve the same result most of the ways that that legal systems work is by enforcing penalties or fines or rewards and incentives sometimes tax breaks all the all these sorts of things but of course humans are complex one of the the really interesting areas of research right now is trying to identify some of the more detailed psychological reasons why people do a lot of things that they do it's not always as simple as these kind of brute-force mechanisms that were used to in legal systems so sometimes you can identify something that a legal system is trying to solve and perhaps solve it more directly that's an opportunity for an application uber uber is a mechanism the reason I wanted to put a burr on this list is uber is a very slight mechanism tweaked to something that started off as just the financial contract and I think this is this is a great way to think about how you can get a significant improvement in a problem the only thing really from a mechanism design perspective that uber adds to the financial contract of paying someone to take you somewhere is that it adds reputation uber adds reputation for both drivers and for riders and adding reputation into the system actually significantly influences the way that people behave under that system mechanism design the goal is to shape the behavior of the participants and adding that additional reputation can have a significant impact on shaping the behavior of the participants police enforcement of course the natural pair of legal systems and again this is something we're familiar with but it's it's really interesting to think about this as an algorithm what are the types of situations in which police enforcement is effective one of the things we often think about it in the blotching world is what is the cost of the mechanism and we know that policing as a way of directly responding to behavior is incredibly cost inefficient it is not practical to arrest and charge every person who does anything that anybody doesn't like and so when viewed from the mechanism design perspective policing is something that really only works where you have a community that essentially has already adopted and decided to adhere to a set of standards so that only the slight deviations at the edge can be harshly and in a very cost ineffective way brought down on and then that hopefully will prevent drift beyond that edge from occurring looking at the mechanism from that perspective we can say oh well policing probably isn't going to be very effective if you criminalize something that already lots of people do that's not going to be an effective tool especially if you can't enforce that at scale and a little bit of a fun one here pick your favorite dystopian TV show or movie ever tons of TV shows and movies have this theme something terrible has happened we now have a small cluster of people trying to survive in extenuating circumstances maybe there's limited food maybe there's external physical threats there's monsters in the dark there's zombies radiation is killed almost everything alive whatever the scenario is one of the things I rarely see in any of these TV shows is people sitting down to try and carefully design mechanisms sometimes there are some mechanisms that we're familiar with so for example food rationing food rationing is a mechanism that you can use to potentially keep more people alive when food resources are scarce but now you have a little bit of complicated bite size little questions what is the punishment going to be a violent break violence breaks out who's going to enforce the punishment do you have an ability to give some smaller punishment short of some ultimate punishment these these are the sorts of things that from the mechanism design perspective will significantly influence the way that people behave under that mechanism and as application designers and as people come up with cool ideas for a hackathon this is the way that you have to learn to think about basically everything so I tried to pick examples here that are common throughout through a real life and there are better and worse ways of tackling each of these if if one of you sits down to design a police enforcement status and design something like the three strikes law and then sends it to me for an audit I will probably tell you that this is interesting because your mechanism eliminates the incentive for anyone to care about avoiding further crimes once they've committed a third trivial crime that seems like very bad design so the perspective of how you think about these these these different things can be similar in the way that you design an application and it doesn't matter how big the problem is it doesn't have to be about a financial contract it can be about something that's large in society it can be about about pretty much anything and that that is my real title here everything is a mechanism so if everything is mechanism that means that almost anything when you look out in the world and ask is this mechanism accomplishing its goal is its goal desirable that's a problem that you can tackle with mechanism design now this is a wonderful talk about mechanism design but as my colleague mentioned when I started pitching this this talk to him he said what does this have to do with blockchain um and there is a really important point here so yes I'm talking about introducing this lens of mathematics also this lens of software this lens of programming but by picture is not just that this is part of the whole mathematics in the form of software eats the entire world trend that we're in the actual thing that I want to raise here is oh we covered this point the actual thing I want to raise that's specific about block chains is that block chains can do something that almost all software can't do when you're designing a mechanism consequences so almost all real world systems almost all real world mechanisms that humans Institute that we use in society that we use in other areas to to do something to shape people's behavior in a certain way they have consequences consequences are incredibly important some examples of consequences are fines wages reputational hits disclosures rights and permissions people's personal feelings of achievement or regret these are these are really really critical parts of how these things actually shape human behavior and the problem is that software alone compared to all of this is mostly just bookkeeping if you look at what the uber software actually does it doesn't actually do any of the things that we're talking about here those things come as a result but mostly what the software does is it tracks those things when it happens so you have a system of stars stars in and of themselves don't really mean anything the only thing that stars mean is that when a human being looks at a star they say Oh more stars is good less stars is bad I'm not going to take this rider I'm not gonna take this driver someone's subjectively a human being an uber sits there and says well this driver their ratings are getting pretty low I think we're gonna fire them and that's that's still a human being solving a problem and a lot of software can get stuck in this bookkeeping type of role this is where blockchain software can be really different it can be really different in attacking these type of problem because block chains are software that can directly enact consequences again going back to our core example of the financial contract it's easy to see how a blockchain application can directly enact financial consequences if you have a balance of ether or some other crypto token that's controlled by an application and if the action that's taken by the user or by one of the participants can result in a seizing of that balance in a penalty or in a paying out of that balance as a reward that's a simple financial consequence that you can enforce but that's not the only type of thing that you can potentially track inside a blockchain that's as rich and as complex as aetherium what would reputation look like if reputational changes were made automatically and conditionally by programs and applications themselves this is something that a lot of people have been talking about for a while but it's very difficult to implement in any kind of transparent way how much authority do you give to the different components this is a mechanism design problem and the really interesting thing about block chains is that if that reputation is tracked in some kind of public auditable verifiable open source system like a blockchain not only can we predict what's going to happen so that it feels fair to human beings but also we can do this in a comparatively secure way we can answer questions like did a bunch of random people just vote this person's rating down unfairly these turned into mathematical questions we can talk about using the the anti-civil properties that meta discussed to measure how many real people actually gave this person ray we can make those ratings conditional on the presence of a pre-agreed financial transaction so in uber we can mathematically enforce not just at the software level at the core structure of the blockchain itself that you can't rate someone unless you actually took a ride with them all these are types of techniques that we can use and they're really unique to blockchain in in traditional software sometimes you can enact consequences mostly this happens when your software becomes big enough and socially important enough that things like reputation are at automatic consequence so for example if you get a lot of tweets a lot of retweets and likes on your Twitter thing Twitter itself is a big enough phenomenon that that itself is a consequence it's a reputational consequence someone who has a lot of followers might have reputation simply by virtue of the fact that they have a lot of Twitter followers but the really cool thing about block chains is you don't have to wait to get that kind of scale you could have a very small application that has very limited scope and still has very firm direct and complex consequences within that limited scope that's a very powerful tool and I think that that's that's one of the ways that you can identify what makes a application opportunity block chaining so the types of consequences that we can exact are at present there there's somewhat limited right now for a blockchain to enact a consequence it has to have control over something and this is where the the work of building out the blockchain ecosystem comes in and this is where other opportunities present themselves at hackathons one of the things that you can do to make the entire blockchain ecosystem more amazing is build a connection between a blockchain and some other real world element so this is where people talk about like like IOT devices or smart cars or smart locks or all these these objects that live in the real world but that pay attention to the blockchain to interact these are not only cool things they are not only like oh I got a smart Locker or something like this what these are is they're expanding the ecosystem of consequences that can be part of the to of mechanism design when you have more consequences that you can wrap into your application you have more opportunities to shape the behavior of your users and your participants that means that your mechanism design job is easier and you can accomplish more things and you can solve more problems so you can you can look out in the real world and identify more situations that need to change and find ways that you can actually effectively change them there are some challenges that are associated with this process so I don't want to be all rosy like oh my kanima design solves everything so there are some some issues here and we talked about some of them in vitalik stock the first one is partial information so when you're designing a mechanism one of the challenges you often run up to run up against is that the participants don't really know everything the mechanism itself it doesn't really know everything but this is a very wonderful upside see private information Steve italics entire talk see the ability for us to have cryptography and private keys this is a useful feature we can exploit this scope one of the things that a lot of mechanisms struggle with is what is the scope of the information or the behavior that you're trying to influence it's really important not only in software design in general or at a hackathon but it's really important to have a very limited scope of what it is that you're really trying to impact in your application watch out for that scope creep because it will really make your mechanism design job hard if you are literally trying to influence all behavior of all people who are participating in your application good luck here's one to really watch out for a lot of the blockchain applications that we design are are kind of operating at a particular scale and this isn't our unique problem to blockchain applications but it's something to bear in mind any time you're doing mechanism design the externalities and the external incentives that are result from or that influence our applications so sometimes you have a mechanism that insel in and of itself is perfectly fine here's a simple financial mechanism based on markets we have fuel we can burn it to make things go but it costs money to go and get the fuel how are we gonna get all the people to work together to do this yay markets so somebody will pay somebody money for this fuel if they pay lots of money somebody else will go get more fuel will burn the fuel it's awesome except if there are consequences of burning all these fuels and these weren't accounted for in the original mechanism we might have a bigger problem also on the flip side let's say you do have an external incentive that comes into the picture and it Dwarfs the scale of what you're going on this is always something that can happen in your application and it's really important to think about as part of your design so the analogy here is there's not really any financial contract today that can meaningfully survive earth being destroyed by an asteroid Elon Musk is working on that but we'll see that the if some really large external event causes harm or some really large external event causes incentives often politics has the power to do this to cause people to behave in a way that the local mechanism for a long time had never expected to be able to behave and then all of a sudden something like democracy doesn't work the way we expect it does because of the way that people are influenced or the way that people think about a certain topic people start thinking about the challenge of how to out-compete another opposing force and that becomes more important a stronger incentive to them than simply locally choosing the forces that that reflect their original choice these are things that can come up and of course the real big problem of mechanism design is you're working from a model you have a certain idea of what it is that you're trying to solve and some things are not in your model or are modeled with very low productivity like humans there's an entire field of behavioral economics here which talks about the way that humans behave a little bit unpredictably a little bit unexpectedly the way that small very abstract effects and what's happening cause people to change their behavior we had this really interesting situation this spring on the a theorem Network during the status IC o---- where a significant number of people were submitting transaction to participate in this ICO and the ICO had a limit on the gas price that was allowed to participate and people were paying more than that limit to get in so they weren't getting anything out of it from a local incentive perspective there's no reason that anyone should do this but people did it anyways you have to account for this sometimes in your application design and bad equilibria this is this is a very broad problem in it's often called market failure it's often referred to as somebody has has coined the term Molech problems to refer to these we know that a lot of times you can get in a situation where if both parties are doing local optimization over some local property the net global result that they get themselves into is not good for anyone the classic example here is a game theory game like the prisoner's dilemma where the incentives might be such that if each party is just saying option 8 dominates option B for me so I'm therefore always going to choose option A then the net result is that everybody loses out I don't have time to go into it but everyone who knows me knows that braces paradox is my favorite example of this the quick short once in summary of braces paradox is that you can add roads into a transportation network and it can slow down everyone's trip this is a very counterintuitive result so go look it up go check it out on Wikipedia if you're interested so there are some pitfalls here I call these challenges job security if you become effective at doing mechanism design there is going to be an unlimited well of problems for you to tackle because of these complexities there these fruit have not all been picked there are plenty of opportunities we have this incredibly new and rapidly growing toolset to provide new types of consequences to provide new types of even the bookkeeping side I didn't mean to malign the bookkeeping aspect of software but keeping is important there are really interesting types of bookkeeping that you can sometimes do with blockchain applications but this huge new suite of tools really does open up a massive set of opportunities and I really do want you to take the sense that if you look out in the world any system that you see and start thinking about as a mechanism that is shaping the behavior of the participants and ask yourself is the way that human behavior is shaped by this desirable does this actually produce something that we want and if not is there a better way to do it the way that you can ask if that is a blockchain mechanism design question is asking is there a type of blockchain consequence that I can enforce with software that will make this mechanism better so my takeaway thought here is if you want to be successful at this hackathon it's super simple this weekend find just one mechanism just one and make it awesome and I'll be satisfied thank you very much [Applause]
Automatic transcript — names and jargon may be misspelled.