The Emerald Platform | Build DApps on ETC

Stevan Lohja
5 min readOct 2, 2018

--

Emerald Platform
ETCDEV’s Emerald Platform at 2018 ETC Summit

The Emerald Platform is an open source project by ETCDEV Team to create tools that help developers build unstoppable decentralized applications on Ethereum Classic (ETC).

Why build decentralized applications (DApps)?

  • Unstoppable: ETC applications have a server that never shut down. That server is the Ethereum Classic world computer.
  • Banking the Unbanked: Many people do not have access to financial systems. ETC is universal and universally accessible allowing the unbanked to participate in a global economy.
  • Censorship Resistance: ETC is censorship resistant, allowing developers the freedom to innovate. Immutability is one of the censorship resistance mechanisms that help protect the human right to exchange and create value on ETC.
  • Immutability: This means unchangeable. Once a transaction is created on Ethereum Classic, it’s guaranteed to stay there. Forever.

There are many benefits to build DApps as well as challenges the Emerald Platform is continually solving.

New DApp developers will come across questions: Do I need to run a node? Do I need a test-net to develop against? Do I need a block explorer for my test-net? How do I deploy to the mainnet? And so on… These trade-offs alone may scare developers and there has not been many simple or clear answers. There are many tools available to developers such as ReMix to compile contracts, and MetaMask to interact with test contracts. However these tools do not work together, and do not provide a simple build chain to create a whole app. Presently everything is very piecemeal.

Web-3 works for DApps, however Web-3 uses the GPL license which means projects implementing it must also be GPL licensed. “Open source everything” sounds great, until a company wants to protect their commercial software.

DApp development, overall, has a lot of moving parts. There are test-nets, transactions, blocks, etc… The Emerald Platform provides a diverse set of tools that encapsulate this workflow to make DApp development easier.

Unboxing The Emerald Platform

Emerald CLI

Emerald CLI

Github | Docs

Emerald CLI has similar characteristics to Truffle Framework, however, integrates the best Emerald Platform tools for end-to-end DApp development.

emerald <command> [options]COMMANDSnew                 Create a new project
wallet Boot Emerald Wallet
explorer Boot Explorer
testrpc Run testnet for ethereum classic
deploy Deploy solidity to network
help <command> Display help for a specific command
GLOBAL OPTIONS-h, --help Display help
-V, --version Display version
--no-color Disable colors
--quiet Quiet mode - only displays warn and error messages
-v, --verbose Verbose mode - will also output debug messages

$ emerald new creates a new project based off the Emerald Starter Kit which is a simple To-Do DApp a developer can iterate from if they so choose.

$ emerald wallet boots the Emerald Wallet so developers can sign transaction in their DApps.

$ emerald explorer boots the Emerald Explorer so developers can explore blocks in their test-net environment.

$ emerald testrpc boots SputnikVM-Dev which provides a test-net with blocks, accounts — the usual blockchain subjects you’d expect in the main-net to develop against.

$ emerald deploy deploys the solidity smart contract to a network.

Emerald Starter Kit

Github | Docs

Emerald Starter Kit is barebones template for building DApps on ETC.

Emerald Starter Kit’s “ToDo” DApp screen shot
Emerald Wallet

Emerald Wallet

Github | Docs

The Emerald Wallet is the central mechanism to sign transactions for DApps. The wallet has many capabilities such as; toggling between node types, address book, multiple account support, and more. The Emerald Wallet DApp was built using the tools of the Emerald Platform.

Emerald Wallet screen shot

Emerald JS UI

Github | Docs

Emerald JS UI is a highly reusable and customizable UI component library. Developers can utilize the library to display block number, account, and other blockchain related information. Emerald JS UI only displays blockchain data, but does not fetch it. That’s why Emerald Platform has Emerald JS to feed that information to the DApp interface.

Emerald JS UI library

Emerald JS

Github | Docs

Emerald JS is a high level Javascript RPC API that’s interoperable with ETC and ETH.

Using Emerald JS UI to quickly grab a block with one line of code makes many common block operations easy.

<BlockNumber blockNumber={1} />

React declarative fetching component

<EthRpc method=”eth.getBlockNumber”>
{ blockNumber => <BlockNumber blockNumber={blockNumber} />}
</EthRpc>
Display of block number result.
Sputnik VM

SputnikVM

Github

SputnikVM is a standalone implementation of an Ethereum Virtual Machine. It aims to be an efficient, pluggable virtual machine for different Ethereum-based blockchains.

SputnikVM-Dev

SputnikVM-Dev

Github

SputnikVM-Dev is an Ethereum development EVM based off SputnikVM. Running SputnikVM-Dev provides developers with an ETC test-net that generates accounts, test ether, blocks, and supports RPC endpoints developers can use to test their DApps.

A test-net is excellent for developers to test their DApps. Developers can make transactions and play around with their DApp interfaces, but they need a familiar tool to explore transaction data. You’ve guessed it, a block explorer.

Emerald Explorer

Github

Emerald Explorer is a block explorer that can switch networks without syncing an entirely new chain.

Our goal is to provide tools to make unstoppable, high quality applications, with top notch user interfaces on top of the Ethereum Classic network that support the fundamental principles of ETC.

Join our developer community chat: http://gitter.im/etcdev-public

Join the ETC community: http://joinetc.tech

--

--