2017年3月26日日曜日

"Programming The Blockchain in C# 日本語"のトランザクションパートでエラーが出るpart3

NBitcoinのトランザクションパートでエラーが出るpart3

前回に引き続き。

問題

file: 'file:///Program.cs'
severity: 'エラー'
message: ''TxOutList' does not contain a definition for 'First' and no extension method 'First' accepting a first argument of type 'TxOutList' could be found (are you missing a using directive or an assembly reference?) [/Users/kichino/Documents/nbtc/nbtc.csproj]'
at: '101,52'
source: ''
            Money twentyOneBtc = new Money(21MoneyUnit.BTC);
            var scriptPubKey = transaction.Outputs.First().ScriptPubKey;
            TxOut txOut = new TxOut(twentyOneBtcscriptPubKey);
            Console.WriteLine(txOut);

もはや馴染みのエラーとなった。対処も慣れたものである。


対処法
前回と同様に適切なライブラリをインポートする。
今回は6つ目のライブラリを追加している。
using System;
using NBitcoin;
using QBitNinja.Client.Models;
using QBitNinja.Client;
using System.Collections.Generic;
using System.Linq;

結果

TxOutオブジェクトが出力されることが確認できた。


"Programming The Blockchain in C# 日本語"のトランザクションパート、Exercise1:「使われた」BTC情報の取得

NBitcoinのトランザクションパート、Exercise1:「使われた」BTC情報の取得

前回の投稿に引き続き、こちらについてで、途中にある一つ目のエクササイズに関して。
特に迷うことはなかったが、これからトライする人の参考のために。

問題

Exercise : QBitNinjaのGetTransactionResponseクラスを使って、「使われた」BTCの情報を表示してみよう!
さて今度は、NBitcoinのTransactionクラスを使って、QBitNinjaで表示した「受け取った」BTCの情報と同じものを、どのように表示するか見てみよう。
回答

「受け取った」BTCの情報を得るために書いたコードを少しだけ変更した。
1行目:transactionResponse.ReceivedCoins→transactionResponse.SpentCoins 
2行目:foreach(var coin in receivedCoins) → foreach(var coin spentCoins)
List<ICoin> spentCoins = transactionResponse.SpentCoins;//「使われた」BTCの情報を取得する
            foreach (var coin in spentCoins)
            {
                Money amount = (Moneycoin.Amount;

                Console.WriteLine(amount.ToDecimal(MoneyUnit.BTC));
                var paymentScript2 = coin.TxOut.ScriptPubKey;
                Console.WriteLine(paymentScript2); //これはScriptPubKey
                var address = paymentScript2.GetDestinationAddress(Network.Main);
                Console.WriteLine(address);
                Console.WriteLine();
            }

結果

結果

結果の正誤確認方法

トランザクションのインプットは大体複数のインプットから成り立っているため合ってそうな気がするが念のためこちらで確認する。
正しいことが確認できた。

まとめ

このExerciseでは「使われた」BTCの情報をトランザクションIDを頼りに取得する方法を学ぶことができた。少し違和感を感じたのは一般的にTX_IN、TX_OUTというようにインプット、アウトプットでトランザクションを区別していたがこのライブラリではSpentCoins、ReceivedCoinsと区別されているため直感的にはわかりづらかった。

"Programming The Blockchain in C# 日本語"のトランザクションパートでエラーが出るpart2

NBitcoinのトランザクションパートでエラーが出るpart2

問題

前回の投稿に引き続き、引っかかったところとその対応方法についてまとめます。
file: 'file:///Program.cs'
severity: 'エラー'
message: 'The type or namespace name 'List<>' could not be found (are you missing a using directive or an assembly reference?) [/Users/kichino/Documents/nbtc/nbtc.csproj]'
at: '64,13'
source: ''

問題のコードを以下に示す。
List<ICoin> receivedCoins = transactionResponse.ReceivedCoins;
            foreach (var coin in receivedCoins)
            {
                Money amount = (Moneycoin.Amount;

                Console.WriteLine(amount.ToDecimal(MoneyUnit.BTC));
                var paymentScript1 = coin.TxOut.ScriptPubKey;
                Console.WriteLine(paymentScript1); //これはScriptPubKey
                var address = paymentScript1.GetDestinationAddress(Network.Main);
                Console.WriteLine(address);
                Console.WriteLine();
            }

対処法

前回と引き続きインポートするライブラリが正しくないためメソッドの参照がされなかったということでしょう。以下のようにインポート文を追記します。

using System;
using NBitcoin;
using QBitNinja.Client.Models;
using QBitNinja.Client;
using System.Collections.Generic;

結果



「受け取った」BTCの情報である以下3つを取得することができた。
  • BTC量
  • スクリプト
  • 受け取りアドレス


まとめ

前回の投稿に引き続きライブラリのインポートで2回も引っかかった。このことから言えるのは初心者にはその点の理解が不足しているため説明をもう少し付け加えた方がわかりやすくなると思う。しかし総じて良い教材である。

"Programming The Blockchain in C# 日本語"のトランザクションパートでエラーが出る

NBitcoinのトランザクションパートでエラーが出る

問題

今回はこちらの勉強をしていたところ以下のようなエラーが発生。
file: 'file:///Program.cs'
severity: 'エラー'
message: 'The type or namespace name 'QBitNinjaClient' could not be found (are you missing a using directive or an assembly reference?) [/Users/kichino/Documents/nbtc/nbtc.csproj]'
at: '48,13'
source: ''

QBitNinjaClientが見つからないけどつまり参照がうまくできてないんじゃない?というご指摘を受けた。問題のコードは以下でした。

//QBitNinjaクライアントオブジェクトを作成
            QBitNinjaClient client = new QBitNinjaClient(Network.Main);

対処法

以下のように適切なライブラリを使うことで解決する。
今回不足していたのは4つ目のQBitNinja.Clientだった。
using System;
using NBitcoin;
using QBitNinja.Client.Models;
using QBitNinja.Client;

結果

以下にコードとその実行結果を示す。

//QBitNinjaクライアントオブジェクトを作成
            QBitNinjaClient client = new QBitNinjaClient(Network.Main);

            //文字型のトランザクションIdをパースしてuint256型に変換。これで、クライアントオブジェクトに渡せる
            var transactionId = uint256.Parse("f13dc48fb035bbf0a6e989a26b3ecb57b84f85e0836e777d6edf60d87a4a2d94");

            //QBitNinjaサーバー側に問いかける
            GetTransactionResponse transactionResponse = client.GetTransaction(transactionId).Result;

            //transactionResponseからNBitcoin.Transaaction型のオブジェクトを取り出す
            NBitcoin.Transaction transaction = transactionResponse.Transaction;

            //上記2つの例からTransaction IDを取り出す
            Console.WriteLine(transactionResponse.TransactionId);
            Console.WriteLine(transaction.GetHash());

f13dc48fb035bbf0a6e989a26b3ecb57b84f85e0836e777d6edf60d87a4a2d94
f13dc48fb035bbf0a6e989a26b3ecb57b84f85e0836e777d6edf60d87a4a2d94

以上によりQBitNinjaのAPI経由で16進数表現のトランザクション情報からトランザクションIDを抽出することができたと同時にトランザクションのハッシュ値とトランザクションIDが等しいことも確認できた。

2017年3月24日金曜日

Visual Studio Codeと.NETCOREで始める"Programming The Blockchain in C# 日本語"

インストール

Visual Studio Code


.NETCORE


homebrew

エラーが出る場合はこちらを参考に対処する

セットアップ

C#

以下の画像のように拡張機能からC#を追加する。

Nuget

以下の画像のようにNuGet Package Managerを追加。

コンソールの立ち上げ

以下の画像のように表示タブから統合ターミナルを起動。

作業ディレクトリを作成以下をコマンドラインで打ち込む。
bash-3.2$ dotnet new console

NBitcoin追加

次に表示タブ→コマンドパレット→NuGet Package Manager : Add package→"NBitcoin" Enter→NBitcoin でパッケージ追加完了。



確認テスト

以下コマンドを実行して出力を確認する。
using System;
using NBitcoin;
namespace nbtc
{
    class Program
    {
        static void Main(string[] args)
        {
            Key privateKey = new Key();
            PubKey publicKey = privateKey.PubKey;
            Console.WriteLine(publicKey);
        }
    }
}
無事秘密鍵が出力された。
0366081c2cac183c61282fcd6e1faf7f030d0d1c746d8b87d153c180dfbb94b174  
※この秘密鍵は使い捨てます

2017年3月21日火曜日

HyperLedger_sawtooth-lake_概要

Hyperledgerの概要説明資料作成のための覚え書きとして。今回はそのプロジェクトの一つのうちのSawtoothLakeの概要についてまとめてみる。本記事内の引用文は以下サイトのグーグル翻訳結果を気になるところのみ修正して載せています。
https://wiki.hyperledger.org/projects/sawtooth-lake.md

何なのか?

  • Intelの分散台帳技術
  • IoTから金融に至るまで様々な分野で利用できる
  • 合意アルゴリズム PoETを採用
  • プログラム言語 Pythonを採用
  • HyperLedgerではIncubation状態
Document内ではコンセンサスに関して多く言及されているので少し深く見て見ますと気になる文章がありました。
Sawtooth Lakeはコンセンサスの中核概念を抽象化し、コンセンサスをトランザクションセマンティクスから分離する。Sawtooth Lakeは現在、「経過時間の証明」のためのPoETという単一のコンセンサスプロトコルを提供しています。PoETは、参加者の大規模なニーズに対応するためにインテルのSGXが提供する信頼できる実行環境(TEE)を基盤にした宝くじプロトコルです。2番目の定足数投票は、RippleとStellarのコンセンサスプロトコルの適応であり、トランザクションの即時性を必要とするアプリケーションのニーズに対応します。
ここでいうコンセンサスの概念とは「中本コンセンサス」と「ビザンチンフォールトトレランス(BFT)」のことです。ここでは両者の説明は省きます。
中核概念の抽象化とあるのはおそらくコンセンサスプロトコルに以下2点の要素を入れたということではないでしょうか?
  1. 確率的にブロックをつなげるノードを選出する
  2. ノードの総数が限られた中でのコンセンサスを満たすプロトコルを得る
つまり概念としては過去のアイディアを踏襲するものの技術的には異なるアプローチで分散台帳を実現していると言えるのではないでしょうか?

それではどのようにしてコンセンサスを満たすのか見たいと思います。

経過時間の証明(PoET)

分散したコンセンサスを効率的に達成する目的で、良い宝くじ機能にはいくつかの特徴があります。
  • 公平性:この機能は、可能な限り広範囲の参加者にリーダーの選挙を配布すべきである。
  • 投資:リーダー選挙プロセスを支配するコストは、そこから得られる価値に比例していなければなりません。
  • 検証:すべての参加者がリーダーが合法的に選ばれたことを確認するのは比較的簡単でなければなりません。
Sawtooth LakeはPoEと呼ばれる中本コンセンサスアルゴリズムを提供しています。このアルゴリズムは、インテル®ソフトウェアガード拡張(SGX)などの信頼できる実行環境(TEE)を使用して 、リーダーの選定プロセスの安全性とランダム性を確保し、ほとんどの "証明"アルゴリズムで使用されます。当社のアプローチは、TEEを通して提供される保証された待機時間に基づいています。
BitcoinBlockchainではハッシュパワー、つまり計算量というコストを費やしてブロックの正当性証明するのに対してこちらは経過時間というコストを用いるようです。しかしきになるのはインテルの信頼できる実行環境を使用して、という文言。読み進めていくとこんな文章がありました。
基本的に、すべてのバリデーターは、信頼できる関数からの待機時間を要求します。特定のトランザクションブロックの最短待機時間を持つバリデーターがリーダーに選ばれます。「CreateTimer」という1つの関数は、TEEによって作成されたことが保証されているトランザクションブロック用のタイマーを作成します。"CheckTimer"という別の関数は、TEEによってタイマーが作成されたことを検証し、有効期限が切れていれば、バリデータが実際にリーダーシップの役割を果たす前に割り当てられた時間を待っていることを確認するためのアテステーションを作成します。
この"CreateTimer"というのがインテルの実行環境特有の関数のようでこれはインテルのハードウェアを買えということでしょうね(笑)

何ができるのか?

何かしらの実証実験などされてるかググりましたが特に情報は出てきませんでした。
Document内では2つのノード間でのアセット交換を行うチュートリアルが用意されていますのでご確認ください。

どのくらい使われているのか?

HyperLedgerの中では現在Incubation状態にあるということでIntel内の実験的取り組みのみにとどまるのではないでしょうか?


まとめ

今回はIntelが主導するsawtoothlakeについて調べて見ました。特徴としては中本コンセンサスとPBFTを抽象化することでBlockchainに引きずられない特徴のある技術だということがわかりました。

Custos Media Technology とは?[Business Blockchain from Africa]

以下のサイトを参考にアフリカのブロックチェーンビジネスに関する個人的見解を述べます。引用文はサイトのgoogle翻訳結果を使っています。
http://www.itnewsafrica.com/2017/02/5-african-blockchain-companies-to-watch/

Custos Media Technology

何なのか?

デジタル著作権侵害と戦う新たなアプローチを提供する。
海賊版コミュニティのインセンティブ構造を歪めて海賊行為を中止する。
法的コピーと違法コピーの相対的なコスト評価から消費者が海賊版を選択するというエコシステムにはホスト、アップローダー、ダウンローダーという登場人物がいる。ホストとアップローダーは独占的に利益を得ている。またダウンローダーは主に4つのカテゴリーからなる動機付けをされている。この現状に効果的な技術は無い、という背景をもとにCustos Media Technologyがこの問題に対するフレームワークと技術的・経済的な効果を考え
た。 
http://beta.custostech.com/wp-content/uploads/2016/08/CustosTech-Economic-White-Paper.pdf

何ができるのか?

以下2つのソリューションを提供しているようです。
基本的にオンラインでの動画配信で問題となっている違法ダウンロードの抑止をソリューションとしているようです。
  1. クラウドストレージへのコンテンツアップロード
  2. コンテンツ受信者の選択
  3. コンテンツのオンラインストリーミング、ダウンロードによる市長
  4. コンテンツ視聴者の追跡と不正行為の通知
これは仕組みとして面白いです。少額のBitcoinを賞金としてP2P上でのデジタルコンテンツのやり取りで問題視されいる海賊版コンテンツの取り締まりをネットワーク参加者に任せるようです。
これはBitcoinの賞金とデジタル透かしを統合して海賊版電子ブックの目撃情報を報告した人々に報酬を与える新しいソーシャルDRMプラットフォームCustos eBookの背後にある目標です。 
結局のところ、この電子透かし方式は購入者を実際に訴追して本をアップロードすることにはならないと思われます。パブリッシャーは購入者がアップロードしたものであること、そして誰かが途中で透かしを入れてコンピュータから盗む たとえ民事訴訟であっても、訴訟費用の法的手数料の投資に対する貧困層の返還は、電子ブックを2つ以上アップロードして誰かを訴えることはほとんど価値がないので、そうではないようだ。

 今ある電子透かし方式はこのままではアップローダーに普及しないし、もし透かしの入ったコンテンツに対する訴訟を起こそうとしても費用対効果の面から合理的でないと彼らは主張しています。なのであるネットワーク内で流通するコンテンツを参加者が相互に取り締まる仕組みとしてBlockchainを使えないかということを彼らは試しているようですね。

 どのくらい使われてるのか?

使用状況は見つけることができませんでした。しかし実験的な取り組みのため使用は限定的だと推測します。

2017年3月20日月曜日

Bitlandとは?[Business Blockchain from Africa]

以下のサイトを参考にアフリカのブロックチェーンビジネスに関する個人的見解を述べます。引用文はサイトのgoogle翻訳結果を使っています。
http://www.itnewsafrica.com/2017/02/5-african-blockchain-companies-to-watch/

bitland-Land Title Protetion Ghana

Bitlandは、個人や組織が土地を調査し、行動をBitshares Blockchainに記録するサービスを提供することを目的とした組織です。パイロットプロジェクトがKumasiから出ているので、チームはガーナをアフリカ大陸にさらに広げようとしています。組織が成長するにつれて、開発途上国のインフラを構築し、未開発の財産権で数十億ドルの資金を潜在的に利用できるようにしています。

何なのか?

発展途上国の土地管理をブロックチェーンでやろうという試みです。
まともに土地の所有権管理がされていないアフリカならではのビジネスですね。

Cadastral(土地台帳)Blockchain
Bitlandは独自のトークンを発行したようです。既存の法定通貨との取引価格も出ています。このトークン自体はbitlandの支援金としての位置づけが強そうです。

Wallet
Windows/Mac/Linuxで使用できるウォレットが用意されています。
インストーラーはBitshares上に保存されているようです。そもそもBitsharesって何?という後日作成予定の記事で理解してください。

Online Wallet
オンラインウォレットもあるようです。こちらもBitsharesが関係するオンラインウォレットのようです。OpenLedgerというらしいですがこちらは調査しないとよくわかりません。

何ができるのか?

Bitlandのブロックチェーン上への土地登録

どのくらい使われてるのか?

以下サイトを見る限りBitlandが試験的に登録しているわずかな土地しか確認できないことから非常に狭い範囲でしか使われていないと推測できます。
http://callbrock.net/bitland/map4/

2017年3月18日土曜日

Hyperledger-Fabric_概要

Hyperledgerの概要説明資料作成のための覚え書きとして。今回はそのプロジェクトの一つのうちのFabricの概要についてまとめてみる。本記事内の引用文は以下サイトのグーグル翻訳結果を気になるところのみ修正して載せています。
http://hyperledger-fabric.readthedocs.io/en/latest/fabric_model.html#assets

Fabricは以下の要素で構成されている。

  • アセット
  • チェーンコード
  • 元帳機能
  • チャネルによるプライバシー
  • セキュリティ&メンバーシップサービス
  • コンセンサス
アセット

資産は、有形資産(不動産およびハードウェア)から無形資産(契約および知的財産)までさまざまです。クライアント側のjavascriptでAssetsを簡単に定義し、付属のFabric Composerツールを使用してFabricアプリケーションで使用することができ ます。Fabricは、未使用のトランザクション出力を使用して、後続のトランザクションの入力として資産を交換する機能をサポートします。アセット(およびアセットレジストリ)はFabricにキーと値のペアの集合として存在し、状態の変化はチャネル元帳上のトランザクションとして記録されます。Fabricでは、任意のアセットをバイナリ形式またはJSON形式で表現できます。


UTXOを使ったアセットの交換が可能ということからBlockchainの特徴を引き継いでいることがわかります。またアセットのやりとりが元帳に記録されるというとこも特筆すべきことではないですね。データ形式もまた然りです。

チェーンコード
チェーンコードは、資産を定義するソフトウェアであり、資産を修正するための取引指示書である。言い換えれば、それはビジネスロジックです。チェーンコードは、キー値ペアまたは他の状態データベース情報の読み取りまたは変更のための規則を強制します。チェーンコード機能は、元帳の現在の状態データベースに対して実行され、トランザクション提案によって開始されます。チェーンコードの実行により、ネットワークに送信され、すべてのピアの元帳に適用される一連のキー値書き込み(書き込みセット)が行われます。

ここで言われているチェーンコードはトランザクションの指示をするためのプログラムコードという理解で良いと思います。一般的にGO言語が使われています。

元帳機能
元帳は、ファブリック内のすべての状態遷移の順序付けられた耐タンパー性の記録です。状態遷移は、参加者によって提出されたチェーンコード呼び出し(「トランザクション」)の結果です。各トランザクションでは、元帳に作成、更新、または削除としてコミットされている一連の資産キーと値のペアが生成されます。
元帳は、不変のシーケンシングされたレコードをブロックに格納するブロックチェイン(「チェーン」)と、現在のファブリック状態を維持するための状態データベースで構成されています。チャネルごとに1つの元帳があります。各ピアは、メンバーである各チャネルの元帳のコピーを保持します。
”耐タンパー性”という意味を知らない言葉が出てきたので調べてみた。
耐タンパー性とは、コンピュータシステム内部構造解析のしにくさ、見破られにくさのことである。  
http://www.weblio.jp/content/%E8%80%90%E3%82%BF%E3%83%B3%E3%83%91%E3%83%BC%E6%80%A7
それ以外に特筆すべきことはなさそうです。

チャネルによるプライバシー
ファブリックは、チャネルごとに不変の元帳を使用するだけでなく、資産の現在の状態(つまり、キー値の更新)を操作および変更できるチェーンコードを使用します。元帳はチャネルの範囲内に存在し、ネットワーク全体で共有することができます(すべての参加者が1つの共通チャネルで運用されていると仮定して)。または、特定の参加者のみを含むように民営化できます。
ここでいうチャネルとはネットワークのことかなと思います。つまり同一ネットワーク内にいない場合は元帳を捜査・変更するためのチェーンコードを使用できないということでしょう。しかし気になるのは”特定の参加者のみを・・・”というところですね。これは参加ノードの管理機能に言及していると取れますが、果たしてこの機能を持つシステムが分散システムと言えるのかは疑問ですね。
後者のシナリオでは、これらの参加者は別々のチャネルを作成し、それによってトランザクションと元帳を分離/分離します。Fabricは、完全な透明性とプライバシーの間のギャップを橋渡しするシナリオを解決します。チェーンコードは、読み取りと書き込みを実行するために資産状態にアクセスする必要のあるピアにのみインストールされます(つまり、チェーンコードがピアにインストールされていないと、元帳と適切にインターフェイスできません)。データをさらに難読化するために、チェーンコード内の値は、元帳に追加する前にSHA0-256などの一般的な暗号アルゴリズムを使用して暗号化することができます(一部またはその全てを)。 
ここでは先述したネットワークを複数作成することができるのでその中で使用されるトランザクションと元帳を別々にすることができるといっています。 気になるのはチェーンコードがインストールされていないと元帳との相互関係が築けないというとこです。今までこのドキュメントから見てきた中身から元帳にアクセするために以下のことが必要と言えると思います。

  • ネットワークへの参加
  • チェーンコードのインストール
これらをどう管理するのかが注目したいところですね。

セキュリティ&メンバーシップサービス
Hyperledger Fabricは、すべての参加者が身元を知っているトランザクションネットワークの基盤となります。公開鍵インフラストラクチャは、組織、ネットワークコンポーネント、エンドユーザーまたはクライアントアプリケーションに関連付けられた暗号証明書を生成するために使用されます。その結果、より広範なネットワークとチャネルレベルでデータアクセス制御を操作し、管理することができます。Fabricのこの「許可された」概念は、チャネルの存在と機能と相まって、プライバシーと機密性が重要な懸案事項であるシナリオに役立ちます。
暗号化の実装、Fabricで使用されている署名、検証、認証の手法について、Fabric CAのセクションを参照してください。
ここでは言っていることがざっくりしているので述べられているようにCAのセクションを今後じっくり見て見ましょう。

コンセンサス
分散元帳技術では、コンセンサスは最近、単一の機能内で特定のアルゴリズムと同義語になっています。しかし、コンセンサスは単に取引の順序に同意するだけでなく、提案と承認、発注、検証、コミットメントまでのトランザクションフロー全体の基本的な役割を通じて、Hyperbelger Fabricで強調されています。要約すると、コンセンサスは、ブロックを構成する一連のトランザクションの正当性の完全サークル検証と定義されます。
結構大事なことが書かれてるかなという印象。コンセンサスはトランザクション検証のみならず全ての振る舞いで適用されるアルゴリズムということですかね。
合意は、ブロックのトランザクションの順序と結果が明示的なポリシー基準のチェックを満たしたときに最終的に達成されます。これらのチェックとバランスは、トランザクションのライフサイクル中に行われ、特定のメンバーが特定のトランザクションクラスを推薦する必要があることを指示する保証ポリシーの使用や、これらのポリシーが強制され、維持されることを確実にするシステムチェーンコードが含まれます。コミットメントの前に、同業者はこれらのシステムチェーンコードを使用して、十分な裏書きが存在し、それらが適切なエンティティから派生していることを確認します。さらに、トランザクションを含むブロックが元帳に追加される前に、元帳の現在の状態が合意または承認されたバージョンチェックが行われます。 
ネットワーク内のあるメンバーが推奨された機能を使うことを強制・維持させるチェーンコードがコンセンサスの中には含まれており、ネットワーク内のエンティティは既に存在しているチェーンがそのチェーンコードが実行されているという裏付けを確認できるということですね。ブロックを繋げる際のバージョンチェックなどは既存のブロックチェーンと変わらない気がします。
多数の承認、妥当性検査、バージョン管理のチェックに加えて、トランザクションフローのすべての方向で進行中のID検証も行われます。アクセス制御リストは、ネットワークの階層層(チャネルへのサービスの注文)に実装され、トランザクション提案が異なるアーキテクチャのコンポーネントを通過すると、ペイロードは繰り返し署名、検証、認証されます。結論として、コンセンサスは取引の一連の合意された順序にのみ制限されるのではなく、提案からコミットメントまでのトランザクションの進行中に行われる進行中の検証の副産物として達成される最も重要な特性です。
コンセンサスの視覚的表現についてはトランザクションフロー図を参照してください。
 とまぁざっとこんな感じですね。概念的な話なのでよくわからないこともあるのですが今回の発見としてはFabricとしての全く新しい技術アイテムは今の所なさそうなのが分かったことですね。

2017年3月12日日曜日

[感想][Blockchain][TED]We've stopped trusting institutions and started trusting strangers

blockchain関連の情報を調べるためにTED上で見つけた動画を見た感想。
自分なりの解釈を入れてるのでプレゼンターの意図と異なってる恐れありです。
元動画→We've stopped trusting institutions and started trusting strangers

この動画の主張

  1. 現代ではTrust Stackを無視してTrust Leap(信頼をかっ飛ばして未知のものを受け入れてしまうという比喩表現)してしまっている。
  2. 未知のものを受け入れるためにTrust Stack(信頼を積み重ねた箱のようなものの概念)を利用している
  3. Trust Shift(物事に対して抱く信頼のハードルが、人々の認識の変化、例えば「MVNOって意外にお得らしい」、によって低くなること)

主張の具体的な中身

現代ではTrust Stackを無視してTrust Leap(信頼をかっ飛ばして未知のものを受け入れてしまうという比喩表現)してしまっている。
Rachel Botsman:We've stopped trusting institutions and started trusting strangers:image caption from 03:37

Human beings are remarkable at taking trust leaps. Do you remember the first time you put your credit card details into a website? That's a trust leap. I distinctly remember telling my dadthat I wanted to buy a navy blue secondhand Peugeot on eBay, and he rightfully pointed outthat the seller's name was "Invisible Wizard" and that this probably was not such a good idea.
例えばインターネットで何か新しいものを買おうとした時にはクレジットカード情報を入れるけど、それって本当に合理的な信頼を得た結果ゆえの行動なんだっけ?ってことを言われてます。

確かにいろんなWebサイトで自分の個人情報入力しまくってる行為って冷静になると考えられない行動かもしれない。でも全てのサイトに対してこのサイトの情報管理は徹底されているか?なんて普通の人は考え切れない。人間は選択という行為を避けようとするジャムの法則にも通ずるところかもしれない。

2.未知のものを受け入れるためにTrust Stack(信頼を積み重ねた箱のようなものの概念)を利用している

Rachel Botsman:We've stopped trusting institutions and started trusting strangers:image caption from 06:27
But from studying hundreds of networks and marketplaces, there is a common pattern that people follow, and I call it "climbing the trust stack." Let me use BlaBlaCar as an example to bring it to life. On the first level, you have to trust the idea. So you have to trust the idea of ride-sharing is safe and worth trying. The second level is about having confidence in the platform, that BlaBlaCar will help you if something goes wrong. And the third level is about using little bits of information to decide whether the other person is trustworthy.
BlaBlaCar(長距離移動をライドシェアで実現するサービス)を例にとって説明しています。人が未知のものに対して信頼をするのは3つのステップがあると言っています。第一にそのサービスのアイディアが安全で試してみる価値がありそうかどうかで判断します。次にそのサービスのプラットフォームについて考えます。何か問題が怒った時にBlaBlaCarは助けてくれるのだろうかと言ったようにです。最後に他の人が信頼に値するかどうかをわずかな情報を元に決定します。

最近はやりの仮想通貨取引なんてものもこれにドンピシャなのではないでしょうか?
儲かりそう、面白そう(Trust the idea )
 →運営元のセキュリティ対策などは大丈夫か(Trust the platform)
  →なんか著名人も仮想通貨について言及してるし(Trust the other person)
みたいな流れで信頼して始めた気がします。

要はTrust Stackを登っていくことで我々の行動が比較的早くに変わっていく、言い換えると信頼の変化によってイノベーションが起こりうるのではないかということです。なぜそう思うのかが次のパートで事例を元に説明されています。

3.Trust Shift(物事に対して抱く信頼のハードルが、人々の認識の変化、例えば「MVNOって意外にお得らしい」、によって低くなること)


Rachel Botsman:We've stopped trusting institutions and started trusting strangers:image caption from 15:16
Now, the taxi associations, they legitimized the first layer of the trust stack. They legitimized the idea that they were trying to eliminate, and sign-ups increased by 850 percent in 24 hours.Now, this is a really strong illustration of how once a trust shift has happened around a behavior or an entire sector, you cannot reverse the story. Every day, five million people will take a trust leap and ride with Uber. In China, on Didi, the ride-sharing platform, 11 million rides taken every day. That's 127 rides per second, showing that this is a cross-cultural phenomenon.
Londonで発生したタクシー労働者たちからの激しい抗議運動、それに関連してイギリスのある閣僚が書いたツイートにより先ほどのスタックレイヤーの一つ目が一般に認識されてしまったと言われています。まずタクシー労働者たちはUberに対する反対を起こすことで彼らのアイディアを認識してしまっています。さらに閣僚の発言の24時間以内にUberへの登録が850%増加したというデータもあるそうです。これがTrust Shiftです。こう変わってしまったら後には戻れませんね。中国のDidiもすごい勢いで利用者を伸ばしており様々な文化圏で起こっている現象であると言っています。

ちょっと違いますが、認識の変化という意味では数年前のクールビズが良い例ではないでしょうか。みんなが「暑い日にネクタイしんどいなー」なんて思っていたところに小池百合子さんがクールビズを提唱してたちまちそれがムーブメントになったという。確かに今更戻れと言われても戻れませんよね。

まとめると

UberやDidi、それにBlaBlaCarはテクノロジーによってTrust Stackの第一レイヤーをかっ飛ばすことができました。テクノロジーによるTrust ShiftはBlockchainによってよりたくさんもたらされてくるはずです。しかしこう言った新しい技術によりもたらされる時代を盲目的に生きていくためにはBlockchainに対してTrust Leapするのではなく、今後もしっかりと動向を追っていきましょう!、ということですかね。