Ethereum
SmartContract
DApps

ブロックチェーンと現実世界を繋げるOracle

はじめに

最近Ethereumの勉強をはじめ、まだ全然初心者レベルですが、
勉強した内容を忘れないようにメモしたいので書かせていただきます。

スマートコントラクトの課題

スマートコントラクトにおける課題の一つとして、ブロックチェーンと外部との情報のやりとりが不可能であることが考えられます。

例えば、
・今年のW杯でドイツが優勝したら、AがBに1ETHを渡す

みたいな契約がある場合、ドイツが優勝したかどうかの情報を知る必要があります。AがBにETHを渡すことはブロックチェーン場に記録されているので疑う必要がありませんが、ドイツが優勝したという事実は誰かがinputしてくれないとブロックチェーンだけでは解決が難しいのです。

もう一つの例としては保険があります。
仮にAが自動車保険に入っていて、Aの自動車が事故に遭ったとします。その時、Aの自動車がどのくらい故障したかをブロックチェーンに入力しない限りブロックチェーンのスマートコントラクトは実行されないので該当する情報をブロックチェーンにinputする作業が必要になります。

また、人が該当事実を入力しなければならない場合、自動化の意味もなくなり、さらに第3者(Middle Man)が登場するようになり既存のシステムと差異がなく、第3者が詐欺(Fraoud)をする余地が発生します。

Oracleとは

それで登場したのがOracleです。(ソフトウェアではないw)
Oracleは、外部とデータのやりとりができないEthereumのスマートコントラクトの代わりに外部とデータのやりとりを行い、それで得られた情報をスマートコントラクトに渡す架け橋的な存在です。
https://blockchainhub.net
参考: https://blockchainhub.net

Oracleの種類

Oracleにはいくつかの種類があります。
- Hardware Oracles
- Software Oracles
- Inbound Oracles
- Outbound Oracles
- Consensus Based Oracles
ですが、ここではHardware OraclesとSoftware Oraclesだけ説明します。

Hardware Oracles

Hardware Oracleは事実上センサーのことです。外部の変化をセンサーが感知し、特定のシステムに入力する役割をするセンサーはコンピュター世界と現実世界を繋げる役割をします。ブロックチェーンにもこのようなセンサーが与える情報で一つのデータを作ることができます。例えば、車の破損具合、気温の変化などのデータを使うことができます。

Software Oracles

インターネット上のデータを取ってくる役割をします。
例えばトランプ vs ヒラリーの当選結果を決める時に、ウェブ上にある数多くの記事のテキストから「トランプ当選」と「ヒラリー当選」という文言の数を比較します。もし「トランプ当選」が多ければトランプが当選したことをブロックチェーンにinputします。

なぜOracleは重要なのか

Oracleが必要な理由は上記に記述したように、スマートコントラクトを第3者(Middle Man)なしに実現するには外部データが必須不可欠だからです。つまり、Oracleなしにはブロックチェーン上に作られるDappには限界があるということです。
例えば、grit computingをDappで実現したサービスがあるとしましょう。自分が利用者で、もしOracleなしで自分のPCのリソースがどのくらい使われ、時間はどのくらい提供したかを知ることができないとしたらこのサービスを利用し続けることができるでしょうか。結局、Oracleなしで作れるDappは外部データなしで実現できる1次元的なDapp、例えばギャンブルやメッセンジャー程度です。

終わりに

OracleはDappでサービスを考えている事業者やプラットフォームには必須不可欠ですが、結局Oracleも側からみると第3者だなーと正直に思います。それを克服するために異なる信頼できる技術を利用して回避することも不可能ではないと思いますが、もっとEthereumらしい、Dappらしい解決策やアイディアが出てきたらいいなーと思います(ふわっとしすぎ)

参考

https://blog.ethereum.org/2014/07/22/ethereum-and-oracles/
https://blockchainhub.net/blockchain-oracles/
http://about.smartcontract.com/
https://medium.com/@mustwin/building-an-oracle-for-an-ethereum-contract-6096d3e39551