Any type of language can be ambiguous, even something as commonplace as the word “chicken.”
At the recent Cornell Blockchain Conference, Professor of Law James Grimmelmann talked about how ambiguities in natural language that have proven contentious in courts of law for centuries can manifest in smart contracts as well.
To start the conversation on how language can affect a legal contract, Grimmelmann described the famous case of Frigaliment Importing Co. v. B.N.S. International Sales Corp. This case focused on a disagreement on how to define the word “chicken.” The buyer defined it as “a young chicken suitable for broiling and frying,” whereas the seller said it was “any bird… of the species Gallus gallus domesticus” — and depending on the context, both definitions could be considered correct.
As language evolves, the common usages of words change and, subsequently, statements containing those words are altered in meaning. According to Grimmelmann, smart contracts were created in an attempt to remove this ambiguity but even contracts made of code can be uncertain.
“All natural language contains ambiguities,” said Grimmelmann. “The problem is that language is social. Words have meanings based upon how they are used and that can change — language is a stream that is always moving and changing, and that means the contracts that try to rely upon language to fix parties’ obligations can be ambiguous.” This was true, he emphasized, even for smart contracts.
For a basic example, take the expression “2 + 2” in the programming language, Python. The result will always be “4,” and any other answer than that would be unanimously considered wrong. However, the program only knows this because humans have agreed that the sequence of symbols “2 + 2″ results in 4 in Python. It is a social convention, just like choosing to use the word “chicken” to refer to a specific type of bird.
“It’s only when there’s no serious disagreement about the social facts that the technical facts [based upon] them are unambiguous.”
If people collectively decided that “2 + 2″ in Python should result in 5 in Python” then all instances of “2 + 2″ producing 4” would become incorrect. This is also the case for the programming languages, like Solidity, used to write smart contracts on blockchains. However, Grimmelmann believes blockchain developers shouldn’t allow the risk of ambiguity to dissuade them from pursuing the use of smart contracts in the future.
“All is not lost,” he said. “Smart contracts don’t have to be perfect. If they are better than legal contracts for some applications, that’s enough.”