Slide 1

Slide 1 text

SMART CONTRACTS
 101

Slide 2

Slide 2 text

A SET OF PROMISES, SPECIFIED IN DIGITAL FORM, INCLUDING PROTOCOLS WITHIN WHICH THE PARTIES PERFORM ON THE OTHER PROMISES.

Slide 3

Slide 3 text

MERCI

Slide 4

Slide 4 text

LE PETIT BLOC BUILD A DECENTRALISED, TRUSTABLE AND RELIABLE WORLD ! SCIC PROJECT - HTTPS://LEPETITBLOC.NET!

Slide 5

Slide 5 text

FACTS

Slide 6

Slide 6 text

NICK SZABO 1993 - BITGOLD

Slide 7

Slide 7 text

MISE EN OEUVRE 2002 - ASKEMOS - SCHEME

Slide 8

Slide 8 text

ETHEREUM 2015 - VITALIK BUTERIN

Slide 9

Slide 9 text

SC !== ACCORD CONTRACTUEL

Slide 10

Slide 10 text

SC !== CONTRAT RICARDIENS

Slide 11

Slide 11 text

SC !== ETHEREUM RSK, BIP65 MULTISIG, NEO, STRATIS, LSK, ARK, EOS, WAVES, CHAINLINK…

Slide 12

Slide 12 text

UN SC C’EST BÊTE.
 ET MÉCHANT

Slide 13

Slide 13 text

ORACLE

Slide 14

Slide 14 text

UN SC A UN COUT EXEMPLE : LE GAS ETHEREUM

Slide 15

Slide 15 text

COMMENT ÇA MARCHE ? C’EST PAS SORCIER

Slide 16

Slide 16 text

1- HIGH LEVEL LANGUAGES

Slide 17

Slide 17 text

2- LOW-LEVEL BYTECODE ETHEREUM VIRTUAL MACHINE

Slide 18

Slide 18 text

COMMON STACK OPERATIONS POP //Pop item off the stack PUSH //Push item on the stack MLOAD //Load item into memory MSTORE //Store item in memory JUMP //Alter the location of program counter (PC) PC //Program counter MSIZE //Active memory size GAS //Amount of available gas for transaction DUP //Stack item duplication SWAP //Stack item exchange operation COMMON SYSTEM OPERATIONS CREATE //Create a new account CALL //Instruction for message passing between accounts RETURN //Execution halt REVERT //Execution halt, reverting state changes SELFDESTRUCT //Execution halt, and flag account for deletion ARITHMETIC OPERATIONS ADD //Add MUL //Multiplication SUB //Subtraction DIV //Integer division SDIV //Signed integer division MOD //Modulo (Remainder) operation SMOD //Signed modulo operation ADDMOD //Modulo addition MULMOD //Modulo multiplication EXP //Exponent operation STOP //Halt operation ENVIRONMENTAL OPCODES ADDRESS //Address of current execution account BALANCE //Account balance CALLVALUE //Transaction value for execution environment ORIGIN //Origin address of execution environment CALLER //Address of execution caller CODESIZE //Execution environment code size GASPRICE //Gas price state EXTCODESIZE //An account's code size RETURNDATACOPY //Copy of data output from previous memory call https://github.com/djrtwo/evm-opcode-gas-costs/blob/master/opcode-gas- costs_EIP-150_revision-1e18248_2017-04-12.csv

Slide 19

Slide 19 text

3- DEPLOY AND CRY.

Slide 20

Slide 20 text

4- SELFDESTRUCT INSERT A COIN.

Slide 21

Slide 21 text

CODE

Slide 22

Slide 22 text

COMPILER DIRECTIVE

Slide 23

Slide 23 text

DATA TYPES BOOL, INT, UINT, FIXED, UFIXED, ADDRESS, DYNAMIC, ENUM, STRUCT, MAPPING

Slide 24

Slide 24 text

MSG .SENDER, .VALUE, .GAS, .DATA, .SIG

Slide 25

Slide 25 text

TX .GASPRICE, .ORIGIN

Slide 26

Slide 26 text

BLOCK .BLOCKHASH, .COINBASE, .DIFFICULTY, .GASLIMIT, 
 .NUMBER, .TIMESTAMP

Slide 27

Slide 27 text

ADDRESS .BALANCE, .TRANSFER, .SEND, .CALL, .DELEGATECALL

Slide 28

Slide 28 text

BUILT-IN ADDMOD, MULMOD, KECCAK256, SHA256, SHA3, RIPEMD160

Slide 29

Slide 29 text

DEFINITION INTERFACE, LIBRARY

Slide 30

Slide 30 text

FUNCTIONS FUNCTION FUNCTIONNAME([PARAMETERS]) {PUBLIC| PRIVATE|INTERNAL|EXTERNAL} [PURE|CONSTANT|VIEW| PAYABLE] [MODIFIERS] [RETURNS ()]

Slide 31

Slide 31 text

CONSTRUCTOR CONSTRUCTOR, SELFDESTRUCT

Slide 32

Slide 32 text

MODIFIERS EXEMPLE : ONLYOWNER

Slide 33

Slide 33 text

INHERITANCE CONTRACT CHILD IS PARENT1, PARENT2 {}

Slide 34

Slide 34 text

ERROR HANDLING ASSERT, REQUIRE, REVERT

Slide 35

Slide 35 text

EVENTS LOG ENTRIES

Slide 36

Slide 36 text

BOITE A OUTILS (LA MIENNE)

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

LIVE

Slide 40

Slide 40 text

MERCI WE ❤ YOU