Loading deck

〜ブロックチェーン実践入門〜

30秒で39億円集める「スマートコントラクト」の衝撃とその作り方

CTO of Starbase

Yu Yamanaka

Aug 27th, 2017, at July Tech Festa

この講演を聞くと?

  • ブロックチェーンについて同僚に語れるようになる。
  • Ethereum/Smart Contract を使用した分散アプリケーションの開発・運用を学ぶ足がかりになる。
  • ブロックチェーンの活用方法を、 "ICO" という事例から学べる。

About me

Full-stack Developer / 起業家 / 暗号通貨投資家

Programmer

& DevOps Engineer

2007

2017

CTO

Co-founder & CTO

Full-stack Engineer

& Agile PM

Infrastructure Architect

  • エンジニア歴10年。中小〜大企業向けクラウドセキュリティシステム、及び一般消費者向け Web システムの開発/運用等に携わる
     
  • 大規模かつ急速に拡大するクラウドサービスを運用 (800台超のサーバ、月間アクティブユーザ数1500万以上のメディア運営)
     
  • 2016年10月にブロックチェーン業界に参戦

Starbase

"Skyrocket your idea"

暗号通貨の Kickstarter

トークンによる資金調達が当たり前になる社会を目指して

Starbase

Team

突然ですが、

これは何ですか?

お金 or 紙切れ?

誰が価値を保証している?

世界共通の通貨を作りたい!

誰が価値を保証する?

が価値を保証する?

Mathematics

Technology

エンジニアが創った

国境なき通貨

Today's

Main Topic

管理者なき世界インフラ

ブロックチェーン

  1. ブロックチェーンはどのようにして動き続けるのか
  2. 通貨だけじゃないブロックチェーン Ethereum
  3. ICO から学ぶブロックチェーンの活用事例

1. ブロックチェーンはどのようにして動き続けるのか

従来のシステム

ベアメタルがクラウドになっても基本は何も変わらず

従来のシステム

ブロックチェーン

お金を送る

従来のシステム

ブロックチェーン

ブロックチェーン

  1. すべての Node がすべての取引データを持つ (=全 Node が DB を持つ)
     
  2. ある Node が取引を宣言する (例: User A -> B に送金)
     
  3. ある Miner が取引を承認する (報酬として Bitcoin を得る)
     
  4. すべての Node に取引情報がブロードキャストされ、それぞれの DB に追記される
     
  5. 一度追記された取引情報は改ざん不可 (by Proof of Work)

マスターサーバーが無い!

自律分散型インフラ

(No SPOF!)

オーケー、分かった。でも僕が作りたいのは決済システムじゃないんだ。

 

ブロックチェーンで他に何か出来ないの?

Bitcoin に次いで世界最大のブロックチェーン

2. 通貨だけじゃないブロックチェーン Ethereum

Ethereum: the World Computer

Ethereum: the World Computer

  • Bitcoin と同様、マイナーがいます
  • 後述の Ether を払えば誰でも利用可能
  • 伝統的なアプリケーションと接続可能
  • 分散アプリケーション(Smart Contract) の実行インフラ

世界規模の分散アプリケーションプラットフォーム

Smart Contract

  1. 契約条件をコードで定義
  2. Ethereum 上にデプロイする
  3. ユーザまたはアプリが手数料(Ether)を払ってそのプログラム上の関数を実行
  4. 契約条件に応じて、処理を実行

コードで記述した契約条件を自動執行するプログラム

一度定義した契約条件は変更出来ない =

ブロックチェーンの不可逆性を利用

Smart Contract

contract BAToken is StandardToken, SafeMath {

    // metadata
    string public constant name = "Basic Attention Token";
    string public constant symbol = "BAT";
    uint256 public constant decimals = 18;
    string public version = "1.0";

    // crowdsale parameters
    bool public isFinalized;              // switched to true in operational state
    uint256 public fundingStartBlock;
    uint256 public fundingEndBlock;
    uint256 public constant batFund = 500 * (10**6) * 10**decimals;   // 500m BAT reserved for Brave Intl use

    // constructor
    function BAToken(
        address _ethFundDeposit,
        address _batFundDeposit,
        uint256 _fundingStartBlock,
        uint256 _fundingEndBlock)
    {
      isFinalized = false;                   //controls pre through crowdsale state
      ...
      CreateBAT(batFundDeposit, batFund);  // logs Brave Intl fund
    }

    /// @dev Accepts ether and creates new BAT tokens.
    function createTokens() payable external {
      if (isFinalized) throw;
      if (block.number < fundingStartBlock) throw;
      if (block.number > fundingEndBlock) throw;
      if (msg.value == 0) throw;
      ...

Ethereum 上に Smart Contract をデプロイする方法

Ethereum Mainnet

Geth (Ethreum Node)

Smart Contract

(あなたの PC 上で実行可能です)

Build & Deploy

他のノードへ同期

デプロイ済みの Smart Contract

 Ethereum と既存のアプリケーションの連携

Ethereum Mainnet

Geth (Ethreum Node)

Web アプリ等

write data

read data

sync data

by Web3 lib

Ether

Smart Contracts 上の関数を実行するための

手数料

  • Ether(ETH) = Fuel of DApps = Fee
  • Smart Contract 上の関数を呼ぶのに必要
  • Bitcoin のような通貨としても利用できる

ふーん。で、その Ethereum とやらを使うとどんな分散アプリを作れるのさ?

3. ICO から学ぶブロックチェーンの活用事例

これは何ですか?

株式とは何か

  • 株式会社における社員権のことである。 (by Wikipedia)
     
  • 株式の所有者はその会社に対して、持ち分に応じて一定の権利を有する(議決権、配当受益権等)​
     
  • つまり株式は会社に対する権利を規格化・数値化したものであると言える
     
  • 上場企業の株式は、市場でその会社を介さることなく売買することが出来る

株式と似た仕組みをブロックチェーンで作れるんじゃないか? (by 天才

株式 => 仮想通貨(トークン)

規格化 => ERC (Ethereum 版 RFC)

 

数値化 => 総通貨発行量・保有数

 

上場株式の取引 => 仮想通貨取引所での売買

ICO

"ICO" とは?

伝統的な IPO = 株式上場

Initial Coin Offering = 

私設の暗号通貨取引所への上場

800 以上の仮想通貨が "上場" (link)

Bitcoin 以外の仮想通貨の市場総額 (直近1年)

市場総額: 9兆円

(Bitcoin 合わせると 17兆円)

1年で4000%上昇!

上場のためのハードルが比較的低く、

プロダクトがない状態でも上場しています

(創業1~2年以内に上場しているところが多い)

30秒で $35M

集めて上場!

(39億円)

Basic Attention Token

ブロックチェーンを活用した全く新しい Web 広告技術

Token とは?

Token

Crypto-Currency

  • トークンは仮想通貨であり、他の通貨と同じようにトレード可能
  • プロジェクトによって独自の権利を持つ仮想通貨
    (例. 将来の売上の一部を配分)

これらのトークンはどのように実装されているか?

Ethereum + Smart Contract

BAT の Smart Contract の場合

You can see the source code here

たった 175 行!!

(Starbase のはより高機能なので

2千行程度)

ERC20: トークンの統一規格

 1 contract ERC20 {
 2     function totalSupply() constant returns (uint totalSupply);
 3     function balanceOf(address _owner) constant returns (uint balance);
 4     function transfer(address _to, uint _value) returns (bool success);
 5     function transferFrom(address _from, address _to, uint _value) returns (bool success);
 6     function approve(address _spender, uint _value) returns (bool success);
 7     function allowance(address _owner, address _spender) constant returns (uint remaining);
 8     event Transfer(address indexed _from, address indexed _to, uint _value);
 9     event Approval(address indexed _owner, address indexed _spender, uint _value);
10 }

ERC20 token は Ethereum 上で発行されるトークンのための統一規格であり、外部アプリケーションや暗号通貨取引所などが様々なトークンをより扱いやすくするためのもの

上場前

投資家

Smart Contract

Project Owner

上場後

投資家

Smart Contract

仮想通貨取引所

直接取引

市場取引

お金とトークンの流れ

創業メンバー

1

2

3

BAT の Smart Contract の詳細解説

コードの詳細については私(山中)の過去の講演で解説しています。

("ビットコインとか勉強会#9" で検索)

その他 Ethereum 上のトークンで

技術的に出来ること

  • 時間経過と共にトークンの供給量を増やす(インフレーション)
  • 上場後も公募増資出来るようにする
  • ロックアップやべスティング期間を付けてトークンを従業員等に割り当てる
  • トークンの所有者に所有割合に応じて収益等を分配する
  • スマホから未上場トークンを買う

すべてプログラミング可能!

Ethereum 開発のオススメ勉強法

本を買って読む

公式マニュアルを読む

公開ソースコードを読む

★ 経験者と働く ★

まとめ

ICO

私設の暗号通貨取引所への上場

Ethereum とは

ブロックチェーン技術を使った、世界規模の分散アプリケーションプラットフォーム。新規トークン発行と ICO が盛んに行われている。

Ethereum 関連技術

Ether, Smart Contract, ERC20, Solidity, OpenZeppelin, Truffle, Web3, Geth

Ethereum 開発の学習法

トークンの実装方法と仕組み

← 2ページ戻る

ブロックチェーンとは

数学と技術で "価値" を保証する自律分散型システム

ブロックチェーンの未来はエンジニアが切り開いています。

その未来を創る側に回るか、ただ将来使う側に回るかはあなたの決断次第です。

Thank you!

CTO of Starbase

Yu Yamanaka

Aug 27th, 2017,

at July Tech Festa