This document provides an overview of Ethereum and tools for Ethereum development. It discusses what Ethereum is, how smart contracts work, and tools like Solidity, web3.js, Truffle, Ganache, MetaMask and Etherscan that allow developers to build decentralized applications on Ethereum. Key aspects covered include the Ethereum Virtual Machine, gas costs, wallets, nodes, testing smart contracts, deploying contracts, and exploring the blockchain through a block explorer.
2024: Domino Containers - The Next Step. News from the Domino Container commu...
ETHEREUM FOR JAVASCRIPT DEVELOPERS
1. ETHEREUMF O R J AVA S C R I P T D E V E L O P E R S
GreeceJS #21 @panosjee
Panos Papadopoulos
Founder GreeceJS
2. I am a software engineer that joined the
other side of the Force
I am a Partner at Marathon VC
I was a founder at BugSense and Greece JS
Hello!
I Am Panos
You can contact me at @panosjee
3. Ethereum aims to be the global, decentralised,
unstoppable, uncensorable computer.
(Using blockchain and ponies of course)
ETHEREUM
6. THE BLOCKCHAINIn case you are living under a rock
But way more complex in the case of Ethereum
7. Every 14 seconds the results
of the programs execution are
shared and verified across all
the nodes of the network. The
new state is written in the
blockchain.
Ethereum programs are called Smart
Contracts and are usually written in
Solidity, Viper and LLL. Smart Contracts
can be accessed via the web thanks to
web3.js
Ethereum listens to other
nodes and executes
program that compile to
Ethereum Virtual Machine
Users run an Ethereum
client, usually geth (the
official client written in Go)
Ethereum for dummies
Nodes
EVM
Smart
Contracts
Ether
Smart Contract execution and
storage costs. The cost is
called gas and can be
purchased for Ether the native
currency of the network
8. Enterprise Ethereum is an
official effort to bring private
Ethereum networks to the
corporate world.
Corporate friendly
14 seconds block generation
makes for quick transactions
and “fast” socially scalable
programs.
Fast
Elliptical cryptography used
for wallets, PoW to secure
blockchain (might change to
PoS)
Secure
Ethereum creates a
computing platform that
cannot be stopped or altered
Uncensorable
Ethereum is one the most
well performing crypto-
currencies of 2017.
Asset
Ethereum has a large
enthusiastic community
building blocks and dapps
Community
ETHEREUM CORE FEATURES
10. What is the use case
for smart contracts?
Automate lawyers and trusted 3rd parties out of existence.
Think processes that require trust:
- Financial instruments
- Voting
- Tickets
- Registries
- Ballots
- Marketplaces
- Scams aka ICOs
11. The main toolset includes the official smart
contract language solidity and web3.js
npm install solc
npm install web3
npm install solium
npm install truffle
npm install ethereumjs-testrpc
Oh and Meteor is a thing for the Ethereum
community.
Tools
A wallet stores your private &
public keys that generate
addresses and sign your
transactions.
At a minimum you need a
wallet to store & send Ether,
interact & deploy smart
contracts. Holding your keys
makes you sovereign.
Popular wallets:
- MyEtherWallet
- Mist
- Coinbase (exchange)
Wallet
Running your node is
educational, useful and
wasteful (good luck syncing).
Geth is the official client
Parity has f***d up several
times.
Implementations in Python, JS,
C++, Java. Use at your own
risk.
Clients expose console, JSON-
RPC, logs.
Node (or not)
WHAT YOU NEED TO START
14. testrpc is a Node.js based Ethereum client for testing and development.
It uses ethereumjs to simulate full client behavior and make developing
Ethereum applications much faster. It also includes all popular RPC
functions and features (like events) and can be run deterministically to
make development a breeze.
Sanity tip: use -db to keep accounts after restarts
Tools: ethereum-jsonrpc
Install, sync & run a full client is a hassle (but also the point)
15. This is probably the most portable and most convenient way to install Solidity
locally.
A platform-independent JavaScript library is provided by compiling the C++ source
into JavaScript using Emscripten. It can be used in projects directly (such as
Remix). Please refer to the solc-js repository for instructions.
Tools: solc-js
The fastest way to install the Solidity compiler
16. To make your app work on Ethereum, you can use the web3 object provided by
the web3.js library. Under the hood it communicates to a local node through
RPC calls. web3.js works with any Ethereum node, which exposes an RPC layer.
Tools: web3.js
The library that exposes Ethereum to rest of us
web3 runs in the browser. If web3 is loaded and can access Ethereum keys then
you can run any Dapp in your browser.
The most common way to inject web3 into a window and be able to control an
Ethereum wallet is the Metamask Chrome plugin.
17. MetaMask is a bridge that allows you to visit the distributed web of tomorrow in
your browser today. It allows you to run Ethereum dApps right in your browser
without running a full Ethereum node. (because Mist sucks)
MetaMask includes a secure identity vault, providing a user interface (duh) to
manage your identities on different sites and sign blockchain transactions.
Bonus: IPFS Station Chrome plugin allows you to access IPFS urls seamlessly
from your local IPFS node, and take a look at its stats.
Tools: Metamask
Make Chrome Ethereum-aware
18. Truffle is the most popular development framework for Ethereum.
Truffle gives structure to your smart contract and help you compile, test,
deploy and migrate.
EthPM is the package manager for Smart Contracts B-E-W-A-R-E
You can write tests in both JS and Solidity. When it comes to “trusted”
computing you cannot escape tests!
Tools: Truffle
Let’s use some JS skills to manage Solidity dapps life cycle
candy maple cake sugar pudding cream honey rich smooth crumble sweet treat
19. Version pragma: Solidity upgrades break things, make sure the target is right!
Functions execute code internally or externally
Function Modifiers aka decorators
Events change the state, therefore you pay for their execution. Events are dispatched signals the
smart contracts can fire. DApps, or anything connected to Ethereum JSON-RPC API, can listen to
these events and act accordingly. Event can be indexed, so that the event history is searchable later.
event Deposit(address from, uint value);
Anatomy of a smart contract
Demo Time!
20. Deploy a smart contract
Choose a network (testrpc, testnets: [morden, ropsten, kovan, rinkeby], live)
Have enough gas to pay for deployment
When you deploy you become the owner of the contract unless if specified otherwise
Contract is deployed at an address. App.contracts.GreeceJSToken.deployed().then
ABI (Application Binary Interface) is generated without you cannot interact with web3.js.
ENS (Ethereum Naming System) to the rescue.
Store your web3.js at Swarm or IPFS