An intro to
SmartContracts
Development
David Paluy
June 2018
Agenda
 Definitions
 Solidity
 Security
 Testing Smart Contracts
 Tools
 Deploy to Production
Smart
Contract
A smart contract is a computer protocol intended to digitally
facilitate, verify, or enforce the negotiation or performance of a
contract.
Nick Szabo, 1994
Smart
Contract
A smart contract is a computer protocol that executes
the terms of a contract.
Byzantine fault
tolerance
(BFT)
BFT is a distributed computing system, where components
may fail and there is imperfect information
on whether a component is failed.
Boeing 777 Aircraft Management System
SpaceX Dragon
Turing
completeness
A system of data-manipulation rules is said to
be Turing complete if it can be used to simulate
anyTuring machine.
Summary
Developing a Smart Contract requires:
An implementation of BFT algorithm
A programming languages with various
degrees ofTuring-completeness
Solidity
Solidity is a contract-oriented programming
language for writing smart contracts
Aug 2014
Ethereum
Virtual
Machine
(EVM)
Solidity is compiled to Bytecode that is
executable on EVM
Security
 Blockchain based Smart Contract is visible to all users of
the network
 Immutability of bugs
 Security holes and bugs may not be quickly fixed
 Compiler bugs, EVM bugs, network attacks
 Missing central source documenting known
vulnerabilities, attacks and problematic constructs
Testing
SmartContracts
Ethereum development framework
Testing &
Deploying
Smart
Contracts
https://github.com/ethereum/mist
MetaMask
EtherScan
Production
Mist
MyEtherWallet
EtherScan
Source Control
Thank you!
@dpaluy

Intro to Smart Contracts