Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Smart Contracts 101

Smart Contracts 101

Alexandre Balmes

June 12, 2018
Tweet

More Decks by Alexandre Balmes

Other Decks in Programming

Transcript

  1. SMART CONTRACTS

    101

    View Slide

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

    View Slide

  3. MERCI

    View Slide

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

    View Slide

  5. FACTS

    View Slide

  6. NICK SZABO
    1993 - BITGOLD

    View Slide

  7. MISE EN OEUVRE
    2002 - ASKEMOS - SCHEME

    View Slide

  8. ETHEREUM
    2015 - VITALIK BUTERIN

    View Slide

  9. SC !== ACCORD
    CONTRACTUEL

    View Slide

  10. SC !== CONTRAT
    RICARDIENS

    View Slide

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

    View Slide

  12. UN SC C’EST BÊTE.

    ET MÉCHANT

    View Slide

  13. ORACLE

    View Slide

  14. UN SC A UN COUT
    EXEMPLE : LE GAS ETHEREUM

    View Slide

  15. COMMENT ÇA
    MARCHE ?
    C’EST PAS SORCIER

    View Slide

  16. 1- HIGH LEVEL
    LANGUAGES

    View Slide

  17. 2- LOW-LEVEL
    BYTECODE
    ETHEREUM VIRTUAL MACHINE

    View Slide

  18. 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

    View Slide

  19. 3- DEPLOY
    AND CRY.

    View Slide

  20. 4- SELFDESTRUCT
    INSERT A COIN.

    View Slide

  21. CODE

    View Slide

  22. COMPILER
    DIRECTIVE

    View Slide

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

    View Slide

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

    View Slide

  25. TX
    .GASPRICE, .ORIGIN

    View Slide

  26. BLOCK
    .BLOCKHASH, .COINBASE, .DIFFICULTY, .GASLIMIT, 

    .NUMBER, .TIMESTAMP

    View Slide

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

    View Slide

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

    View Slide

  29. DEFINITION
    INTERFACE, LIBRARY

    View Slide

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

    View Slide

  31. CONSTRUCTOR
    CONSTRUCTOR, SELFDESTRUCT

    View Slide

  32. MODIFIERS
    EXEMPLE : ONLYOWNER

    View Slide

  33. INHERITANCE
    CONTRACT CHILD IS PARENT1, PARENT2 {}

    View Slide

  34. ERROR HANDLING
    ASSERT, REQUIRE, REVERT

    View Slide

  35. EVENTS
    LOG ENTRIES

    View Slide

  36. BOITE A OUTILS
    (LA MIENNE)

    View Slide

  37. View Slide

  38. View Slide

  39. LIVE

    View Slide

  40. MERCI
    WE ❤ YOU

    View Slide