新規投稿のお知らせを受信されたい方は、サブスクリプションをご登録ください:

CloudflareでWeb3アプリの構築を始める

2021-10-01

6分で読了
この投稿はEnglish繁體中文한국어简体中文でも表示されます。

多くの開発者にとってWeb3という言葉は、よくある「2021年に学ぶべきこと」といったツイートで見かける類のバズワードのように感じられるでしょう。私もソフトウェアの開発者として、長年そのように感じていました。ここ数か月間、私はWeb3の仕組みや重要性をより深く理解するため、そのエコシステムを詳細に学びました。

Web3は一般に、インターネットの分散型進化形として知られています。Web上のインタラクションや日常生活をプロバイダー数社が仲介する代わりに、将来Web3ベースになれば、データを独自のデータベースから解放し、ブロックチェーン固有のインセンティブ構造を介して集中化せずに動作することができます。

2021年のWeb3スペースは、数年前とは見た目も使用方法も大きく異なります。Ethereumなどのブロックチェーンは、若干の改善が必要とはいえ、比較的簡単に膨大なトラフィックを処理しています。そして、Solanaなどの比較的新しいブロックチェーンが、ここ数年見られたスケーリング問題を軽減できる真の代替え手段として参入してきました。

Cloudflareは、開発者がWeb3で未来を構築していくのを後押しするのに適した立場にあります。本日発表したCloudflareのEthereumゲートウェイによって、開発者は信頼性の高いCloudflareのネットワーク上でスケーラブルなWeb3アプリを構築することができるようになります。本日は、Cloudflare WorkersCloudflare Pagesを使用してNFT(非代替性トークン)をデプロイ、ミント、レンダリングする方法を紹介するオープンソースの例もリリースします。こちらでお試しいただくかGitHubのオープンソースコードベースをご確認ください。ご利用のNFTの本番環境へのデプロイを開始できます。

Web3で解決できる問題

Web3についてオンラインで読み始めると、可能性にワクワクしてきますね。私自身、ソフトウェア開発者として、「Web3アプリとは何なのか、どう構築するのか」という疑問を持つようになりました。

従来のアプリの多くは、データベース、そのデータベースのコードインターフェース、ユーザーインターフェースの3つの部分を使います。モデルビューコントローラー(MVC)アーキテクチャを代表例とするこのモデルは、数十年にわたってWebを支えてきました。MVCでは、データベースがご利用のデータモデルの格納システムとして機能し、クライアントとそのデータのインタラクションのやり方はコントローラーが決定します。データを取り入れて表示するビューをHTML、CSS、JavaScriptを使って定義し、データの作成や更新のインタラクションを提供します。

10億人のユーザーがいるソーシャルメディアのアプリを想像してみてください。MVCモデルでは、このアプリのデータモデルには、投稿、フレンド、イベントなど日常的に作られるあらゆるユーザー生成コンテンツが含まれます。そのアプリ用に作成されたコントローラーが、内部でデータとインタラクションできるユーザーを決定します。たとえば、ユーザー2人間のプライベートな対話は、その2人にしかアクセスできないというように。しかし、これらのコントローラーとアプリ全体は、データへの外部アクセスを許可しません。データはソーシャルメディアアプリが所有し、広告表示やWeb上の追跡と引き換えに「無料で」リースします。

ここまで考えた時、閃きました。どうすればWeb3がこうした問題への有力なソリューションになるかがわかったのです。MVCベースのWeb2.0アプリが「壁に囲まれた庭」(相互運用性もデータの所有権もない閉ざされた別々のプラットフォーム)の集まりだとすると、Web3は設計上その真逆です。

Web3アプリには、事実上2つの部分があります。ブロックチェーン(ここではEthereumを例に説明します)とユーザーインターフェースです。ブロックチェーンには2つの部分があります。ユーザー、グループユーザーまたは組織のアカウントと、ネットワーク上で発生するすべてのことを記録する不変のシステムとして機能するブロックチェーンそのものです。

ブロックチェーンに関して理解すべき重要な側面の1つは、コードをブロックチェーンにデプロイすることができ、そのブロックチェーンのユーザーがコードを実行できるという考えです。Ethereumでは、これを「スマートコントラクト」と呼んでいます。ブロックチェーンに対して実行されるスマートコントラクトは、MVCモデルのコントローラーのようなものです。謎に包まれていた従来のコードと異なり、スマートコントラクトは検証可能で、バイナリコードは誰でも閲覧することができます。

例の架空のソーシャルメディアアプリにおいては、これは、ユーザーのアクションが中央のデータベースに一切格納されないことを意味します。代わりに、ユーザーは誰でも検証できるプログラムを利用して、ブロックチェーンネットワークにデプロイされたスマートコントラクトとのインタラクションを行います。開発者は、情報を表示し簡単に利用できるユーザーインターフェースを構築することができます。壁に囲まれた庭もプラットフォームロックインもありません。もちろん、他の開発者がより良いユーザーインターフェースやスマートコントラクトを開発して、ユーザーが自分のニーズに合わせて、それらのインターフェース間やコントラクト間を移動することも考えられます。

そうしたスマートコントラクトによる操作は、ウォレット(たとえばMetaMaskが管理するEthereumウォレット)を介して行われます。ウォレットは、サービスを提供する企業ではなくユーザーが所有します。これはつまり、あなたがご自身のウォレット(データに関する最終権限)を取得し、いつでも好きなようにそれを行使することができることを意味します。ウォレット自体は、ブロックチェーンのプログラム可能なもう1つの側面です。シングルユーザー用であったり、企業全体の利害を代表する複雑なマルチシグウォレットであったりします。ウォレットの所有者は、自身のデータをどう処理するかについてコンセンサス意思決定を選択することができます。

people are talking trash about "web3" as a term,

but having all my data on multiple websites is cool

and having websites compete on interfaces for the same data is rad

— pm (@pm) September 4, 2021

非代替性トークンの台頭

最近のWeb3スペースで見られる最も大きな変化の1つは、非代替性トークン(NFT)の成長です。非代替性トークンはブロックチェーン上に格納されるユニークな資産で、ユーザーが取引したり、所有権を確認したりできるものです。Cloudflareは2019年のCloudflare Ethereumゲートウェイの発表の際に、既にNFTに言及していました。その後、NFTの人気は爆発的に上がり、CryptoPunksBored Ape Yacht Clubなどのプロジェクトで、毎月数百万ドルの取引が実行されています。

NFTは、「壁で囲まれた庭」時代が終わった後の世界でデータの所有権やコミュニティがどのようになるのかを表すため、Web3スペースの新たな魅力といえるでしょう。NFTを既にご存知でしたら、非常に視覚的なメディアとして認識しておられるかもしれません。CryptoPunksやBored Ape Yacht Clubの基本はアートなのです。PunkまたはApeを購入し、ソーシャルメディアのプロフィール写真として使用することができます。しかし、Apeを所有することは単にプロフィール写真を所有することではありません。ブロックチェーン検証済み資産の独占所有権を持つことにもなるのです。

NFTのコントラクトの急増により、詐欺も増加していることに注意する必要があります。ブロックチェーンベースのNFTは、特定のスマートコントラクトに基づいて所有権を移転するメディアです。このスマートコントラクトは誰でもデプロイでき、どのコンテンツとも関連付けることができます。取引をするコントラクトの信頼性と身元を確認するまでは、真偽の保証はありません。一部プラットフォームはアカウント認証に対応していますが、他のプラットフォームでは、信頼できるパートナーのみをプラットフォームに表示できるようになっています。NFTには、複数のアプローチを可能にできる柔軟性がありますが、信頼の前提に関するコミュニケーションは明確にするべきです。

この資産は、Ethereumにデプロイされたスマートコントラクトに関連付けられており、取引、認証、プログラムへのゲートウェイとしての使用が可能です。NFT開発者はNFTの取引イベントに参加して、ロイヤリティを請求したり、「ミント(NFT新規発行)」時にミント費を請求し、販売や取引で収益を上げ、次の大きなプロジェクトの資金に充てることができます。このようにして、NFTは平均的なWebアプリよりも、開発者とコミュニティメンバーの間に強力なインセンティブ関係を築くことができます。

構築内容

Web3(とCloudflareの位置づけ)について理解を深めるため、当社は、Web3スタックをエンドツーエンドで利用して何かを構築する必要がありました。

同じことを可能にするため、本日、フルスタックアプリをオープンソーシングし、NFTのミント方法や管理方法を最初から最後までご紹介いたします。アプリのスマートコントラクトは、Ethereumのプロジェクトやスマートコントラクトのテスト環境であるRinkebyネットワーク上でデプロイされ、認証されています。Rinkebyテストネットワークでは、メインのブロックチェーンのスマートコントラクトを、実際のイーサを使わずにまったく同じワークフローを使って、テストすることができます。プロジェクトをEthereumのメインネットにデプロイする準備が整ったら、そのコントラクトを本番環境でデプロイし、認証し、使用を開始することができます。

デプロイしたら、スマートコントラクトはNFTプロジェクトを管理する機能を提供します。この機能は、ERC-721スペックに対応しており、ユーザーがミントすることができ、OpenSeaなどのNFTマーケットプレイスやお持ちのWebアプリで表示することができます。WebインターフェースやこれらのNFTをミントするためのコード例もご用意しました。ユーザーは、EthereumウォレットがインストールされたWebアプリを使用して、NFTをクレーム(claim)することができます。

NFTをミントしたら、ユーザーインターフェースの例がクレームされた各NFTのメタデータをレンダリングします。ERC-721(NFT)スペックによると、デプロイされたトークンには、JSONメタデータを提供する対応するURLがなければなりません。Cloudflare Workersとともに構築したこのJSONエンドポイントは、各NFTの名前と説明、および画像を返します。この画像をホストするために、Infuraでサービスをピン留めし、CloudflareIPFSゲートウェイを使用して配信しています。当社のNFTはそのハッシュを介してコンテンツを識別しており、後で別の物と置換できなくします。

このオープンソースプロジェクトでは、NFTプロジェクトを構築するのに必要なすべてのツールを提供しています。WorkersとPagesを基に構築することで、NFTを成功裏に導入しスケールするために必要なすべてのツールを手に入れ、ユーザーがウォレット間でミントや取引をする中、NFT資産について常に最新のメタデータを提供することができます。

Architecture diagram of Cloudflare’s open-source NFT project

Architecture diagram of Cloudflare’s open-source NFT project

CloudflareのオープンソースNFTプロジェクトのアーキテクチャ

Cloudflare + Web3

Workers、Pages、IPFSゲートウェイを含むCloudflareの開発者用プラットフォームは、お客様のNFTプロジェクトのライフサイクルの各ステップでスケーラブルなソリューションを連携して提供します。NFTプロジェクトを本番環境に移行する際は、プロジェクトのいかなるトラフィックも処理できるCloudflareのEthereumおよびIPFSゲートウェイを利用できます。

Cloudflareでは、Web3をとても楽しみにしています。社会は、World Wide Webの初期に想定されていた類の分散型モデルのインターネットに戻りつつあります。当社でよく言うように、「ネットワークはコンピューター」です。Metaversesのようなプロジェクト、コミュニティ用やソーシャルネットワーク用のDAOs(自律分散型組織)やNFT、金融管理のDeFi(分散型金融)アプリ、私たちがいまだ考えもしていないさまざまな種類の分散型アプリすべてなど、Web3がどのような形式をとろうとも、Cloudflareはその未来像の基盤になります。

バースデーウィーク Web3 Cloudflare Workers Cloudflare Pages

Cloudflareは企業ネットワーク全体を保護し、お客様がインターネット規模のアプリケーションを効率的に構築し、あらゆるWebサイトやインターネットアプリケーションを高速化し、DDoS攻撃を退けハッカーの侵入を防ぎゼロトラスト導入を推進できるようお手伝いしています。

ご使用のデバイスから1.1.1.1 にアクセスし、インターネットを高速化し安全性を高めるCloudflareの無料アプリをご利用ください。

より良いインターネットの構築支援という当社の使命について、詳しくはこちらをご覧ください。新たなキャリアの方向性を模索中の方は、当社の求人情報をご覧ください。
Birthday WeekCloudflare WorkersCloudflare Pages開発者Developer Platform

Xでフォロー

Kristian Freeman|@kristianf_
Jonathan Kuperman|@jkup
Cloudflare|@cloudflare

関連ブログ投稿