A group of Ethereum Classic developers wants Ethereum Classic to be known as more than a “cut-and-paste” version of the Ethereum blockchain. So they spent seven months building Mantis, a unique Ethereum Classic client, from scratch. And it is not hard to understand their motivation.
Since Ethereum Classic split away from Ethereum as a result of the DAO hard fork last summer, the two smart contract platforms have shared the same codebase, the same smart contract development tools and more. In fact, aside from a few protocol changes, like defusing the difficulty bomb and capping the monetary policy on the Ethereum Classic chain, for all intents and purposes, the two networks have been nearly identical. But now Ethereum Classic is striking out on its own in a move developers behind the effort hope will position the platform as a viable alternative to Ethereum. Earlier this week, Alan McSherry, Ethereum Classic developer and Mantis project lead, announced the beta version of the new Ethereum Classic client in a blog post. Built in the functional programming language Scala, Mantis represents a serious effort by the Ethereum Classic community to gain recognition for having its own team of developers on par with those of Ethereum. Mantis also sets the foundation for future innovations in Ethereum Classic. “This is a good starting point for our influence in the Ethereum Classic community,” said McSherry, in speaking with Bitcoin Magazine. “We are able to say we have built from the ground up a client in Scala. And, when it comes to the future direction of Ethereum Classic, we have a pretty good handle on what we are talking about.” But before getting into why the developers of the project chose to build a client in Scala, first, what is a client?
A Blockchain Client
In a distributed ledger, a client refers to the software that runs on a computer, or “node,” connected to the network. A blockchain client is responsible for downloading and keeping up to date an entire copy of the blockchain. In a sense, it also acts like a server in that it also serves the other nodes in the network by doing things like verifying blocks, checking that transactions include signatures and so on. In that respect, Mantis essentially represents a full end-to-end copy of Ethereum. It contains the mining verification algorithm, the consensus algorithm, all the network logic, the cryptography that allows users to spend their coins and the logic to verify smart contracts. As a client, Mantis also provides interfaces for creating transactions. Still in beta, Mantis supports a command-line interface version of a wallet for making transactions. Users can also access the client from the Mist browser over HTTP. To be clear, Mantis is not the only client available to Ethereum Classic users. Other groups may be working on other clients, said McSherry. And the Ethereum Classic community maintains two other Ethereum clients: Geth, written in Go, and Parity, written in Rust. But McSherry explained that the hope is that Mantis will eventually become the flagship client for Ethereum Classic.
Mantis is different from existing Ethereum clients in that it was written in Scala, a functional programming language. Scala is touted for benefits that include ease of testing and predictability, characteristics that allow developers to audit the code for bugs and security flaws more easily than other languages. “If you have more predictable code, that will leverage itself up to the overall quality of the product,” McSherry said. But there are levels of functional languages. Scala is more of a hybrid language that sits between heavyweight functional languages, like Haskell and OCaml, that draw the academic and science crowd and the user-friendly world of Java. And this means that while Scala allows developers to write in a functional style, it still has a fairly easy learning curve, making it accessible to a broad community of developers who may want to contribute to the open-source code. McSherry explained that because Scala is a functional language, it is also open to applying frameworks, such as Stainless, that use rigorous mathematical proofs to check that the code performs as intended. It is a theme that plays well in the Ethereum Classic community’s stance on immutability and the idea that if “code is law” then smart contracts need to run in a more secure environment. “The ultimate goal is a much higher-quality code, and obviously, that means much higher security for the funds that are controlled,” McSherry said.
In terms of a road map for Ethereum Classic, Mantis is a stepping stone to bigger things and perhaps a greater technical divergence from Ethereum. For instance, plans are to eventually connect Mantis to IOHK’s cryptocurrency wallet platform Daedalus, giving Mantis a graphical interface. “That’s the next focus,” McSherry said. But for now, Mantis is being made available to other developers who are willing to try out the code in a testnet environment and provide their feedback. “We are delighted to have gotten to this stage where we have the functionality out the door,” says McSherry. “The next phase is to polish the functionality, look at the performance of it, go back and clean up, and make it a top, top client.” He said he expects the next release of Mantis as soon as September.