Agreement Making in Solidity: A Legal Perspective

Devcon 1 · November 2015 · 16:18

Bill Marino of Cornell Tech looks at agreement making in Solidity from a legal perspective. The talk asks how contract law concepts map onto smart contracts, and what it means for parties to form, perform and enforce an agreement when the terms are written as code on Ethereum.

Speakers

Topics

From Devcon 1, hosted by Ethereum Foundation.

Transcript

next up we have a talk from Bill Murray no he is a lawyer turned computer scientist and he is turek talking about agreement making in athyrium from a legal perspective bill check check you guys can hear me okay all right like Jesse said I am a lawyer and I'm also a computer science student at Cornell Tech in New York City so today I'm going to be talking about how some contract law issues and other legal issues mess mesh on to making smart contracts in athyrium and I'm actually going to start in all places in Venice actually I was walking along the Greek now about 18 months ago

with my beautiful girlfriend and we happened upon a man who had a Jason Voorhees tattoo on his leg and of course I got very excited because i also have a Jason Voorhees tattoo on my leg I got it free on Craigslist actually and it's a really good story that I can tell you at the bar tonight ow you're asking yourself why is this relevant it's relevant for two reasons first of all it's friday the 13th and second of all because jason voorhees as you may remember from the bevy of sequels in the franchise was an unstoppable force and sometimes when you create a smart contracts in a fury em you're creating an unstoppable force and that affects some of the contract law and legal

issues surrounding agreement making on the platform so let me switch gears we'll put a pin or maybe a machete in the unstoppable force thing for a little bit let me just define contract for you this is the definition of a contract at law this is um the one put out by cornell university's legal information institute which is a great resource by the way contract and agreement creating obligations enforceable by law now some of you guys who have been here we will immediately notice that this very we that we refer to things here in the etherium community that are outside of this very circumscribed legal definition of contract right we refer we call things that are really more like

processes or agents contracts you've probably heard it all week if you go to the solidity tutorial you'll see that the very first contract on there is a simple storage it's really more like an agent you know it's a place to set and get data conversely sometimes I think when we are using the term smart contract with reference to athyrium we actually are talking about something that falls under that legal definitions umbrella so this week you've also heard about things like rental agreements mortgage agreements founders agreements over-the-counter derivatives contracts insurance contracts and then that a bunt do guys like prostitute contract I never

thought of bunt you would be the ones to go there what it happened so all of these are like I said under that kind of legal definition and baby by now you're already saying like you know what what does this guy talking about like are we here to kind of tear down contract law and maybe tear down the courts and replace these things with um I think Gavin actually said it nicely the court of the Internet and the answer is yes but you know I'm a litigator so I have sort of courtside seats that's upon to how expensive enforcing agreements in court is but at the same time I think and this is kind of my thesis for today

I don't think that we want to reject contract law I think as we're building out this platform and we're thinking about how to best create agreements in the fear iam smart contracts we actually want to look at contract law we want to learn from it we want to embrace it there's a couple benefits there one is that if we create contracts legal contracts we protect ourselves against auto enforcement failing and maybe in the early early years of the platform that happen it can happen two different ways right you can have something that auto enforces and even when it auto enforces a party you will say well it wasn't a

real contract at law so I'm not really bound to it conversely you can have the opposite which is you can have something that fails to auto enforce right and then you want to go to court to try to enforce it there was a misfire so we kind of create this backstop if we are looking at contract long and trying to track it closely we also benefit from contract law principles you know contract law was at one time a lot like etherium it was an invention it was new and shiny and its purpose was to create reliability and to hold people to their promises and so I think we can we can learn from its principles and then

lastly if we are careful about how we treat contract law and other laws in these early years I think that we can show the world that this is a substitute for legal agreement making and on board a lot of people onto the platform that way okay so I'm going to tell you guys a couple pointers how you can kind of look towards contract law and learn from it and so forth and I want this to be an ongoing discussion you know as you heard I'm a lawyer who's in school for computer science and I've been digging into a theorem for maybe five or six months maximum so these are kind of some of my observations and some of the

things I'm thinking about and let's keep the conversation going that's kind of the overarching theme here so I'm one thing you can do though that I've noticed is I think there's a lot of benefit to learning contract law and then writing functions and choreographing initializations such that you closely track it I don't think that you really need a lawyer to learn contract law you know we're in the age of googling and auto didacticism I think that's a word where you can pretty much teach yourself anything and although the legal community has built this kind of farcical moat around legal knowledge I think maybe it's time for us to start tearing that down if if you can debug you know a test net by by pouring

over stack exchange for hours then I think you can master some of the principles of contract law those are things like offer acceptance consideration I'm not going to get into to those right now because my time has been cut down a little bit but I'm go home read about these things I'm here to help you and after you kind of get a mastery of them what I would try to do is write contract functions and also think about like initializing contracts in ways that Hugh closely to these building blocks of contract law actually the other day vivillon and Christian and Alex they built a contract here on stage and solidity and maybe subconsciously

they did a really good job of tracking offer and acceptance very closely so I would um go and check out their code after you have a chance to read about offer and acceptance and so forth okay just as a side note if you do follow these principles really closely courts had been pretty good about enforcing digital agreements when they contain those contract law elements a while several years ago there was this wave of legislation that legitimized digital signatures and and since then courts have been eager to enforce all sorts of digital agreements from people creating an agreement by emailing back and forth

to click wrap agreements so bye-bye like I said before hewing closely to these contract law building blocks you probably create something that's enforceable in court if it's not automatically unfortunate sometimes those things don't really map onto functions very well these are things like choice of law provisions warranties and dim enough occations and something that's a little bit more specific to the etherium universe I think there's a lot of benefit to having these kind of ancillary agreements one is maybe something that choreographs how the parties are going to call functions you know contracts are not self waking so unless you're using something like Piper's

amazing alarm clock application you you want to agree with the other party beforehand how are you guys are going to call functions and related to that as you might also want to have some policies for gas reimbursement so all of these things are not easy at least right now I don't see ways that they easily map onto functions so I would think about them and think if there are other ways you can build them into your smart contracts there's a couple of hacks here that I've been looking at and I'm definitely curious to hear you guys ideas these are everything from just putting them in your solidity comments which is not very good because it it doesn't keep it you know holistically with the rest of the contract I think things like swarm I PFS Nats spec those might be good places to stash these

other things so I'm looking all of that I think byte code would be the ideal place to stash that kind of stuff but I don't know that that's feasible if it if it is feasible we should maybe start that conversation another thing is to engineer evidentiary lay one of the best things about law school is it kind of teaches you to start thinking with eyes towards court you know everything you do your kind of thinking like what if this winds up in court and when you're creating smart contracts that can be a useful thing even if we're not talking about brick and mortar chords we could be talking about some kind of digital dispute resolution distributed dispute resolution maybe be thinking about those

things while you're creating your smart contracts and I'm going to t this up this way imagine that we had a Venn diagram okay and it was people who know solidity and then people in this room you might think that there's probably a lot of overlap right and that might look like Garfield's eyes okay see there's a lot of overlap gah now let's create another Venn diagram people who know solidity and I don't need to like disparage the other languages I just I work mostly in solidity so let's create solidity and then potential jury members and that you can imagine is less overlap so it might look like sponge Bob's eyes just a teeny little overlap and then lastly let's do a Venn diagram

of people who know solidity and then judges and as you can probably guess there's basically no overlap and then as for good measure I would also just put a big separation between them so it's kind of like Stewie's eyes that's the Venn diagram so this is a long-winded way of saying that if you ever have to take your code into court or maybe even to some sort of consensus based dispute resolution contract that is operated by humans there they might not be able to read your code so you might want to think about a couple hats than ways to get around that issue and some of the ones that have come up with you know

like what I mean to say is like think about embellishing your solidity code with legible contract style language and it's it's sort of like the hacks I was talking about earlier I'm not quite sure where to pop them at this point you might pop them in your solidity code you might pop them in some of these ancillary stores like swarm and that spec you might even think of paper or offline agreements that can somehow communicate with your smart contracts but are legible to judges and jury members and so forth ok one last way to embrace contract law is to pay attention to the special risks of creating that unstoppable force that we talked about

before gavel ESET it nicely earlier I think you're talking about the system but he said there's no reset and that's also true of your contracts they're immutable they're automatically enforcing so that comes to play in a differ a couple different areas one is is rescission modification Reformation so in normal contract law sometimes circumstances change and the parties want to go in and undo their contract that's called a mutual decision sometimes a court orders parties to go in and undo their contract they might do that for example of one party was a minor that is called rescission the parties might also have a reason to modify their agreement that's usually just called modification doesn't really have an

and sometimes the court orders the parties to modify their contracts this might be because they did a bad job of distilling their intentions into writing so you need to think about this and ways to kind of reconstruct like how do you go about these things how do you rescind the contract how do you reform it I'm going to skip a little bit ahead because i'm getting the time signal but i have a couple hacks here you know they involve the enums that Christian was talking about earlier in the week are amazing to turn like your functions on and off and so forth sometimes I think suicide is a better idea you don't just deal with these things with respect to rescission Reformation but also what if something

illegal winds up in your contract everything from hippo violating medical data to non PCI compliant credit card data to Jared the subway guy kind of stuff like if those things wind up in your contract what do you do how do you peel them out so that something you have to think about in my last couple of minutes I want to just focus on a potpourri of issues all in this realm ok so I'm a New Yorker and lately scoring f feels a lot like trying to score meth which is that it's impossible it seems like a lot of the ethics changes have that evacuated the markets in the wake of bit license actually I kind of have

proof of that this is my rejection of cripsy we aren't able to approve your application at this time due to New York virtual currency bit license requirements and this is my rejection from crack in unfortunately we no longer offer our services to residents in New York due to bit license so I think we we should be talking about this like is this regulation having a chilling effect on development actually I was at an event with Jesse you know three weeks ago on a couple people coming out to him and asking like where can I get at it seems so hard so let's be thur let's talk about that we need more engineers who know law in more lawyers who can code that's kind of why I'm here to help start bridging that gap and we need a

lot more like me I work for I do research for this awesome crypto currency and crypto contract initiative that's a partnership between professors at UMD Cornell in Berkeley it's called ic3 that's the website you should definitely check it out here are my acknowledgments a lot of people helped me prepare this talk including some of the people in this room thank you so much and then lastly let's make this an annual thing at the end clap for me to come back because I want to I want to come here every year and talk about the development of these like legal issues I think everything is in this kind of nascent stage and you know let's let's all have this conversation continued

that's it thank you so much