Both. The whole idea is stunningly naive in multiple different ways.

First, because the idea of "the law" as some sort of operating system for society or even the concept of the law as a program is extremely dangerous and fraught with difficulties. And most legal systems in the world have built in systems to ensure that there are elements of flexibility through humans bringing subjective judgment to bear connecting the inflexible "programmatic" elements of the law, so that errors, bugs, incompleteness, paradoxes, etc. in the law do not have undue negative consequences on society. The idea of a completely programmatic system of law, even in contract law, should be monstrously frightening. This is the stuff of kafkaesque nightmares, of unfeeling and inflexible bureaucracy which has in it no room for humans or human life. To the extent that there are programmatic aspects of law that could be good, these must have a "safety valve" that allows them to be overriden and human judgment applied. Consider how often everyone has experienced a moment of frustration when trying to get some sort of customer service while hearing a clerk or service person say "sorry, the system just doesn't allow that". And indeed we've seen precisely what happens when you lock yourself into a contract system with zero human oversight, Ethereum proved that it did need oversight, and bolting it on after the fact is much more costly (if perhaps impossible) than building it in from the start.

Second, there is a stunning naivety about logic and computing involved. One common misconception of developers with an immature understanding of computing is the idea that software is deterministic. In theory software can be deterministic, but largely in a way that is completely irrelevant quite often. It's deterministic the way dice are deterministic or fluid dynamics or computation of the mandlebrot set are. In practice it's not possible for humans to understand and reason about systems that might exhibit a stunning degree of complexity despite being very simply designed.

Additionally, it ignores several well known fundamental problems in computer science, such as the halting problem and the problem of decidability. As well as several thorny problems in software engineering. Even if you work only within the space of "provably correct" software systems, that still doesn't save you because one of the most common kinds of software engineering errors is an omission at the design stage. Software that provably does exactly what you've specified, but when you've specified the wrong thing is unhelpful.

The whole idea relies on behavior of both humans and software that are not only unrealistic but provably impossible. It requires that everyone write 100% perfect bug free code for every contract and to be able to read code and determine conclusively with minimal effort exactly what it does and also verify that it is 100% bug free.

If any of that were possible the direct applications of being able to do such magical things in software development would vastly outstrip the use in contracts or cryptocurrency, by orders of magnitude. If we had the formula to make bug free software with minimal effort the world would be an utterly different place.