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

Blockchain and Decentralization: Workshop

Blockchain and Decentralization: Workshop

Creating decentralized applications from scratch. Step-by-step process of applying engineering principles and tools in practice.

Avatar for Andrey Shevchenko

Andrey Shevchenko

February 08, 2019

More Decks by Andrey Shevchenko

Other Decks in Programming

Transcript

  1. PRESENTER PRESENTER Andriy Shevchenko / Senior So ware Engineer @

    Cogniance Lead Engineer of Blockchain R&D initiative aShevc
  2. PART III PART III WORKSHOP: CREATING DAPPS FROM SCRATCH WORKSHOP:

    CREATING DAPPS FROM SCRATCH Engineering principles and tools
  3. TOOLS TO USE TOOLS TO USE Ethereum Solidity We suggest

    to check out and by ConsenSys Truffle Metamask Ganache For more information on the engineering tools and principles go docs best practices paper here
  4. EXAMPLE APPLICATION: VOTING DAPP EXAMPLE APPLICATION: VOTING DAPP Ethereum-based web

    application for voting The source code with step-by-step commits is available on Github
  5. DAPP UPGRADEABILITY DAPP UPGRADEABILITY Pros Ability to add new features

    Ability to eliminate bugs and revert malicious activities Cons Higher complexity of the code. Gas overhead Contradicts decentralization principle, where protocols remain unchanged throughout the time of existence
  6. DAPP UPGRADEABILITY APPROACHES DAPP UPGRADEABILITY APPROACHES Proxy contracts and delegateCall

    Self-written or with the help of Custom DApp breakdowns Data & logic separation, Eternal Storage, etc. For more info and resources on DApp upgreadeability check out notes. ZeppelinOS these
  7. DAPP UPGRADEABILITY PRINCIPLES DAPP UPGRADEABILITY PRINCIPLES Make and application upgradeable

    only if it's absolutely necessary Select approaches with the least complexity overhead Upgrade process must preserve decentralization principles
  8. VCS AND CI VCS AND CI Smart contracts deployments does

    not happen o en. Overall suggestion is to create a manually triggered job The job must output and persist artifacts which may be either Truffle jsons or (better and placeable to the repo) raw abi and contract addresses. These artifacts then should be utilized by client builds