Ethereum Smart Contracts: Empowering the Developer with Cardano’s New Virtual Machine

in #smart6 years ago

There are essentially 3 categories that Cardano puts its smart contract efforts into.

The first category is essentially Ethereum smart contract support. In other words, Cardano plans on supporting whatever Ethereum smart contracts need to be able to run seamlessly using the Cardano ecosystem.

This is essentially the idea that anyone creating smart contracts to run on the Ethereum Virtual Machine or Web Assembly once they transition over, will find support in the Cardano ecosystem if they choose to use it.

The key difference in running a smart contract in the Cardano ecosystem is that you’re simply running a different consensus algorithm and you’re using a different token (ADA).

This resembles Cardano’s commitment to integrating with the legacy technology that many developers have become accustomed to creating their smart contracts with.

You often find that each of Cardano’s innovations have the goal of empowering the developer to do things the way that they see fit. More importantly, Cardano doesn’t ask developers to forfeit the functionality they desire while giving them a new range of choices and opportunities.

For example, Cardano is currently working on using the programming language K to build a tool that will allow developers to write smart contracts in whatever language they want, click a button and compile everything - letting the machine do the heavy lifting of translating one language into another.

This will relieve overencumbered developers and make writing smart contracts much more enjoyable (see writing in Solidity) while also representing a major milestone innovation in computer science.

While giving a talk outside Harvard’s campus in Cambridge, Massachusetts, Charles Hoskinson playfully remarked on the excitement and splendor that is writing Solidity.

“I meet these Clojure developers and they’re hanging out, painting to Bob Ross, loving life, everything’s great - and you meet a Solidity developer and you’re in a basement with whisky doing cold shots, like, ‘Why won’t this work!’ ”

Levity aside, Ethereum has admitted the shortcomings of Solidity and is currently designing new languages like Viper and Bamboo. Evolution is certainly on the way.

The second category for Cardano when it comes to smart contract capability is interoperability. Cardano has plans to become universally interoperable with as many languages as possible.

Currently the market standard is LLVM for interoperability. Supported by Apple and other major companies, LLVM is also the most understood by many developers and computer scientists (similar to Haskell in terms of functional languages).

“[Cardano] based the idea of Yella (Cardano’s virtual machine, essentially a revamped and reconfigured version of the Ethereum virtual machine) on LLVM… We want to take a big technical risk, we want to invest in some theory that we think if we can pull it off, not only is great for cryptocurrencies but fundamentally changes computer science.” says Hoskinson.

The key behind this innovation is the understanding the difference between syntax and semantics.

Syntax means things like numbers, letters, characters, etc. Semantics refers to what those things mean when they are put together.

For example, “Buffalo, buffalo, buffalo, buffalo, buffalo, buffalo, buffalo, buffalo” is syntactically accurate. There are no spelling mistakes and it is grammatically sound. However, it doesn’t have a meaning. In other words, it’s semantically faulty.

As you can imagine semantics is a very subjective thing as different people could argue until they’re blue in the face about whether something has meaning or not.

Of course Cardano’s goal is to remove this ambiguity.

The beauty of formal languages, like K, is that they are designed to be understandable by machines. This gives engineers more tools with which to parse and translate them.

“What K does is it allows you to write down ‘what is your language in general all about?’ - not your program, but your language in general. So you write formal semantics of that language in this meta language called K. You do it only one time. It’s done by domain experts so people at University of Illinois Urbana-Champaign and Runtime Verification. Those people say ‘Ok, let’s write the semantics down for C...Java...Viper...Solidity and so forth. Now once you do that, then you can use a process called semantics based compilation where you can translate a K program into another...The hope is that if we can get it done then all we have to do to support a new language is pay the one-time fee of writing the semantics down.’”

If this works, it will save developers a tremendous amount of time and headaches of translating between languages while being a major innovation in terms of interoperability. Cardano is taking a significant risk in allocating their resources to this effort, so the payoff would be sizeable.