Slide 1

Slide 1 text

Basics of smart contracts and DApp development - Koshik Raj

Slide 2

Slide 2 text

Agenda ● Bitcoin and smart contract basics ● Turing complete scripting language to create smart contracts ● Basics of Ethereum ● Setting up Ethereum development environment ● Create an "Hello World" smart contract ● Create, test and deploy a Proof of Ownership application.

Slide 3

Slide 3 text

Why was Bitcoin created?

Slide 4

Slide 4 text

Centralization concerns in the past ● Cyber attacks on major institutions. ○ Sony pictures, JP Morgan Chase data breach. ○ Target customer confidential data breach. ● Expensive transaction fee. ● Subprime mortgage crisis in 2008.

Slide 5

Slide 5 text

How Bitcoin solved it?

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

Distributed Ledger Technology (DLT) Each node holds a copy of the blockchain Blockchain + p2p+ Consensus algorithm = DLT

Slide 8

Slide 8 text

Cryptography in blockchain ● Hashing ● Digital signatures

Slide 9

Slide 9 text

Blockchain 1234 1234 1235 1235 1237

Slide 10

Slide 10 text

Consensus mechanism ● Algorithm to reach a global truth ● Consensus mechanism solves the byzantine generals’ problem. ● Bitcoin’s proof-of-work is the first and well known consensus algorithm.

Slide 11

Slide 11 text

Consensus algorithm: proof-of-work ● Uses hash puzzle to do work ● Incentivizes miner for their work from transaction fee + new coins ● Hash cash proposed in 1997 by Adam Back ● Reduce email spam and DOS attacks

Slide 12

Slide 12 text

Bitcoin addresses ● Bitcoin uses asymmetric cryptography to generate public-private key pair ● Public key is used to generate the public address ● Private key is used to sign the transactions ○ bitcoin-cli getnewaddress 1JK1yCXbP2WkwgzbAUqpWTeo9rQkA9seNg ○ bitcoin-cli dumpprivkey 1JK1yCXbP2WkwgzbAUqpWTeo9rQkA9seNg L2NAKvQsbkeQZyhfPRWw1juQ19ohxGCFbdr8izQSHEmKWYFtVjXK

Slide 13

Slide 13 text

Bitcoin transactions ● Bitcoin does bookkeeping with a transaction based ledger ● Every transaction must be validated by the node ● Every transaction consists of inputs and outputs ● Transaction fee must be paid for every transaction created ● Unconfirmed transactions are maintained in mempool: https://www.blockchain.com/btc/unconfirmed-transactions

Slide 14

Slide 14 text

Transaction verification ● Bitcoin uses Turing incomplete stack-based language called "Script" ● Uses locking and unlocking scripts ○ Locking: 4 OP_ADD 6 OP_EQUAL ○ Unlocking: 2

Slide 15

Slide 15 text

Decentralized applications ● Applications designed to run in a decentralized network. ● There is no single server to provide the service, thus avoiding the single point failure.

Slide 16

Slide 16 text

Decentralized application architecture RPC

Slide 17

Slide 17 text

Smart contracts ● Protocol that allows contracts to be verified and enforced in a self-executing manner. ● Self enforcement removes the need for intermediaries

Slide 18

Slide 18 text

Ethereum basics ● Ethereum is a widely-used platform for creating decentralized applications (https://www.stateofthedapps.com/stats) ● Ethereum houses its own distributed virtual machine, and scripting language called Solidity

Slide 19

Slide 19 text

Ethereum VM and Solidity ● EVM provides a runtime environment to execute smart contracts ● EVM runs on a node that is isolated from the Ethereum network ● Each transaction/ contract executed needs GAS (transaction fee). ● Only the smart contract output can be inserted to the blockchain ● EVM executes the compiled Solidity bytecode ● Solidity is a contract-oriented programming language influenced by C++, Python and JavaScript

Slide 20

Slide 20 text

Let's build a DApp

Slide 21

Slide 21 text

Contact me: Koshik Raj linkedIn: koshikraj GitHub: koshikraj twitter: rajkoshik [email protected] www.koshik.me “keep calm and create DApps”