Hackernoon logoEOS Development Startup Guide by@nickpai

EOS Development Startup Guide

Nick Pai Hacker Noon profile picture

@nickpaiNick Pai

I architect distributed-ledger products for Carbon-12 Labs, and I had the pleasure of building and deploying an EOS stablecoin throughout the past month with the resident Carbon hackers.

Let’s get right to the point: I believe that EOS is a developer’s paradise 🏝 and I want to help other developers and craftsman learn about EOS and why it’s a great environment to develop & deploy decentralized applications.

Paul Graham, a magician of speech and the entrepreneur-whisperer, once stated that: “Great hackers tend to clump together” and “Like all craftsmen, hackers like good tools. In fact, that’s an understatement. Good hackers find it unbearable to use bad tools”, and I couldn’t agree more with this pair of statements. EOS is a distributed, trust-minimized computer like Ethereum, but it offers developers excellent experience in performance and customization. If the flow of developers follows a gradient towards tools with better “developer UX”, then I predict that EOS will continue to accumulate smart contract developers from other platforms.

Real time footage of ETH devs migrating to EOS

My Motive for Writing this Guide A.K.A. Everything is Broken and No One Can Help Me:

When building our Ethereum on-ramp smart contracts, I overlooked concurrently writing an onboarding guide. This made my life a lot more difficult when it came to debugging run-time issues, as I was the only one capable of making quick fixes. There was no quick way to educate another dev on how Ethereum smart contracts worked and how to use all of the associated tools. Looking at Solidity contracts is easy enough, but good luck setting up your environment {Truffle, MetaMask, IPFS, Ganache, …}.

The Problem: We’re not Speaking the Same Language!

Developing smart contracts is mostly similar to building ‘centralized’ software apps, but there are a few new powerful features to understand. For one thing, what is a blockchain and why can’t I just push updates to my code whenever I want? Why do I need an account to interact with contracts? What the heck is MetaMask?

Personally, I found that the following topics were new for a traditional dev:

  • smart contracts”: software that is immutable and stored on a distributed ledger. Contracts do what their code tells them to do.
  • contract immutability”: it is not easy (or free!) to change your code after you deploy it
  • distributed ledger”: a database that no one owns and anyone can access. Might be based on a blockchain or a DAG (DAG’s are an entirely different rabbit hole you should fall down 🐰)
  • “Distributed trust-minimized computing platform”: like a computer but built on a distributed ledger.
  • upgradeability”: a strategy for upgrading deployed contracts needs to be considered before deployment, otherwise you’ll burn through $$
  • accounts, addresses, public keys, private keys”: you need accounts to interact with smart contracts
  • Transactions”: to “call” a smart contract function, you need to write and sign a transaction to prove that you are the sender — like snail mail! Usually you need to include some $$ in the packet to entice the mail to get sent faster ;)

…The list is actually really long, and it took quite some time for the intuitive understanding of how Ethereum works to click in my head. Moreover, this space moves really fast and learning to develop on EOS was challenging even with extensive Ethereum experience.

So, the goal of this guide is to be a one-stop, open-source guide for learning about how EOS works and how to build contracts on it. At the very least, I hope that after skimming through this guide you’ll be able to ask better debugging questions on stack overflow or Reddit :D

Contents covered by The “EOS Startup Guide”:

  1. What is a “Decentralized” Trust-minimizing Computer?
  2. What is the goal of EOS?
  3. EOS accounts, permissions, and keys
  4. EOS network resources: CPU, RAM, NET
  5. Installation and building from source
  6. EOS CLI tools: cleos, nodeos, keosd
  7. EOS Smart Contracts: From C++ to WASM to ABI’s
  8. EOS Smart Contract Architecture Patterns
  9. Deployment: local node, testnet, and mainnet
  10. Helpful dev tools: block explorers, wallets, resource calculators
  11. EOS dApps: eosJS + Scatter
  12. Testing
  13. Upgradeability
  14. Security
  15. Communities

My EOS Thesis after building and deploying for the first time:

I. I’m bullish on EOS because the network is fast and apps buy precisely as much computing resources as they need. Instead of transaction fees, apps pay taxes in form of staked EOS. The tax model versus the fee model offers developers more fine-tuned control over managing their app expenses AND it makes the testing of mainnet contracts free :). Need to process more transactions? Stake EOS on CPU. Need to process larger transactions? Stake on NET. Need more memory? Buy Ram. Eos has better “developer UX” than Ethereum and it is historically a good idea to “follow the devs”.

II. EOS will attract the best hackers in a non-linear fashion: “Along with interesting problems, what good hackers like is other good hackers. Great hackers tend to clump together. So you won’t attract good hackers in linear proportion to how good an environment you create for them. The tendency to clump means it’s more like the square of the environment. So it’s winner take all. At any given time, there are only about ten or twenty places where hackers most want to work, and if you aren’t one of them, you won’t just have fewer great hackers, you’ll have zero.” “Great Hackers” — Paul Graham

III. You can’t fork communities. The EOS community is passionate, super helpful and welcoming to new-comers. I was at the most recent EOS hackathon in SF and in short…it was a blast.


I wrote this guide while building our EOS smart contracts, which we just released this week! Check out our new multi-currency wallet at fiat.carbon.money and our live token

Connect to EOS, buy CUSD-EOS, trade it, redeem it

A Special Thank you to the following EOS community members for your mentorship:

  • Sam Kazemian, Mahbod Moghadam and the rest of the Everipedia team
  • Richard Tiutiun (AKA: ricktobacco)
  • NSJames and the Scatter team


Join Hacker Noon

Create your free account to unlock your custom reading experience.