Skip to content

イーサリアムでスマートコントラクト開発してみた ~vol.1~

はじめに こんにちは! 初めて記事を書かせていただきます、曽我と言います。よろしくお願いします! 「ブロックチェーンによってこれまで価値が認められてこなかったものに価値をつけることができる」というお話に触れて以降、どうしてそんなことが可能になるのかを理解したいという思いがずっとあります。 ブロックチェーンの仕組みについては、勉強すればするほど分からないことが増えるばかりです。 今回、理論的な話だけではなくブロックチェーンの開発を実際に手を動かしてやってみることで、より具体的な議論に参加できるようにして理解を深めることを目標とします。   本記事ではまず、現状の疑問の整理と、それらに対して再度調べ直して構築した仮説とその根拠を記しました。 疑問点の整理 イーサリアム イーサリアムについては、ブロックチェーンの上でプログラムを動かせるものというぼんやりとした理解だったので、その定義から詳しく調べ直してみました。 https://ethereum.org/ja/developers/docs/intro-to-ethereum/#what-is-ethereum イーサリアムとは、ブロックチェーンにコンピュータが組み込まれたもので、 分散型、自由参加型かつ、検閲耐性を備えたアプリや組織を構築するための基盤となっています。 ① 分散していて ② 自由に参加できて ③ 検閲耐性のある そんなアプリを作れるものらしいです。   どういうことでしょうか。 一つ一つ見ていきましょう!   分散 分散とは、特定の組織が管理するサーバーにアプリが存在するのではなく、イーサリアム上のいろんなコンピュータにデプロイされているということだと思われます。 これのメリットとして思い浮かぶのは、特定のサーバーがダウンしたらサービスが止まる、といったことがなくなるということです。 しかしこの類の話は通常のアプリケーションでも出てくるものです。 他にもブロックチェーン特有のメリットが何かあるのでしょうか? 分散しているからその正しさを保証できるという意味であれば、それはあくまでブロックチェーンの特徴であり、イーサリアムでアプリを作るメリットではないと思います。   自由に参加できる 「自由に参加できる」とはどういうことなのでしょうか? 普通のWebアプリケーションでも、大体自由に参加できると思いますが、 ユーザー登録とかが不要になるという意味ですかね? 調べてみると、少しヒントとなるような記述がありました。 https://doneru.jp/life/what-is-the-application-dapps/ dapps では個人情報を載せないプライベートアドレスで容易にアクセスできます。 さらにユーザーが開発に参加し、利便性の高いサービスを構築してユーザー全員で作っていくことも可能です。 このエコシステムでは基盤となるチェーンは誰かが所有している訳ではないので、実際にはチェーン上のアプリケーションはユーザーの手に委ねられます。 そういった意味ではユーザーがホストなので、より多くのエージェントがアプリを利用しても永続的に公平さは保たれます。 「個人情報を載せる必要がない」という意味で「参加のハードルが低い」ということでしょうか。 しかし、アプリケーションの性質として個人情報の利用が必要なら提供せざるを得ないのではないのでしょうか? メールアドレスの提供なしには本人確認が出来ないと思うのですが。 もしやブロックチェーンなら「本人確認」が必要なくなるということでしょうか??   検閲耐性 「検閲耐性」とは何か? 「検閲耐性 ブロックチェーン」で調べても一発でバシッと上位に出てくれませんでした。 しかしこのような記述を見つけました。 https://academy.binance.com/ja/articles/what-s-the-relationship-between-blockchain-and-web3 検閲耐性: ブロックチェーンは検閲に強いように設計されているため、どの当事者も一方的に取引記録を変更することはできません。記録がブロックチェーンに追加されると、それを削除することはほとんど不可能です。この機能は、政府や企業の検閲からあらゆる種類の言論を保護するのに役立ちます。 アプリに記録されているデータを第三者が見て、データを書き換えることができない。 そのことを「検閲耐性がある」と言っているということでしょうか? どちらにせよ、誰にも変更できないというのはすごいですね。 一度記録した後に変更させたくないようなデータとしては 何かのログ というのが真っ先に思い付きます。 よく言われるのは、誰になんの権利があるのか。過去に誰が権利を有していたのか。そういったものをトレースしたいケース。 「誰にも変更できない」ことが保証されていたら確かに安心です。   ブロックチェーンとは何か(仮説) 上記を踏まえて、いろんな動画や記事を読みながら友人や Blockchain Biz の方々とやりとりする中で、「ブロックチェーンというのはこういうことなんじゃないか??」という仮説が立ちましたので披露させていただきます!! 結論 ブロックチェーンでは、特別な信頼関係構築なしに複数の組織のデータを「連携できる状態」にできる。 すなわち、自由に参加できる!!! (どう連携させるかはプログラムする = スマートコントラクト) それを可能にしているのは、ブロックチェーンが可能にした以下の要素。 特定の中央管理者がいない 改竄できない これらによって、結果的に「分散」していて「検閲耐性」がある状態になっている。   根拠 この仮説に至った根拠を記します。 複数の組織間を簡単に連携させる 薬局の例 https://youtu.be/H2jP94Fpoi0?t=940 上の動画では、中田敦彦さんが「調剤薬局のデータ連携」についてお話されています。 関連記事: https://www.indetail.co.jp/projects/?uc=detail-01 各地にいくつもある調剤薬局は、何か特定の組織によって管理されているわけではないそうです。 一部の大企業の傘下にある薬局同士は、共通のシステムですでに系列店舗同士での在庫移動が行われており、在庫の最適化が実現されています。 しかし薬局市場においてそのような薬局は全体の15%に過ぎず、その他の多くが個人経営だそうです。 そういった薬局同士が在庫データの連携を相互にしたいとなると、一からの信頼関係構築が必要となり大きなコストがかかると思われます。 具体的には「データを改竄しないでね。そのほかにも、お互い相手に不利益になるような恣意的な操作をしたら法的に訴えますよ」的なことを文書として残しておくなどのやり取りが予想されます。   これが2つの薬局間であればまだ頑張って実現できると思いますが、目的である在庫管理の最適化のために他の多数の薬局とも連携する必要が出てきたりすると、もう非常に面倒になってしまうのがイメージできます。 関係者としては連携システムを構築するベンダーもいるわけで、ステークホルダーの増加にともなって信頼関係の構築に金銭的、時間的、労力的コストが増加していくと思われます。 データを保有するのはどの組織の何のアカウントにするか決める必要があるし、その組織がそのデータを改竄しないことを法的に保証するために、同様に取り決めを構築する必要があるでしょう。   データ連携のための信頼関係構築のコストがバカにならないです。 これではイノベーションを生み出すコラボレーションが加速しない。 なんとかできないものか? そこでブロックチェーンに白羽の矢が立ったのです。 「信頼関係?俺にデータ預けてくれればそんなの丸ごと気にしなくて済むぜ!!!」 「そのデータの連携ルールはスマートコントラクトというプラットフォームを使えば作れるぜ!!」   ポイントの例 T ポイントを国家が「国の貨幣だ」として定めるのになんのハードルがあるんだろうか? と考えながらネットサーフィンしていると、以下の記事を見つけました。 ブロックチェーンが崩す共通ポイントの垣根:日本経済新聞 https://www.nikkei.com/article/DGXMZO14061860U7A310C1X13000/ 「支払い方法はどうしますか」「TポイントをPonta(ポンタ)に換えますので、それでお願いします」。近い将来、コンビニエンスストアのローソンのレジでこんな会話が交わされるかもしれない。 すでに共通ポイント同士をネットを通じて交換できるようにはなっている。だが、面倒な手続きが必要なうえ、実際にポイントを交換できるまで数週間かかっていた。消費者の「今すぐ換えたい」というニーズに応えられなかった。 なぜそんなにかかるのだろうか?と思い調べてみましたが、そんなに時間がかかるような例は今のところ見つかっていません。 https://www.smartwaon.com/ext/001/exchange/tpoint/#notes 例えばこちらのように T ポイントと WAON ポイントは即時交換が可能だそうです。 日経新聞のこの記事の公開日が6年前と非常に古いのを考慮すると、「ポイント同士の交換」というデータ変換を手動で行なっているようなケースを想定して書かれた文章なのではないかと思っています。   一度組織間で信頼関係を(文書など法的な手続きを経て)築いてシステムを構築したあとは、この T ポイントと WAON ポイントの例のように即時に交換することは可能になると思われますが、 問題なのは、「他のポイントとも交換できるようにしたい!」と思った時、その都度信頼関係を築くコストは莫大だということです。   (寄り道) 共通ポイント同士の交換が容易になれば、ポイントがどこでも使えるようになる。それは「ポイントが貨幣により近づくことを意味する」(野村総合研究所の冨田勝己上級コンサルタント)。 これは、長らくビットコインの意義について理解ができずにいた僕にとって、ヒントとなる記述でした。 「ブロックチェーン上で動くアプリを開発する」という本記事の趣旨からはズレるので、「ブロックチェーン上で貨幣が構築できる」という話については、機会があれば別記事でぜひ書きたいなと思っています! まとめ ブロックチェーンという技術は、以下を可能にするものだと考えます。 特別な信頼関係の構築なしにいろんな組織のデータを共通のデータベースに保存できる イーサリアムというプラットフォームは、以下を可能にするものだと考えます。 ブロックチェーンに保存されているデータを任意のロジックで連携させることができる これらをまとめると、イーサリアムによって以下の革命が起きていると考えます。 複数の組織に存在するデータを超低コストで連携させ、そのコラボレーションによって爆速で新たな価値を生み出すことができる   次回予告 今回の整理の後に疑問として残ったのが、 ブロックチェーンはもしかしたら「ログデータ」のような時系列データにしか適用できないのではないか? というものです。 例えば MySQL で管理するような一般的なリレーショナルデータの場合は、一度登録した後も(例えばユーザープロフィールの編集などの形で)変更しうるのが普通かなと思います。 普段からそういうアプリケーションを開発しているからか、「変更できないデータ」というのが、「時系列データ」以外にはどうにも直感的にイメージしにくいです。 そこで、どういった分野のアプリケーションで実際にイーサリアムが用いられているのか、具体的な事例を Vol.2 の記事で掘り下げていきたいと思います。    

もっと読む
Back To Top
Search