第一世代ブロックチェーン、ビットコイン、イーサリアムに続く、次世代ブロックチェーンを取り上げました。Blockchainについて技術的な調査をしたいと思います。Labs社によって独自に開発されたLayer1ブロックチェーンです。Layer1ですので、既存のビットコインやイーサリアムといったインフラを1から作る壮大なプロジェクトと言えます。開発の中、イーサリアムの技術的な課題に直面した経験から、独自インフラを作るに至ったとのことです。取引手数料が高騰する問題に直面しました。イーサリアムでは取引処理能力と取引手数料に問題があったのです。Blockchainを開発する中で重視したポイントは、開発者向けのUX(開発しやすさ)と、ユーザー向けのUX(使いやすさ)の最大化と言われています。Flow上での開発をしやすくすることで多くのサービスが生まれ、ユーザーにとってインフラ側のストレスなくサービスを触ってもらうことを目指しました。具体的には、取引承認を分業する独自の仕組みを提供することで、オープンソース状態を担保しながら、1秒で10万取引を処理し、10秒でチェーン上のフィナリティを達成するに至っています。Blockchainの普及活動をしているわけですが、その際アプリのコンテンツ選びはメインストリームを追求しました。メインストリームというのは、これまでがクリプトに詳しいクリプト層がユーザーだったのに対して、クリプトに詳しくなくても利用できる層へのアプローチという意味です。Shotをリリースしました。いうNFTマーケットプレイスでも基盤インフラとして採用されています。NFTマーケットプレイススマートコントラクトにおいては、依然イーサリアムが大きな存在ではありますが、その課題を解決する次世代ブロックチェーンであるFlowの今後の動向は注目すべきでしょう。Blockchainをどのように利用するのか、Flowの技術ドキュメントを調べてみたので簡単に解説していきたいと思います。DAppsを構築する上で、1)スマートコントラクトの実装、2)フロントエンドの実装、3)デプロイ等のツール、の3点について説明します。スマートコントラクトの実装イーサリアムと同様、Flowでもブロックチェーン上で動作するプログラムのことをスマートコントラクトと呼びます。いう独自言語を使用する点です。独自の設計思想を理解し、その思想に沿った実装をしていくことが必要となります。そのため、ラーニングコストは思っている以上にある気がします。位置づけがやや異なります。内のストレージに保持され、種類は一つしかありません(イーサリアムのようにEOAとコントラクトアドレスの区別はない)。内にデプロイされます。内部ストレージに格納されるのです。Cadenceで記述されたリソースは、中央集権的に一つのスマートコントラクトが管理するのではなく、個々のアカウントのストレージに保有分のリソースだけが保持されるようになります。イーサリアムでは、ある種中央集権的にデプロイされたスマートコントラクトが全てを管理するのが一般的です。ERC20トークンのスマートコントラクトは、全トークンホルダーの情報を内部メモリにマッピングテーブルで保持しています。一方で、Cadenceのスマートコントラクトでは、スマートコントラクト自体は所有者のアカウントのストレージにデプロイされ、保有トークン自体はそのトークン保有者のストレージに保持されます。これは、実世界のリアルなモノの感覚と近いのではないでしょうか(分散的な世界の表現)。ストレージは、3つの領域に分けられています。その実体へのシンボリックリンクを貼るイメージに近いかと思います。(トークンの預け入れ等)Cadenceでは、リソースは必ず一つの場所にしか存在せず、意図しないコピーや消失が起こせないようにする仕組みが言語体系に組み込まれています。常にリソースは、どこからどこに移動したのか明示的に記述する必要があります(リソースのコピーはできない)。世界とは結構異なることがわかるかと思います。Tutorialsには、参考になるソースコードもあるので、独自のスマートコントラクトを実装できるのではないでしょうか。アカウントのログイン/ログアウトから、既存のスマートコントラクトと通信をして、スマートコントラクトのステータス変更を行うまでのサンプルが載っています。いうライブラリをインストールすれば、スマートコントラクトとの通信はこのライブラリを経由して行えます。気になる点としては、上記の@onflow/fclライブラリを利用して、fcl.logIn()やfcl.signUp()を用いて、アカウント作成しようとすると、下のようなポップアップが現れ、アカウント管理のプロバイダが制限される点です。アカウント作成する必要があるのかと思います。イーサリアムの時には、ウォレットでアカウントを作成し、その秘密鍵を自身で保持して、metamask等でログインしていたので、体験的には大きく異なります。partyのプロバイダに秘密鍵を預けるのは嫌だという声もありそうですが、従来のmetamaskプラグインを利用したアカウント管理はメインストリームにはハードルが高いわけで、これぐらいの落とし所がユーザー体験的には良いのかもしれません。既存のログイン機構があるサービスでは、どのように認証方法を統合するかはもう少し調べる必要がありそうです。CLIツールが充実しているので開発には困らないでしょう。イーサリアムと同様、スマートコントラクトには特定のメソッドが実行された時などにイベントを発火させることができます。CLIツールを使えば、このイベントをウォッチすることもできそうです。ついて、簡単に技術的なチェックをしてみました。社が独自に開発したブロックチェーンなので、示唆に富む仕様かとは思います。一度、触れてみて、アプリ開発に導入するかを検討してみるのも良いのではないでしょうか。Tweetシェア編集者syamasakiあるベンチャー企業(現マザーズ上場)のCTOを務め、その後数々のスタートアップ企業のCTOやリードエンジニアを担当。NFTを中心にビジネスだけでなく技術的な面も深堀りながら解説します。