ブロックチェーン、スマートコントラクト、それらを実現するDAppsとは

Dapps。Decentralized Applications。つまり分散型のアプリケーションのことですが最近、ブロックチェーンによるさまざまな可能性の議論の中でときどき見かけられるようになってきたことばです。ブロックチェーンの可能性は、分散型の台帳によりさまざまな価値をシステマティックに効率よくやりとりすることを可能にするところにありますが、そのためには分散型のアプリケーションをそれぞれの用途ごとに作ることになります。そのためのプラットフォームとしてEthereum、統合開発環境としてはRemixなどが用意され、その上で開発され公開されているDappsも1,000規模となりつつあります。大規模利用に対するパフォーマンス面など、まだ課題も残っているものの、環境も整備されつつあり、オンラインメディアでも取り上げられ始めているDappsについての解説記事をオンラインメディアからピックアップしてご紹介します。

※下記サイトからの転載。ビッグデータ・AIなどに関するトピックを毎週取り上げています。
[TechCrowd: https://www.techcrowd.jp/related/](https://www.techcrowd.jp/related/)


#[Ethereumではじめる“スマートコントラクト開発”（1）] (http://www.atmarkit.co.jp/ait/articles/1709/08/news014.html)

@ITのEthereumで始めるスマートコントラクト開発連載の第1回目の記事です。「スマートコントラクト」は、ブロックチェーン技術を活用したアプリケーションプラットフォームの中で、契約の条件確認や履行などを自動で行うことから、研究開発が進み、注目されている技術ですが、スマートコントラクトの開発プラットフォームとして主要なもの３つを紹介しています。
一番有名なもので最初に紹介されているのが、Ethereum。Ethereum Fundationにより開発されているもので、レームワークにとらわれることなくあらゆるロジックを記述することができ自由度の高いフレームワークとのこと。開発言語は独自言語のSolidity。次に紹介されているのが、Hyperledger Fabric。Linux Fundationにより開発されていて開発言語として一般的な開発言語であるJava, Goを採用し、既存のシステム開発技術との親和性が高いのが特徴とのこと。

本連載の２回目以降では、Ethereumをベースに、スマートコントラクトコードの書き方や一般公開の方法などを紹介していますので、一通り読んでいくと、スマートコントラクトのシステム、Dappsをどのように作っていくことができるか理解できる連載となっています。

この連載一回目の記事では、技術的な説明はまだあまりありませんが、スマートコントラクトとDappsがどのような使われ方をする可能性があるのかについて興味深い説明をしてくれています。企業がスマートコントラクトを活用する最大の目的として、システム開発会社などが競合企業と連携して顧客からの依頼にこたえるコンソーシアムを作ることができることをあげています。コンソーシアムは本来、中央集権的な存在がないもので、これまでの仕組みでは、各構成員にとって平等に、あらかじめ定めたコンソーシアムとしてのルールにのっとってきちんと運営することやきちんと運営されていることをチェックすることは難しい面がありました。しかし、スマートコントラクトのシステムを構築して、コンソーシアムで共有される案件を管理することにすれば、システムがルールにのっとって運営してくれるのでコンーシアムの運営がしやすくなり、さまざまな企業が連携してある目的のために活動するコンソーシアムがいろいろな分野で広まる可能性があると思います。

この連携の著者は、分散アプリケーション開発やコンサルティングなどを行なっている企業の代表取締役をつとめる町浩二さんですが、技術的な説明とともにそのビジネス・社会面での解説もしてくれるスマートコントラクトと分散アプリケーションについてのいい解説記事かと思います。


#[手軽に“Solidity”言語でスマートコントラクト開発、開発環境「Remix」ってどう使う？] (http://www.atmarkit.co.jp/ait/articles/1711/27/news009.html)

@ITのEthereumで始めるスマートコントラクト開発連載の第2回目の記事ですが、Ethereumでスマートコントラクトを開発する際のコンパイラ兼統合開発環境である「Remix」をサンプルコードと一緒に紹介してくれてします。

Ethereumのスマートコントラクトコードを初めて書くのであれば、コーディングとコンパイル、デプロイを手軽に始められる「Remix」を使うことのがおすすめとのこと。Ethereumのスマートコントラクト開発言語はSolidityというものですが、RemixはBrowser SolidityともいわれるEthereum上でスマートコントラクトの開発を手軽に始めることのできる統合開発環境です。オープンソースとして開発されており、ソースコードはGitHubで取得でき、最新版を公式サイト上で利用することもできます。

Ethereumのアプリケーションは「STATE OF THE DAPSS」というものに登録することで、世界中への配信を行うことができます。2017年10月現在で約700のアプリケーションが登録されていますがスマホのアプリと同様に審査があり、審査の結果はメールで戻ってくるようです。


#[DApps (非中央集権・分散型アプリケーション)とは何か?なぜ重要か?] (http://doublehash.me/what-is-dapps/)

最近増えているビットコイン/ブロックチェーンに関する発信メディアのひとつ「ビットコイン研究所ブログ」の記事です。

DAppsは分散型のアプリケーションですが、ブロックチェーン/スマートコントラクトの世界で一般的に規定されているDAppsとは、単に分散型であるだけでなく、下記の３つの要件を満たすものであることを解説してくれています。

1. アプリケーションはオープンソース。オペレーションは自動であり、中央のコントロール主体をもたないこと。
    
2. アプリケーションがオープンに流通可能な暗号トークンをもっていること。アプリケーションの利用に際してトークンを利用すること。参加者がそのトークンによって報酬が支払われること

3. アプリケーションはマーケットやユーザからの改善要求によりプロトコルを改善していくこと。この改善はユーザのコンセンサスによること

代表的なDAppsとしてStorjを例にとって説明してくれていますが、Storjはユーザ間でパソコンの空きストレージを共有するもので、中央のコントロール主体なしに、ユーザ間で空きストレージを都合しあうものです。また、ストレージを提供するとトークンが得られるという形で空きストレージのやりとりによる価値の分配を集計してコントロールしています。


#[将来有望なDapps（分散型アプリケーション）の活用事例６選] (https://zoom-blc.com/decentralized-applications-use-case)

こちらも最近増えているビットコイン/ブロックチェーンに関する発信メディアのひとつ「ZOOM」の記事です。Dappを有効に活用できると期待されている分野と進行しているプロジェクトについて紹介してくれています。

・分散型取引所(DEX)：0x
従来の集権型取引所の場合、秘密鍵を取引所に預けることになるのでその取引所がハッキング被害などに遭ったら、秘密鍵に紐づく仮想通貨は奪われてしまうリスクがありますが、秘密鍵を第三者にあずける必要のなくなるものとして注目されているのが分散型取引所(DEX)。その代表的な分散型取引所として0xをあげています。

・ゲーム: FirstBlood
透明性が高く集中的に管理されていないDappはゲームとの相性が良いといわれています。イーサリアム上のDAppsゲームcryptkittiesや、ファーストブラッド(FirstBlood)というゲームプラットフォームのプロジェクトなどを紹介してくれています。


#[ブロックチェーンとインターネットの間でデータの橋渡しをするオラクル] (https://zoom-blc.com/what-is-oracle-in-blockchain)

やはり「ZOOM」の記事です。ブロックチェーン/スマートコントラクトのシステムにおいて、そのネットワークの外部に存在するデータを内部に引っ張ってくるシステムをオラクル(Oracle)と呼びます。（データベースのオラクルとは別物です）オラクルがブロックチェーンと現実社会の橋渡しとなってさまざまな分野においてスマートコントラクトおよびブロックチェーンの導入が加速することが期待されるということで、注目されはじめている技術なのですが、そのオラクルの現状と課題点、具体的なオラクルシステムの事例を解説してくれています。

まず紹介してくれているのが、オラクルには「集中型のオラクル」と「分散型のオラクル」があることです。集中型オラクルは、オラクルがひとつの主体（システム）によって管理されており、一方で、分散型オラクルではネットワーク全体で分散して管理されるものです。現状のオラクルは99％以上が集中型オラクルであり実際に動いているものは集中型オラクルのみなのですが集中型オラクルには、そのオラクルシステムを「信頼」しなければならないという問題があるとのこと。そのオラクルが絶対に正しい外部データを持ってきてくれることを信頼し、絶対に不具合を起こすことはないと信頼しなければいけないことが、分散型の技術であるブロックチェーン/スマートコントラクトにおいては問題となっており、分散型オラクルの開発が進められています。

ただ、この分散型オラクルの難しさとして、インセンティブ節系がとても難しいことをまずあげています。また外部データの信憑性を確認、合意形成するのに時間がかかることなども分散型オラクルを難しくしてくるとのこと。最後に分散型のオラクルの事例として、現状、一番メジャーなOraclizeやGnosisを紹介してくれています。