Save 37% off PRO during our Black Friday Sale! »

Centralized Dapps to read from Dapps game

822a7ca9bc8e5fb40911b82bcc9f39d5?s=47 biga816
July 19, 2018

Centralized Dapps to read from Dapps game

822a7ca9bc8e5fb40911b82bcc9f39d5?s=128

biga816

July 19, 2018
Tweet

Transcript

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

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

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

  4. DAppsとは • ⾮中央集権型アプリケーション(Decentralized Applications) • 以下の3つの定義を満たす(byビットコイン研究所ブログ) 1. アプリケーションは、オープンソースであること。オペレーションは⾃動であり、中央のコ ントロール主体を持たないこと。トークン、データ、レコード、などにつき、暗号化されて 分散化されたブロックチェーンを利⽤していること。

    2. アプリケーションは、オープンに流通可能な、暗号トークンを持っていること。アプリケー ションの利⽤に際してトークンを利⽤すること。参加者には、そのトークンによってリワー ド(報酬)が⽀払われること。 3. アプリケーションはマーケットやユーザーからの改善要求によりプロトコルを改善していく こと。この改善は、ユーザーのコンセンサスによること。 <参考>http://doublehash.me/what-is-dapps/
  5. CryptokittiesとEtheremonのシステム構成 からDappsの姿を読み解いてみる

  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
  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; } }
  8. Etheremonのシステム構成 My Monstar Market App Battle ファイルサーバ Client ERC721 Node

    (Metamask) DB バッチ 処理?? ERC721 Node (Own node? Infura?) web3.js Webサーバ (react) APIサーバ
  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; } }
  10. %ecentralized "QQlications →$entralized "QQlications

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

    ⾮改ざん性や透明性といったブロックチェーンの特性を⽣かしている。
  12. ⾯⽩い(クソみたいな) DApps作ろうぜ!

  13. Thank you Twitter: @biga816 Qiita: biga816