NFT取引所の運営者からみた、Flowの魅力
こんにちは、Flow公式ジャパンコミュニティの代表として、メディア運営を務めることになりました、荒川、徳地です。
我々は現在、仕事でNFT取引所ミームの開発・運営に携わっており、
実際に業務でNFT取引所の運営に携わりながら、NFTという技術に大きな可能性を感じつつも、現状のイーサリアムを使った取引所では課題を感じる点が多いのですが、その大部分がFlowが解決できそうだなと感じており。これからの期待を込めて、コミュニティの運営に参加する事にしました。
これから、2週間に一度程度、Flowを使ったプロダクトを作る上で参考となる、チュートリアル的な発信を行っていきたいと考えています。
この記事は二部構成となっており、前半はイーサリアムとFlowを比較しつつビジネス面でのFlowのポジションを紹介した後で、エンジニア目線でFlowのどこらへんが優れていると感じるのかをご説明します。
文末に、git cloneするだけで実行可能なコードへのリンクを貼ってありますので、先にコードを読みたいという方は、文末のリンクをご覧ください。
Flowは、NFTに特化したブロックチェーンです。
Flowの誕生はNFTの今までの変遷と大きく関係しているので、軽くNFTについて説明させてください。
NFTとは、ブロックチェーン上に、なんらかの所有権を記載し、所有権を自由にトレードできる仕組みの事です。
NFTのメリットは所有者が自由に譲渡売買できる点です。一旦NFTが発行されると、発行している本人すらNFTを消すことができません。これは、発行者にとってもNFTの管理、トレード機能を自社で行う必要がなく、運用費、開発費を削減し、システムを安定稼働させられるというメリットがあります。
2017年末にNFTとして記録されたデジタル猫をブリードするサービス、CryptoKittiesが人気を博したことから、そのコンセプトが広く知られるようになりました。
そして、CryptoKittiesで使われていた仕組みを原型にERC721規格が制定されました。現在、イーサリアムを使ったNFTはそのほとんどが、ERC721規格で作られています。
しかしながら、現状のイーサリアムには、取引時の手数料が非常に高く、また、一定時間内に捌けるトランザクションの量が非常に少ないという制約があります。
そのため、CryptoKittiesを作ったDapper Labs社は、イーサリアムに技術的な限界を感じ、独自ブロックチェーンであるFlowの開発を始めます。
Flowはイーサリアムを使ったERC721の技術的な課題を改善するために作られたブロックチェーンです。
では、FlowがERC721規格の技術的な問題を解決したら、はたしてNFTは広く使われるようになるのかというと、僕はそうは思いません。
なぜなら、NFTは所有権をトレードさせる仕組であって、実際のNFTの価値はそれが何の所有権であるかに依存するからです。
地方の山林の所有権はどこに記録されようと二束三文なのと同じように、価値が低いアイテムの所有権は、たとえNFTとして登録されていても価値が低いです。
デジタルアイテムのトレードプラットフォームとして、NFTは非常に優れているものの、広く普及するには、どれだけ魅力的なアイテムがNFTとして一般ユーザーに提供されるかにかかっています。
一般ユーザーに魅力的なアイテムという視点で考えると、NFTは既に価値が広く認められたIP、コンテンツを保有している企業が使うと最も力を発揮する技術といえます。
Flowはその点で非常に優れていて、老舗のエンタメ系大企業と強固なパートナーシップを結おり、Warner Music、Ubisoftなど、誰もが知るエンタメ系の超大企業とパートナー関係にあります。
また、世界最大のプロバスケットボール団体であるNBAを題材とした、NBA Top Shotというサービスをリリースしています。このサービスは、クローズドベータの段階で売上1億円を超え、常にNFTのトレード ボリュームランキングで、トップ3に入っています。
NFTで所有権を管理すると、一つ一つのデジタルデータがトレードできるようになるため、スポーツトレカのようなコレクションアイテムのデジタル版と非常に相性が良いです。
既にDappers Lab社はプロ格闘技団体のUFCからもライセンスを取得して、サービスの開発をはじめています。
また、サードパーティーでは、Animoca Brands社がMotoGPを題材にしたサービスをFlowを使って開発しています。
このように、既にNBAという世界最大の超有名IPを使ったサービスが稼働していることから、他のスポーツ団体が追随して、デジタルコレクティブル(NFT) のトレードサービスを立ち上げる際にFlowを使う動きが始まっています。
なお、日本では、コインチェックさん、ダブルジャンプ さんなどがFlowへの参画を検討されている様子です。
さて、ここからは、Flowの技術的な側面についてみていきましょう。
技術面でも、Flow には大きな可能性を感じます。簡潔に言うと、優れている点は、ブロックチェーンのプログラミングでいまだに大きな課題であるセキュリティへの新しいアプローチと、分権性を損なうことのないスケーラビリティ性です。
Flow の技術的な特徴
Flow のスマートコントラクトは、Cadence(ケイデンス)という専用のプログラミング言語を使って書かれます。Cadence を使うと、ユーザーが利用する機能としては ERC721 と同じものが提供できる一方、スマートコントラクトの品質がかなり高いレベルで保証され、コードも直感的になります。
ここでは例として、自分が持っている NFT の一覧を取得する方法を取り上げ、ERC721 との違いを説明します。
ERC721 におけるアイテム一覧の取得
実は、ERC721 で特定のアカウントが所有するアイテムの一覧を取得するのはけっこう大変で、そのゲームのアイテムのすべての送付イベントを監視しなければなりません。
実際、miime では、扱うタイトルの送付履歴(1日あたり数千件)を常に監視しており、累計 数千万の送付履歴の中から最新の送付情報のみを参照することで、各アカウントが所有するアイテムの一覧を抽出しています。
(注記:この不便さを解決するプロジェクトも多数存在します。)
ER721 の構造的な課題と Flow での解決方法
かつて ERC721 では、各アカウントごとのアイテム一覧を取得する方法も検討されていましたが、効率よく実現できなかったため標準的な方法として確立されていません。
効率が悪くなってしまう根本的な原因は、ERC721 が、所有者の情報をひとつのスマートコントラクトの台帳で管理するためです。
一方、Flow では、ERC721 とはデータの持ち方が異なっており、所有する NFT は各アカウントの中に保管されています。そのため、すべての送付を監視することなく、いつでも保有アイテムの一覧を簡単に取得できます。
これを実現する Cadence のコードは下記になります。このコードを使うと、NBA Top Shot の指定したアカウントの NFT 一覧を取得できます。
import TopShot from 0x0b2a3299cc857e29pub fun main(account: Address): [UInt64] {
let acct = getAccount(account)
let collectionRef = acct.getCapability(/public/MomentCollection)!
.borrow<&{TopShot.MomentCollectionPublic}>()!
return collectionRef.getIDs()
}
コードの処理を簡単に説明すると、指定したアカウントのストレージから、NFT のコレクションの参照を取得して、それを使って ID 一覧取得の関数を呼び出しています。
さて、これは単に提供されるインターフェースが違うだけではありません。
大きく異なる所有モデル
Flow のコードで特徴的なことは、問い合わせるのが、中央のスマートコントラクトではなく、特定のアカウントであることです。これはささいな違いに思えるかもしれませんが、実際、非常に重要な違いです。
ERC721 の NFT は、アカウントのもとに NFT があるわけではなく、アカウントが持つ権限はすべて中央のスマートコントラクトに制御されています。よって、例えば、中央のスマートコントラクトがストップすれば、ユーザー間で NFT を送付することもできなくなります(このあたりはスマートコントラクトの実装によりますが、構造的にそういった制御が可能になっており、スマートコントラクトの実装と運営を全面的に信頼する必要があります)。
一方、Flow では、ユーザー間の NFT のやり取りや、NFT に対する操作は、文字通り所有しているアカウントが自由に行なえます。
サンプルコード
実際に Flow のメインネットから情報を取得する Node.js のサンプルコードを GitHub に上げたので、ご興味のある方はこちらもぜひご覧ください。簡単なコードの解説も README に記載しています。
今回紹介した例の他に、Flow には技術的に面白い点が多くあります。リソースによる直感的な所有、柔軟な所有権によるコンポーザビリティの向上、役割がわかれた複数種類のノード、セカンダリートークンの新しいモデル、などなど。
また、他のブロックチェーンと比べて、かなり開発者フレンドリーに作られているので、これから何かを開発するには優れたプラットフォームです。実際、既に100 を超える様々なパートナーが、Flow を使ったプロダクトの開発に取り組んでいます。
このように、ビジネス面でパートナーに恵まれているだけでなく、Flowには技術的にも非常に興味深い特徴が多数あります。
次回以降の記事では、より技術的な内容でFlowの魅力をお伝えしたいと思います。