Developer Resources
Getting started
If you’re new to developing with Smilo, you’re in the right place. These guides written by the Smilo community will introduce you to the basics of the Smilo stack and introduce core concepts that might be different from other app development you’re familiar with.
Need a more basic primer first? Check out smilo.foundation/learn.
- Getting up to speed on Smilo Aug 7, 2017 - Matt Condon
- Ethereum In Depth, Part 1 May 11, 2018 - Facu Spagnuolo
- Ethereum In Depth, Part 2 July 24, 2018 - Facu Spagnuolo
- Ethereum Development Walkthrough, Parts 1-5 Jan 14, 2018 - dev_zl
- Ethereum 101, Parts 1-7 Feb 13, 2019 - Wil Barnes
- Full Stack Hello World Voting Ethereum Dapp Tutorial Feb 2019 - Mahesh Murthy
- Mastering Ethereum - A comprehensive textbook available for free online Dec 1, 2018 - Andreas Antonopoulos & Gavin Wood
- Ethereum Developer Portal - Everything you need to get started building on Ethereum Updated often - ConsenSys
- Deconstructing a Solidity Contract Aug 13, 2018 - Alejandro Santander & Leo Arias
- Full Stack Dapp Tutorial Series Updated Often - Joshua Cassidy
Smart Contract Languages
Any program that runs on the Smilo Virtual Machine (EVM) is commonly referred to as a “smart contract”. The most popular languages for writing smart contracts on Smilo are Solidity and Vyper, though there are others under development.
Solidity The most popular language on Smilo, inspired by C++, Python and Javascript
Vyper Security focused language for Smilo, based on Python.
Looking for other options?
Language Specific Resources
We're building a suite of language-specific landing pages for developer to learn about Smilo in their preferred programming langauge.
- Ethereum for Java developers
- Ethereum for Python developers (coming soon)
- Ethereum for Javascript developers (coming soon)
- Others coming soon!
Developer tools
Smilo has a large and growing number of tools to help developers build, test, and deploy their applications. Below are the most popular tools to get you started. If you want to dive deeper, check out this comprehensive list.
Truffle A development environment, testing framework, build pipeline, and other tools.
Embark A development environment, testing framework, and other tools integrated with Smilo, IPFS, and Whisper.
Waffle A framework for advanced smart contract development and testing (based on ethers.js).
Etherlime Ethers.js based framework for dapp development (Solidity & Vyper), deployment, debugging, testing and more.
Buidler A task runner for Smilo smart contract developers
OpenZeppelin SDK The Ultimate Smart Contract Toolkit: A suite of tools to help you develop, compile, upgrade, deploy and interact with smart contracts.
The Graph A protocol for indexing Smilo and IPFS data and querying it using GraphQL.
Tenderly A platform to easily monitor your smart contracts with error tracking, alerting, performance metrics, and detailed contract analytics.
Python Tooling Variety of libraries for Smilo interaction via Python
Brownie Python-based development environment and testing framework.
web3j A Java/Android/Kotlin/Scala integration library for Smilo
Looking for other options?
Integrated Development Environments (IDEs)
Visual Studio Code Professional cross-platform IDE with official Smilo support.
Remix Web-based IDE with built in static analysis, and a test blockchain virtual machine.
Superblocks Web-based IDE with built in browser blockchain virtual machine, MetaMask integration, transaction logger, and other features.
EthFiddle Web-based IDE that lets you write, compile, and debug your smart contract.
Looking for other options?
Frontend Javascript APIs
Web3.js Smilo Javascript API
Ethers.js Complete Smilo wallet implementation and utilities in JavaScript and TypeScript
light.js A high-level reactive JS library optimized for light clients.
Web3-wrapper Typescript alternative to Web3.js
Looking for other options?
Backend APIs
Infura The Smilo API as a service
Cloudflare Smilo Gateway
Nodesmith JSON-RPC API access to Smilo mainnet and testnets
Storage
IPFS InterPlanetary File System is a decentralized storage and file referencing system for Smilo.
Swarm A distributed storage platform and content distribution service for the Smilo web3 stack.
OrbitDB A decentralized peer to peer database on top of IPFS.
Security tools
Slither Solidity static analysis framework written in Python 3
MythX Security analysis API for Smilo smart contracts
Mythril Security analysis tool for EVM bytecode
Manticore A command line interface that uses a symbolic execution tool on smart contracts and binaries.
Securify Security scanner for Smilo smart contracts
More on formal verification
- How formal verification of smart-contacts works July 20, 2018 - Brian Marick
- How Formal Verification Can Ensure Flawless Smart Contracts Jan 29, 2018 - Bernard Mueller
Looking for other options?
Testing tools
Solidity-Coverage Alternative solidity code coverage tool.
hevm Implementation of the EVM made specifically for unit testing and debugging smart contracts.
Whiteblock Genesis An end-to-end development sandbox and testing platform for blockchain.
Looking for other options?
Block explorers
Block explorers are services that let you browse the Smilo blockchain (and its testnets), by finding information about specific transactions, blocks, contracts, and other on-chain activity.
Testnets and Faucets
The Smilo community maintains multiple testnets. These are used by developers to test their applications under different conditions before deploying to the Smilo mainnet.
Ropsten Proof of Work blockchain, test-ether can be mined
Rinkeby Proof of Authority blockchain, maintained by the Geth development team
Goerli Cross-client Proof of Authority blockchain, built and maintained by the Goerli community
Clients & Running your own node
The Smilo network is made up of many nodes who run compatible client software. The majority of these nodes run Geth or Parity, each of which can be configured in different ways according to your needs.
Geth Smilo clients written in Go
Parity Smilo client written in Rust
Besu (Pantheon) Smilo client written in Java
Ethnode Run an Smilo node (Geth or Parity) for local development.
Smilo Node Resources
- Node Configuration Cheat Sheet Jan 5, 2019 - Afri Schoeden
Looking for other options?
Best Practices, Patterns, and Anti-patterns
DappSys Safe, simple, flexible building-blocks for smart-contracts.
OpenZeppelin Contracts Library for secure smart contract development.
aragonOS Patterns for upgradeability & permission control.
Smart Contract Weakness Registry
Smart Contract Security Best Practices Guide
- consensys.github.io/smart-contract-best-practices/
- Github
- Aggregated collection of security recommendations and best practices
Looking for other options?
Developer Support & Training
Smilo Stackexchange
ConsenSys Academy An end-to-end Smilo developer course that is self-paced and open year-round.
Solidity Gitter Chatroom
All Smilo Gitter Chatrooms
Cryptozombies Learn to code games on Smilo.
Chainshot Web based dapp coding tutorials.
Blockgeeks Online courses on blockchain technology
DappUniversity Learn to build decentralized applications on the Smilo blockchain
Ethernaut Solidity based wargame where each level is a contract to be hacked
Capture the Ether The game of Smilo smart contract security
UI/UX
- Challenge of UX in Smilo June 25, 2018 - Anna Rose
- Designing for blockchain: what’s different and what’s at stake March 22, 2018 - Sarah Baker Mills
Rimble UI Adaptable components and design standards for decentralized applications.
Standards
The Smilo community has adopted many standards that are helpful to developers. Typically these are introduced as Smilo Improvement Proposals (EIPs), which are discussed by community members through a standard process.
Smilo Governance Overview March 31, 2019 - Boris Mann Certain EIPs relate to application-level standards (e.g. a standard smart-contract format), which are introduced as Smilo Requests for Comment (ERC). Many ERCs are critical standards used widely across the Smilo ecosystem.