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

Centralized Dapps to read from Dapps game

Centralized Dapps to read from Dapps game

biga816

July 19, 2018
Tweet

More Decks by biga816

Other Decks in Technology

Transcript

  1. Dappsゲームから読み解く
    CentralizedなDapps
    Akihiro Tanaka(@biga816)

    View full-size slide

  2. ⾃⼰紹介
    • 元AccentureのWeb&Mobileエンジニア
    • Trident Artsチーフエンジニア
    • DApps絶賛開発中

    View full-size slide

  3. DAppsゲームは
    本当にDecentralizedなのか?

    View full-size slide

  4. DAppsとは
    • ⾮中央集権型アプリケーション(Decentralized Applications)
    • 以下の3つの定義を満たす(byビットコイン研究所ブログ)
    1. アプリケーションは、オープンソースであること。オペレーションは⾃動であり、中央のコ
    ントロール主体を持たないこと。トークン、データ、レコード、などにつき、暗号化されて
    分散化されたブロックチェーンを利⽤していること。
    2. アプリケーションは、オープンに流通可能な、暗号トークンを持っていること。アプリケー
    ションの利⽤に際してトークンを利⽤すること。参加者には、そのトークンによってリワー
    ド(報酬)が⽀払われること。
    3. アプリケーションはマーケットやユーザーからの改善要求によりプロトコルを改善していく
    こと。この改善は、ユーザーのコンセンサスによること。
    <参考>http://doublehash.me/what-is-dapps/

    View full-size slide

  5. CryptokittiesとEtheremonのシステム構成
    からDappsの姿を読み解いてみる

    View full-size slide

  6. Cryptokittiesのシステム構成
    Webサーバ
    (express, react)
    APIサーバ
    My Kitties
    Marketplace
    App
    Kitty Detail
    (Breed, Sell, Gift)
    ファイルサーバ
    GCP
    Client
    ERC721
    Node
    (Metamask)
    DB
    バッチ
    処理??
    ERC721
    Node
    (Own node? Infura?)
    web3.js

    View full-size slide

  7. Cryptokittiesのコントラクト
    contract KittyAccessControl {
    event ContractUpgrade(address newContract);
    address public ceoAddress;
    address public cfoAddress;
    address public cooAddress;
    bool public paused = false;
    modifier onlyCEO() {
    require(msg.sender == ceoAddress);
    _;
    }
    modifier onlyCFO() {
    require(msg.sender == cfoAddress);
    _;
    }
    modifier onlyCOO() {
    require(msg.sender == cooAddress);
    _;
    }
    modifier onlyCLevel() {
    require(
    msg.sender == cooAddress ||
    msg.sender == ceoAddress ||
    msg.sender == cfoAddress
    );
    _;
    }
    :
    :
    modifier whenNotPaused() {
    require(!paused);
    _;
    }
    modifier whenPaused {
    require(paused);
    _;
    }
    function pause() external onlyCLevel whenNotPaused {
    paused = true;
    }
    function unpause() public onlyCEO whenPaused {
    paused = false;
    }
    }

    View full-size slide

  8. Etheremonのシステム構成
    My Monstar
    Market
    App
    Battle
    ファイルサーバ
    Client
    ERC721
    Node
    (Metamask)
    DB
    バッチ
    処理??
    ERC721
    Node
    (Own node? Infura?)
    web3.js
    Webサーバ
    (react)
    APIサーバ

    View full-size slide

  9. Etheremonのコントラクト
    contract BasicAccessControl {
    address public owner;
    uint16 public totalModerators = 0;
    mapping (address => bool) public moderators;
    bool public isMaintaining = true;
    function BasicAccessControl() public {
    owner = msg.sender;
    }
    modifier onlyOwner {
    require(msg.sender == owner);
    _;
    }
    modifier onlyModerators() {
    require(moderators[msg.sender] == true);
    _;
    }
    modifier isActive {
    require(!isMaintaining);
    _;
    }
    function ChangeOwner(address _newOwner) onlyOwner public {
    if (_newOwner != address(0)) {
    owner = _newOwner;
    }
    }
    :
    :
    function AddModerator(address _newModerator) onlyOwner public {
    if (moderators[_newModerator] == false) {
    moderators[_newModerator] = true;
    totalModerators += 1;
    }
    }
    function RemoveModerator(address _oldModerator) onlyOwner public
    {
    if (moderators[_oldModerator] == true) {
    moderators[_oldModerator] = false;
    totalModerators -= 1;
    }
    }
    function UpdateMaintaining(bool _isMaintaining) onlyOwner public
    {
    isMaintaining = _isMaintaining;
    }
    }

    View full-size slide

  10. %ecentralized "QQlications
    →$entralized "QQlications

    View full-size slide

  11. DApps(CApps)とは
    • ⾮中央集権型アプリケーション(Decentralized Applications)
    • ブロックチェーンを活⽤したアプリケーション
    1. ⾮中央集権型に設計することが可能である。(ただし、多くのDAppsゲームは中央集権型の設
    計)
    2. ⾮改ざん性や透明性といったブロックチェーンの特性を⽣かしている。

    View full-size slide

  12. ⾯⽩い(クソみたいな)
    DApps作ろうぜ!

    View full-size slide

  13. Thank you
    Twitter: @biga816
    Qiita: biga816

    View full-size slide