SlideShare a Scribd company logo
Copyright 2018 Hiroyuki Onaka
仮想通貨始めました
~GethではじめるEthereum~
fun-tech meetup #6 IT技術ではじめての○○○ビアバッシュLT大会
2018/1/31 大中浩行(@setoazusa)
この作品は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。
Copyright 2018 Hiroyuki Onaka
はじめまして!
• 大中浩行(Onaka,Hiroyuki)
• @setoazusa / せとあず
• グロースエクスパートナーズ(株)
アーキテクチャソリューション部
テクニカルリード
Copyright 2018 Hiroyuki Onaka
• JJUGの方から来ました
• TDDBC 主宰
• 技術系同人サークル「ふぃーるどのーつ」
• 「錬金術MeetUp」会場係
Copyright 2018 Hiroyuki Onaka
今日のお題「仮想通貨始めました」
毎日ニュースやSNSが仮想通貨の話題でもちき
りですが、儲ける話ばかりでなくエンジニアな
ら自分で作ってみるべきではなかろうかと
Copyright 2018 Hiroyuki Onaka
やってみた
Etherenumを使って、独自通貨を実装しようと
した試みの報告になります。
4/22の「技術書典4」向けの取り組みの経過報
告になります。
Copyright 2018 Hiroyuki Onaka
Etherenum(イーサリアム)とは
• https://www.ethereum.org/
Etherenumとは、スマートコントラクトを実行する分散プラット
フォームです。アプリケーションは、ダウンタイム、検閲、詐欺ま
たは第三者の干渉の可能性なしに、プログラムとして実行されます。
これらのアプリケーションは、価値の移動によって所有権を示す、
非常に強力な共有グローバルインフラストラクチャである、カスタ
ムビルドなブロックチェーン上で実行されます。
(せとあず訳)
Copyright 2018 Hiroyuki Onaka
スマートコントラクトとは...
(割愛)
Copyright 2018 Hiroyuki Onaka
やったこと
Geth(Go言語によるEtherenumクライアント)
上のPrivate Network
環境: Ubuntu 17.10(VirtualBox上)
Copyright 2018 Hiroyuki Onaka
インストール
$ sudo add-apt-repository -y
ppa:ethereum/Ethereum
$ sudo apt-get update
$ sudo apt-get install ethereum
Copyright 2018 Hiroyuki Onaka
Private NetworkのためのGenesis Blockを記述す
る
{
"config": {
"chainId": 15,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"difficulty": "200000000",
"gasLimit": "2100000",
"alloc" : {}
}
Copyright 2018 Hiroyuki Onaka
初期化してクライアント起動
$ geth --datadir /home/vagrant/geth init
genesis.json
$ geth --datadir /home/vagrant/geth --
networkid 15
Copyright 2018 Hiroyuki Onaka
コンソールに接続
$ geth attach ipc:geth.ipc
[~/geth] Welcome to the Geth JavaScript
console!
>
Copyright 2018 Hiroyuki Onaka
アカウントを作成
> personal.newAccout("****")
> personal.newAccout("****")
Copyright 2018 Hiroyuki Onaka
> eth.blockNumber(0)
0
Copyright 2018 Hiroyuki Onaka
ブロック数が0なので、マイニングするわけです
が...
Etherenumのマイニングには、一般的にはGPU
を使用します。
CPUのマイニングを有効にするには、gethをマ
イニングモードで起動する必要があります。
(最初これに気づかず一晩Surfaceを湯たんぽに
した)
Copyright 2018 Hiroyuki Onaka
CPUモードでのマイニング
$ geth --datadir /home/vagrant/geth --
mine --minerthreads=2
Copyright 2018 Hiroyuki Onaka
一晩経ちました
> eth.blockNumber
25
> eth.getBalance(eth.coinbase)
125000000000000000000
> eth.getBalance(eth.accounts[0])
125000000000000000000
Copyright 2018 Hiroyuki Onaka
eth.sendTransaction({from: eth.accounts[0], to: eth.accounts[1],
value: web3.toWei(10, "ether")})
Error: authentication needed: password or unlock
at web3.js:3143:20
at web3.js:6347:15
at web3.js:5081:36
at <anonymous>:1:1
Copyright 2018 Hiroyuki Onaka
> personal.unlockAccount(eth.accounts[0])
Unlock account 0x458c2ed4695587effe3875cad06d3eb71336e376
Passphrase:
true
> eth.sendTransaction({from: eth.accounts[0], to: eth.accounts[1],
value: web3.toWei(10, "ether")})
"0x437e2cea634a1425bbb587b69ac56d553d08f3278370cb6ef8fb48
a48e87920e"
Copyright 2018 Hiroyuki Onaka
> eth.getBalance(eth.accounts[1])
0
Copyright 2018 Hiroyuki Onaka
> eth.pendingTransactions
[{
blockHash: null,
blockNumber: null,
from: "0x458c2ed4695587effe3875cad06d3eb71336e376",
gas: 90000,
gasPrice: 18000000000,
hash: "0x437e2cea634a1425bbb587b69ac56d553d08f3278370cb6ef8fb48a48e87920e",
input: "0x",
nonce: 0,
r: "0x8f03345a4b9f063610c9d51eff2314f08f9a0c69feae4443e52b8a73a580ada0",
s: "0x449efa0dae06da6ef070620281fd45c30fae6d010a5711ee49947c46153402e4",
to: "0xd4402cad20ceabcd6880f169b7aab75b47c843cb",
transactionIndex: 0,
v: "0x41",
Copyright 2018 Hiroyuki Onaka
トランザクションをブロックに組み込むため、マ
イニングします
$ geth --mine --minerthreads=2 --datadir
/home/vagrant/geth --networkid 15
# ペンディングのトランザクションがなくなったら
処理完了
> eth.pendingTransactions
[]
Copyright 2018 Hiroyuki Onaka
残高を確認する
> eth.getBalance(eth.accounts[0])
120000000000000000000
> eth.getBalance(eth.accounts[1])
10000000000000000000
Copyright 2018 Hiroyuki Onaka
感想
• やってみないとやはりわからないことがある
(CPUマイニングの件とか)
• 公式のドキュメントは読むべき
• たかだがアカウント間の送金のトランザク
ションにCPUパワー(と電気)を使いすぎでは
ないのか
Copyright 2018 Hiroyuki Onaka
• go-ethereum
https://github.com/ethereum/go-
ethereum/wiki
• はじめてのブロックチェーン・アプリケーション
Ethereumによるスマートコントラクト開発入門
https://www.amazon.co.jp/dp/4798151343/
Copyright 2018 Hiroyuki Onaka
スマートコントラクトを作ろう!(味噌煮研究所
「味噌煮研究所東関東支部冬季研究成果報告書
Vol.1」)
https://miso-lab.booth.pm/items/715680

More Related Content

PDF
錬金術MeetUpへのお誘い
PDF
2000年問題と私
PPTX
ethererumの開発ツールとか
PPTX
EXE #6:Development Tools & Technologies in Ethereum
PPTX
About ethereum
PPTX
Ethereumをさわって実感するブロックチェーンハンズオン
PPTX
Ethereumをさわって実感するブロックチェーンハンズオン(新版はここ https://www.slideshare.net/mogiken1/et...
PDF
Ethereum whitepaper
錬金術MeetUpへのお誘い
2000年問題と私
ethererumの開発ツールとか
EXE #6:Development Tools & Technologies in Ethereum
About ethereum
Ethereumをさわって実感するブロックチェーンハンズオン
Ethereumをさわって実感するブロックチェーンハンズオン(新版はここ https://www.slideshare.net/mogiken1/et...
Ethereum whitepaper

Similar to 仮想通貨始めました~GethではじめるEthereum~ (10)

PPT
Ethereumとはなにか(日本海賊党ニコ生資料)
PPTX
Parity ethereum
PPTX
知らなかった! Bitcoinとethereumの違い
PPTX
筑波大学 Blockchain meetup 第一回
PDF
ブロックチェーン連続講義 第7回 スマートコントラクト
PPTX
Goで学ぶDApp(aizu.go#2)
PDF
Ethereum walletの調査
PPTX
Blockchain wg 20170803
PDF
Blockchain innovation
PPTX
Blockchain EXE Legal #1:リーガル x エンジニア:ブロックチェーンの技術特性を踏まえた法的論点整理(西村 祥一:コンプス情報技術研...
Ethereumとはなにか(日本海賊党ニコ生資料)
Parity ethereum
知らなかった! Bitcoinとethereumの違い
筑波大学 Blockchain meetup 第一回
ブロックチェーン連続講義 第7回 スマートコントラクト
Goで学ぶDApp(aizu.go#2)
Ethereum walletの調査
Blockchain wg 20170803
Blockchain innovation
Blockchain EXE Legal #1:リーガル x エンジニア:ブロックチェーンの技術特性を踏まえた法的論点整理(西村 祥一:コンプス情報技術研...
Ad

More from Hiroyuki Ohnaka (20)

PDF
remote Docker over SSHが熱い
PDF
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
PDF
Remote Development with Visual Studio Code & A clean dev env, working every ...
PDF
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
PDF
「WindowsデスクトップでWeb開発 改訂版」サンプル
PDF
Mackerelの薄い本
PDF
Microsoft DocsにContributeした話
PDF
Azure functions+typescript
PDF
技術書典4 く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
PDF
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
PDF
Mackerelではじめる お手軽サーバー監視
PDF
「GebとSpockではじめるシステムテスト自動化」
PDF
TDDはじめて物語Second Season(updated)
PDF
TDDはじめて物語 Second Season #tddbc
PDF
XP祭り2017 LT 「DevOps再考」(改題)
PDF
JDK9の真の目玉機能はこれだ!
PDF
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
PDF
「すいーとみゅーじっく」のできるまで
PDF
pact-jvmではじめるコンシューマー駆動契約
PDF
実録Blue-Green Deployment導入記
remote Docker over SSHが熱い
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
Remote Development with Visual Studio Code & A clean dev env, working every ...
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
「WindowsデスクトップでWeb開発 改訂版」サンプル
Mackerelの薄い本
Microsoft DocsにContributeした話
Azure functions+typescript
技術書典4 く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
Mackerelではじめる お手軽サーバー監視
「GebとSpockではじめるシステムテスト自動化」
TDDはじめて物語Second Season(updated)
TDDはじめて物語 Second Season #tddbc
XP祭り2017 LT 「DevOps再考」(改題)
JDK9の真の目玉機能はこれだ!
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
「すいーとみゅーじっく」のできるまで
pact-jvmではじめるコンシューマー駆動契約
実録Blue-Green Deployment導入記
Ad

仮想通貨始めました~GethではじめるEthereum~

  • 1. Copyright 2018 Hiroyuki Onaka 仮想通貨始めました ~GethではじめるEthereum~ fun-tech meetup #6 IT技術ではじめての○○○ビアバッシュLT大会 2018/1/31 大中浩行(@setoazusa) この作品は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。
  • 2. Copyright 2018 Hiroyuki Onaka はじめまして! • 大中浩行(Onaka,Hiroyuki) • @setoazusa / せとあず • グロースエクスパートナーズ(株) アーキテクチャソリューション部 テクニカルリード
  • 3. Copyright 2018 Hiroyuki Onaka • JJUGの方から来ました • TDDBC 主宰 • 技術系同人サークル「ふぃーるどのーつ」 • 「錬金術MeetUp」会場係
  • 4. Copyright 2018 Hiroyuki Onaka 今日のお題「仮想通貨始めました」 毎日ニュースやSNSが仮想通貨の話題でもちき りですが、儲ける話ばかりでなくエンジニアな ら自分で作ってみるべきではなかろうかと
  • 5. Copyright 2018 Hiroyuki Onaka やってみた Etherenumを使って、独自通貨を実装しようと した試みの報告になります。 4/22の「技術書典4」向けの取り組みの経過報 告になります。
  • 6. Copyright 2018 Hiroyuki Onaka Etherenum(イーサリアム)とは • https://www.ethereum.org/ Etherenumとは、スマートコントラクトを実行する分散プラット フォームです。アプリケーションは、ダウンタイム、検閲、詐欺ま たは第三者の干渉の可能性なしに、プログラムとして実行されます。 これらのアプリケーションは、価値の移動によって所有権を示す、 非常に強力な共有グローバルインフラストラクチャである、カスタ ムビルドなブロックチェーン上で実行されます。 (せとあず訳)
  • 7. Copyright 2018 Hiroyuki Onaka スマートコントラクトとは... (割愛)
  • 8. Copyright 2018 Hiroyuki Onaka やったこと Geth(Go言語によるEtherenumクライアント) 上のPrivate Network 環境: Ubuntu 17.10(VirtualBox上)
  • 9. Copyright 2018 Hiroyuki Onaka インストール $ sudo add-apt-repository -y ppa:ethereum/Ethereum $ sudo apt-get update $ sudo apt-get install ethereum
  • 10. Copyright 2018 Hiroyuki Onaka Private NetworkのためのGenesis Blockを記述す る { "config": { "chainId": 15, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 }, "difficulty": "200000000", "gasLimit": "2100000", "alloc" : {} }
  • 11. Copyright 2018 Hiroyuki Onaka 初期化してクライアント起動 $ geth --datadir /home/vagrant/geth init genesis.json $ geth --datadir /home/vagrant/geth -- networkid 15
  • 12. Copyright 2018 Hiroyuki Onaka コンソールに接続 $ geth attach ipc:geth.ipc [~/geth] Welcome to the Geth JavaScript console! >
  • 13. Copyright 2018 Hiroyuki Onaka アカウントを作成 > personal.newAccout("****") > personal.newAccout("****")
  • 14. Copyright 2018 Hiroyuki Onaka > eth.blockNumber(0) 0
  • 15. Copyright 2018 Hiroyuki Onaka ブロック数が0なので、マイニングするわけです が... Etherenumのマイニングには、一般的にはGPU を使用します。 CPUのマイニングを有効にするには、gethをマ イニングモードで起動する必要があります。 (最初これに気づかず一晩Surfaceを湯たんぽに した)
  • 16. Copyright 2018 Hiroyuki Onaka CPUモードでのマイニング $ geth --datadir /home/vagrant/geth -- mine --minerthreads=2
  • 17. Copyright 2018 Hiroyuki Onaka 一晩経ちました > eth.blockNumber 25 > eth.getBalance(eth.coinbase) 125000000000000000000 > eth.getBalance(eth.accounts[0]) 125000000000000000000
  • 18. Copyright 2018 Hiroyuki Onaka eth.sendTransaction({from: eth.accounts[0], to: eth.accounts[1], value: web3.toWei(10, "ether")}) Error: authentication needed: password or unlock at web3.js:3143:20 at web3.js:6347:15 at web3.js:5081:36 at <anonymous>:1:1
  • 19. Copyright 2018 Hiroyuki Onaka > personal.unlockAccount(eth.accounts[0]) Unlock account 0x458c2ed4695587effe3875cad06d3eb71336e376 Passphrase: true > eth.sendTransaction({from: eth.accounts[0], to: eth.accounts[1], value: web3.toWei(10, "ether")}) "0x437e2cea634a1425bbb587b69ac56d553d08f3278370cb6ef8fb48 a48e87920e"
  • 20. Copyright 2018 Hiroyuki Onaka > eth.getBalance(eth.accounts[1]) 0
  • 21. Copyright 2018 Hiroyuki Onaka > eth.pendingTransactions [{ blockHash: null, blockNumber: null, from: "0x458c2ed4695587effe3875cad06d3eb71336e376", gas: 90000, gasPrice: 18000000000, hash: "0x437e2cea634a1425bbb587b69ac56d553d08f3278370cb6ef8fb48a48e87920e", input: "0x", nonce: 0, r: "0x8f03345a4b9f063610c9d51eff2314f08f9a0c69feae4443e52b8a73a580ada0", s: "0x449efa0dae06da6ef070620281fd45c30fae6d010a5711ee49947c46153402e4", to: "0xd4402cad20ceabcd6880f169b7aab75b47c843cb", transactionIndex: 0, v: "0x41",
  • 22. Copyright 2018 Hiroyuki Onaka トランザクションをブロックに組み込むため、マ イニングします $ geth --mine --minerthreads=2 --datadir /home/vagrant/geth --networkid 15 # ペンディングのトランザクションがなくなったら 処理完了 > eth.pendingTransactions []
  • 23. Copyright 2018 Hiroyuki Onaka 残高を確認する > eth.getBalance(eth.accounts[0]) 120000000000000000000 > eth.getBalance(eth.accounts[1]) 10000000000000000000
  • 24. Copyright 2018 Hiroyuki Onaka 感想 • やってみないとやはりわからないことがある (CPUマイニングの件とか) • 公式のドキュメントは読むべき • たかだがアカウント間の送金のトランザク ションにCPUパワー(と電気)を使いすぎでは ないのか
  • 25. Copyright 2018 Hiroyuki Onaka • go-ethereum https://github.com/ethereum/go- ethereum/wiki • はじめてのブロックチェーン・アプリケーション Ethereumによるスマートコントラクト開発入門 https://www.amazon.co.jp/dp/4798151343/
  • 26. Copyright 2018 Hiroyuki Onaka スマートコントラクトを作ろう!(味噌煮研究所 「味噌煮研究所東関東支部冬季研究成果報告書 Vol.1」) https://miso-lab.booth.pm/items/715680