SlideShare a Scribd company logo
ブロックチェーンと
ビットコイン
2020年2月18日 深田 涼太
目次
• ビットコインとは
• ビットコインの送金はどのように行われているのか
• 個人的に面白いと思うところ
ビットコインとは
• 二重使用ができないP2P電子マネー
• 信頼の置ける第三者なしに電子上で価値(所有権)の移転が可能
になった
https://bitcoin.org/files/bitcoin-paper/bitcoin_jp.pdf
銀行 会社
仲介
ビットコインで面白いと思うところ
• ネット上で個人間送金など価値の移転が可能
• ビットコインネットワーク参加者に対してのインセンティブ設計
• 中央の管理者がいないがいままで止まらず運用されている
• 誰が作ったのかわからない。論文に名前だけ公開されている
• ネットが繋がれば場所が関係なく使える
二重使用ができないP2P電子マネーの実現
• P2Pネットワーク
個人間でつながるための仕組み
• 各個人によるデータの管理と検証
管理者不在で成り立つための仕組み
• 電子署名による価値の移転
電子マネーの移転での所有権の証明
• ブロックチェーンとProof of workによる改ざん耐性
二重使用と改ざんの防止
ビットコインのネットワーク
• P2P型ネットワーク
• 各ノードは8本ずつ接続している
クライアント・サーバー型(主流) P2Pネットワーク
世界のノード数
https://bitnodes.earn.com/
ノードがやっていること
• トランザクション(取引データ)の管理と検証と伝搬
• ブロックチェーンの管理と検証
• マイナーと呼ばれるノードはブロックの作成を行う
トランザクション(取引データ)
• 誰から誰にいくら送るかを表している
• 送り先の公開鍵を指定する。送金後トランザクションはロックされる
Aさん
1BTC
Tx
Bさん
1BTC
BさんAさん
秘密鍵 公開鍵
Aさん
秘密鍵 公開鍵
Bさん
Bさんの公開鍵
ロックの解除
Aさん
1BTC
Tx
Bさん
1BTC
他人の鍵
Bさんの秘密鍵
Bさんが利用可能
利用できない
公開鍵に紐づく秘密鍵を持っていれば、ロックを解除でき使えるようになる
BさんAさん
ロック解除と送金の流れ
• 受け取ったものを使う場合は、秘密鍵でロックを解除する
Aさん
1BTC
Tx
Bさん
1BTC
Bさん
Bさんの秘密鍵
Bさん
1BTC
Tx
Cさん
1BTC
CさんBさん
Cさんの秘密鍵
Cさん
1BTC
Tx
Dさん
1BTC
DさんCさん
(所持金:1BTC)
トランザションのリレー
Bさん
Aさん
トランザクションAさん
1BTC
Tx
Bさん
1BTC
ビットコインネットワーク
• つながっているノードにトランザクションを渡す
トランザクションの検証
Bさん
トランザクション
検証
検証
検証
検証
検証
検証
検証
Aさん
Aさん
1BTC
Tx
Bさん
1BTC
• 各ノードは検証を行う
• 二重使用の場合は検証に通らない
検証後のリレー
• 検証して問題がない場合、他のノードにリレーする
Bさん
トランザクション
Aさん
Aさん
1BTC
Tx
Bさん
1BTC
ネットワーク全体にトランザクションが到達する
• 全体が同じデータを共有している
Bさん
トランザクション
Aさん
Aさん
1BTC
Tx
Bさん
1BTC
Aさん
1BTC
Tx
Bさん
1BTC
トランザクション
ブロックチェーンとは
• 各ノードが保有している台帳記録
正当なトランザクションがまとめられているもの
拡大
ブロックチェーン
ブロックチェーン
ブロックチェーン
ブロックチェーン
ブロックチェーン
ブロックチェーン
ブロックチェーン
ブロックチェーン
ブロックチェーンとは
• ブロック
平均10分に1回、ブロードキャストされたトランザクションを集めたもの
• ブロックチェーン
ブロックが連鎖的に繋がった台帳記録
ブロックチェーン
ブロック
Tx
Tx
Tx
Tx
Tx
Tx
Tx
Tx
前のブロックのハッシュ値
nonce
ブロックのリレー
• トランザクションと同じようにリレーする
Bさん
マイナー
新しく作成したブロック
ブロックのリレー
• 受け取ったブロックを検証し、リレーする
Bさん
マイナー
新しく作成したブロック
検証
検証
検証
検証
検証
検証
検証
ブロックのリレー
• リレーを繰り返し、ネットワーク全体に渡す
Bさん
マイナー
新しく作成したブロック 新しく作成したブロック
ブロックをつなげる
• 受け取ったブロックを、過去から繋がっているブロックチェー
ンにつなげる
Bさん
ビットコインネットワーク
新しいブロック
Bさんが保有するブロックチェーン
受け取ったブロックを繋げる
Proof of workについて
• ブロックの作成は、マイナーと呼ばれるノードが行う
• 各マイナーは計算競争をしている
Tx
Tx
Tx
Tx
Tx
Tx
Tx
Tx
前のブロックのハッシュ値
nonce 目標の値
ハッシュ
計算の内容
①前のブロックのハッシュ値と取引データを持ってくる
②ナンスに、ランダムな32ビットの値をいれる
③ ①と②を合わせてハッシュ化する
④使われたナンスを新しいブロックの作成に使用する
指定された値より小さい
YES
NO
未完成のブロック
完成したブロック
Proof of workの目標の値
Proof of workによる改ざん耐性
• 新規ブロックの作成に多大な計算コストがかかるようにしてある
ブロックを遡っての改ざんは、再計算が必要
このブロックにあるトランザクションを改ざんしたい場合
再計算が必要
ビットコインの送金まとめ
1. トランザクションを作成してブロードキャスト
2. ネットワーク全体にリレーする
3. マイナーが約10分でトランザクションをまとめてブロックを作成
4. ネットワーク全体にリレーする
5. ブロックにトランザクションが取り込まれていることを確認
参加している人が管理と検証を行うことでシステムが成り立っている
Dapps
ゲーム内アイテムの利用
• ERC-721を利用することで、決められた個数だけアイテムを作
ることができる
• 所有していてもアイテムの複製はできないため固有のもの
トークンの相互利用
Ethereum Network
ERC-721トークンERC-721トークン
ゲームデータ ゲームデータ
トークンの相互利用
Ethereum Network
ゲームデータ ゲームデータ
まとめ
• ビットコインでの一般的な送金の流れを説明しました
• 中央の管理者なしに価値の移転ができるのは革新
• ビットコインやブロックチェーンには、まだまだ紹介しきれて
いない面白いことがたくさん
実際にブロックチェーンを
使ったアプリを作ってみて
紹介するアプリ
• Proof of Paymentを用いた鍵貸しアプリ
• Lightning Networkを用いたスマートロック開錠アプリ
• 過去から未来へをテーマにした送金アプリ
• 減価する仮想通貨によるイベント活性化アプリ
Proof of Paymentを用いた鍵貸しアプリ
https://www.ipsj-kyushu.jp/page/ronbun/hinokuni/1008/upload/2018-1-0050.pdf
Proof of Paymentとは
• UTXO を故意に二重使用し、支払ったことを証明すること
• UTXOを二重使用できるのは、1回目の送金者しかいない
支払い済であることが証明できる
支払いの証明ができれば鍵の開け閉めができる
Proof of Payment (支払い証明)とは
• UTXO を故意に二重使用する方法
• UTXOを二重使用できるのは、1回目の送金者しかいない
支払い済であることが証明できる
支払いの証明ができれば鍵の開け閉めができる
Proof of Payment (支払い証明)の実施方法1
• 1回目の送金
• 実際にBitcoinを送金する(ブロードキャスト)
• 受領者は、ブロックチェーンで資金の受領を確認する
ブロードキャスト
受領者
unlock
UTXO
Output
送金先
金額
input
電子署名
使用済状態
送金者
受領確認
Proof of Payment (支払い証明)の実施方法2
• Proof of Paymentトランザクションの作成
• 受領者が送金者に使い捨てのnonceを生成して渡す
• 同じ秘密鍵で署名したトランザクション(Proof of Payment)を作成
• Proof of Paymentトランザクションの中に受け取ったnonceを埋め込んでおく
送金者
受領者
unlock
UTXO
Outputinput
電子署名
使用済状態
通信路
Proof of payment
トランザクション
nonce
Proof of Payment (支払い証明)の実施方法3
• 2回目の送金
• 当事者間の通信路で送信(ブロードキャストしない)
• 受領者は、トランザクションをブロックチェーンで検証し二重使用を確認
送金者 受領者
unlock
UTXO
Outputinput
電子署名
使用済状態
通信路
二重使用
確認
Proof of payment
トランザクション
nonce
動画
Lightning Networkを用いたスマートロック開錠アプリ
• Lightning NetworkというBitcoinの即時決済が可能である技術
をつかって、支払いが行われると鍵が開く
解除までの流れ
• Ptarmigan(LnShield)…Bitcoinの受け取りが可能なIoT機器
• PtarmiganでBitcoinの受け取りが確認できたら、
RaspberryPiからスマートロックの開け閉めを行う
作成したもの
動画
過去から未来へをテーマにした送金アプリ
• Timelockを設定することで、指定された時間になるまで移動さ
せることができないビットコインを作れる
減価する仮想通貨によるイベント活性化アプリ
-イベント活性化アプリ-
現在使われているお金
電子マネー現金
持っていても勝手に減ることはない
減価する仮想通貨
1BTC 0.75BTC 0.5BTC
• 仮想通貨であれば、減らすことが可能
10分後 10分後
研究方法
• 減価する仮想通貨をイベントで利用して貰いました
¥100
¥100
¥100
¥300
¥300
食券
ビットコイン上で表現する
研究方法
• 主催者がBitcoin上でAsset(食券、クーポンなど)を生成し、
参加者に配布
参加者
主催者
Asset
Asset
Asset Asset
参加者 お店
研究方法
• Assetは約10分ごとに減っていく
約10分 約10分
イベントでの例
• ドリンク10杯分のAssetを送金した場合
主催者 参加者
・・・時間
10分 20分 50分 100分
・・・
50分後には半分になる
100分後には全部なくなる
参加者
研究方法
• 減価による行動の変化、運用が可能であるか確認
BitcoinScript
送金時にロック解除の条件を設定する
OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
一般的な送金で使われている
公開鍵秘密鍵 紐づく秘密鍵を持っている人のみが使用できる
OP_CHECKSQUENCEVERIFY(OP_CSV)
指定した時間までロックを解除できなくすることができる
<Sequence> OP_ CHECKSEQUENCEVERIFY OP_ DROP <pubkey> OP_ EQUALVERIFY OP_ CHECKSIG
ロック時間の設定 ロック時間までロックする
例
減価する仕組み
• 参加者の秘密鍵で解除できる
• または時間に達した場合、主催者の秘密鍵で解除できる
Script
いつでも利用可能 時間に達していれば利用可能
OP_IF
<user_pubkey>
OP_ELSE
<Sequence> OP_NOP3 OP_DROP <admin_pubkey>
OP_ENDIF
OP_CHECKSIG
イベントでの例
• ドリンク10杯分のAssetを送金した場合
主催者
10Asset
1Asset
1Asset
1Asset
1Asset
1Asset
1Asset
1Asset
1Asset
1Asset
1Asset
Tx
主催者
参加者
Scriptの設定
主催者
10Asset
1Asset
1Asset
1Asset
1Asset
1Asset
1Asset
1Asset
1Asset
1Asset
1Asset
Tx
Script
OP_IF
<user_pubkey>
OP_ELSE
<Sequence> OP_NOP3 OP_DROP <admin_pubkey>
OP_ENDIF
OP_CHECKSIG
ロック時間をずらして設定
主催者
10Asset
1Asset
1Asset
1Asset
1Asset
1Asset
1Asset
1Asset
1Asset
1Asset
1Asset
Tx
・・・時間
10分 20分 50分 100分
・・・
50分後には半分になる
100分後には全部なくなる
構成図
Frontend & Backend Blockchain(Bitcoin)
Bitcoin Network
利用までの流れ
利用までの流れ
まとめ

More Related Content

Similar to 20200218_Event

Bitcoinについて 2014年3月7日
Bitcoinについて 2014年3月7日Bitcoinについて 2014年3月7日
Bitcoinについて 2014年3月7日
Masanori Kusunoki
 
ビットコインの基礎知識と世界的なトレンド
ビットコインの基礎知識と世界的なトレンドビットコインの基礎知識と世界的なトレンド
ビットコインの基礎知識と世界的なトレンド
Koichiro Wada
 
01 boosterプレゼン 21may2014
01 boosterプレゼン 21may201401 boosterプレゼン 21may2014
01 boosterプレゼン 21may2014
Yoshimitsu Homma
 
Summary of Crypto currency2018 02-17
Summary of Crypto currency2018 02-17Summary of Crypto currency2018 02-17
Summary of Crypto currency2018 02-17
Kenichi Takeuchi
 
Bitcoin 4
Bitcoin 4Bitcoin 4
ブロックチェーンまとめ
ブロックチェーンまとめブロックチェーンまとめ
ブロックチェーンまとめ
HarukiKondo
 
ネット仮想通貨の論点 - 楠正憲
ネット仮想通貨の論点 - 楠正憲ネット仮想通貨の論点 - 楠正憲
ネット仮想通貨の論点 - 楠正憲
Masanori Kusunoki
 
使ってみよう暗号通貨
使ってみよう暗号通貨使ってみよう暗号通貨
使ってみよう暗号通貨
Wataru Shinohara
 
IoTLT-Vol93-Wiki-IoT-20221117.pptx
IoTLT-Vol93-Wiki-IoT-20221117.pptxIoTLT-Vol93-Wiki-IoT-20221117.pptx
IoTLT-Vol93-Wiki-IoT-20221117.pptx
Takashi Yamanoue
 
株式会社サムライズム@samuraismがcoincheck for ECを使ってビットコイン決済に対応した話 #gbdaitokai
株式会社サムライズム@samuraismがcoincheck for ECを使ってビットコイン決済に対応した話 #gbdaitokai 株式会社サムライズム@samuraismがcoincheck for ECを使ってビットコイン決済に対応した話 #gbdaitokai
株式会社サムライズム@samuraismがcoincheck for ECを使ってビットコイン決済に対応した話 #gbdaitokai
Yusuke Yamamoto
 
IoTLT Kumamoto vol3
IoTLT Kumamoto vol3IoTLT Kumamoto vol3
IoTLT Kumamoto vol3
Syota Yano
 
Bitcoinのしくみと設計思想
Bitcoinのしくみと設計思想Bitcoinのしくみと設計思想
Bitcoinのしくみと設計思想
Kindai University
 
Entry for Bitcoin (For Japanese)
Entry for Bitcoin (For Japanese)Entry for Bitcoin (For Japanese)
Entry for Bitcoin (For Japanese)
GOTO_A
 
Bitcoinとは何か?
Bitcoinとは何か?Bitcoinとは何か?
Bitcoinとは何か?
Toshihiro Kaseda
 

Similar to 20200218_Event (20)

Bitcoinについて 2014年3月7日
Bitcoinについて 2014年3月7日Bitcoinについて 2014年3月7日
Bitcoinについて 2014年3月7日
 
Smart property
Smart propertySmart property
Smart property
 
ビットコインの基礎知識と世界的なトレンド
ビットコインの基礎知識と世界的なトレンドビットコインの基礎知識と世界的なトレンド
ビットコインの基礎知識と世界的なトレンド
 
01 boosterプレゼン 21may2014
01 boosterプレゼン 21may201401 boosterプレゼン 21may2014
01 boosterプレゼン 21may2014
 
Summary of Crypto currency2018 02-17
Summary of Crypto currency2018 02-17Summary of Crypto currency2018 02-17
Summary of Crypto currency2018 02-17
 
Bitcoin 4
Bitcoin 4Bitcoin 4
Bitcoin 4
 
ブロックチェーンまとめ
ブロックチェーンまとめブロックチェーンまとめ
ブロックチェーンまとめ
 
ネット仮想通貨の論点 - 楠正憲
ネット仮想通貨の論点 - 楠正憲ネット仮想通貨の論点 - 楠正憲
ネット仮想通貨の論点 - 楠正憲
 
Bitcoin 2
Bitcoin 2Bitcoin 2
Bitcoin 2
 
Bitcoin 20140407-public
Bitcoin 20140407-publicBitcoin 20140407-public
Bitcoin 20140407-public
 
Bitcoinの技術
Bitcoinの技術Bitcoinの技術
Bitcoinの技術
 
使ってみよう暗号通貨
使ってみよう暗号通貨使ってみよう暗号通貨
使ってみよう暗号通貨
 
IoTLT-Vol93-Wiki-IoT-20221117.pptx
IoTLT-Vol93-Wiki-IoT-20221117.pptxIoTLT-Vol93-Wiki-IoT-20221117.pptx
IoTLT-Vol93-Wiki-IoT-20221117.pptx
 
株式会社サムライズム@samuraismがcoincheck for ECを使ってビットコイン決済に対応した話 #gbdaitokai
株式会社サムライズム@samuraismがcoincheck for ECを使ってビットコイン決済に対応した話 #gbdaitokai 株式会社サムライズム@samuraismがcoincheck for ECを使ってビットコイン決済に対応した話 #gbdaitokai
株式会社サムライズム@samuraismがcoincheck for ECを使ってビットコイン決済に対応した話 #gbdaitokai
 
Bitcoin public-20140109
Bitcoin public-20140109Bitcoin public-20140109
Bitcoin public-20140109
 
IoTLT Kumamoto vol3
IoTLT Kumamoto vol3IoTLT Kumamoto vol3
IoTLT Kumamoto vol3
 
Bitcoinのしくみと設計思想
Bitcoinのしくみと設計思想Bitcoinのしくみと設計思想
Bitcoinのしくみと設計思想
 
MIAU祭2014 Bitcoin資料
MIAU祭2014 Bitcoin資料MIAU祭2014 Bitcoin資料
MIAU祭2014 Bitcoin資料
 
Entry for Bitcoin (For Japanese)
Entry for Bitcoin (For Japanese)Entry for Bitcoin (For Japanese)
Entry for Bitcoin (For Japanese)
 
Bitcoinとは何か?
Bitcoinとは何か?Bitcoinとは何か?
Bitcoinとは何か?
 

20200218_Event

Editor's Notes

  1. Proof of PaymentとはUTXOを故意に二重使用することで支払いの証明を行う方法です UTXOを二重使用できるのは一回目の送金者しかいないため、支払い済みであることが証明できます
  2. 実施方法についてです 実際にビットコインを送金します 受領者はブロックチェーンで資金の受領を確認します
  3. 次にProof of Paymentトランザクションの作成です 受領者は送金者に使い捨てのnonceを生成して渡します 同じ秘密鍵で証明したトランザクションを作成する その際Proof of Paymentトランザクションの中には受け取ったnonceを埋め込みます
  4. 二回目の送金は当事者間で送信しこれはビットコインネットワークにブロードキャストしません 受領者はトランザクションをブロックチェーンで検証し、二重使用を確認します