Crypto Life

Tech in X

ブロックチェーンを中心にテクノロジーや東南アジアのスタートアップ情報を提供

Ethereum基礎 Smart Contract超概要

最近注目が集まっているSmart Contract。暗号通貨では、アルトコインの一種であるEthereum上のThe DAOというネットワークで実現されていました

(*) The DAOはプログラムバグにより崩壊、EthereumはEthereumとEtheum Classicの2つにハードフォークするきっかけとなってしまいました。。。

 

Bitcoinの基礎理解についてはこちら!

cryptocoin.hatenablog.com

 

Smart Contractについては、最近記事が多数執筆されており、暗号通貨界だけではなく、日経新聞にSmart Contractについての記事が掲載されるなど、注目度が高まっているようです。さらなる理解のために、英文記事の翻訳をとおしてSmart Contractの実態にせまります。

 

Smart Contractの目的

Smart Contractの目的は、現実世界でいう「契約」というスキームを実現することにあります。Smart Contractがどのようなものなのか、Wikipediaの記事を引用すると以下のようなことが書かれています。

Smart contracts are computer protocols that facilitate, verify, or enforce the negotiation or performance of a contract, or that obviate the need for a contractual clause. Smart contracts usually also have a user interface and often emulate the logic of contractual clauses. Proponents of smart contracts claim that many kinds of contractual clauses may thus be made partially or fully self-executing, self-enforcing, or both. Smart contracts aim to provide security superior to traditional contract law and to reduce other transaction costs associated with contracting.

スマートコントラクトとは、契約交渉、契約履行を円滑に進め、契約履行条件の確認、契約履行の強制を行うためのコンピュータプロトコルである。スマートコントラクトを導入することで、書面での契約は不要になる。スマートコントラクトは通常書面での契約に似たユーザインターフェースを有している。そのため、多く書面での契約は部分的にまたは全面的にスマートコントラクトに置き換えることができるであろうと、スマートコントラクトの提唱者は主張している。スマートコントラクトは伝統的な契約よりも安全性の面での優位性、及び契約に伴うコストの削減を目的としている。

 

最初に、Smart Contractの一番の目的は、”契約”というスキームを実現することと表現しましたが、暗号通貨で契約を実現する目的をまとめると以下のようになります。

<目的>

・契約の安全性の向上

・契約のコスト削減

 

Smart Contractの例

単なる契約書類の電子化と異なる点は、契約履行条件をソースコードに落とし、契約履行まで強制できる点にあります。これだけではわかりづらいため、以下のサイトに記載されていた例を引用してみます。

What Are Smart Contracts? Cryptocurrency's Killer App ⚙ Co.Labs ⚙ code + community

 

Let's take a simple example, like a Super Bowl bet. Say you want to bet $500—or roughly one bitcoin—that the Patriots will win, while your friend is betting the same amount that the Packers will take the title. Step one is for you and your friend to place your bitcoin in a neutral account controlled by the smart contract. When the game is over and the smart contract is able to verify via ESPN, Reuters, or elsewhere that the Patriots beat the Packers, the smart contract would automatically deposit your bet and your winnings from your friend back into your account.

Because smart contracts are computer programs, it would be trivial to add more complex betting elements like odds and score differentials into the mix. While there are services out there today that might handle this sort of transaction, they all charge a fee. The key difference with smart contracts is that it is a decentralized system accessible to anyone, that doesn't require any intermediary party.

A more everyday example would be online shopping. "If you order something online you might not want to pay a merchant immediately until they fulfill their end of the bargain," says Rapoport. "So you could easily have a contract that looks for FedEx tracking data saying that the package you ordered has been delivered to your address before releasing payment to the sender."

 

例その1 賭博の自動執行

アメフトでの賭けが例に上がっています。アメフトになじみが薄い人がほとんどだと思うので、野球の日本シリーズを例にしてみましょう。

 

設定:日本シリーズで中日対楽天が戦う

今年このカードが絶望的なことは無視してください。

 

自分 (A) が中日に賭け、友人 (B) が楽天に賭けたとします。これをSmart Contractで実現するには、まずAとBがSmart Contractを管理するアカウントにビットコイン(仮想通貨ならビットコインである必要はないが、ここでは例としてビットコインをあげている)を送金します。

 

仮に中日が首尾よく勝ったとすると、Smart Contractが試合の結果をYahoo Newsなり、ESPNなり何かしらのサイトから取得した結果に応じて、事前にプログラム内に設定していたオッズをベースに配当額をAに送金するということになります。言い換えると、履行条件をSmart Contractで決定した上で、履行の強制までSmart Contractが実現するということになります。

 

ポイントはSmart Contractを管理する業者がいるわけではなく、「分散化された仕組み(decentralized system)」を利用して、この賭博契約(違法かどうかはさておき)を自動で執行している点です。

 

そのため、賭博業者が中間マージンをさっぴくコストが削減される点が、(少なくとも利用者にとっては)メリットとなります。

 

例その2 代引きの代替

2つ目の例では、オンラインショッピングを例にしています。オンラインショッピングで商品の到着と同時に支払いを行いたい場合どうすればよいでしょうか (例えば、宅配業者やサプライヤーが信用できない場合)。

 

方法は単純で、Smart Contractで商品の到着と同時に支払いを行うことを明記するだけです。これまでは、「商品代引き」など配送業者がこの役目を担っていたが、例えばヤマト運輸の「

クロネコヤマトの荷物お問い合わせシステム」から配送状況を取得し、自宅に到着したことが確認できたら送金処理を行うことを、プログラムに組み込んでしまえば良いかと思います。

 

残る疑問 

ここまでSmart Contractの定義、及び具体例を見てきました。ただ、疑問点もいくつか。

 

ビジネス的な疑問

例からわかる通り、契約執行に関わる情報が「配送業者」や「ニュースサイト」が提供しているものであれば、契約の履行条件を設定することは簡単そうです。しかし、「相続」のように条件を満たす情報を速やかに取得することが難しそうなものもたくさんあります。そのような場合、どのように契約のトリガーをデザインするか。

 

技術的な疑問

Smart Contractは契約執行に関わる情報を各種サービスから取得して、契約を執行しています。これらの情報の取得をどのように行うのでしょうか?頻繁にYahoo Newsにポーリングするなどの仕組みにしてしまうと、今現在は大丈夫かもしれませんが、将来的にアクセス数が増えすぎてスケールしなくなってしまう恐れがあります。