Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Docker (Windows) でブロックチェーン
Search
yochi
December 01, 2017
Technology
0
2k
Docker (Windows) でブロックチェーン
【ブロックチェーン技術に興味のあるエンジニア対象】bitFlyer Drink Meetup! #9 の発表資料です。
yochi
December 01, 2017
Tweet
Share
Other Decks in Technology
See All in Technology
ガバメントクラウド(AWS)へのデータ移行戦略の立て方【虎の巻】 / 20251011 Mitsutosi Matsuo
shift_evolve
PRO
2
200
スタートアップにおけるこれからの「データ整備」
shomaekawa
2
490
今この時代に技術とどう向き合うべきか
gree_tech
PRO
2
2k
カンファレンスに託児サポートがあるということ / Having Childcare Support at Conferences
nobu09
1
600
LLMアプリの地上戦開発計画と運用実践 / 2025.10.15 GPU UNITE 2025
smiyawaki0820
1
600
LLMプロダクトの信頼性を上げるには?LLM Observabilityによる、対話型音声AIアプリケーションの安定運用
ivry_presentationmaterials
0
290
「使い方教えて」「事例教えて」じゃもう遅い! Microsoft 365 Copilot を触り倒そう!
taichinakamura
0
410
アイテムレビュー機能導入からの学びと改善
zozotech
PRO
0
180
それでも私が品質保証プロセスを作り続ける理由 #テストラジオ / Why I still continue to create QA process
pineapplecandy
0
120
AWS Control Tower に学ぶ! IAM Identity Center 権限設計の第一歩 / IAM Identity Center with Control Tower
y___u
1
200
ニッポンの人に知ってもらいたいGISスポット
sakaik
0
160
Liquid AI Hackathon Tokyo プレゼン資料
aratako
0
110
Featured
See All Featured
Building Applications with DynamoDB
mza
96
6.7k
Building Adaptive Systems
keathley
44
2.8k
The World Runs on Bad Software
bkeepers
PRO
72
11k
The Straight Up "How To Draw Better" Workshop
denniskardys
238
140k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
115
20k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.1k
Building a Scalable Design System with Sketch
lauravandoore
463
33k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Designing for humans not robots
tammielis
254
26k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Reflections from 52 weeks, 52 projects
jeffersonlam
353
21k
Transcript
Docker (Windows) で ブロックチェーン 越智 佳景
本日の内容 • ブロックチェーン • Docker • Hyperledger Sawtoothを動かす
ブロックチェーン
ブロックチェーン • Bitcoinで開発された技術 • 改ざん困難な記録(ブロックチェーン) <=台帳 • 構成要素 • トランザクション
• ブロック • … • Hyperledger (Hyper=すごい Ledger=台帳) • Linux Foundationで開発 • Hyperledger Sawtooth
Bitcoinトランザクション • コインを使う(AB) • Input: Aのアドレス • Output: Bのアドレス+金額 •
OutputからInputを生成 • Output: Aの公開鍵 • Input: Aの秘密鍵でダイジェスト • 鍵が合う=持ち主だけが正しいトラン ザクション生成可能 A:1 A B:0.99 A’ C:0.99 持ち主によるコインの移動 input output 本物 偽物 output Z input
Bitcoinブロック • ヘッダのハッシュ値が規定値より小さ くなるようNonceを調整(PoW) • Nのヘッダのハッシュ • トランザクションのハッシュ • Nonce
• … 改ざん困難なチェーンの実現 TX TX TX … Height N TX TX TX … Height N+1 000000…01234abcd 000000…020000000 < Nonce=0,1,2…
Sawtoothトランザクション • アプリ開発者が任意に設計 • ValidatorがTransaction Processor に問い合わせ • IntegerKey •
State • {Name:Value} • Transaction • {Verb, Name, Value} ステート変更 N V TP OK S-> S’ My口座 ¥1000 My口座 ¥750 Verb: dec Name: My口座 Value: 250
Sawtoothブロック • 代表ノードが作成 • Nを指すブロックヘッダを署名 • コンセンサスの取れたブロック追加 改ざんには秘密鍵必要 TX TX
TX … Height N TX TX TX … Height N+1
Docker
Docker • コンテナ技術の一種 • ホストのLinuxカーネルを使用して、コンテナ(=プロセス) を実行 • Mac, Windowsでは仮想OSを使用して利用 Linux
HW Virtualization SW Guest OS Virtual HW Linux HW Container 仮想化 Docker
Docker の種類 • 種類 • EE (Enterprise Edition) • CE
(Community Edition) • Windows • Docker for Windows (Hyper-V上のLinux上で動作) • Docker ToolBox (VirtualBox上のLinux上で動作)
準備 • CPUの仮想機能有効化(BIOS) • Hyper-Vの有効化
インストール • Docker for Windowのダウンロード&インストール • https://store.docker.com/editions/community/docker-ce-desktop- windows • 起動後エラー
• ユーザーをdocker-usersグループへ
設定 1. タスクトレイのクジラアイコン右クリック 2. Settingクリック 3. Shared Drives クリック 4.
マウントしたいドライブレターをチェック
動作確認 • コマンドプロンプト C:¥> docker run hello-world
実行方法 Dockerfile docker build . Image docker run Container docker-compose.yaml
Container docker-compose up
Hyperleger Sawtoothを動かす
実行 • Github • https://github.com/hyperledger/sawtooth-core • zipをダウンロード(v1.0.0rc2) • Docker関係のディレクトリ •
https://sawtooth.hyperledger.org/docs/core/releases/latest/app_d evelopers_guide/docker.html • Dockerディレクトリで以下のコマンドを実行 C:¥> docker-compose –f sawtooth-default.yaml up
コンテナ構成 validator shell1 shell2 settings-tp intkey-tp-python xo-tp-python rest-api 8008 4004
4004 sawtooth-default.yaml
◦✕ゲーム • Spec • ステート • <name>,<board>,<game-state>,<player-key-1>,<player-key-2> • トランザクション •
<name>,<action>,<space>
◦✕ゲーム • 遊び方 # sawtooth keygen [ユーザー名] # xo create
--url http://rest-api:8008 --username [ユーザー名] [ゲーム名] # xo list --url http://rest-api:8008 # xo take --url http://rest-api:8008 [ゲーム名] [場所] # xo show --url http://rest-api:8008 [ゲーム名] 1 2 3 4 5 6 7 8 9
コマンドの流れ shell1 shell2 validator xo-tp-python sawtooth keygen xo create sawtooth
keygen STATE: P1-NEXT Signer: Body: game1,create TX, State <<game1>> Player1: Player2: Board: []
コマンドの流れ shell1 shell2 validator xo-tp-python xo take 1 Signer: Body:
game1,take,1 xo take 2 STATE: P2-NEXT STATE: P1-NEXT <<game1>> Player1: Player2: Board: [1] <<game2>> Player1: Player2: Board: [1,2] Signer: Body: game1,take,2 TX, State TX, State STATE: P1-NEXT
コマンドの流れ shell1 shell2 validator xo-tp-python xo take 5 <<game1>> Player1:
Player2: Board: [1,2] Signer: Body: game1,take,5 TX, State STATE: P1-NEXT STATE: P1-NEXT Invalid!!
まとめ • ブロックチェーンはBitcoin発祥 • 様々な実装 • Hyperledger Sawtooth • トランザクションを自由に設計
• Dockerで簡単に動作確認
ありがとうございました