SlideShare a Scribd company logo
Development Tools
& Technologies in Ethereum
Comps Co., Ltd. & Pte. Ltd. CEO
Y. Nishimura 2017.11.15
Blockchain EXE [#6]
顧客が期待するモノ
Ethereum Network
Smart Contract
Web App (UI)
Mobile App
HTTP
deploy contract
call function
send transaction
HTTP
最初に与えられるモノ
Ethereum Network
Geth Console
deploy/call
send transaction
8
そんな装備で大丈夫
か?
E ひのきのぼう
E 布の服
そうび
Tools & Technologies
• Geth
• Parity
• Testrpc
• Web3.js
• Browser-solidity
• Etherscan.io
• Truffle
• BlockApps
• Ether.camp
• Metamask
• MyEtherWallet
• Status.im
• ENS
• IPFS
• Swarm
• Oraclize
• ERC20
• HD Wallet (BIP32)
• Zeppelin
本当に欲しかったモノ
Ethereum Network
Mobile App
Web App (UI)
Parity Browser
Geth Console
Hosted Client
e.g. Infura,
Metamask,
MyEtherWallet,
etcJSON RPC
(web3.js)
Geth/Parity
Geth
• Ethereum Foundation によるオフィシャル・クライアント
• Go 言語により書かれているため “G”eth
• 下記のコンポーネントからなる:
• Client Daemon
“node” とよばれる client 本体。他の node と P2P 通信を行う。
Blockchain データの更新、トランザクションの送信、マイニングを行う。
RPC 通信を行うサーバとしても機能する。
• Geth Console
Client Daemon と通信を行うための窓口(コマンドラインツール)
アカウントの作成、トランザクションの署名・送信を指示できる。
Geth Console Client Daemon
(node)
Parity
• Parity Inc. による Ethereum クライアント
• Rust 言語により書かれている
• Yellowpaper に従っているため、Geth とも通信できる
• Geth よりも “軽い” と言われている
• マルチシグウォレットのバグにより
• 7月20日に34億円相当が盗まれた
• 11月7日に316億円相当が凍結された
※ 救済措置 EIP-156 を発動することにより、凍結された資金を取り戻すことが
できる。要ハードフォーク。今回は Tools & Technologies の話題なので深く
突っ込まない。次のハードフォーク Metropolis Pt.2 での実装の可能性あり。
Testrpc
• Ethereum ネットワークおよびクライアントのシミュレータ
• 実際に PoW することなく、node の挙動をシミュレートする
• でインストール$ npm install ethereumjs-testrpc
13
Browser-solidity
• Web ブラウザ上で動作する Solidity 用 IDE(旧 Remix)
• Solidity のコーディング、コンパイル、デプロイが可能
• デプロイ後、コントラクト上の関数呼び出しも可能
• Geth コンソールから行うよりも遥かに開発しやすい
• geth 1.6 以降、Geth コンソールからのコンパイルができな
くなったため、browser-solidity の恩恵は大きい
最近 UI が変わった…
Etherscan.io
• Ethereum のアドレスやトランザクション情報を確認する
ためのエクスプローラ
• コントラクトに向けて送信したトランザクションの状況確
認などのデバッグ用に使う
• コントラクトのソースコードを Verify & Publish すること
が可能
コントラクトの Solidity コードを登録
実際にデプロイされたバイトコードと一致
していれば “Verified” が付く
Web3.js
• Client と RPC 通信を行うための Javascript ライブラリ
• Javascript で書かれているため Web アプリ内で使用可
• でインストール
Geth Client
(node)
Web App (UI)
web3.js
※ iOS や Android アプリ内でも React Native 経由で使用できることを確認済み 
$ npm install web3
Metamask
• Client と RPC 通信を行うための Chrome Extension
• web3.js が Web ページに inject される
• 接続先の node は Metamask 社がホスティングしている
• Wallet としての機能も備えており、Ether の送信や ERC20
トークンの送信も行える
Geth Client
(node)
Web App
with Metamask
Metamask 社が
ホスティングしている
Dapp 内でトランザクションの送信が行われるタイミングで確認ダイアログが開く
17
MyEtherWallet
• Web ブラウザ上で動作する Ethereum ウォレット
• Ether だけでなく ERC20 トークンも扱える
• github 上のモノをローカルで動かすのが安全
• https://www.myetherwallet.com/ を使ってもよい
• コントラクトの関数を実行することも可能
ABI を入力する必要がある
定義された関数を選択可能
18
ENS
• Ethereum Name Service
• Ethereum の世界における DNS
• アドレスに blockchainexe.eth のような別名を紐付けられる
• 早いもの勝ち+オークション形式(寄付)
• 6億円の価値が付いたドメインも…
IPFS
• Interplanetary File System
• P2P 分散型ファイルシステム
• コントラクト内に保持できない大きめなデータの格納
• Dapp のホスティングが真骨頂
Web App (UI)
Hosted Ethereum node
Hosted IPFS node
Ethereum Network
IPFS Network
Dapp
Swarm
• P2P 分散型ファイルシステム(IPFS 同様)
• コントラクト内に保持できない大きめなデータの格納
• コントラクトの ABI を Swarm 上に格納できる
Ethereum Network
Swarm Network
solc
Solidity
Source Code
Compile
Deploy
Upload
Swarm hash
Swarm hash
Pointing to
metadata
metadata
metadata
※ この手法は一般的にあまり知られていな
$ solc --metadata
Oraclize
• コントラクト内から外部のデータは参照できない(箱庭)
• Oraclize コントラクトに外部データの取得を依頼
• Oraclize が結果を取得し callback してくれる
Ethereum Network
Web API
Blockchain API
WolframAlpha
IPFS
実行外部情報の取得を依頼
callback で実行結果を通知
Internet
スマートコントラクト
実行結果
Oraclize
ERC20
• 通貨の持つべき機能を定義した規格
• 総発行量・各自の保有量が確認できること
• 保有者間で保有量を限度として交換(送受信)ができること
contract ERC20 {
function totalSupply() constant returns (uint totalSupply);
function balanceOf(address _owner) constant returns (uint balance);
function transfer(address _to, uint _value) returns (bool success);
function transferFrom(address _from, address _to, uint _value) returns (bool success);
function approve(address _spender, uint _value) returns (bool success);
function allowance(address _owner, address _spender) constant returns (uint remaining);
event Transfer(address indexed _from, address indexed _to, uint _value);
event Approval(address indexed _owner, address indexed _spender, uint _value);
}
https://theethereum.wiki/w/index.php/ERC20_Token_Standard 23
HD Wallet (BIP32)
• Hierarchical Deterministic Wallet
• BIP32/44 で定義されている実装
• 単語集合を seed としツリー状に key を生成
• 決定的に無数の address を発行することが可能
phoenix suffer generate grand
mask mark cat plum rubber
wallet phone tissue envelope
24
Zeppelin
• OpenZeppelin/zeppelin-solidity
• セキュアなコントラクトを書くための Library
• 主要な ICO 案件がこぞって使っている
• Omise Go, Augur, Storj, ALIS, etc
• 新しいトークンコントラクトやトークンセールコントラク
トを作る場合には使わない手はない
25
Ethereum Ecosystem
Ethereum Network
Mobile App
Web App (UI)
Parity Browser
Geth Console
Hosted Client
e.g. Infura,
Metamask,
MyEtherWallet,
etc
JSON RPC
(web3.js)
Geth/Parity
MyEtherWallet
アドレス解決 ABI 参照
Oraclize
Dapp 格納 外部参照
Tachyon Wallet(開発中)
HD Wallet 対応 QRコードで新規トークン追加 アイコンの IPFS 取
得
• React Native on iOS with web3.js
• Supports Mainnet, Ropsten, Rinkby, Kovan Network
• ERC20, HD Wallet, Flash Payment™

More Related Content

PPTX
plotnetcfg入門 | Introduction to plotnetcfg
PPTX
ConfD で Linux にNetconfを喋らせてみた
PDF
Docker で xxxxxxサーバ を つくれませんでした
PDF
ヤギにサーバーを管理してもらう話
PPT
Heliumエンジンの設計と実装
PPTX
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
PDF
Prometheus at Preferred Networks
PPTX
Seastar in 歌舞伎座.tech#8「C++初心者会」
plotnetcfg入門 | Introduction to plotnetcfg
ConfD で Linux にNetconfを喋らせてみた
Docker で xxxxxxサーバ を つくれませんでした
ヤギにサーバーを管理してもらう話
Heliumエンジンの設計と実装
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
Prometheus at Preferred Networks
Seastar in 歌舞伎座.tech#8「C++初心者会」

Similar to EXE #6:Development Tools & Technologies in Ethereum (20)

PDF
Firefox OS - Blaze Your Own Path
PPTX
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
PDF
PIC RoR Heroku
PDF
Gmo media.inc 第9回西日本ossの普及を考える会
PDF
Ethereum walletの調査
PDF
Dockerの仕組みとIIJ社内での利用例
PDF
QuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphere
PPTX
Dockerを活用して初めてのAITRIOSデバイス 推論実行をWebアプリで改善!
PDF
Using Kubernetes on Google Container Engine
PPTX
技術選択とアーキテクトの役割
PDF
HttpとTelnetをつなぐ何か
PDF
【Unity道場京都スペシャル4】Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
PDF
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
PDF
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
PPT
20080524
PDF
Dockerの利用事例
PDF
Mobile Web
PPTX
Parity ethereum
PDF
The practice of DeFi money lego
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
Firefox OS - Blaze Your Own Path
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
PIC RoR Heroku
Gmo media.inc 第9回西日本ossの普及を考える会
Ethereum walletの調査
Dockerの仕組みとIIJ社内での利用例
QuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphere
Dockerを活用して初めてのAITRIOSデバイス 推論実行をWebアプリで改善!
Using Kubernetes on Google Container Engine
技術選択とアーキテクトの役割
HttpとTelnetをつなぐ何か
【Unity道場京都スペシャル4】Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
20080524
Dockerの利用事例
Mobile Web
Parity ethereum
The practice of DeFi money lego
Hyperledger Fabric公式サンプル fabric-samples徹底解説
Ad

More from blockchainexe (20)

PDF
NFTを活用したマーケティング手法と効果について | ブロックチェーン事業部 マーケティングマネージャー 佐野由生子
PDF
LINEが展開する国内外のマーケットプレイスの仕組みについて | ブロックチェーン企画運営チーム LINE NFT プロジェクトマネージャー 栗原俊幸
PDF
ブロックチェーン市場の動きとLINEのブロックチェーン事業の現状と課題について | ブロックチェーン事業部 事業部長 上遠野大輔
PDF
エンタープライズブロックチェーンの可能性と最新動向(石井敦 | Enterprise Ethereum Alliance 日本支部代表)
PDF
Web3時代のデジタルアイデンティティ (高橋健太 |株式会社日立製作所 研究開発グループ)
PDF
資産性ミリオンアーサーを通して語るNFT事業の取り組み事例 (畑圭輔 | 株式会社スクウェア・エニックス ブロックチェーン・エンタテインメント事業部)
PDF
Web3で分散化社会は可能か | 湯川鶴章
PDF
NFT・ブロックチェーン関連の法律的観点について | 永井幸輔(株式会社メルカリ 兼 株式会社メルコイン NFT新規事業開発マネージャー)
PDF
「パ・リーグ Exciting Moments β」とNFT事業について | 宮本 祐一(株式会社メルペイ・メルコイン PRマネージャー/株式会社メルカリ...
PDF
メルカリにおけるブロックチェーン技術の活用について | 伏見慎剛(株式会社メルカリ 執行役員 NFT担当 / 株式会社メルコイン 取締役)
PDF
DVP決済実現に向けた挑戦 | 世取山 進二(株式会社NTTデータ 金融事業推進部 デジタル戦略推進部 部長)
PDF
デジタル通貨・ステーブルコインが注目される今、インターオペラビリティが必要とされる理由 | 石川 大紀(株式会社Datachain 事業開発シニアマネー...
PDF
Cloud Satelliteで実現する分散クラウド時代のIBM Blockchain Platform Anywhereとエコシステム | 日本アイ・ビ...
PDF
IBM Blockchain Solutionを支えるIBM Blockchain Platform | 日本アイ・ビー・エム株式会社 栗村 彰吾
PDF
ブロックチェーン同士をつなげたトークンエコノミーの実現 —-ConnectionChainとHyperledger CACTUS | 藤本 真吾
PDF
自己主権型アイデンティティを実現するIDYXテクノロジー | 鈴木 大、中山貴祥
PDF
分散型社会にて信頼できるトレーサビリティを実現するChain Data Lineage | 西間木 哲
PDF
Blockchain EXE #1ブロックチェーン技術の可能性について解説|IBMコンサルティング・アーキテクト 平山毅
PDF
Blockchain EXE #16 世界のブロックチェーン技術動向|石井 敦 クーガーCEO
PDF
Blockchain EXE #16 分散型ネットワークを最大活用する為のパブリックとエンタープライズEthereumの動向|石黒一明 EEA Japan代表
NFTを活用したマーケティング手法と効果について | ブロックチェーン事業部 マーケティングマネージャー 佐野由生子
LINEが展開する国内外のマーケットプレイスの仕組みについて | ブロックチェーン企画運営チーム LINE NFT プロジェクトマネージャー 栗原俊幸
ブロックチェーン市場の動きとLINEのブロックチェーン事業の現状と課題について | ブロックチェーン事業部 事業部長 上遠野大輔
エンタープライズブロックチェーンの可能性と最新動向(石井敦 | Enterprise Ethereum Alliance 日本支部代表)
Web3時代のデジタルアイデンティティ (高橋健太 |株式会社日立製作所 研究開発グループ)
資産性ミリオンアーサーを通して語るNFT事業の取り組み事例 (畑圭輔 | 株式会社スクウェア・エニックス ブロックチェーン・エンタテインメント事業部)
Web3で分散化社会は可能か | 湯川鶴章
NFT・ブロックチェーン関連の法律的観点について | 永井幸輔(株式会社メルカリ 兼 株式会社メルコイン NFT新規事業開発マネージャー)
「パ・リーグ Exciting Moments β」とNFT事業について | 宮本 祐一(株式会社メルペイ・メルコイン PRマネージャー/株式会社メルカリ...
メルカリにおけるブロックチェーン技術の活用について | 伏見慎剛(株式会社メルカリ 執行役員 NFT担当 / 株式会社メルコイン 取締役)
DVP決済実現に向けた挑戦 | 世取山 進二(株式会社NTTデータ 金融事業推進部 デジタル戦略推進部 部長)
デジタル通貨・ステーブルコインが注目される今、インターオペラビリティが必要とされる理由 | 石川 大紀(株式会社Datachain 事業開発シニアマネー...
Cloud Satelliteで実現する分散クラウド時代のIBM Blockchain Platform Anywhereとエコシステム | 日本アイ・ビ...
IBM Blockchain Solutionを支えるIBM Blockchain Platform | 日本アイ・ビー・エム株式会社 栗村 彰吾
ブロックチェーン同士をつなげたトークンエコノミーの実現 —-ConnectionChainとHyperledger CACTUS | 藤本 真吾
自己主権型アイデンティティを実現するIDYXテクノロジー | 鈴木 大、中山貴祥
分散型社会にて信頼できるトレーサビリティを実現するChain Data Lineage | 西間木 哲
Blockchain EXE #1ブロックチェーン技術の可能性について解説|IBMコンサルティング・アーキテクト 平山毅
Blockchain EXE #16 世界のブロックチェーン技術動向|石井 敦 クーガーCEO
Blockchain EXE #16 分散型ネットワークを最大活用する為のパブリックとエンタープライズEthereumの動向|石黒一明 EEA Japan代表
Ad

EXE #6:Development Tools & Technologies in Ethereum

  • 1. Development Tools & Technologies in Ethereum Comps Co., Ltd. & Pte. Ltd. CEO Y. Nishimura 2017.11.15 Blockchain EXE [#6]
  • 2. 顧客が期待するモノ Ethereum Network Smart Contract Web App (UI) Mobile App HTTP deploy contract call function send transaction HTTP
  • 3. 最初に与えられるモノ Ethereum Network Geth Console deploy/call send transaction 8 そんな装備で大丈夫 か? E ひのきのぼう E 布の服 そうび
  • 4. Tools & Technologies • Geth • Parity • Testrpc • Web3.js • Browser-solidity • Etherscan.io • Truffle • BlockApps • Ether.camp • Metamask • MyEtherWallet • Status.im • ENS • IPFS • Swarm • Oraclize • ERC20 • HD Wallet (BIP32) • Zeppelin
  • 5. 本当に欲しかったモノ Ethereum Network Mobile App Web App (UI) Parity Browser Geth Console Hosted Client e.g. Infura, Metamask, MyEtherWallet, etcJSON RPC (web3.js) Geth/Parity
  • 6. Geth • Ethereum Foundation によるオフィシャル・クライアント • Go 言語により書かれているため “G”eth • 下記のコンポーネントからなる: • Client Daemon “node” とよばれる client 本体。他の node と P2P 通信を行う。 Blockchain データの更新、トランザクションの送信、マイニングを行う。 RPC 通信を行うサーバとしても機能する。 • Geth Console Client Daemon と通信を行うための窓口(コマンドラインツール) アカウントの作成、トランザクションの署名・送信を指示できる。 Geth Console Client Daemon (node)
  • 7. Parity • Parity Inc. による Ethereum クライアント • Rust 言語により書かれている • Yellowpaper に従っているため、Geth とも通信できる • Geth よりも “軽い” と言われている • マルチシグウォレットのバグにより • 7月20日に34億円相当が盗まれた • 11月7日に316億円相当が凍結された ※ 救済措置 EIP-156 を発動することにより、凍結された資金を取り戻すことが できる。要ハードフォーク。今回は Tools & Technologies の話題なので深く 突っ込まない。次のハードフォーク Metropolis Pt.2 での実装の可能性あり。
  • 8. Testrpc • Ethereum ネットワークおよびクライアントのシミュレータ • 実際に PoW することなく、node の挙動をシミュレートする • でインストール$ npm install ethereumjs-testrpc 13
  • 9. Browser-solidity • Web ブラウザ上で動作する Solidity 用 IDE(旧 Remix) • Solidity のコーディング、コンパイル、デプロイが可能 • デプロイ後、コントラクト上の関数呼び出しも可能 • Geth コンソールから行うよりも遥かに開発しやすい • geth 1.6 以降、Geth コンソールからのコンパイルができな くなったため、browser-solidity の恩恵は大きい 最近 UI が変わった…
  • 10. Etherscan.io • Ethereum のアドレスやトランザクション情報を確認する ためのエクスプローラ • コントラクトに向けて送信したトランザクションの状況確 認などのデバッグ用に使う • コントラクトのソースコードを Verify & Publish すること が可能 コントラクトの Solidity コードを登録 実際にデプロイされたバイトコードと一致 していれば “Verified” が付く
  • 11. Web3.js • Client と RPC 通信を行うための Javascript ライブラリ • Javascript で書かれているため Web アプリ内で使用可 • でインストール Geth Client (node) Web App (UI) web3.js ※ iOS や Android アプリ内でも React Native 経由で使用できることを確認済み  $ npm install web3
  • 12. Metamask • Client と RPC 通信を行うための Chrome Extension • web3.js が Web ページに inject される • 接続先の node は Metamask 社がホスティングしている • Wallet としての機能も備えており、Ether の送信や ERC20 トークンの送信も行える Geth Client (node) Web App with Metamask Metamask 社が ホスティングしている Dapp 内でトランザクションの送信が行われるタイミングで確認ダイアログが開く 17
  • 13. MyEtherWallet • Web ブラウザ上で動作する Ethereum ウォレット • Ether だけでなく ERC20 トークンも扱える • github 上のモノをローカルで動かすのが安全 • https://www.myetherwallet.com/ を使ってもよい • コントラクトの関数を実行することも可能 ABI を入力する必要がある 定義された関数を選択可能 18
  • 14. ENS • Ethereum Name Service • Ethereum の世界における DNS • アドレスに blockchainexe.eth のような別名を紐付けられる • 早いもの勝ち+オークション形式(寄付) • 6億円の価値が付いたドメインも…
  • 15. IPFS • Interplanetary File System • P2P 分散型ファイルシステム • コントラクト内に保持できない大きめなデータの格納 • Dapp のホスティングが真骨頂 Web App (UI) Hosted Ethereum node Hosted IPFS node Ethereum Network IPFS Network Dapp
  • 16. Swarm • P2P 分散型ファイルシステム(IPFS 同様) • コントラクト内に保持できない大きめなデータの格納 • コントラクトの ABI を Swarm 上に格納できる Ethereum Network Swarm Network solc Solidity Source Code Compile Deploy Upload Swarm hash Swarm hash Pointing to metadata metadata metadata ※ この手法は一般的にあまり知られていな $ solc --metadata
  • 17. Oraclize • コントラクト内から外部のデータは参照できない(箱庭) • Oraclize コントラクトに外部データの取得を依頼 • Oraclize が結果を取得し callback してくれる Ethereum Network Web API Blockchain API WolframAlpha IPFS 実行外部情報の取得を依頼 callback で実行結果を通知 Internet スマートコントラクト 実行結果 Oraclize
  • 18. ERC20 • 通貨の持つべき機能を定義した規格 • 総発行量・各自の保有量が確認できること • 保有者間で保有量を限度として交換(送受信)ができること contract ERC20 { function totalSupply() constant returns (uint totalSupply); function balanceOf(address _owner) constant returns (uint balance); function transfer(address _to, uint _value) returns (bool success); function transferFrom(address _from, address _to, uint _value) returns (bool success); function approve(address _spender, uint _value) returns (bool success); function allowance(address _owner, address _spender) constant returns (uint remaining); event Transfer(address indexed _from, address indexed _to, uint _value); event Approval(address indexed _owner, address indexed _spender, uint _value); } https://theethereum.wiki/w/index.php/ERC20_Token_Standard 23
  • 19. HD Wallet (BIP32) • Hierarchical Deterministic Wallet • BIP32/44 で定義されている実装 • 単語集合を seed としツリー状に key を生成 • 決定的に無数の address を発行することが可能 phoenix suffer generate grand mask mark cat plum rubber wallet phone tissue envelope 24
  • 20. Zeppelin • OpenZeppelin/zeppelin-solidity • セキュアなコントラクトを書くための Library • 主要な ICO 案件がこぞって使っている • Omise Go, Augur, Storj, ALIS, etc • 新しいトークンコントラクトやトークンセールコントラク トを作る場合には使わない手はない 25
  • 21. Ethereum Ecosystem Ethereum Network Mobile App Web App (UI) Parity Browser Geth Console Hosted Client e.g. Infura, Metamask, MyEtherWallet, etc JSON RPC (web3.js) Geth/Parity MyEtherWallet アドレス解決 ABI 参照 Oraclize Dapp 格納 外部参照
  • 22. Tachyon Wallet(開発中) HD Wallet 対応 QRコードで新規トークン追加 アイコンの IPFS 取 得 • React Native on iOS with web3.js • Supports Mainnet, Ropsten, Rinkby, Kovan Network • ERC20, HD Wallet, Flash Payment™

Editor's Notes

  • #17: http://solidity.readthedocs.io/en/develop/metadata.html