Más contenido relacionado
Similar a 仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン (20)
Más de Insight Technology, Inc. (20)
仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン
- 1. ULS Powered by
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential
2019/09/25
db tech showcase Tokyo 2019
仮想通貨ウォレットアプリで理解する
データストアとしてのブロックチェーン
- 2. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 1
⾃⼰紹介
明⽯ 敬(あかし けい)
n ウルシステムズ株式会社
n マネージングコンサルタント
{
“業務分野” : [“⾦融”,”Fintech”,”スタートアップ⽀援”],
“得意技” : [“システム開発全般”, “プログラミング”],
“好きな仮想通貨” :[“Bitcoin”,”Ethereum”],
}
- 4. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 3
よく⾔われるブロックチェーン
ただし、データベースとブロックチェーンでは勝⼿が違う部分も多い︕
変更できない
データベース
データの⺠主化
- 5. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 4
ブロックチェーンを理解しないでとりあえず使ってみると、、、
これってデータ
ベースじゃだめな
んですか︖
もっと速くならな
いんですか︖
間違ったデータ⼊
れちゃったんで直
したいんですけど
データがさっきまで
と違うんですけど
バグですか︖
- 6. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 5
本セッションのゴール
nブロックチェーンの特徴を理解し、
n適切なユースケースについて検討する
- 8. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 7
現⾦(法定通貨)とは
n 硬貨や紙幣といった実体があり、政府や中央銀⾏が発⾏主体となり発⾏。
⽇本銀⾏、造幣局
⾦融機関 ⾦融機関
⼀般市⺠⼀般市⺠
⼀般市⺠
貨幣発⾏ 貨幣発⾏
- 9. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 8
送信元 送信先 数量
Aさん Bさん 0.01
仮想通貨の世界
n 仮想通貨は実体はなく電⼦データ。
n 発⾏主体が存在せず、取引データをブロックチェーンで分散管理。
Aさん
Bさん
CさんDさん
送信元 送信先 数量
Aさん Bさん 0.01
送信元 送信先 数量
Aさん Bさん 0.01
送信元 送信先 数量
Aさん Bさん 0.01
送信元 送信先 数量
Aさん Bさん 0.01
Cさん Aさん 0.03
送信元 送信先 数量
Aさん Bさん 0.01
Cさん Aさん 0.03
送信元 送信先 数量
Aさん Bさん 0.01
Cさん Aさん 0.03
送信元 送信先 数量
Aさん Bさん 0.01
Cさん Aさん 0.03
送信元 送信先 数量
Aさん Bさん 0.01
Cさん Aさん 0.03
Dさん Bさん 0.04
・・・
送信元 送信先 数量
Aさん Bさん 0.01
Cさん Aさん 0.03
Dさん Bさん 0.04
・・・
送信元 送信先 数量
Aさん Bさん 0.01
Cさん Aさん 0.03
Dさん Bさん 0.04
・・・
送信元 送信先 数量
Aさん Bさん 0.01
Cさん Aさん 0.03
Dさん Bさん 0.04
・・・
- 10. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 9
ブロックチェーンとは
n ブロックチェーンは取引(トランザクション)のまとまりを連ねたもの。
– ある間隔で新たな取引(トランザクション)をまとめて新たなブロックとしてつなげる。
– 取引した結果である残⾼は管理しない。
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
- 11. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 10
取引とアドレスとは
n 取引は送⾦元から送⾦先への資⾦の移転を表す。
n アドレスは資⾦が⼊る場所。送⾦先の指定にはアドレスを⽤いる。
取引(トランザクション)
送⾦元︓アドレス01
送⾦先︓アドレス02
送⾦額︓100BTC
アドレス01 アドレス02
100BTC
- 12. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 11
アドレスと秘密鍵
n 仮想通貨ウォレットが管理する秘密鍵からアドレスは⽣まれる。
公開鍵
tprv8ZgxMBicQKsPdvELoS3
4agYmHxnTHU6ikPLVw293
Yho5YMomfvNgQtxTbfvuf8
yqEm8f96garib5pSPnktMb
ugUAppkxQcs1otbHFaaWn
vL
tpubDCjAjASf8GLzJhzL3sKjH3
jpQioF1DfafUL7HJesT8yxrk7k
X73gdhqXuRUjxqzwEbKWrPs
uPy6zvMhrPGoC8iyycjHj19VR
nndJLiZFm7x
n4qnYjFxxazrwTuj2LVYd2P
onhK6yW5HkF
入金用アドレス秘密鍵
アドレスに⼊ったお⾦を出
すためには秘密鍵が必要
- 13. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 12
つまりこうだ︕
n 仮想通貨と現⾦
仮想通貨 現⾦
仮想通貨
(BTC、ETH、XRP、etc)
通貨
(円、ドル、ユーロ、etc)
アドレス ⼝座番号
秘密鍵 印鑑
仮想通貨ウォレット 通帳(とそのシステム)
ブロックチェーン (世界中の)取引履歴
- 14. ULS 13Powered by
Copyright © 2011-2018 UL Systems, Inc. All rights reserved.
Proprietary & Confidential
仮想通貨ウォレットの仕組みと
ブロックチェーン
- 15. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 14
仮想通貨ウォレットとは
n ブロックチェーンのクライアント。DBに対するDBクライアントのようなもの。
仮想通貨ウォレット
秘密鍵
残⾼照会
⼊⾦
アドレス作成
Bitcoin
ブロック
アドレス
出⾦
取引
クライアント
- 16. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 15
ブロックチェーンで扱うデータ構造
n ブロックチェーンの取引のデータ項⽬は予め決められている
項⽬ 内容
ハッシュ 取引のハッシュ値。取引を⼀意に識別する識別⼦。
送信元アドレス 取引の送信元のアドレス
送信先アドレス 取引の送信先のアドレス
数量 取引で送⾦するコインの量
⼿数料 取引で使⽤する⼿数料
データ 上記以外のデータを保存
【⼀般的な取引データ】
- 18. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 17
ブロックチェーンでのアドレス
n アドレスは、取引の送信元(=価値の移転前の保有者)および取引の送信先(=価
値の移転後の保有者)を表すタグのようなもの。
ハッシュ 送信元
アドレス
送信先
アドレス
数量 ⼿数料 データ
abc12・・ 1234・・・ 4567ab13・・ 100 1
dfad34・・ 4567ab13・・ 1234・・・ 300 1
Cfa90・・ 4567ab13・・ 89ab・・・ 300 2 abcqf12415a・・・
・・・ ・・・ ・・・ ・・ ・・・
公開鍵 入金用アドレス秘密鍵
n 仮想通貨ウォレットが管理する秘密鍵から⽣成。
4567ab13・・
- 19. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 18
仮想通貨ウォレット
アドレス作成とブロックチェーン
n アドレスは仮想通貨ウォレットが決めるだけ。ブロックチェーンは関与しない。
– ネットワーク上のノードは誰がどこでアドレスを作成したか知りえない。
入金用アドレス
内部に保持するストアに
アドレスを溜める
秘密鍵
N/Wに送信しない
仮想通貨ウォレットで作られた⼊⾦⽤アドレス
を誰も知らない
- 20. ULS 19Powered by
Copyright © 2011-2018 UL Systems, Inc. All rights reserved.
Proprietary & Confidential
仮想通貨ウォレットの仕組み︓
⼊⾦・残⾼照会
- 21. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 20
⼊⾦
n 送⾦者が作成したトランザクションがブロックチェーンに書き込まれれば取引成⽴。
n 取引の成否に受け取り側のウォレットは関与しない。
電⼦マネー(想定) 仮想通貨(ブロックチェーン)
⼊⾦処理
⼊⾦⽤のインターフェース
で受付て、DBに保存
A→B 1BTC
C→D 2BTC
D→A 1BTC
・・・
ブロックチェーンに⾃分宛
の取引が書き込まれる
⼊⾦処理とデータ保持は
ブロックチェーンが担当
Cさん Cさん
口座 金額
D 21,000
(+1,000)
電⼦マネーシステム
- 22. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 21
ブロックチェーンデータを取り込む
n ウォレットから⾒ると⼊⾦はSELECTのようなもの。
n ネットワークからウォレットが管理するアドレス宛の取引をみつけ処理する。
⾃分が持つアドレス
[A, D ]
A→B 1BTC
C→D 2BTC
D→A 1BTC
A→B 1BTC
B→C 2BTC
B→D 1BTC
・・・
・・・
C→D 2BTC
D→A 1BTC
B→D 1BTC
ブロックチェーンデータ
⾃分宛の取引
- 23. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 22
⼊⾦取引の管理
n ネットワークから受け取った取引は、仮想通貨ウォレットでステータス管理する
Wallet Transaction
Transaction
Transactionpending
Transaction
Transaction
Transaction
unspent
Transaction
Transaction
Transaction
spent
未コンファメーション
未消費︓
受け取った⾦額を
まだ使ってない
消費済︓
受け取った⾦額を
他所へ出⾦済
Transaction
Transaction
Transaction
- 24. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 23
コンファメーションとブロック
n ブロックに格納されて取引が確定することをコンファメーションと呼ぶ。
n コンファメーションはデータベースのCommitのようなもの。
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
コンファーメンション済
(未消費・消費済)
ペンディングコンファーメンション済
(未消費・消費済)
- 25. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 24
ブロックの分岐
n ほぼ同時に違うブロックが⽣成されてチェーンが分岐されることがある。
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
- 26. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 25
ブロックの分岐
n ブロックの分岐後、⻑さが⻑いチェーンを正当なものとして扱う。
n ⻑さが追い越されたデータは破棄されてしまう。このことをリオルグという。
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
- 27. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 26
ブロックチェーンでのロールバック
n リオルグはデータベースでいうところのロールバックに近しい。
n 海外の取引所では、ハッキング被害をなかったことにするために、⼈為的にリオル
グを起こしてロールバックさせようとした。
取引 取引
取引 取引
取引 取引
漏洩 取引
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
取引
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
漏洩 取引
取引 取引
取引 取引
取引 取引
取引 取引
- 28. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 27
コンファメーションとファイナリティ
n コンファメーションを重ねることで取引が覆される確率がだんだん低くなる。
– ⼀般的には、1〜6個のコンファメーションで取引確定。
n 確率は低くなるが厳密にはファイナリティがない、という課題を抱えている。
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
取引 取引
取引が覆される可能性
⾼低
- 29. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 28
残⾼照会
n ブロックチェーンの場合はコンファメーションされた未消費の取引を集計
n 集計関数はないのでアプリで頑張る
Wallet Transaction
Transaction
Transactionpending
Transaction
Transaction
Transaction
unspent
Transaction
Transaction
Transaction
spent
残⾼として計上
- 31. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 30
出⾦
n ウォレットから⾒ると、出⾦はデータベースでいうところのINSERTのようなもの。
n 出⾦に使う⾃分宛の取引を持っていないと出来ない=勝⼿に所持⾦以上の取引を作
ることは出来ない
A→C 2BTC
B→C 1BTC
B→C 1BTC
⾃分宛(C)の取引
C→D 3BTC
未署名トランザクション
C→D 3BTC
署名済トランザクション
秘密鍵
トランザクションの作成 署名 ブロードキャスト
- 32. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 31
出⾦︓トランザクション作成
n ⾃分が所持していたコインを消費して⽀払い⽤のコインとおつりを作る
100BTC
10BTC100BTC
89BTC
⾃分のウォレット
消費したコイン
支払ったコイン
出⾦
ウォレットのアドレスC
ウォレットのアドレスC
ウォレットのアドレスB
おつりを⾃分の
ウォレットに返す
トランザクション
⼊⾦で受け取った
コインを消費
外部のアドレスD
- 33. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 32
出⾦︓⼿数料とは
n ブロックチェーンに出⾦するためにはマイナーに⽀払う⼿数料が必要不可⽋。
10BTC100BTC
89BTC
ウォレットのアドレスC
ウォレットのアドレスB
【⼿数料の表現⽅法】
• ⼿数料=消費するコイン – (⽀払いコイン+おつり)
消費したコイン
支払ったコイン
• ⼿数料=100BTC – (10BTC + 89BTC) = 1BTC
- 34. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 33
署名とは
n 秘密鍵を使って消費するコインに署名し、正当な所有者であることを証明すること
n 正しい署名がないと出⾦することができない
入金用アドレスC
公開鍵
秘密鍵
署名済みのコインだ
け出⾦できる
署名
⼊⾦されたコインはその
ままでは使えない
リジェクトされる
⼊⾦⽤アドレスに対
応する秘密鍵
- 35. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 34
出⾦取引を記録する
n 署名したトランザクションをネットワークに送信しブロックチェーンに記録する
・・・
・・・
A→D 3BTC
A→D 3BTC
A→D 3BTC
A→D 3BTC
A→D 3BTC
A→D 3BTC
A→D 3BTC
- 36. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 35
取引の順番
n データベースではDBトランザクションにより書き込み順番が保証されるが、ブ
ロックチェーンではブロックに格納される順番が不定
n 取引単体のタイムスタンプはない
取引A
取引B
取引C
取引A
取引C
取引B
マイナーに届いた取引 出来上がったブロック
取引A
取引C
取引B
取引A
取引B
取引C
ブロードキャストされた
取引
9/25 17:23:00
マイニング
- 37. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 36
データストアとしてのブロックチェーン
n DB操作とブロックチェーンの概念の整理
DB操作 ブロックチェーン
SELECT ü ブロックチェーン上のデータを取り込む
ü WHERE句による検索・集計などの関数がない(アプリで実装)
ü ⾃分のアプリ以外の情報も取れる
INSERT ü 出⾦取引に署名しブロードキャスト
ü 必ず価値の所有者のみが⾃分の資産を使⽤できる(署名)
ü 必ず書き込むデータは他のデータと整合性が取れている
ü データを書き込むために⼿数料がかかる
ü 取引の順番、取引⾃体のタイムスタンプは保証されない
UPDATE ü できない
DELETE ü できない
COMMIT ü コンファメーションを重ねる(⼀般的には1〜6)※制御不可
ROLLBACK ü ブロックの分岐(リオルグ)※制御不可
- 39. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 38
ブロックチェーンの適⽤範囲
n ブロックチェーンの適⽤は以下のような向き・不向きがある
向いている
向いていない
ü 改ざんされてはいけないデータを扱う
ü 複数のアプリケーションで情報を共有する
ü データを書き込む⼈の正当性を重視する
ü データの⼀貫性を重視する
ü 複雑な条件で検索・集計する
ü ⾃由にデータを書き込む
ü データを頻繁に書き換える必要がある
ü いち早く結果が確定しなければならない
ü 厳密なデータの順番やタイムスタンプを重視する
- 40. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 39
ユースケース例1︓サプライチェーンマネジメント
n 製品の製造過程の情報を記録し誰がどこで何をしたか追跡
部品製造
サポート組み⽴て 配送 販売
サプライチェーンマネジメントプラットフォーム(ブロックチェーン)
- 41. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 40
ユースケース例2︓アカウントID連携
n ⼿間のかかるKYC情報(=サービス利⽤権)をブロックチェーンに記録。
n 利⽤するユーザはどこかのサービスにKYCプロセスを通しておけば、他のサービス
を利⽤することが出来る。
サービス
アカウント
サービス
アカウント
サービス
アカウント
サービスA
サービスB サービスC
②KYC情報の記録、共通ID発⾏
KYC
情報
④KYC情報
確認、利⽤記録
共通ID
共通ID
①初回登録、KYCプロセス
③初回利⽤
- 42. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 41
新世代の分散型台帳技術︓ヘデラ・ハッシュグラフ
n Hedera Hashgraph(ヘデラ・ハッシュグラフ)はグラフ構造を⽤いた独⾃のコンセンサスアルゴリズムを使っ
た分散アプリケーションを開発するためのプラットフォーム
■ インターネット上に分散した複数台のノードによって実現さ
れる公開分散型台帳技術
■ 独⾃アルゴリズムによって以下を実現
– ⾼速︓秒間10000取引を処理、承認まで3〜4秒
– ファイナリティ︓分岐はしない
– 公平︓取引の順序、タイムスタンプを全員で決める
■ 4つのサービスを使⽤することができる
– Cryptocurrency (仮想通貨)
– Smart Contracts (スマートコントラクト)
– File Service (ファイルサービス)
– Consensus Service (コンセンサスサービス)
- 44. ULS
Copyright © 2011-2019 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 43
まとめ
ü 仮想通貨ウォレットの仕組み・機能を通してみると、ブロックチェーンが持つ特徴や
アプリケーションの向き・不向きがわかる。
ü ブロックチェーンはDBとは異なった特徴を持っており、使い⽅には注意が必要。
ü 既存の課題を解決した分散型台帳技術も登場しており、新しいユースケースが期待で
きる。
ü ブロックチェーンの課題や特性を理解した上で新しい価値を創造していきましょう。