リスク警告:「仮想通貨」「ブロックチェーン」の名のもとでの違法な資金調達のリスクに注意してください。—銀行保険監督管理委員会など5部門
検索
ログイン
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
View Market
Web3 スタックを理解する: Web3 開発者になるには?
区块律动BlockBeats
特邀专栏作者
2022-01-07 09:39
この記事は約5514文字で、全文を読むには約8分かかります
Web3 は、完全に分散化されたアプリケーション用のプロトコル スタックです。

元のタイトル: 「Web3 スタックの定義」

原作者: ネーダー・ダビット

原文の編集: The Graph コミュニティのメンバー

Web3 上で構築したいですか? Nader Dabit 氏は、入門ガイドで Web3 テクノロジー スタックの構成要素を指摘しています。

「Web3 での構築」の次の章では、エッジおよびノー​​ド開発者関係エンジニアの Nader Dabit が、Web3 スタックと、開発者が Web3 での構築のさまざまなレイヤーをどのように概念化するかを説明します。

私は約 10 年間従来のフルスタック開発者として働いた後、2021 年 4 月に web3 に移行しました。これらすべての新しいテクノロジーやアイデアに飛び込む中で、私が最初に疑問に思ったのは、「Web3 スタックとは何だろう?」ということでした。

従来の Web アプリやモバイル アプリを構築する場合、私は仕事を完了するために特定の構成要素に依存することがよくあります。

- API/アプリケーションサーバー (REST または GraphQL)

- 認証層 (管理または手動)

- データベース

- クライアントのフレームワーク、プラットフォーム、ライブラリ

- ファイルストレージ

これらのコア コンポーネントを使用すると、必要なほとんどの種類のアプリケーションを構築でき、少なくともほとんどの目的を達成できます。では、これは web3 ではどのように見えるのでしょうか?

結局のところ、次の理由から、この質問に対する答えはそれほど単純ではありません。

- このパラダイムは多くの点で完全に異なります

- Web3 のツール、テクノロジー、エコシステムは Web2 ほど成熟していません

また、私は Web2 の世界と同じ方法で物事に取り組んでいるため、Web3 アプリケーションを立ち上げ、実行し、構築する方法を理解するのが難しくなります。

過去 8 か月ほどにわたって作業、研究、実験、構築を行った結果、わかったことを皆さんと共有したいと思います。

web3って何ですか?

Web3 は、完全に分散化されたアプリケーション用のプロトコル スタックです。

Web3 は、完全に分散化されたアプリケーション用のプロトコル スタックです。

この分散型テクノロジースタックを使用すると、独自の意味と特徴を持つ分散型アプリケーションの構築を開始できます。

web3 のいくつかの機能は次のとおりです。

- 分散型ネットワークインフラストラクチャ

- 所有権 (データ、コンテンツ、プラットフォーム)

- ローカルデジタル決済

- 自己主権のアイデンティティ

- 分散型、トラストレス、堅牢なインフラストラクチャ

- オープン、パブリック、コンポーザブルなバックエンド

分散テクノロジースタック上に構築された一部のアプリケーションは以前のアプリケーションに取って代わるものですが、ブロックチェーンによって可能になる新しい言語は、新しいアプリケーションパラダイムも可能にします。

ネイティブのデジタル決済と共通のバックエンド インフラストラクチャ (機械学習、モバイル デバイス、仮想現実、その他の基本的な技術、プラットフォーム、ビルディング ブロックなど) により、まだ想像されていない、まったく新しいタイプのアプリケーションの構築が可能になります。

これは、すべてが web3 に置き換えられることを意味しますか?不確かな。一部の種類のアプリケーションでは、分散技術スタック上に構築する方が良い選択肢だと思いますが、ほぼすべての技術上の決定と同様、何を構築するかによって異なります。

それでは、web3 スタックを次のカテゴリに分けて詳しく見ていきましょう。

- ブロックチェーン

- ブロックチェーン開発環境

- ファイルストレージ

- P2Pデータベース

- API (インデックスとクエリ)

- 身元

- クライアント (フレームワークとライブラリ)

ブロックチェーン

ブロックチェーン

構築するために選択できるブロックチェーンは無数にあります。誰もいない"最高の"代わりに、それらの間のさまざまなトレードオフを考慮する必要があります。

何か新しいことを学ぶときに私にとってしばしば重要なことの 1 つは、学んでいることにパレートの法則を適用することです。つまり、その時間と労力に対して最も効率的に結果を得る方法は何かということです。この考えに従うと、最大限の推進力とモチベーションを獲得しながら、最短の時間で新しいことを学ぶことができます。

ブロックチェーンの分野では、ブロックチェーン開発者として始めるときに、Solidity と EVM (またはイーサリアム仮想マシン) を学ぶことがおそらく最善のことです。このスキルセット (および技術スタック) を使用すると、イーサリアムだけでなく、他のイーサリアムの第 2 レイヤー、サイドチェーン、さらには Avalanche、Fantom、Celo などの他のブロックチェーンも構築できます。

とはいえ、Solana、NEAR、Polkadot などによる一流の Rust サポートにより、ブロックチェーン分野で Rust の人気が高まり始めています。おそらくどちらの言語を学んでも間違いはないでしょうが、初心者にとって、今日誰かが私に尋ねたら、私はまだSolidityの方が良い選択だと答えるでしょう。

これらの推奨事項に加えて、テクノロジー、実用性、コミュニティ、勢い、将来の存続可能性がしっかりと組み合わされたブロックチェーンの非包括的なサンプルを以下に示します。

- イーサリアム - オリジナルのスマートコントラクトプラットフォーム

- ZKrollups:ZKSync, Starknet,Hermez - 高スループットのイーサリアム レイヤー 2 ですが、EVM とネイティブ互換性はありません

- オプティミスティック ロールアップ: Arbitrum & Optimism - EVM と互換性のあるイーサリアム レイヤ 2 (オプティミスティック ロールアップと ZKrollups の違いについて詳しくは、こちらをご覧ください)。

- ポリゴン - イーサリアムサイドチェーン

- Solana - 高スループット、低トランザクションコスト、高速ブロック時間ですが、EVM (Rust) よりも学習が困難です

- NEAR - 基盤となるブロックチェーン、スマート コントラクトは Rust または Assemblyscript で記述できます

- Cosmos - 相互運用可能なブロックチェーンのエコシステム

- Polkadot - ブロックチェーンベースのコンピューティング プラットフォーム。その上に構築されたブロックチェーンがブロックチェーン間でトランザクションを実行できるようにし、相互接続されたブロックチェーンのインターネットを作成します。

- Fantom - EVM互換の基盤となるブロックチェーン

- Avalanche - EVM互換の基盤となるブロックチェーン

- Celo - スマートフォンを持っている人なら誰でも簡単に暗号通貨を送受信、保存できるように設計されたEVM互換の基盤となるブロックチェーン

- Tezos - EVM と互換性のない基盤となるブロックチェーン、多くの NFT プロジェクトがそれを使用しています

ブロックチェーン開発環境

EVM 開発には、いくつかの優れた開発環境が利用可能です。

- ハードハット (JavaScript) は新しいオプションですが、注目を集めています。彼らのドキュメントは素晴らしく、ツールと開発者のエクスペリエンスは素晴らしく、私は個人的に分散アプリケーションを構築するために常にそれを使用しています。

- Truffle (JavaScript) は、EVM 上でアプリケーションを構築および開発するためのツールのセットです。これは成熟しており、実戦でテストされており、十分に文書化されています。これはしばらく前から存在しており、多くの開発者が使用しています。

- Foundry は、Paradigm の新しい Solidity 開発環境であり、大きな期待を示しています。その主な機能は、Solidity でテストを作成できること、ファジングのサポート、および速度 (Rust で記述されている) です。ここに別の紹介文を書きました。

- Brownie は、Solidity/EVM 開発用の Python ベースのスマート コントラクト開発およびテスト フレームワークです。

ファイルストレージ

ファイルストレージ

写真、ビデオ、その他のファイルは web3 のどこに保存しますか?このような大きなファイルをオンチェーンに保存すると、通常は非常にコストがかかるため、おそらくそこに保存したくないでしょう。

代わりに、いくつかのファイル ストレージ プロトコルのいずれかを使用できます。

- IPFS -- ピアツーピア ファイル システム プロトコル

- 長所: 信頼性が高く、優れたドキュメントがあり、巨大なエコシステムがあります。

- 短所: データが修正されない場合、データは失われます。

- Arweave - 1 回の取引手数料でデータを永久に保存できます。私は Arweave のファンで、それについてここにブログ投稿を書きました。

- Filecoin - 永続的なデータ ストレージ システムを提供するために設計されたプロトコルである IPFS を構築したのと同じチームである Protocol Labs からのものです。開発者が web3.storage を含めて Filecoin 上に構築する方法があるのは素晴らしいことです。

- スカイネット - まだ本番環境では使用していませんが、試してみたところ、問題なく動作しているようです。ここの API は素晴らしそうです。データの持続期間やスカイネットと他のプロトコルの相互運用性など、いくつかの疑問があります。

P2Pデータベース

ファイル ストレージとオンチェーン ストレージに加えて、データをオフチェーンに保存する必要がある場合もあります。これらのタイプのソリューションは、従来の技術スタックでデータベースを使用する方法と同様に使用できますが、分散ネットワーク上の N ノード間で複製されるため、(少なくとも理論上は) 信頼性が高くなります。

いくつかのオプションは次のとおりです。

- Ceramic Network - データの作成、ホスティング、共有のための分散型オープンソース プラットフォーム。 Ceramic には優れた ID プロトコルもありますが、これについては後ほど説明します。おそらく私の現在のお気に入りのオフチェーン ストレージ ソリューションです。これはかなり良いデモです。

- Textile ThreadDB - IPFS と Libp2p に基づいて構築されたマルチパーティ データベース。私の理解が正しければ、現在 API に大きな変更が加えられている可能性があります。試してみて、ある程度の見通しは見えましたが、ドキュメントとDXには改善が必要です。

- GunDB - 分散型のピアツーピア データベース。 Gun はかなり前から存在しており、いくつかの非常に興味深いアプリケーションがそれを使用して構築されています。

成熟度という点では、オフチェーン ストレージ ソリューションのエコシステムは、一部の開発者が望むような、より高度なユースケースを確立するのに必要な程度にはまだ達していないと私は考えています。ここでの課題には、ライブ データ、競合の検出と解決、書き込み承認、ドキュメント、一般的な開発者のエクスペリエンスなどがあります。

オフチェーン データ ソリューションとブロックチェーン プロトコルを組み合わせるのは、あらゆる種類のアプリケーションをサポートできる完全に分散化されたプロトコル スタックを実現する前に、越えなければならない最後の大きなハードルの 1 つです。

API (インデックスとクエリ)

ブロックチェーンと対話し、その上に構築する方法は、従来の技術スタックのデータベースとは大きく異なります。ブロックチェーンでは、データは他のアプリケーションやフロントエンドから効率的または簡単に直接利用できる形式で保存されません。

ブロックチェーンは書き込み操作用に最適化されています。 1 秒あたりのトランザクション、ブロック時間、トランザクション コストを中心としたイノベーションについてよく耳にします。ブロックチェーン データは一定期間にわたってブロック単位で書き込まれるため、基本的な読み取り操作を除くすべての操作が不可能になります。

ほとんどのアプリケーションでは、リレーショナル データ、並べ替え、フィルタリング、全文検索、ページネーション、その他多くの種類のクエリなどの機能が必要です。これを行うには、効率的に検索できるようにデータにインデックスを付けて整理する必要があります。

従来、これはデータベースが一元化された技術スタックで行うことですが、Web3 スタックにはインデックス層がありません。

ブロックチェーン データのインデックス作成とクエリを行うためのプロトコルである Graph は、こ​​のプロセスを容易にし、そのための分散ソリューションを提供します。ブロックチェーン データを簡単にクエリできるようにする、サブグラフと呼ばれるオープン GraphQL API を誰でも構築して公開できます。

The Graph について詳しくは、こちらのドキュメント (https://thegraph.com/docs/) またはこちらのチュートリアル (https://dev.to/dabit3/building-graphql-apis-on-ethereum-4poa) をご覧ください。 )。

認証

Web3 では、認証はまったく異なるパラダイムです。 Web2 では、ほとんどの場合、認証はユーザーの個人情報に基づいて行われます。この情報は通常、フォームまたは OAuth プロバイダーを通じて収集され、ユーザーはアプリケーションへのアクセスと引き換えにこの情報を提供するように求められます。

Web3 では、アイデンティティは完全にウォレットと公開キー暗号化の概念を中心に展開します。

それでも"財布"この名前はその目的を果たしていますが、この用語は認証とアイデンティティに関連しているため、Web3 を初めて使用する人にとってはわかりにくいと思います。将来的には、ウォレットとは何かを表現する別の方法を見つけられることを願っています。財布は金融の側面だけでなく、アイデンティティや評判も兼ね備えているからです。

開発者は、さまざまな方法でユーザーのウォレットやアドレスにアクセスし、操作する方法を理解する必要があります。

非常に基本的なレベル (そして非常に一般的な要件) では、ユーザーのウォレットへのアクセスをリクエストしたい場合があります。これを行うには、通常、Windows 環境 (Web ブラウザ) でユーザーのウォレットにアクセスするか、WalletConnect や Solana などのウォレット アダプターを使用します。

たとえば、利用可能な Ethereum ウォレットがある場合は、window.ethereum にアクセスできます。同じことが、Solana (window.solana)、Arweave (window.arweaveWallet)、およびその他のいくつかのウォレットにも当てはまります。 WalletConnect は、ユーザーがデバイスから直接モバイル ウォレットで認証できるため、モバイル Web や React Native に最適です。

認証を自分で処理したい場合は、ユーザーにトランザクションに署名させ、それをどこかでデコードしてユーザーを認証することができますが、これには通常サーバーが必要です。ここでは EVM ウォレットを使用した例を、次に Solana/Phantom を使用した例を示します。

分散型でのユーザー プロファイルの管理についてはどうでしょうか? Ceramic Network は、分散型 ID を管理するための最も強力なプロトコルとツールのスイートを提供します。彼らは最近、最近の更新の概要と、すべてのツールがどのように連携するかについてのガイダンスを提供するブログ投稿を公開しました。そこから始めて、ドキュメントを調べて構築を開始する方法を理解し、ここで Ceramic self.id を使用したサンプル プロジェクトを検討してみたいと思います。

ユーザーの ENS テキスト レコードを取得したい場合、ensjs ライブラリはユーザー データを取得する優れた API を提供します。

SpruceID も期待できそうですが、まだ試していません。

Ceramic と Spruce はどちらも W3C の DID 仕様を実装しており、それ自体が web3 の不可欠な部分であると私は考えています。そうなると、DID の集中実装は、仕様が達成しようとしていることに反します。

クライアント

JavaScript フレームワークに関して言えば、クライアント側のブロックチェーン SDK はほとんどフレームワークに依存しないため、実際に必要なものを使って構築できます。とはいえ、プロジェクトやサンプルの大部分は React で構築されています。 React 用の追加ツールを提供する Solana Wallet Adaptor のようなライブラリもあるので、React について学習したり慣れたりするのは賢明な選択かもしれません。

EthereumのクライアントSDKにはweb3.jsとethers.jsがあります。私にとっては、Ethers の方がアクセスしやすく、ドキュメントも充実していますが、web3.js の方が古くから存在しています。

Solana では、@solana/web3.js および/または Anchor を使用できます。いずれにしても Anchor フレームワークを使用しているため、Anchor クライアント ライブラリが Solana プログラムを構築するための最初の選択肢であることがわかりました。また、@solana/web3.js よりも理解しやすいと思います。

その他の協定

Radcle は、Git 上に構築された分散型コード コラボレーション プロトコルです。 GitHub の分散版と考えることができます。

Livepeer は、分散型ビデオ ストリーミング ネットワークです。これは成熟しており、広く使用されており、Web 上には 70,000 個を超える GPU が存在します。

要約する

要約する

この投稿は、私が学習し、実験し、Web3 開発者からのフィードバックを収集する際に継続的に更新し続ける生きたドキュメントになります。

ここで見逃したことについてフィードバックやアイデアがありましたら、ぜひご意見を共有してください。開発者は積極的に参加したいと考えているため、web3 を中心にあらゆる活動が起こっているのを見るのは非常に興味深いことです。インフラストラクチャはまだ進化していますが、大企業に権力と制御を手放すことなく人々が調整できる真の分散型プロトコルとアプリケーションを構築するというビジョンは重要であり、私たちはそのビジョンの実現に近づいています。

原題

Web3.0
開発者
Odaily公式コミュニティへの参加を歓迎します
購読グループ
https://t.me/Odaily_News
チャットグループ
https://t.me/Odaily_CryptoPunk
公式アカウント
https://twitter.com/OdailyChina
チャットグループ
https://t.me/Odaily_CryptoPunk