The second issue, though, stems from what could be called the worst part of contracting - those grey areas. Howlett describes it as the "creativity and flexibility that can come only from real-life experience." This is true - contracts often are matters of interpretation and situational developments, and what works for one situation may not work for others. Ideally, though, a contract leaves no room for interpretation and has a definite answer for every situation. Whether this is possible or practical for human use, is another question, and strikes at why Smart Contracts as automated computer code leave some gaps between written agreements.
One area where I do disagree (at least slightly) with Howlett is in his objection surrounding the jurisdictional issues. He notes that there is no international internet law (a point I would somewhat dispute but that is a much larger discussion for another day) as well as the difficulties in selecting and determining the jurisdiction under which the contract will be interpreted. This is a standard clause (at least under an American legal theory) in every contract, and such a provision in contained in every click-thru license agreement. Jurisdictional provisions are in the terms associated with any payment processor, any online commercial transaction, and within the terms and conditions or acceptable use policies on any website. Why Howlett cannot imagine that a Smart Contract or Automated Computer Code couldn't (and wouldn't!) contain the same language is beyond me.
I'll grant him that even with jurisdictional language included, there remain significant legal challenges regarding choice of law, venue, interpretation, and enforcement.
Interestingly, he doesn't hit on my biggest concern regarding so called Smart Contracts or Automated Computer Code - the fact that they aren't in fact smart. A fundamental tenet of Contracts practice is that you do not waive your remedies in advance or by your failure to take a certain action. A smart contract, as commonly envisioned, does just this. A favorite example is for car rental - the idea being you use your blockchain identity to walk up to car, verify your identity, and then the "Smart Contract" automatically enables you to drive the car while charging you in accordance with the terms and conditions. In this scenario, let's say your payment method fails and the Smart Contract is set to revoke access to the car. Rather than the car rental agency having to send a breach notification, give you a time to cure, and then moving to restrict your further access without payment, instead the "Smart Contract" simply deducts what money it can from your account, stops the car, and says Have a Nice Day.
No where in this process can you challenge this under any circumstances until after the fact. There is no room for necessity (a chance to say, not be stranded in the middle of desert!), there is no chance to cure (by say, providing access to alternative forms of payment), there is no place for administrative errors to be corrected. In my view, this is a glaring oversight to calling automated computer code based on the blockchain Smart Contracts.