ブロックチェーンの優位性①疎結合
ブロックチェーンの優位性
ブロックチェーンの議論が盛り上がってきましたが、まだまだ理解されてないと思うのでNoteにしました。
ここで言うブロックチェーンとはプライベート・ブロックチェーンを想定していますが、疎結合に関してはパブリックでも同じことかと。いきなり疎結合から話すと、BCの優位性はそれだけかと反論が予想できますが、ビザンチン耐性やImmutabilityはあとで説明するのでお待ちください。
プライベート・ブロックチェーン miyabi
疎結合とは?
疎結合とは、細分化された個々のコンポーネント同士の結びつきが比較的緩やかで、独立性が強い状態のことである。
疎結合では、個々のコンポーネント同士は相互に連携しているが、相互に依存している余地が少ない。そのためコンポーネント間の連携をあまり顧慮せず、それぞれのコンポーネントを交換したり改良したりするような柔軟な対処を行うことができる。
疎結合に対して、このコンポーネントが密接に連携している状態は密結合と呼ばれている。密結合状態のシステムは、動作は高速であるが、一方のコンポーネントが異常をきたしてしまうと他方のコンポーネントもその影響を受けてしまう。
疎結合はマルチプロセッサシステムのようなハードウェア的なものから、アプリケーションソフトのようなソフトウェア的なものまで、幅広く見られる状態である。
アドレスとは?
BCは構造的にアドレス(公開鍵をエラー検出符号を付加してBase58でフォーマットしたもの※)がUniq Indexになっており、アドレスを指定するとTXが取得できます。
※ビットコインのアドレスは Hashもしている。イーサとかmiyabiは公開鍵をそのまま(プラスチェックサム)使用。
TXを取得することの概念拡張をすると、BCに格納されたデータを取得することができることになります。格納した数字をBTCと呼ぶことで仮想通貨になりますし、当然、文字列を格納することもできるので動画も保存できる。(すべきかは別)
SQL的にいうなら、Uniq IndexでSelectしている状態。正確に言うと、そのアドレスと関連したトランザクションのリストが取得できる。
ただの文字列では駄目
Base58じゃなくバイナリでもIndexになるぞという主張は稚拙過ぎるので置いておいて、①公開鍵であること、②人間に表示するときにはAsciiであることが大事。
①はいかなる文字列でも良いとはならない。いかなる文字列でもバイナリでも疎結合にはなるが、公開鍵であることが大事。理由は以下の通り。
A 文字列が公開鍵ならシステム間連携を一切することなく、そのアドレスのオーナーが自分であることをほかのシステムに立証できる、あるいはそのアドレスを使って署名をすることができる
B これは認証システムがコンピューターシステムではなくて数学になっていて、秘密鍵を知っているという事実は現実世界の現象のことだからシステム連携をする必要がないことに起因している
②はサポートや保守のしやすさ。コンピュータだけがつながる世界ならわざわざBase58にする必要はない。システムの統合という意味ではバイナリでいいが、人間が読んだりエクセルに書き出すには可読性(~=Printable)があることが重要。
エンジニアはバイナリエディタで読めば良いよ。でも普通の人は、そんなのは使えないし、使えたとしても一手間かかる。
多少のコンピュータ資源の節約のためにBase58表記の利便性を放棄するのでしょうか?ビットコインアドレスは名刺にも書けるし、サポートが必要な時にメールにアドレスをコピペもできる。バイナリでは難しいですよね?
Base58 とはバイナリデータを文字列で表現するフォーマットです。Base64 というのは Web の世界では有名ですが、それと同じようにバイナリデータを 58 種類の文字で表現するフォーマットです。
Base64 との違いはl(小文字:エル)と 1(数字:いち)のように間違えやすい文字を除外していることです。例えば小文字のエルは使用できません。使用可能な文字は 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyzです
Base58とは
密結合で多くのシステムを統合するのは困難
私はゴールドマンでエンジニアとして3年(たったの3年ですが。)働き、またbitFlyerのアーキテクチャを設計し、初期の頃はコーディングもしましたが、システムを結合する困難さをそれなりに理解しているつもりです。
縦割りの行政システムを統合するとか、APIの全体設計が難しい場合には、基本的なInterface設計が(図らずも)構造的に実装されているBCが有用だと考えています。
ただしBCじゃないとできないとも言ってない。代替手法が存在することも知っています。BCでプラットフォームを開発すると、多くの課題が簡素に解決でき、既存のIT技術で開発するよりも安価に作れるのではないかと思っています。
マイナンバー制度のシステム開発に2000億円とも言われています。プライベートブロックチェーンで作ったら要件を満たした上でもっと安くできるのではないでしょうか?
最後に、ブロックチェーンを作りたくなったエンジニアはこちら!