エンジニアが語る仮想通貨Stellar(ステラ)、独自のセキュリティと匿名機能実装の狙い 2019/12/08 18:00 12/08 18:00 高地 明 エンジニア目線から見るStellarの魅力、そして、それと比較して見えてくる他のブロックチェーンの課題についてもお話ししていきます。 そして、来年頃に匿名機能の実装も予定するStellarですが、その背景にはどのような狙いがあるのでしょうか。今後の展望についてもお伝えします。 開発におけるStellarの魅力 開発のしやすさといった点から、Stellarの魅力について詳しくお話ししていきます。 まず、Ethereumを例に挙げてお話しすると、Ethereumでブロックチェーンのサービスを作ろうとなると、Solidityという言語を使う必要があります。それに、HTMLやJavaScriptなどを使い、当然ユーザーインタフェースも必要になってきます。 ブロックチェーンはデータベースではないので、膨大なデーター管理や必要なデーターの検索などには向いていません。ましてやパブリックチェーンで個人情報を管理するということはあり得ません。そのため、データーを管理するため、リレーショナルデーターベースの機能が必要になります。Webサーバー、データーベースなどが必要になり、一般的なWebサービスとアーキテクチャはかなり近い形になります。違いというとその中で、ビジネスロジックの一部をスマートコントラクトを使ってブロックチェーンの機能を利用しているところになります。 Stellarの場合は、ホライズン(Horizon)というAPIサーバーがブロックチェーンノードとは別に存在します。このAPIサーバー経由でWebエンジニアはスマートコントラクトを実装できます。特殊な言語を用意する必要もありません。 APIサーバーは無料で使用でき、REST APIとして公開されています。クライアントSDKとして、Java、Go、Ruby、JavaScriptなど多様な言語が用意されています。そのためブロックチェーンの基礎、Stellarの特性など、多少の勉強は必要になりますが、Webエンジニアのスキルをそのままコンバートすることが出来ます。 スキル習得のコストからみる強み Ethereumにおける課題の1つとして、スマートコントラクト言語Solidityの習得にそれなりのコストがかかる点があります。 Solidityの文法からデプロイ方法、Gasの概念などを理解する上で、専用の書籍を購入したり、e-Learningで学んだりする必要があります。 その点、Stellarの場合は、デベロッパーズガイドというものがSDF側で用意されていて、それを読めば一通りコントラクトを組むことが可能です。また、前に説明しましたStellar Laboなどのツールを利用すれば、開発環境の構築など必要なく、全てブラウザベースでの学習が可能です。コントラクトを書いたり、作ったりする上での環境が充実しています。 スマートコントラクトを開発する上で必要なサービス、ツールは全てSDF側が無償で提供しています。 得意な言語をそのままコントラクト作成に活かす 上でも書きましたが、スマートコントラクトを構築するのに特別な言語を覚える必要はありません。Javaが出来る人、Goが得意な人は、そのままの言語を使ってコントラクトを作っていくことが可能です。 ただ、StellarのスマートコントラクトはEthereumほど、自由度はありません。出来る範囲でルールが決められており、制限があります。しかし、そのおかげでセキュリティが高く保たれている側面があります。 コントラクトのコードについては、荒っぽく言ってしまうと、Ethereumはオンチェーン上にデプロイしたプログラムコードが動く形になります。一方、Stellarの場合はコントラクトのコードはWebサービスの1つでしかなくオフチェーン上で動作するため、サーバーなどは自分で用意しなければなりません。 Stellarのスマートコントラクトは自動でコントラクト(契約)を行った結果だけが、ブロックチェーン上に書き込まれ、残るようになっており、コントラクトを実現する動作プロセスには重きを置いていません。 ソースコードの在り処が左右するセキュリティ Stellarではソースコードについては各自で管理する形になるのですが、実はここがすごく重要になってきます。 EthereumやEOSは、オンチェーン上にソースコードのバイトコードが変換されてデプロイされるのですが、そこにセキュリティ上のリスクが潜んでいます。それらのバイトコードは悪意ある第3者がリバースエンジニアリングなどで見ようと思えば見ることも出来るのです。 過去に起きたThe DAO事件や、Ethereumのコントラクトで度々脆弱性が発見されていますが、ソースコードを公開することが公平性の観点から大事であるとするのが、Ethereumコミュニティの見解です。 それに対しては、スマートコントラクトの実体を公開して脆弱性を突かれるくらいなら、公開しない方がいいのではないかというのが私の意見です。それに、例えばトークンを買うときなどに、コントラクトのソースコードを見て、理解して購入している人は実際にほとんどいないと思っています。 また、ブロックチェーンはイミュータブルなものであって、一度デプロイしたものに対して修正したり更新したりすることができません。そのためスマートコントラクトのコードをデプロイした後で脆弱性が見つると厄介なことになるため、専門の業者などに依頼して公開前にコード監査を受けるのがデファクトとなっています。 専門業者にコード監査をしてもらい、問題がなくならないとメインネットにデプロイできないというこのプロセスは、個人的にはナンセンスだと思っています。Webサービスのような感覚でデプロイしていくという気軽さが、Ethereumを含めた、オンチェーンでコントラクトを動かすブロックチェーンにはありません。 その点、StellarのスマートコントラクトはWebサービスの1つとして動作しますので、ソースコードが第3者に見られることはありません。誰と誰がどういった契約を結んだのか、どういうトークンを発行したのか、発行体はどこなのかといった情報もコントラクトの結果は消すことができないようにブロックチェーンになります。 オンチェーン上にコントラクトのプログラムが存在する必要があるのかどうかといった部分は、EthereumとStellarの大きな違いの1つです。 実際には投資家、サービス利用者のほとんどが、コントラクトのソースを確認しないであろう点、デプロイのハードルなど、Ethereumにはリアルの世界とのミスマッチが起き始めているような気がします。そして、そのミスマッチのなさでいうとStellarが1番だと思っています。 匿名取引機能の狙い Stellarは新機能の開発といった面で、R&Dにも力をいれています。スケーラビリティ、さらなる高速取引を実現するためのプロトコルであるZkVMを開発しています。Stellar コンセンサス プロトコル(SCP)を使ったサイドチェーンと、ゼロ知識証明を使って、機密性の高いスマートコントラクトを実現するためのものです。現在、デモ版ができており、今後の開発進捗に期待がもてます。 あくまでも私個人の推測にはなるのですが、ゼロ知識証明を用いたZkVMのR&Dに力をいれているということは、今後は法人ユースの取り込みを検討しているのかもしれません。今まで、パブリックチェーン上で取引することで、財務的な部分が分かってしまうことで懸念していた法人ユーザーが匿名性の高いトランザクションを作れることになったことで、安心してStellarを使用してもらうことができ、法人ユーザー数拡大を狙いっているのではないでしょうか。そうなれば、個人ユーザーから法人ユーザーまで幅広いユーザー層に支援されるブロックチェーンになれると思います。 高地 明 ブロックチェーンエンジニア ITベンチャー、上場SI企業を経て、マネーフォワードにJoinしアプリエンジニアとして従事。その後DMM.comに入社し、CTO室でR&D業務を行い、ブロックチェーン研究室へ移動。セキュアWalletの開発、Stellarの調査、検証などを実施。2019/11にDMM.comを退職後、IoTベンチャーにJoin。 好きな開発言語はCrystalとReasonML。
エンジニアが語る仮想通貨Stellar(ステラ)、独自のセキュリティと匿名機能実装の狙い
12/08 18:00 高地 明
エンジニア目線から見るStellarの魅力、そして、それと比較して見えてくる他のブロックチェーンの課題についてもお話ししていきます。
そして、来年頃に匿名機能の実装も予定するStellarですが、その背景にはどのような狙いがあるのでしょうか。今後の展望についてもお伝えします。
開発におけるStellarの魅力
開発のしやすさといった点から、Stellarの魅力について詳しくお話ししていきます。
まず、Ethereumを例に挙げてお話しすると、Ethereumでブロックチェーンのサービスを作ろうとなると、Solidityという言語を使う必要があります。それに、HTMLやJavaScriptなどを使い、当然ユーザーインタフェースも必要になってきます。
ブロックチェーンはデータベースではないので、膨大なデーター管理や必要なデーターの検索などには向いていません。ましてやパブリックチェーンで個人情報を管理するということはあり得ません。そのため、データーを管理するため、リレーショナルデーターベースの機能が必要になります。Webサーバー、データーベースなどが必要になり、一般的なWebサービスとアーキテクチャはかなり近い形になります。違いというとその中で、ビジネスロジックの一部をスマートコントラクトを使ってブロックチェーンの機能を利用しているところになります。
Stellarの場合は、ホライズン(Horizon)というAPIサーバーがブロックチェーンノードとは別に存在します。このAPIサーバー経由でWebエンジニアはスマートコントラクトを実装できます。特殊な言語を用意する必要もありません。
APIサーバーは無料で使用でき、REST APIとして公開されています。クライアントSDKとして、Java、Go、Ruby、JavaScriptなど多様な言語が用意されています。そのためブロックチェーンの基礎、Stellarの特性など、多少の勉強は必要になりますが、Webエンジニアのスキルをそのままコンバートすることが出来ます。
スキル習得のコストからみる強み
Ethereumにおける課題の1つとして、スマートコントラクト言語Solidityの習得にそれなりのコストがかかる点があります。
Solidityの文法からデプロイ方法、Gasの概念などを理解する上で、専用の書籍を購入したり、e-Learningで学んだりする必要があります。
その点、Stellarの場合は、デベロッパーズガイドというものがSDF側で用意されていて、それを読めば一通りコントラクトを組むことが可能です。また、前に説明しましたStellar Laboなどのツールを利用すれば、開発環境の構築など必要なく、全てブラウザベースでの学習が可能です。コントラクトを書いたり、作ったりする上での環境が充実しています。
スマートコントラクトを開発する上で必要なサービス、ツールは全てSDF側が無償で提供しています。
得意な言語をそのままコントラクト作成に活かす
上でも書きましたが、スマートコントラクトを構築するのに特別な言語を覚える必要はありません。Javaが出来る人、Goが得意な人は、そのままの言語を使ってコントラクトを作っていくことが可能です。
ただ、StellarのスマートコントラクトはEthereumほど、自由度はありません。出来る範囲でルールが決められており、制限があります。しかし、そのおかげでセキュリティが高く保たれている側面があります。
コントラクトのコードについては、荒っぽく言ってしまうと、Ethereumはオンチェーン上にデプロイしたプログラムコードが動く形になります。一方、Stellarの場合はコントラクトのコードはWebサービスの1つでしかなくオフチェーン上で動作するため、サーバーなどは自分で用意しなければなりません。
Stellarのスマートコントラクトは自動でコントラクト(契約)を行った結果だけが、ブロックチェーン上に書き込まれ、残るようになっており、コントラクトを実現する動作プロセスには重きを置いていません。
ソースコードの在り処が左右するセキュリティ
Stellarではソースコードについては各自で管理する形になるのですが、実はここがすごく重要になってきます。
EthereumやEOSは、オンチェーン上にソースコードのバイトコードが変換されてデプロイされるのですが、そこにセキュリティ上のリスクが潜んでいます。それらのバイトコードは悪意ある第3者がリバースエンジニアリングなどで見ようと思えば見ることも出来るのです。
過去に起きたThe DAO事件や、Ethereumのコントラクトで度々脆弱性が発見されていますが、ソースコードを公開することが公平性の観点から大事であるとするのが、Ethereumコミュニティの見解です。
それに対しては、スマートコントラクトの実体を公開して脆弱性を突かれるくらいなら、公開しない方がいいのではないかというのが私の意見です。それに、例えばトークンを買うときなどに、コントラクトのソースコードを見て、理解して購入している人は実際にほとんどいないと思っています。
また、ブロックチェーンはイミュータブルなものであって、一度デプロイしたものに対して修正したり更新したりすることができません。そのためスマートコントラクトのコードをデプロイした後で脆弱性が見つると厄介なことになるため、専門の業者などに依頼して公開前にコード監査を受けるのがデファクトとなっています。
専門業者にコード監査をしてもらい、問題がなくならないとメインネットにデプロイできないというこのプロセスは、個人的にはナンセンスだと思っています。Webサービスのような感覚でデプロイしていくという気軽さが、Ethereumを含めた、オンチェーンでコントラクトを動かすブロックチェーンにはありません。
その点、StellarのスマートコントラクトはWebサービスの1つとして動作しますので、ソースコードが第3者に見られることはありません。誰と誰がどういった契約を結んだのか、どういうトークンを発行したのか、発行体はどこなのかといった情報もコントラクトの結果は消すことができないようにブロックチェーンになります。
オンチェーン上にコントラクトのプログラムが存在する必要があるのかどうかといった部分は、EthereumとStellarの大きな違いの1つです。
実際には投資家、サービス利用者のほとんどが、コントラクトのソースを確認しないであろう点、デプロイのハードルなど、Ethereumにはリアルの世界とのミスマッチが起き始めているような気がします。そして、そのミスマッチのなさでいうとStellarが1番だと思っています。
匿名取引機能の狙い
Stellarは新機能の開発といった面で、R&Dにも力をいれています。スケーラビリティ、さらなる高速取引を実現するためのプロトコルであるZkVMを開発しています。Stellar コンセンサス プロトコル(SCP)を使ったサイドチェーンと、ゼロ知識証明を使って、機密性の高いスマートコントラクトを実現するためのものです。現在、デモ版ができており、今後の開発進捗に期待がもてます。
あくまでも私個人の推測にはなるのですが、ゼロ知識証明を用いたZkVMのR&Dに力をいれているということは、今後は法人ユースの取り込みを検討しているのかもしれません。今まで、パブリックチェーン上で取引することで、財務的な部分が分かってしまうことで懸念していた法人ユーザーが匿名性の高いトランザクションを作れることになったことで、安心してStellarを使用してもらうことができ、法人ユーザー数拡大を狙いっているのではないでしょうか。そうなれば、個人ユーザーから法人ユーザーまで幅広いユーザー層に支援されるブロックチェーンになれると思います。
高地 明 ブロックチェーンエンジニア
ITベンチャー、上場SI企業を経て、マネーフォワードにJoinしアプリエンジニアとして従事。その後DMM.comに入社し、CTO室でR&D業務を行い、ブロックチェーン研究室へ移動。セキュアWalletの開発、Stellarの調査、検証などを実施。2019/11にDMM.comを退職後、IoTベンチャーにJoin。
好きな開発言語はCrystalとReasonML。