Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ビットコイン福岡勉強会法的課題

カラードコインを利用したブロックチェイン応用を実施するときの法的課題を整理するために、技術的詳細を整理しました

  • Be the first to comment

ビットコイン福岡勉強会法的課題

  1. 1. ビットコイン福岡勉強会 2015年8月22日 カラードコインによる ブロックチェイン応用技術の詳細と その法的側面 - 門司港レトロ地区での実験に向けて - 近畿大学 山崎重一郎
  2. 2. カラードコイン技術の詳細 門司港レトロ地区での実験 法的側面 概要
  3. 3. 貨幣的価値の表象をアトムからビットに 従来の電子マネー技術の視点 100円 19145688628917083994040390 48214754959144168148568993 6579484061308082388330202 10円 21102336943757887962062431 98022317897796829477986168 2215546736280993643464022 10円 10259177812167628942383906 43183850908412292265286804 07467065170243955413499565
  4. 4. 出来事を時間の推移の中に定着させる ビットコイン型仮想通貨 A B 120円 取引記録 (できごと) ブロックチェイン
  5. 5. 従来の電子マネー • アトムを利用(耐タンパデバイスなど) • サーバで使用履歴を管理(電磁的記録) ビットコイン • 非可逆的な「できごと」の記録 • 参加者全員で、すべての「できごと」をチェック • 三式簿記形式、スクリプトの利用 電子通貨の二重使用問題
  6. 6. 信頼できる第三者機関が必要ない • みかけの決済コストなどを小さくできる 参加者全員ですべての「出来事」を監視 • P2P型ネットワークで分散管理 ビザンティン将軍問題への耐性 • 巧妙に結託する裏切り者達がいても機能する マイニング・インセンティブの利用 • 信頼できる第三者の代わりに欲望に基づく競争行動を利用 トラストレスでも機能する
  7. 7. (なんらかの量)をAからBに渡した 三式簿記の構造 取引記録(できごと) インプット 公開鍵 電子署名 アウトプット 送金先アドレス =公開鍵ハッシュ 金額 UTXO 資産 負債 予算
  8. 8. インプットとアウトプットの総量は保存される コインベースで量が単調増加 なんらかの量の移転 アウトプット インプット アウトプット アウトプット インプット アウトプット アウトプット インプット アウトプット アウトプットインプット インプット アウトプット アウトプット アウトプット アウトプットインプット インプット インプット アウトプット アウトプット UTXO UTXO コインベース アウトプット UTXO インプット UTXO UTXO
  9. 9. 取引記録のアウトプットの機能 目的 送金された金額の使い方を規定 • 受領者が次に使うときに評価される 0.5 BTC この公開 のハッシュに 対応する秘密 を 持っている人だけ 使用可能なお金 秘密 公開 受領者
  10. 10. 公開 証明書 ビットコインアドレス PKIとビットコインでの 公開 管理法の違い 公開 証明書 公開 本人識別名 本人 秘密 信頼できる第三者機関 電子署名 本人識別名と公開 の結びつきを保証 公開 本人識別名 (ビットコインアドレス) 秘密 本人 暗号学的 ハッシュ関数 本人識別名と公開 の結びつきを保証
  11. 11. bitcoinのスクリプト言語 Forth言語に似たスタック型言語 逆ポーランド記法=日本語記法 (1と2をたして3をかける) •  定数:スタックにプッシュする •  OP_DUP :スタックのトップ要素をコピーする •  OP_HASH160 :スタックのトップ要素のダブルハッシュ値を求める •  OP_EQUALVERIFY :スタックのトップ2要素を取り出して、双方 が等しいことを確認する •  OP_CHECKSIG:スタックのトップ2要素を取り出して、1つめの公 開 と使って2つ目の電子署名を検証する •  OP_RETURN:トランザクションinvalidとしてマークする
  12. 12. P2PKH (公開 ハッシュが条件) このお金はこの公開 の所有者だけが次に使用 できる scriptPubKey: OP_DUP OP_HASH160 <公開 Hash値> OP_EQUALVERIFY OP_CHECKSIG scriptSig: <電子署名> <公開 > 直前のoutput 送金input 証明すること (1)この公開 は、公開 Hash値に対応していること (2)電子署名によって公開 とペアになっている秘密 を持っていること
  13. 13. Stack Script 説明   <電子署名> <公開 > OP_DUP OP_HASH160 <公開 ハッシュ> OP_EQUALVERIFY OP_CHECKSIG スタックは空 OP_DUP OP_HASH160 <公開 ハッシュ> OP_EQUALVERIFY OP_CHECKSIG 最初の2つの定数をスタックにプッシュする OP_HASH160 <公開 ハッシュ> OP_EQUALVERIFY OP_CHECKSIG スタックの先頭要素をコピーする <公開 ハッシュ> OP_EQUALVERIFY OP_CHECKSIG スタックの先頭をsha256,RIPEMD160で ダブルハッシュする OP_EQUALVERIFY OP_CHECKSIG scriptPubKeyの公開 Hash値をスタック にプッシュする OP_CHECKSIG スタックの先頭2要素を取り出して等しいこと をチェック スタックの先頭2要素を取り出し、公開 から 電子署名の検証を行う
  14. 14. 送金時のトランザクション 未使用のoutput(UTXO)の残金を集める in 0 out 0 0.05 btc out 1 0.049 btc out 0 0.1 btc out 0 0.1 btc UTXO A A B 公開鍵B ハッシュ 公開鍵A ハッシュ 公開鍵A ハッシュ 公開鍵A ハッシュ UTXO
  15. 15. 送金時のトランザクション 使用するUTXOに対応するinputに電子署 名 • 電子署名が入っていないトランザクションの ハッシュ値を使って電子署名 in 0 out 0 0.05 btc out 1 0.049 btc out 0 0.1 btc in 0 out 0 0.1 btc in 0 電子署名 公開鍵 A A A B公開鍵B ハッシュ 公開鍵A ハッシュ 秘密鍵 out 0 0.1 btc out 0 0.1 btc 公開鍵A ハッシュ 公開鍵A ハッシュ UTXO
  16. 16. 送金時のトランザクション 署名、公開 をセットしたトランザクション を P2Pネットワーク全体に放送する in 0 out 0 0.05 btc out 1 0.049 btc out 0 0.1 btc in 0 out 0 0.1 btc in 0 電子署名 公開鍵 A A B公開鍵B ハッシュ 公開鍵A ハッシュ out 0 0.1 btc out 0 0.1 btc 公開鍵A ハッシュ 公開鍵A ハッシュ UTXO
  17. 17. トランザクションの検証 直前のoutput とinputの結合を検証 in 0 out 0 0.05 btc out 1 0.049 btc 電子署名 公開鍵 A A A B公開鍵B ハッシュ 公開鍵A ハッシュ out 0 0.1 btc スクリプト 公開鍵A ハッシュ マイナー
  18. 18. トランザクションの検証 検証に成功すればブロックチェインに登録 in 0 out 0 0.05 btc out 1 0.049 btc 電子署名 公開鍵 A A A B公開鍵B ハッシュ 公開鍵A ハッシュ out 0 0.1 btc スクリプト 公開鍵A ハッシュ ブロックブロックブロック 登録
  19. 19. カラードコイン bitcoinのブロックチェインを利用 アセット(流動資産)の「量」の転々流通 • bitcoinとしては、600 satoshi • アセットの発行者/責任主体が存在する • 発行されたアセットの総量は保存される 0.000006 BTC 10000 ラーメン 0.000006 BTC 0.000006 BTC 10000 ラーメン 0.000006 BTC 1 ラーメン 0.000006 BTC 9999 ラーメン 発行者
  20. 20. 2015年時点で ブロックチェインと呼べるものは、bitcoinのブ ロックチェインだけ トラストレス 大規模P2P型分散システム マイニング・インセンティブ The Block Chain
  21. 21. カラードコイン Bitcoinのブロックチェインを利用 通貨発行者が存在、通貨に色をつける 例 購入 投票 出資 報奨 罰金
  22. 22. 北九州ラーメン王者選手権 約10000人の客が食べ比べ → 投票
  23. 23. 仮想通貨にしてみる スマートフォン用チケット Carrier 12:00 PM 仮想通貨ソーシャルワレット http://k.joho.fuk.kindai.ac.jp Google ユーザ登録 ニックネーム パスワード 確認 利用者登録 キー 購入? 投票
  24. 24. カラードコインを利用すると 例 購入 投票 出資 報奨 罰金
  25. 25. 購買行動、投票行動を ブロックチェインで追跡 送金元 → 送金先 (購入)(投票)
  26. 26. ブロックチェインによる投票 仮想通貨技術の一つの応用分野として提案 • 小数投票権、順序型投票など Carrier 12:00 PM 仮想通貨ソーシャルワレット http://k.joho.fuk.kindai.ac.jp Google ユーザ登録 ニックネーム パスワード 確認 利用者登録 キー 投票
  27. 27. Open Asset Protocol カラードコインの標準的な実装 Open Asset Address •  カラーを認識できないワレットに送金しないようにする 例:akJ3bcrZmDB478sMn4SRmnoUPhWHrdwWqH4 Asset ID • カラーを識別するID 例:Adj1tkK9zYC6WKsD5ib9Vyp127KQaJt7Dd Asett Quantity •  送金されるアセットの数(アセットは単位が存在する)符号なし整数
  28. 28. Open Asset Protocol OP_RETURN を利用 • 意味:そのアウトプットをUTXOから外し、引数 を返す • 40バイトの引数を持てる(80バイトに仕様拡 張) • ブロックチェイン情報を登録する手段になる ブロックチェインを非可逆的記録として 利用する方法
  29. 29. Open Asset Address ビットコインアドレスと1対1に対応 • カラーを認識するワレット用 • アセット情報を壊さないようにする base58(名前空間+バージョン+[公開 のハッシュ値]+[チェックサム]) #オープンアセットアドレス生成 include Bitcoin::Util open_asset_address=->bitcoin_addr{p='13'+'00'+(hash160_from_address(bitcoin_addr)) encode_base58(p+checksum(p))} bitcoin_addr="16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM" open_asset_address[bitcoin_addr] #=> "akB4NBW9UuCmHuepksob6yfZs6naHtRCPNy"
  30. 30. Asset ID アセットを識別するID • 秘密 を持っている主体のみが発行、追加発行できる? • いろいろ がおおいので、実験で確かめる • トランザクションの中にはID情報は存在しない
  31. 31. Marker output アセットの発行、転送の情報を管理するアウト プット • OP_RETURN で金額0のアウトプット • マーカーアウトプットの前のアウトプットが発行 • マーカーアウトプットの後のアウトプットが転送 in 0 out 0 0.0000006 btc 公開鍵 ハッシュ in 1 in 2 out 2 0.0000006 btc 公開鍵 ハッシュ out 1 0 btc OP_RET URN マーカーアウトプット アセット発行 アセット転送
  32. 32. カラードコインの三式簿記 • ★注意! bitcoinとしてのインプットはあります マーカーアウトプットの意味 transaction input input output output transaction output UTXO UTXO UTXO アセット発行 マーカーアウトプット マーカーアウトプット アセット転送
  33. 33. カラードコインの三式簿記 カラードコインの取引の連鎖 transaction E transaction F output output transaction transaction B output transaction C transaction D output output input input input input input input transaction output output output UTXO UTXO
  34. 34. 飯塚の ハウ・インターナショナルと開発 カラードコインの独自実装 openasset-ruby
  35. 35.   門司港レトロ地区
  36. 36. 門司港のイベント
  37. 37. 門司港のイベント
  38. 38. 門司港のイベント
  39. 39. 門司港のイベント
  40. 40.   北九州ラーメン王座選手権 2015年3月 イベントの規模:ラーメン30000杯 3杯食べ比べチケット  ネットで予約すると 1500円 (100円引き/1杯) 余ったチケットは 展望台などで利用可能
  41. 41. 2015年8月29日、30日 北九州からあげ王者選手権
  42. 42. アセット発行者 • 投票権となるカラードコインを発行する主体 加盟店 • 北九州からあげ王者選手権に参加した店 本部担当者 • 客から現金を受取り、チケットを販売する担当者 • 客から現金を受取ると、客に投票権を発行する 投票者 • 実際に投票を行う客 シナリオ(ロール)
  43. 43. 1 発行者 • (1)アセット発行者は、ユーザ登録を行う • (2)発行者の新規作成を行う • (2−1)アセット発行者用webワレットを作成 (bitcoindを利用してBTCをチャージ) • (2−2)秘密 、公開 、ビットコインアドレス、oa アドレスは、bitcoindのワレットを利用して登録 • (3)発行者用webワレットに必要量のビットコインを 入金する • (4)アセットを必要量だけ発行する シナリオ
  44. 44. 2 加盟店 • (1)加盟店は、ユーザ登録を行う • (2)加盟店は、加盟店用webワレットを作成し、 店名、住所、秘密 、公開 、ビットコインアド レス、oaアドレスを生成する • (3)投票先一覧から投票できるように、oaアド レスを公開する シナリオ
  45. 45. 3 本部担当者 • (1)本部担当者は、認可サーバへユーザ登録を行う • (2)認可サーバの認可トークン発行ページをひらく シナリオ
  46. 46. 4 投票者と本部担当者 • (1)投票者は、本部で現金を支払う • (購入数によって投票権の数が決定される) • (2)本部の担当者は、タブレットを使って、認可サーバ にアクセスし、その投票者用の認可トークンを生成する。 • (3)認可サーバのURL+認可トークン+投票権が、QR コードとしてタブレットに表示される • (4)本部の担当者は、タブレットのQRコードを投票者 のスマートフォンに読み取らせる • (5)投票者が自分のスマートフォンで認可サーバにアク セスすると、認可サーバは、認可トークンを照合し、未使 用であれば認可が成功する シナリオ
  47. 47. • (6)投票者への「免責事項」表示 • (7)投票者による「同意ボタン」クリック • (8)認可トークンは、session[:autholization] に 保存し、永続化する。 • 永続化クッキー(cookies.permanent)を利用して、 セッションを維持 •  また、状態を認可済にし、認可トークンの多重使用を 防ぐ • (9)投票者用webワレットが自動的に生成され、秘密 、 公開 、ビットコインアドレス、oaアドレスを生成する • (10)投票者用webワレットに必要量 • (0.000015 BTC ☓ 10)ビットコインを入金する • (11)投票者用webワレットに投票権分のアセットを入 金する
  48. 48. 免責事項

×