〜ブロックチェーン実践入門〜
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
Twitter: https://twitter.com/yurelx
Blog: http://staycreative.jp/
- エンジニア歴10年。中小〜大企業向けクラウドセキュリティシステム、及び一般消費者向け Web システムの開発/運用等に携わる
- 大規模かつ急速に拡大するクラウドサービスを運用 (800台超のサーバ、月間アクティブユーザ数1500万以上のメディア運営)
- 2016年10月にブロックチェーン業界に参戦
Starbase
"Skyrocket your idea"
暗号通貨の Kickstarter
トークンによる資金調達が当たり前になる社会を目指して
Starbase
Team
突然ですが、
これは何ですか?
お金 or 紙切れ?
誰が価値を保証している?
世界共通の通貨を作りたい!
誰が価値を保証する?
誰何が価値を保証する?
Mathematics
Technology
エンジニアが創った
国境なき通貨
Today's
Main Topic
管理者なき世界インフラ
ブロックチェーン
- ブロックチェーンはどのようにして動き続けるのか
- 通貨だけじゃないブロックチェーン Ethereum
- ICO から学ぶブロックチェーンの活用事例
1. ブロックチェーンはどのようにして動き続けるのか
従来のシステム
ベアメタルがクラウドになっても基本は何も変わらず
従来のシステム
ブロックチェーン
お金を送る
従来のシステム
ブロックチェーン
ブロックチェーン
- すべての Node がすべての取引データを持つ (=全 Node が DB を持つ)
- ある Node が取引を宣言する (例: User A -> B に送金)
- ある Miner が取引を承認する (報酬として Bitcoin を得る)
- すべての Node に取引情報がブロードキャストされ、それぞれの DB に追記される
- 一度追記された取引情報は改ざん不可 (by Proof of Work)
マスターサーバーが無い!
自律分散型インフラ
(No SPOF!)
オーケー、分かった。でも僕が作りたいのは決済システムじゃないんだ。
ブロックチェーンで他に何か出来ないの?
Bitcoin に次いで世界最大のブロックチェーン
2. 通貨だけじゃないブロックチェーン Ethereum
Ethereum: the World Computer
Ethereum: the World Computer
- Bitcoin と同様、マイナーがいます
- 後述の Ether を払えば誰でも利用可能
- 伝統的なアプリケーションと接続可能
- 分散アプリケーション(Smart Contract) の実行インフラ
世界規模の分散アプリケーションプラットフォーム
Smart Contract
- 契約条件をコードで定義
- Ethereum 上にデプロイする
- ユーザまたはアプリが手数料(Ether)を払ってそのプログラム上の関数を実行
- 契約条件に応じて、処理を実行
コードで記述した契約条件を自動執行するプログラム
一度定義した契約条件は変更出来ない =
ブロックチェーンの不可逆性を利用
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" で検索)
YouTube 動画 (https://youtu.be/PaHzNG4w8T8?t=1762)
その他 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
〜ブロックチェーン実践入門〜 30秒で39億円集める「スマートコントラクト」の衝撃とその作り方
By Yu Yamanaka
〜ブロックチェーン実践入門〜 30秒で39億円集める「スマートコントラクト」の衝撃とその作り方
- 6,158