ブロックチェーンまとめ
近藤 晴輝
ブロックチェーンとは
①正しい記録した記録できず、記録を変更・改ざんできない
②管理者不在で、参加者全員で共有・運用する
(p2p?)
③ネットワーク共有型データベース
→取引の履歴を記録したデータベースの一種
⇒価値の流通を記録したデータベース
→ビットコイン、FinTechから生まれた次世代技術
ブロックチェーンの特徴
①ルールに従った書式のデータだけが記録される
②参加者全員によって合意されたデータだけが有効となる
③一度書き込まれたデータは変更も削除もできない
④システム全体を止めることはできない
なぜブロックチェーンがなぜ注目される?
インターネット以来最大の発明と言われる。
社会におおきなインパクトを与える。
→ビットコイン、仮想通貨(暗号資産)、デジタル通貨
→デジタル決済、送金
⇒金融分野と非金融分野にも応用して適用できるのではないか?
⇒ブロックチェーン2.0、3.0
⇒ブロックチェーン関連の潜在市場規模は、「67兆円」
何がすごいのか?
サービスを非中央集権化する。(キーポイント)
⇒p2p
中央集権化:間に管理者がいる「政府や銀行がいる。」
非中央集権化:管理者がいなくても取引できる。
ブロックチェーンだと、「取引のデータが正しい」と言える
仕組みを持っているから。
⇒従来だと管理者がいることで、
取引データを正しいを担保している。
データの正しさを担保する仕組み
①オープンな台帳(データベース??)に取引履歴(トランザクション)
をブロックと呼ばれる単位で格納しつなげる。
②ブロックをつなげるのにナンスという値を設定し、
取引データ(トランザクションデータ)を書き換えるのに、
莫大なマシンパワーが必要とした。
⇒データの書き換えを困難にした。
⇒耐改ざん性と透明性
⇒量子コンピューティングにも耐えられる??
ナンスの仕組み
ただ繋げるだけだと、書き換えられる。
⇒それを防ぐために「ナンス」を設定した。
⇒一番最初に「ナンス」を見つけた人が報酬を得る
(マイニング、競合ルール)
あるブロックのナンスを書き換える場合、それ以降の全ての
ブロックのナンスも書き換える必要がある。
⇒再計算すれば、書き換えられるが、現実的ではないため、
今のPCの計算能力では、改ざん不可能。
※ナンス:高性能なPCでも10分ほど計算しないと求まらない値
(使い捨ての数字)
なぜ非中央集権が注目されているのか?
中央集権に対する反発の強まり。。
GAFAなどのメガプラットフォーマー「管理者」にデータを
独占されるから。。
⇒AI、ディープラーニング、監視社会、量子コンピューティング
⇒権力や利益が特定企業に集中してしまうから。。
⇒中央が力を持つ時代から個人が力を持つ時代へ
ビットコインとは何か??
インターネット上で使う事の出来る電子通貨。
①発行や取引を管理者なしで実現する電子通貨
②物理的なコインではなく、電子データとして存在する。
③金融機関を使う事なく、インターネット経由で直接使える。
なんで生まれたのビットコイン?
2008年に「ナカモトサトシ」が管理者のいない電子上の通貨
⇒非中央集権化の通貨を創ろうとした。
従来:手数料、プライバシーの把握、銀行の弊害
ビットコイン:個人同士で直接取引できる仕組み
ビットコインを実現するために生まれた技術
⇒ブロックチェーン
⇒データの改ざんや二重払いをできなくする。
ビットコインの使い方
取引所で口座を開設する。
⇒仮想通貨ライセンスを持っているか?
日本円⇒ビットコイン
ウォレット:ビットコイン上の財布、送金や残高確認ができる
アドレス:お金の送付先(銀行の口座番号)
ビットコインを入手する方法
①買う(法定通貨と交換する。)
②受け取る(ECサイトで商品購入するサイトがある。)
③マイニングする(ナンスを見つけ、ブロック作成)
ビットコイン実現への課題
①データの偽造
②二重支払い
⇒取引データ(トランザクション)の作成に、電子署名
一定時間ごとにブロック
ナンスを必要とする「プルーフオブワーク」
⇒電子署名には、送信する側の秘密鍵と公開鍵が必要
電子署名(デジタル署名)
• 電子的な署名(ハッシュ値)
• 「本人が行ったこと」、「データが改ざんされていないか」
を証明する技術のこと
・CA(認証局)
ブロックチェーン
一定時間ごとにトランザクションデータをブロックにまとめる
ブロックの内容:
①取引データ(トランザクション)②ナンス③前ブロックのハッシュ値
取引データ
送金金額、送金日時、送りて受け取りてのアドレス
ブロックに前のブロックのハッシュ値を入れる事で、
データに偽造があったら検知できるようにしている。
プルーフオブワーク(セキュリティの根幹)
莫大な計算を行った証拠を意味する。
データ偽造や二重払いを防ぐ仕組み。
新規ブロックのハッシュ値が「一定以上の0が続く」ものに
なるようなナンスの値を求めること。
⇒総当たり法でしか試さなければならない。
ナンスの値が見つかったら新しいブロックが作成される。
⇒改ざんするためには、最新のブロックまでの再計算する必要あり
マイニング
• 取引の承認に必要な計算を実行した人に、
ビットコインを付与する仕組み。
⇒最初にナンスの値を求めた人に報酬としてビットコイン付与
・プルーフオブワークを実行して承認を行う必要がある。
⇒だれもプルーフオブワークをやらなかったらナンスができない
⇒管理者がいないので、計算に対して経済的インセンティブが必要。
⇒自律的にマイニングする人が必要。(お金稼げる??)
ブロックチェーンの状況
ブロックチェーンの種類
オープン型とクローズド型
オープン型: ⇒ビットコインはこっち
誰でも参加可、参加者母数確定不可、管理者がいない
クローズド型: ⇒リブラはこっち
特定の参加者のみ可、母数を確定できる、中央管理者いる
オープン型とクローズド型
取引の承認(合意形成)のアルゴリズムに大きな違いが出てくる。
⇒オープン型だと厳密なアルゴリズムが採用される
⇒プルーフオブ和ワーク
パーミッションドブロックチェーン
コンソーシアムブロックチェーン
ブロックチェーンのメリットデメリット
・メリット:
サービス事業者や管理者でもデータの変更や修正ができない
⇒管理者が誰であろうと安心してサービスを利用することが可
⇒お互いに信用できない物同士でも取引が安心してできる
・デメリット:
個人情報をブロックチェーンに記録すると削除が不可能になる。
⇒ずっと公開された状態、だれでも見れる。
アクセスコントロールを実現しようとすると、
サブシステムが必要??
ブロックチェーンの状況
• 社会に認知されるくらい広まる。
⇒実用化には、技術的課題があり、技術開発が進められている
様々なプロジェクトが登場:
ビットコイン、イーサリアム(2013年)、リップル
課題:
スケーラビリティ、リアルタイム性(デジタル決済)
進められている技術開発
①ビットコイン派生プロダクト:
ビットコイン、ビットコインキャッシュ
②エンタープライズプラットフォーム:
リップル、パーミッションドブロックチェーン
③スマートコントラクトのプラットフォーム
イーサリアム(非中央集権アプリケーション実行プラットフォーム)
スマートコントラクト(イーサリアムから誕生)
契約のスムーズな検証、執行、実行、交渉を意図したコンピュータプロトコル。
スマートは、ここでは「自動的に実行される」ということ
何人かが合意した内容(契約)を、人が居なくても自動的に実行する仕組み
店頭での支払い。自動販売機
画像は、以下のURLから抜粋
https://www.sbbit.jp/article/fj/40394
進められている技術開発
①ビットコイン派生プロダクト:
ビットコインの思想と技術をベースに通貨として普及を目指す。
②スマートコントラクトプラットフォーム:
イーサリアム(非中央集権型のアプリケーションが簡単に作成
できるようになる。)⇒サービスができる??
③エンタープライズプラットフォーム:
実用性を重視し、高速化して一般企業でもやれるように
ブロックチェーンを活用したサービス
ブロックチェーンを活用した非中央集権型サービスを
Dapps(Decentralised Apllications)
従来のフリマアプリ:メルカリ
これからのフリマアプリ:中央に管理者がいない。
ゼイン(ベルリンのスタートアップ企業)
ポルシェと共同開発
スマートカー構想に活用している。
走行データをブロックチェーンに記録する。
フロッピー:国境を越えた不動産取引をスマートコントラクトで
実現する。⇒仲介の手数料をなくし、スムーズに
不動産取引をスマートコントラクトを利用して実現させようとする。
組織にまで非中央集権型が広まる
これまでの伝統的なトップダウン組織:
社長、役員、部長・課長・一般社員
DAO (Decentralized Autonomous Organization):
階層構造になっていない。ユーザーや開発者がフラット。
ウォレットとは何か??
大きく2つの意味がある
①ウォレットアプリ:
「残高照会」や「送金」できる機能のこと(UI)
⇒1つのウォレットアプリは、複数のアドレスを持つ
②ウォレットアドレス:
公開鍵暗号の「秘密鍵」と「公開鍵」をもとにして、
数学的に導出されたアドレス(文字列)
ウォレットアプリの機能
①キーペアの生成と保管
②ウォレットアドレスの生成
③ウォレットアドレスに記録された残高の集計
④トランザクションの作成と電子署名
⑤P2Pネットワークへの接続とトランザクションの投かん
⑥ブロックチェーンに関する支払い検証可能なサマリーデータ
構造の保管
ウォレットアドレスの導出
乱数列(シード) ※十分に良質な乱数
⇒秘密鍵 ⇒秘密鍵のウォレットアドレスを生成(相互変換性あり)
WIF(Wallet Import Format)
↓
公開鍵 ⇒公開鍵のウォレットアドレスを生成(相互変換性なし)
⇒ウォレットアプリ導入のタイミングで自動処理で導出される。
⇒適当に作っても衝突しない。
ウォレットアドレスの管理方法
ウォレットアドレスを使いますと、
①犯罪者に狙われる
②犯罪性収益移転に利用されていると疑われる
などのデメリットがあるため、取引ごとに変える。
⇒効率的にアドレスを管理するために、
「決定性ウォレットアドレス」という考え方がある。
⇒「ルートシード」から「マスター秘密鍵」を生成する。
ホットウォレットとコールドウォレット
ホットウォレット:
インターネットにつながっている
出金:オンラインで署名可能
入金:入金はいつでも可能
コールドウォレット: ⇒ネットから切り離された端末で管理
インターネットにつながっていない
出金:金庫を開けてから手動で署名
入金:いつでも可能
運用面の違い
ホットウォレットは、認証が弱点
⇒認証がばれたら、秘密鍵をどんなに厳重に管理していても
無駄
コールドウォレット運用:
取引指図データに電子署名を施す処理と認証を
オフライン環境で行い、
署名済みトランザクションのみをオンラインにもっていき、
ブロックチェーンのネットワークの放出のみを行う。
ファイナリティ問題
ブロックチェーンの分岐「フォーク」
ハードフォークとソフトフォーク
ファイナリティ:決済が後から取り消されないこと
⇒ブロックチェーンは、ファイナリティがない。
⇒最長のチェーンが採用されるから。
⇒課題点
順序性の担保の難しさ
⇒タイムスタンプの活用
⇒時刻認証局の活用
正確なタイムスタンプトークンを埋め込む??
⇒Hyperledger Fabric
メッセージブローキングサービスとブロックチェーンの連携
検索条件の良いツリー構造
二分木構造+マークルツリー構造
すべてのトランザクションに依存性のあるハッシュ値として
ブロックのヘッダーんい永久記録される。
⇒ハッシュの連鎖構造を作ることで、耐改ざん性を持たせている
スマートコントラクト
契約成立のために必要な条件が記された取引内容が、ブロック
チェーン上に改ざん困難な状態で記録されており、そこに
書かれた条件が満たされると、
自動的に成立するトランザクションのこと
⇒基本的には、「○○という条件が満たされたときに××が
起こる」という条件が書き連ねてある
スマートコントラクトの実現方法
スマートコントラクトをプログラミングできるブロックチェーン
①Etherenum:Solidity(専用言語)、Python
②Hyperledger Fabric:Go、Java
③R3 Corda:Kotlin
⇒全てのスマートコントラクトは、バイトコード化され、
仮想マシン上で実行される。⇒環境の依存性がなくなる。
⇒スマートコントラクトの合意結果がワールドステート
Code is Law (コードは法)
アナーキズム(無政府主義)
⇒支配者不要、非中央集権
⇒プログラムに書いてあることこそが全て
外部のリソースをオラクル(神託)
神のお告げのように皆で信じる考え方。
⇒マシンが自律的にサービスを提供しだす世界
トークン:「価値を含んだ媒体」
証券分野とブロックチェーン
相性ばっちり!
⇒証券業務を大幅改善できる可能性がある。
⇒募集、割当、売買、配当までを分散ネットワーク上に構築可
⇒従来の手数料を得てきたようなビジネスはほぼ成立しなくなる??
⇒投資のための情報提供に重きを置く必要がある??
最大の課題「法定通貨」
実現するためには、ブロックチェーン上に発行されるデジタル
法定通貨が必要!
⇒政府や日銀がブロックチェーン上に法定通貨を発行してくれるか
どうかが大きなカギを握る。
⇒CBDC?
⇒中国だとデジタル人民元
⇒デジタル的な価値の取引が確実に行えるようになる。
⇒革命的な事が起こる。
ハードウェアウォレット
コールドウォレットに該当
⇒huaweiが発表した「Mate40」にも搭載
⇒デジタル人民元に対応している。。
⇒自分自身で秘密鍵を管理するアイテムです。
①コールドウォレット(インターネットから隔離)
②秘密鍵を自分で管理(取引所で管理することはない。)
③様々な外部ウォレットとアプリケーションを連携できる。
④相互感性のあるウォレットアプリを安全に使える。
ウォレットの種類
①オンラインウォレット
②モバイルウォレット
③デスクトップウォレット
④ハードウェアウォレット
⑤ぺーパーウォレット
⑥ウェアラブルウォレット
⇒デジタル人民元では、多数の種類のウォレットで実証実験が
行われている模様。。
秘密鍵が外に漏れると。。
ウォレットが同期される。
勝手に送金の署名もされる。
⇒ウォレットの口座からお金がなくなる。。
⇒秘密鍵の管理は、自己責任の世界であるが、
どうやって安心・安全に使えるのか???
⇒KYCは?鍵管理は?
イーサリアムの登場
イーサリアムの登場で、金融市場以外にもブロックチェーンが
使そうなことが分かった。
⇒ブロックチェーンの可能性を切り開いた。
ブロックチェーン+アプリケーション
通貨以外でも管理者のいないサービスを作れるようにした。
⇒ブロックチェーンの世界を切り開いた。
⇒ビタリック・ブテリンが作った。
スマートコントラクト
契約内容(取引が成立するための条件 if文など)が、
ブロックチェーン上に改ざん困難な状態で記録されていて
この記述された条件が満たされた時に、
自動的に契約が成立する仕組み。
ブロックチェーンが普及すると、、、
①非中央集権型のサービス(Dapps)
②価値を簡単に送れるようになる
⇒facebookのザッカーバーグ
「写真を送るように、お金も送れるべきだ」
③デジタルデータが資産性を持つようになる
⇒デジタル通貨??
②価値を簡単に送れるようになる
ブロックチェーンの正しいデータと稀少性がある
⇒価値の代替が決まっている。
⇒価値というものを簡単に送れるようになった。
海外送金もワンクリックで、管理者がいないので手数料安く。
③デジタルデータが資産性を持つ
インターネット時代:
動画、音楽などのコンテンツの価値が下がる。コピーできる
⇒NETFLIX、U-NEXT
ブロックチェーン時代:
デジタルデータだがコピーできない
唯一性を持ち、交換可能であるので、資産性あり。
ブロックチェーンの課題
①スケーラビリティの問題
⇒取引数が増えると処理速度が遅くなる。。
②非実時間性(ファイナリティ問題)
⇒取引が確定するまで時間がかかし、いつ確定するかも分からない。
⇒即時性や正確性が重視されるシーンには向かない。
③プライバシーの問題
取引情報(アドレス)と特定の個人情報が結び付けば、
個人の保有残高や送金記録を知る事ができる。(GOEで解決?)
デジタル通貨の運用のアイデア
ハードウェアウォレット
⇒リバースプロキシ、NAPTのようなことにできないか??
デバイスに搭載するとクールウォレットみたいになる??
⇒デバイスが盗まれたときは?
⇒中古で出したときは??
⇒自動的に壊す機能が必要??
⇒即時性が求められるはず。。。
ウォレット
秘密鍵⇒公開鍵⇒アドレス
電子署名技術を利用している。
利用者のプライバシー
なりすまし、改ざん不可
⇒電子署名とネットワーク
公開鍵暗号⇒ハリーだけがお金を使える。
ハリーが受け取ったbitcoinを使えるのはハリーだけ
(ハリーの秘密鍵だけ)
電子署名
文書をハッシュ関数で、ハッシュ化
ハッシュ値をさらに暗号化して署名データを作成
+文書を送る。
複合化して合致しない ⇒改ざんされている
公開鍵で複合化できない⇒別人が作った⇒取引は確かに本人が
行った。
ウォレットでの秘密鍵の作成手順
秘密鍵
⇒ランダムに選ばれる値
⇒お金を使用する際に用いられる
⇒秘密鍵を他人に漏らすとお金を使用できてしまうので、
必ず秘匿にする
⇒スマートフォンの紛失等に備えて、バックアップを取る。
秘密鍵(256ビットの乱数)の作成方法
①OSの乱数生成器等を用いて作成される
⇒だれだけ規則性のない乱数を生成するかにかかっている
⇒コンピュータにとっては、難しい
⇒キーボード操作やマウス操作など、規則性も予測可能性も
んないものをもとにする。
公開鍵
秘密鍵から導出された点。座標(x,y)で表される
⇒秘密鍵から計算される。
秘密鍵を使った計算の結果を検証するのに使う
公開鍵からアドレスを生成する。
楕円曲線暗号
⇒ 同じ鍵の長さでもより強度を強くすることが出来る。
K = k * G (K:公開鍵 G:秘密鍵)
公開鍵からアドレスを作成する
公開鍵 SHA-256とPIREMD160でハッシュ化
↓
公開鍵はハッシュ Base58でエンコード(読みやすいように変換)
↓
アドレス
Base64とBase58
Base64:
64種類の英数字を使ってデータを変換する方式
アルファベット、数字、記号を使う
文字を扱えない環境でもつかえる
変換したものを元に戻すこともできる
Base58:
58種類の英数字を使ってデータを変換する方式
base64より読みやすく、エラー検出を簡単にした。
トランザクション
インプット(送りて)とアウトプット(受け取りて)
主な用途は、送金
価値の移転を記しているもの
⇒サイン(電子署名)入りの小切手のような物
UTXO(未使用残高)
ウォレットアプリが表示する残高は、UTXOの合計
⇒UTXOプールで保存する。
UTXOは、ブロックチェーン上に記録されている。
⇒UTXOを消費して台帳に記入。
Inputとoutputが等しくなるようにならなければならない。
トランザクションのアウトプット
トランザクションいよって作成されたUTOが
トランザクションアウトプット
①出金額
②outputを使用するにあたって満たされなければならない解除条件
⇒アドレス情報も含まれている。
ScriptPubkey
トランザクションのインプット
インプットはUTXOへのポイント
①UTXOのトランザクションハッシュ
②UTXOのインデックス番号
③UTOのロックを解除するスクリプト
⇒ScriptSig(電子署名と公開鍵が含まれる。)
Sig シグネチャー(署名のこと)
トランザクションの手数料
手数料が高いとマイニングの優先順位が上がる。
⇒早く取引をトランザクションにとりこまれたいなら、
手数料を上げること。
トランザクションスクリプト
スクリプトはプログラミング言語の一種
スクリプトを実行することでトランザクションの有効性を
チェックする。
Outputのロックを解除するスクリプト
Inputのロックを解除に必要な条件
⇒ScriptSigとScriptPubkeyをつなぎ合わせた状態で、
スクリプトを実行する。
検証
ScriptSig (電子署名+公開鍵)
ScriptPubkey(複製 ハッシュ化 公開鍵ハッシュ == 署名検証)
よく使われているスクリプト
①pay-to-public-key-hash
②マルチシグネチャ
③データアウトプット
④Pay-to-Script-Hash
ネットワークに参加するノードについて
ノードの機能について
①ウォレット
②マイニング
③フルブロックチェーンデータベース
④ルーティング
ノードの種類
①フルノード:前ページの全ての機能を使える。
②SPVノード:ウォレットとルーティングの機能のみ
Simplified Payment Verfication
③ソロマイナー:マイニングとルーティングフルブロックチェー
ンデータベース
ブルームフィルタ
トランザクションデータをプライバシーを守りながら、入手したい。
⇒プライバシーを守りながら、フルノードから自分に関係のある
トランザクションデータを受信する仕組み。
フィルタにマッチしたブロック(マークルブロック)
マッチしたブロックのヘッダと取トランザクションデータへの
マークルパス
トランザクションデータの検証
①トランザクションのデータ構造は正しいか
②unlocking scriptでlocking scriptを解除できるか?
Generation トランザクション
⇒マイナー自身で作成。報酬を記載。
ブロック(ブロックヘッダ、トランザクションデータ、
generationトランション、ナンス)
ブロックヘッダ
構造
①前ブロックヘッダのハッシュ値
②PoWの難易度
③powのナンス
④ブロックの生成時刻
⑤マークルルート⇒トランザクションデータをまとめたもの
二重ハッシュ化
マークルルート(改ざん検知用に保持)
マークルルツリー
ブロックに含まれるトランザクションデータを要約する
①トランザクションデータの改ざんを検知する
②トランザクションがそのブロックに含まれるか効率良く検証
⇒ブルームフィルタで利用されている。
マークルルート:一番上のハッシュ値
マークルパス:特定のトランザクション
マークルフィルタ
マークルルートとマークルパスをSPVノードに送って検証する。
⇒自分のトランザクションが確かにブロックに含まれている事が確認できる。
プルーフオブワーク難易度調整
最後の2016ブロック(2週間)ごとに難易度を調整する。
⇒計算が10分になるように
ブロックデータの検証
①ブロックのデータ構造が正しいか
②ブロックのハッシュ値がPoWの難易度より小さいか
③ブロックに含まれているトランザクションが、
トランザクションデータ検証のチェック事項を満たすこと
フォークする場合
長い方のチェーン(累積難易度が最も高いチェーン)
6ブロック以上積みあがればブロックが変更されることはない
。
⇒ハードフォークとソフトフォーク
スマートコントラクト
改ざん困難な状態で、契約に成立するための条件が記載されてお
り、条件が満たされると自動的に実行されるプログラム
スマートコントラクトの一例:トークン(電子的な証標)
スマートコントラクトのアドレス
①EOA(Externally Owned Account)
通常のウォレットアドレス
プライベートキーを持っている(資産管理可)
②コントラクトアドレス
スマートコントラクト用アドレス
プライベートキーを持っていない
スマートコントラクトのコードを持っている
アドレスを持っている
スマートコントラクトが実行される時
トランザクションの送り先がコントラクトアカウントだと
スマートコントラクトが実行される。
スマートコントラクトの構造
①ナンス:署名されてトランザクション数
トランザクションが送られるとナンスがカウントされる
②ガス:トランザクションが使えるリソース量を
コントロールするための単位
-EOAが「ガスの価格」と「ガスの上限値」を決める。
③バイナリデータ:コントラクトの時に使用されうバイナリデータ
コントラクトに送られたとき、処理用のデータ
(関数の引数)として使用される。
スマートコントラクトの仕組みの全体像
コントラクト作成
①コントラクトコード作成
②コンパイルとデプロイ
③コントラクトアカウント作成
コントラクト実行
①コントラクトアカウント宛にトランザクション送信
②コントラクト実行
コントラクト作成
コントラクトコードをコンパイルして、
--高級言語で書く(Solidity、vyper)
バイトコードにする(仮想マシン上で実行できるため)
バイトコードをデプロイしてコントラクトを作成する。
仮想マシン上でコントラクトを実行する。
スマートコントラクトの課題
一度デプロイしたら修正は、不可能!
⇒自己破棄する関数を作っておく必要がある。
脆弱性があっても何もできない可能性がある。。
⇒DAO事件
⇒十分なテストケースの消化と監査が必要!
⇒ベストプラクティスに従って開発することも重要!
オラクルの利用方法
スマートコントラクトの弱点
--外部データを利用できない。
⇒オラクルを利用する
①外部からデータを収集する
②署名付きトランザクションデータで
ブロックチェーンん上にデータを取りこむ
③スマートコントラクトのストレージにデータを入れて
誰でも使用できるようにする。
外部サービスを利用する(oraclize)
外部から情報を取得・検証し、スマートコントラクト上で
使用できるようにする。
オラクルという共通の外部リソースを参照する必要がある。
⇒誰が実行しても同じ実行結果を返す必要があるため。
Dappsとは
自律分散型アプリケーション
アプリケーションがオープンソースである。
アプリケーションのデータや記録は、公開・暗号化された
ブロックチェーンを利用している。
仮想通貨のトークンを持っていて、アプリケーション利用の際
は、トークンを使用すること。
アプリケーションへの貢献が暗号を用いたアルゴリズムによっ
て証明され、それに従いトークンが生成される。
Dappsとは
バックエントソフトウェアのロジック部分が
スマートコントラクトになったもの。
構成自体は、通常のwebサイトと同じ
⇒コントラクト宛のトランザクションが発生し、
スマートコントラクトを実行する。
マイクロペイメント
マイクロペイメント:1円以下で送金ができる少額決済のこと
⇒サービスに1秒ごとに課金したりできる。
暗号資産では、送金手数料を抑えることができるため、
国際送金でもマイクロペイメントが使える。
⇒ライトニングネットワーク⇒(Lapps)
⇒ソーシャルプラットフォーム化していくゲームに
マイクロペイメントを組み合わせて、これまでになかった
細かな動作に金融サービスに付与できるようになる。
ブロックチェーンの今後の展望
ビットコインが実現できていること
管理者不在かつ電子データで、機能としての通貨を実現
(貨幣の3台機能を満たす)
①一般的交換手段(モノと交換できる)
②価値の尺度(BTCでモノの価格が表示されている)
③価値の保蔵手段(資金の非難先として使用。)
ビットコインの懸念
①利用者の偏り
利用者の89%が0.1BTC以下の少額のビットコインしかない。
⇒お試しで作っている場合がある。
⇒アドレスを新規で作りなおしている。
⇒実際に使われているのが、50~60万個
上位2.6%のアドレスがビットコインの95%を保有
⇒一握りの人のためのビットコインになっている。
⇒ビットコインの利用の実態は投機目的
②仕組みそのものの弊害
発行上限がある(稀少性がある)
⇒将来の値上がりが見込まれ、通貨より投資用の資産
マイニングの収入の半減していくことで、
マイナーが撤退する可能性がある。
最大2,100万BTC (2019年1月時点で、83%が発行済み)
③分裂の危険
2017年8月にビットコインとビットコインキャッシュに分裂
⇒今後も分裂する可能性あり
取引量の上限が原因
⇒管理者が居ない事の難しさ
⇒運営の意見次第では、分裂する可能性あり
政府による規制
「改正資金決済法」で暗号資産の規制へ
--暗号資産が定義された
--暗号資産取引所に一定の基準を課し、登録制にした
--暗号資産取引所に一定の業務規則を課す
--暗号資産取引所は金融庁の監督を受けること
政府による規制が暗号資産の取引に大きな影響を及ぼす。
今後の展望についての考察
一部の人が使う商品として残り続ける可能性が高い
近年、中央銀行がデジタル通貨(電子的な通貨)の研究を
積極的に行っている。
--将来、中央銀行が発行するデジタル通貨が広く使われるように
なるかもしれない。
--カナダ銀行は、「CADコイン」というデジタル法定通貨の
実証実験を行っている。
分散型台帳システムの利点
①改ざんされにくい
②システムがダウンしにくい
⇒他のノードが生きていれば動く
③コストが低い
⇒セキュリティ、バックアップのシステムコスト減
共通帳簿を持てる、管理者なしで取引が行える。
ブロックチェーンの課題
技術:スケーラビリティ、実時間性、プライバシー
政府:規制と健全性
市場:ボラティリティの高さ
一般:ユーザビリティ
ブロックチェーンの活用事例
①共有データベース
②スマートコントラクト
Corda(コルダ)の概要
⇒エンタープライズでの利用に特化したブロックチェーン
企業間取引を想定し、エンドユーザー目線からスクラッチで
開発された唯一のエンタープライズ向けブロックチェーン・
プラットフォーム(ミドルウェア)である。
⇒金融機関が求める要件に基づき設計・開発された。
⇒金融以外のすべての業界への適用もできる。
⇒金融グレードの高いセキュリティとプライバシーを備えた。
Cordaを支える4つの特徴(Kotlin)
①プライバシー
②インターオペラビリティ(価値を他のネットワークに移される)
③スケーラビリティ
④プロダクティビティ(高い開発生産性)
CordaとKubernetes
Kubernetes⇒協力なコンテナオーケストレーションおよび
resource管理ツール。
ノードが動作しているマシンの最大容量に達した場合、
ノードはより高いスペックのマシンに移行する必要あり。
Hyperledgerプロジェクト
2015年12月に開始されたプロジェクト
ブロックチェーンが実現する分散元帳をパフォーマンスと信頼性
の多くの面で改善することを目的としています。
Hyperledger Irohaについて
ソラミツ株式会社がオリジナルコードを開発した。
>Hyperledgerプロジェクトの取り組みの1つである。
>Linux Foundationが中心となったオープンソースプロジェクト
>ブロックチェーンを核とした複数のプロジェクトの1つ
特徴①簡単な導入とメインテナンス②開発者向けの様々なライブ
ラリ③役割に基づいたアクセス制限④コマンドとクエリの分
離によって行われるモジュール型設計⑤資産とアイデンティ
ティ管理⑥信頼性、パフォーマンス効率、ユーザビリティ
オラクル処理(オラクル・システム)
オラクルとは、ブロックチェーンの外部から現実世界に関するデータ
を、ブロックチェーン内に提供する主体(サービスやサーバー等など)
のこと
オラクルとは、外部の状態の情報を提供するエンティティ
主にスマートコントラクトに使う署名された情報を提供する。
⇒外部リソースを提供する。
⇒これがないと、スマートコントラクトを使って、
外部情報を動かすことができない。
オラクル処理の弱点
①オラクルがハッキングされる可能性がある。
②オラクルのプロセスが不透明
⇒アウトプットに100%確証できない
③オラクルが、トランザクションを作成してから、
完了するまでに消えてなくなる可能性がある。
④オラクルが賄賂を受け取って間違った結果を配信するかもしれ
ない。
⇒1つのホストは危険なので、複数人でマルチシグにサインする。
SDK(software development kit)
SDKとは、あるシステムに対応したソフトウェアを開発するため
に必要なプログラムや文書などをひとまとめにしたパッケージの
こと。システムの開発元や販売元が希望する開発者に配布あるい
は販売する。近年ではインターネットを通じてダウンロードでき
るようWebサイトで公開されることが多い。
例:) JDK
STO(security token offering)
ブロックチェーン上で発行されたトークンを用いた資金調達方法
のこと。
※ここでいうセキュリティは、「証券」のこと
⇒有価証券の機能を付与されたトークンによる資金調達」
セキュリティトークン⇒独自の通貨
債権や不動産のような現物資産をデジタル証券として発行する
電子記録移転権利
Node.js
サーバーサイド側でjava Scriptを実行するための環境
Webアプリケーションのサーバーサイド側を実装できる。
Hyperledger Fabricについて
①hyperledgerbFabric Client SDK
⇒node.js,go,java版が出ている。
②organization
③peer(ノードを表す単位)
④標準で提供されるCA
Hyperledger Besuについて
ブロックチェーン企業「ConsenSys」のプロトコルエンジニアリ
ングチーム「PegaSys」が、Javaで実装したイーサリアムクライ
アント。
エンタープライズ向けイーサリアムの標準化団体「Ethereum
Enterprise Alliance」(EEA)のクライアント仕様を実装したもの
であり、以前は「Pantheon」と呼ばれていた。
⇒パブリックとクローズドどちらにも対応する。
⇒トランザクションの公開範囲も制御できる。
Hyperledger Besuについて
プライベートネットワークで安全で高性能なトランザクション処理を
必要とするアプリケーションを開発できる。
• Besuには、Ethereumネットワークでノードを実行、保守、デバッグ、
および監視するためのコマンドラインインターフェイスとJSON-
RPCAPIが含まれています。APIは、RPC overHTTPまたは
WebSocketを介して使用できます。BesuはPub / Subもサポートし
ています。APIは、次のような典型的なイーサリアム機能をサポート
します。
• エーテルマイニング
• スマートコントラクトの開発
• 分散型アプリケーション(Dapp)の開発。

ブロックチェーンまとめ