The Emerald Platform | Build DApps on ETC
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 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 commandGLOBAL 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
Emerald Starter Kit is barebones template for building DApps on ETC.
Emerald Wallet
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 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
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>
SputnikVM
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 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
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