web3スタックの定義

中級1/8/2024, 2:50:04 AM
この記事では、ブロックチェーンにおけるWeb3の適用と開発について探っています。

この「Building on web3」の次のセグメントでは、Edge&Nodeの開発者関係エンジニアであるNader Dabitが、web3スタックを拡張し、開発者がweb3上で構築するさまざまな側面を概念化する方法について詳しく説明します。


私は10年ほどの間、伝統的なフルスタック開発者でしたが、2021年4月にWeb3に移行しました。これらの新しい技術やアイデアに没頭する中で、最初に知りたかったのは「Web3スタックとは何か?」でした。

従来のWebやモバイルアプリケーションを構築する際、私はしばしば仕事を終わらせるためにわずかな構築ブロックに頼ることがあります。

  1. API / app サーバー(REST または GraphQL)
  2. 認証レイヤー(管理されたものまたは手動で作成されたもの)
  3. データベース
  4. クライアントサイドのフレームワーク、プラットフォーム、およびライブラリ
  5. ファイルストレージ

これらのコアコンポーネントを使用すると、私は、私が望むほとんどの種類のアプリケーションを構築したり、少なくともそのほとんどを手に入れたりできます。では、web3ではどのように見えましたか?

結局、これに対する答えはそう簡単ではないことがわかりました。

  1. パラダイムは多くの面で完全に異なります
  2. Web3のツール、技術、およびエコシステムは、Web2よりも成熟度が低いです

私にとっても、Web2の世界と同じように問題に取り組んでいたので、Web3アプリケーションの立ち上げと構築が理解しづらかったです。

働いたり、調査したり、実験したり、物を構築したりして過ごした過去8カ月ほどのことについて、私が学んだことを共有したいと思います。

web3とは何ですか?

web3スタックを定義する前に、web3を定義しようとしてみましょう。尋ねる相手によって無数の定義がありますが、私にとっては、これdefinition spot on:

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

With this decentralized tech stack, we can begin building out decentralized applications which have their own set implications and characteristics.

web3が可能にする特性のいくつかは次のとおりです:

  • 分散型ウェブインフラストラクチャ
  • 所有権(データ、コンテンツ、およびプラットフォームの所有権)
  • ネイティブデジタル支払い
  • 自己主権身元
  • 分散、信頼できない、& 頑丈なインフラストラクチャ
  • オープンで公開されたコンポーザブルなバックエンド

分散型技術スタック上に構築されたアプリケーションの中には、以前のものに取って代わるものもありますが、ブロックチェーンによって可能になった新しいプリミティブによって、アプリの新しいパラダイムも可能になりました。

ネイティブデジタル支払いと公共のバックエンドインフラストラクチャー - 機械学習、モバイルデバイス、仮想現実、その他の技術的原始要素、プラットフォーム、およびビルディングブロックのような - これにより、想像されていない新しいタイプのアプリケーションが構築されるようになります。

これはすべてがWeb3に置き換えられることを意味するということですか?必ずしもそうとは限りません。分散型テックスタック上に構築することが特定の種類のアプリケーションにとってははるかに良い選択であると考えていますが、ほとんどの技術的な決定と同様に、それはあなたが構築しているものに依存します。

さあ、Web3スタックに入りましょう。このカテゴリに分かれたセットについて見ていきます。

  • ブロックチェーン
  • ブロックチェーン開発環境
  • ファイルストレージ
  • オフチェーンデータプロトコル
  • API(インデックス化&クエリ)
  • アイデンティティ
  • クライアント(フレームワークとライブラリ)
  • オラクル
  • その他のプロトコル

ブロックチェーン

構築するために選択できるブロックチェーンは数え切れないほどあります。 「最高」というものは1つではなく、代わりにそれらの間のさまざまなトレードオフを考慮するべきです。

新しいことを学ぶ際に私にとって重要なことの1つは、適用の考え方ですパレートの法則私が学んでいること、つまり、その時間と努力を最大限に活用する最も効率的な方法は何か。この考えに従うことで、新しいことを学ぶ際に最も多くのトラクションと勢いを得ることができます。

ブロックチェーンの世界で、Solidityと学ぶことEVM(またはEthereum仮想マシン)は、ブロックチェーン開発者としてスタートする際に最適な選択肢かもしれません。このスキルセット(およびテックスタック)を使用すると、Ethereumだけでなく、他のEthereum Layer 2、サイドチェーン、さらにAvalanche、Fantom、Celoなどの他のブロックチェーンを構築できます。

言うまでもなく、Rustはブロックチェーンの世界でますます人気を集めつつあり、Solana、NEAR、Polkadotなどが第一級のRustサポートを提供しています。おそらく、どちらを学んでも間違いはないと思いますが、初心者にとっては、今日誰かが私に尋ねるなら、Solidityの方がまだ良い選択肢だと言えます。

そのアドバイスを超えて、技術、ユーティリティ、コミュニティ、モメンタム、将来の生存性のバランスが取れたブロックチェーンの不完全なサンプルが以下に示されています:

  • イーサリアム- オリジナルのスマートコントラクトプラットフォーム
  • ZKロールアップ:ZKSync, スタークネット, ヘルメス - 高スループットなEthereumレイヤー2sですが、ネイティブでEVM互換ではありません
  • オプティミスティックロールアップ: アービトラム&Optimism- Ethereumレイヤー2s、EVM互換(楽観的およびZKロールアップの違いについて詳しくはこちらをご覧くださいここ)
  • ポリゴン- イーサリアムサイドチェーン
  • Solana- 高いスループット、安価な取引、高速なブロックタイム、しかしEVM(Rust)よりも学習が難しい
  • NEAR- レイヤー1ブロックチェーン、RustまたはAssemblyscriptでスマートコントラクトを記述できます
  • コスモス- 相互運用するブロックチェーンのエコシステム
  • Polkadot- ブロックチェーンベースのコンピューティングプラットフォームで、それ自体の上に構築されたブロックチェーン同士がトランザクションを実行し、相互につながったブロックチェーンのインターネットを作成することを可能にする
  • オーロラNEARプロトコル上で実行されているEVM互換チェーン。
  • ファントム- EVM互換レイヤー1
  • アバランチ- EVM互換レイヤー1
  • Celo - EVM互換性のあるレイヤー1、スマートフォンを持っている誰でも簡単に暗号通貨を送受信および保管できるように設計されています
  • テゾス- EVM非互換のレイヤー1、多くのNFTプロジェクトがそれを使用しています

ネットワークとやり取りする際には、RPCエンドポイントを使用する必要があります。

これを行う方法はいくつかあります。

  1. パブリック RPC エンドポイントにアクセスする
  2. 独自のノードを実行する
  3. サービスとしてノード・プロバイダーにアクセスする
  4. サービスとして分散ノードプロバイダにアクセスする

パブリックRPCエンドポイントは、ネットワークによって提供されることがよくありますが、ほとんどの本番向けのdappsでは、本番向けには安定していないため、独自のエンドポイントを活用することが望ましいです。

RPCサービスプロバイダーは数多く存在し、以下はその一部です:

Web3 / 分散型ソリューションもあります。Pocket Networkそれは注目を集めているようです。

これらのオプションのいずれかは、おそらくネットワークと直接やり取りするのに適した選択肢です。

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

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

  • ハードハット(JavaScript)はより新しいオプションですが、ますます人気が高まっています。彼らのドキュメントは素晴らしく、ツールと開発者の経験は磨かれており、これは私が個人的にDappsを構築するために使用しているものです。
  • Truffle(JavaScript)は、EVM上でアプリケーションを構築および開発するためのツール群です。成熟し、実戦を経験し、十分に文書化されています。長い間存在しており、多くの開発者が使用しています。
  • ファウンドリーは、Paradigmの新しいSolidity開発環境であり、多くの可能性を示しています。主な傑出した点は、Solidityでテストを書く機能、ファジングのサポート、そしてスピード(Rustで書かれています)です。私はそれについて別の紹介を書きましたここ.
  • ブラウニーSolidity / EVM開発のためのスマートコントラクトの開発およびテストフレームワークは、Pythonベースです。

Solana開発の場合、アンカー新しい開発者の入り口として急速になっています。それは、Solanaプログラムのスキャフォールディング、構築、テストのためのCLIを提供し、フロントエンドの構築に使用できるクライアントライブラリも提供しています。また、SolanaやRust開発を始める際に開発者がしばしば直面する複雑さを抽象化するDSLも含まれています。

ファイルストレージ

web3で画像、動画、その他のファイルをどこに保存しますか?チェーン上にそれほど大きなデータを保存することは通常費用がかかりすぎるため、そこに保存することは避けたいと思うでしょう。

代わりに、われわれは数種類のファイルストレージプロトコルのうちの1つを使用することができます。

  • IPFS-ピア・ツー・ピア・ファイルシステムプロトコル
    • 利点:信頼性があり、大規模なエコシステムで十分に文書化されています
    • 欠点:データがピン留めされていない場合、失われる可能性があります
  • アーウィーブ- データを永久に保存し、1回の取引手数料を支払うことができます。私はArweaveのファンで、それについてブログ投稿をしましたここ
  • Filecoin- Protocol Labsが構築したIPFSと同じチームから、持続的なデータストレージシステムを提供するために設計されたプロトコルです。a handful of ways開発者がFilecoin上に構築するための、web3.storageそれはかなり素敵です。
  • Skynet- まだ本番で使用していませんが、試してみましたが、うまく機能するようです。APIここ見た目は素晴らしいです。データがどのくらい永続化されるか、Skynetが他のプロトコルとの相互運用性を持っているかなど、質問があります。

オフチェーンデータプロトコル

ファイルストレージやオンチェーンストレージに加えて、オフチェーンでデータを保存する必要があるかもしれません。これらの種類のソリューションは、従来のテックスタックでデータベースを使用する方法と同様に使用するかもしれませんが、代わりにそれらは分散型ネットワーク上のn個のノードに複製されるため、(少なくとも理論上は)より信頼性が高くなります。

いくつかのオプションがあります:

  • セラミックネットワーク- 分散型でオープンソースのプラットフォームで、データの作成、ホスティング、共有ができます。Ceramicには後で詳しく説明する素敵なアイデンティティプロトコルもあります。現時点でおそらく私のお気に入りのオフチェーンストレージソリューションです。Here’sかなり良いデモ。
  • テキスタイルThreadDB- IPFSおよびLibp2p上に構築されたマルチパーティーデータベース。 正しく理解している場合、現在大規模なAPI変更が行われている可能性があります。 試してみましたが、ある程度の可能性を示していますが、ドキュメントとDXには改善の余地があります。
  • GunDB- 分散型のピア・ツー・ピア・データベース。Gunはかなり前から存在しており、いくつかのかなり興味深いアプリケーションそれで建てられました。

成熟度の観点から、オフチェーンストレージソリューションのエコシステムは、一部の開発者が望むよりも高度なユースケースを構築するために必要な水準にはまだ達していないというのが私の考えです。ここでのいくつかの課題は、リアルタイムデータ、競合検出と競合解決、書き込み認証、ドキュメンテーション、そして一般的な開発者の経験です。

ブロックチェーンプロトコルとオフチェーンデータソリューションの統合は、完全に分散型のプロトコルスタックを実現する前にクリアする必要がある最後の大きな障害の1つです。これにより、あらゆる種類のアプリケーションをサポートできるようになります。

API (indexing & querying)

私たちがブロックチェーンとデータベースを使った伝統的なテックスタックとのやり取りや構築方法には多くの違いがあります。ブロックチェーンでは、データは他のアプリケーションやフロントエンドから直接効率的かつ簡単に消費される形式で保存されていません。

ブロックチェーンは書き込み操作に最適化されています。しばしば秒間取引、ブロック時間、および取引コストを中心に起こる革新を耳にします。ブロックチェーンデータは時間の経過とともにブロックに書き込まれ、基本的な読み取り操作以外は不可能です。

ほとんどのアプリケーションでは、関係データ、ソート、フィルタリング、フルテキスト検索、ページネーションなどの機能が必要です。これらを実現するためには、データを効率的に取得するためにインデックス化および整理する必要があります。

従来、それは中央集権的なテックスタックでデータベースが行う作業ですが、その索引付けレイヤーはweb3スタックには存在しませんでした。

ザ・グラフこれは、ブロックチェーンデータの索引化およびクエリ処理のためのプロトコルであり、このプロセスを大幅に容易にし、そのための分散型ソリューションを提供しています。誰でも、サブグラフと呼ばれるオープンなGraphQL APIを構築および公開することができ、ブロックチェーンデータを簡単にクエリできます。

The Graphについてもっと学ぶには、ドキュメントをチェックしてくださいここまたは私のチュートリアルここ.

アイデンティティ

Identityは、web3で完全に異なるパラダイムです。web2では、認証はほとんど常にユーザーの個人情報に基づいています。この情報は通常、フォームを介して収集されるか、ユーザーにアプリケーションへのアクセスと引き換えに提供するよう求めるOAuthプロバイダーを介して収集されます。

web3では、アイデンティティは完全にウォレットという考えを中心に展開されます。公開鍵暗号方式.

「ウォレット」という名前はその目的を果たしていますが、Web3に新しく参加した人々にとっては、認証とアイデンティティに関連する用語が混乱を招くと感じています。将来的には、ウォレットが財務だけでなくアイデンティティや信用の側面を組み合わせていることを伝える別の方法を見つけることができればと願っています。

開発者として、ユーザーのウォレットやアドレスに様々な方法でアクセスしてやり取りする方法を理解する必要があります。

非常に基本的なレベルで(非常に一般的な要件でもあるが)、ユーザーのウォレットへのアクセスをリクエストしたい場合があります。これを行うためには、通常、ユーザーのウォレットにウィンドウコンテキスト(Webブラウザ)でアクセスしたり、何かを使用したりします。ウォレット接続またはSolanaのウォレットアダプター.

例えば、Ethereumウォレットが利用可能な場合、window.ethereumにアクセスできます。Solana(window.solana)、Arweave(window.arweaveWallet)なども同様です。WalletConnectは、モバイルWebやReact Nativeに適しており、ユーザーがデバイスから直接モバイルウォレットを使用して承認することを可能にします。

認証を自分で処理したい場合は、ユーザーにトランザクションにサインさせてから、どこかでデコードしてユーザーを認証することができますが、通常はサーバーが必要です。ここは、EVMウォレットを使用した場合にどのように見えるかの例です。ここSolana / Phantomでこれを行う方法の例です。

分散化された方法でユーザープロファイルを管理することはどうですか?セラミックネットワーク最も堅牢なプロトコルとツールスイートを提供しており、分散型アイデンティティを管理するための。最近リリースされましたブログ投稿最新の更新のいくつかを概説し、すべてのツールがどのように連携するかに関するいくつかのガイドラインを提供します。私はそこから始めて、それから探索します彼らのドキュメント始める方法を理解し、私のサンプルプロジェクトをチェックすることを検討してみてくださいここCeramicを使用するself.id.

ユーザーの取得をしたい場合は、ENSテキストレコード、ENSJSライブラリはユーザーデータを取得するための素敵なAPIを提供しています。

const ens = new ENS({ provider, ensAddress: getEnsAddress(‘1’) })

const content = await ens.name('sha.eth').getText('avatar')

SpruceIDまた、約束されているように見えますが、まだ試していません。

セラミックとスプルース両方とも実装するW3C DIDspecificiation、それ自体もWeb3の構築ブロックとして考えるものです。 と言っても、DIDの中央集権的な実装は、仕様が達成しようとしているアイデアに反しています。

クライアント

JavaScriptフレームワークに関しては、クライアントサイドのブロックチェーンSDKはほとんどフレームワークに依存していないため、好きなものを使用して構築することができます。 とは言っても、Reactで構築されたプロジェクトや例が圧倒的に多数あります。 他にも、Gate.ioなどの数少ないライブラリもあります。SolanaウォレットアダプターReactに追加のユーティリティを提供するものがあるので、Reactの学習または理解はおそらく賢明な選択肢だと言えるでしょう。

EthereumのクライアントサイドSDKには、web3.jsそしてethers.js私にとって、Ethersの方がアクセスしやすく、ドキュメントも優れていますが、web3.jsの方が長く存在しています。

Solanaでは、おそらく以下で作業することになります @solana/web3.jsおよび/またはアンカー. Anchorクライアントライブラリを見つけたので、とりあえずSolanaプログラムの構築に使用しています。とにかくAnchorフレームワークを使用しているので、理解するのがはるかに簡単であるとわかりました@solana/web3.js.

オラクル

オラクルにより、開発者はスマートコントラクト内から現実世界のデータや外部システムを読み取ることができます。

例えば、ほとんどの金融アプリケーションは、オフチェーンで起こる実世界のデータやイベントの知識を必要とするため、OraclesはDeFiにおいて特に重要です。

Chainlinkブロックチェーン技術固有のセキュリティおよび信頼性保証を維持しながら、リアルワールドデータへのアクセスとオフチェーン計算を可能にするOracleです。

フラックス経済的に安全なデータフィードへのスマートコントラクトへのアクセスを提供するクロスチェーンオラクルです。

その他のプロトコル

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

ライブピアは分散型ビデオストリーミングネットワークです。70,000以上のGPUがネットワーク上で稼働しており、成熟し広く利用されています。

まとめ

この投稿は、私が学び、実験し、web3で構築する開発者からのフィードバックを収集する際に、私が追いつく生きたドキュメントになります。

もしここで見逃している何かについてフィードバックやアイデアがあれば、お知らせください。開発者が参加して活発に活動している様子を見るのはとてもexcitingです。インフラがまだ進化中ではありますが、大企業に権力とコントロールを与えることなく、人々が調整できる本当に分散化されたプロトコルやアプリケーションを構築するビジョンは重要です。このビジョンを実現することに近づいています。

免責事項:

  1. この記事は[から転載されましたedgeandnode (エッジ アンド ノード)]. すべての著作権は元の著者に帰属します [Nader Dabit].この転載に異議がある場合は、Gate Learnチームがすぐに対応します。
  2. 責任の免責事項:この記事に表される意見は著者個人のものであり、投資アドバイスを構成するものではありません。
  3. 他の言語への記事の翻訳は Gate Learn チームによって行われます。特記されていない限り、翻訳された記事のコピー、配布、または盗用は禁止されています。

web3スタックの定義

中級1/8/2024, 2:50:04 AM
この記事では、ブロックチェーンにおけるWeb3の適用と開発について探っています。

この「Building on web3」の次のセグメントでは、Edge&Nodeの開発者関係エンジニアであるNader Dabitが、web3スタックを拡張し、開発者がweb3上で構築するさまざまな側面を概念化する方法について詳しく説明します。


私は10年ほどの間、伝統的なフルスタック開発者でしたが、2021年4月にWeb3に移行しました。これらの新しい技術やアイデアに没頭する中で、最初に知りたかったのは「Web3スタックとは何か?」でした。

従来のWebやモバイルアプリケーションを構築する際、私はしばしば仕事を終わらせるためにわずかな構築ブロックに頼ることがあります。

  1. API / app サーバー(REST または GraphQL)
  2. 認証レイヤー(管理されたものまたは手動で作成されたもの)
  3. データベース
  4. クライアントサイドのフレームワーク、プラットフォーム、およびライブラリ
  5. ファイルストレージ

これらのコアコンポーネントを使用すると、私は、私が望むほとんどの種類のアプリケーションを構築したり、少なくともそのほとんどを手に入れたりできます。では、web3ではどのように見えましたか?

結局、これに対する答えはそう簡単ではないことがわかりました。

  1. パラダイムは多くの面で完全に異なります
  2. Web3のツール、技術、およびエコシステムは、Web2よりも成熟度が低いです

私にとっても、Web2の世界と同じように問題に取り組んでいたので、Web3アプリケーションの立ち上げと構築が理解しづらかったです。

働いたり、調査したり、実験したり、物を構築したりして過ごした過去8カ月ほどのことについて、私が学んだことを共有したいと思います。

web3とは何ですか?

web3スタックを定義する前に、web3を定義しようとしてみましょう。尋ねる相手によって無数の定義がありますが、私にとっては、これdefinition spot on:

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

With this decentralized tech stack, we can begin building out decentralized applications which have their own set implications and characteristics.

web3が可能にする特性のいくつかは次のとおりです:

  • 分散型ウェブインフラストラクチャ
  • 所有権(データ、コンテンツ、およびプラットフォームの所有権)
  • ネイティブデジタル支払い
  • 自己主権身元
  • 分散、信頼できない、& 頑丈なインフラストラクチャ
  • オープンで公開されたコンポーザブルなバックエンド

分散型技術スタック上に構築されたアプリケーションの中には、以前のものに取って代わるものもありますが、ブロックチェーンによって可能になった新しいプリミティブによって、アプリの新しいパラダイムも可能になりました。

ネイティブデジタル支払いと公共のバックエンドインフラストラクチャー - 機械学習、モバイルデバイス、仮想現実、その他の技術的原始要素、プラットフォーム、およびビルディングブロックのような - これにより、想像されていない新しいタイプのアプリケーションが構築されるようになります。

これはすべてがWeb3に置き換えられることを意味するということですか?必ずしもそうとは限りません。分散型テックスタック上に構築することが特定の種類のアプリケーションにとってははるかに良い選択であると考えていますが、ほとんどの技術的な決定と同様に、それはあなたが構築しているものに依存します。

さあ、Web3スタックに入りましょう。このカテゴリに分かれたセットについて見ていきます。

  • ブロックチェーン
  • ブロックチェーン開発環境
  • ファイルストレージ
  • オフチェーンデータプロトコル
  • API(インデックス化&クエリ)
  • アイデンティティ
  • クライアント(フレームワークとライブラリ)
  • オラクル
  • その他のプロトコル

ブロックチェーン

構築するために選択できるブロックチェーンは数え切れないほどあります。 「最高」というものは1つではなく、代わりにそれらの間のさまざまなトレードオフを考慮するべきです。

新しいことを学ぶ際に私にとって重要なことの1つは、適用の考え方ですパレートの法則私が学んでいること、つまり、その時間と努力を最大限に活用する最も効率的な方法は何か。この考えに従うことで、新しいことを学ぶ際に最も多くのトラクションと勢いを得ることができます。

ブロックチェーンの世界で、Solidityと学ぶことEVM(またはEthereum仮想マシン)は、ブロックチェーン開発者としてスタートする際に最適な選択肢かもしれません。このスキルセット(およびテックスタック)を使用すると、Ethereumだけでなく、他のEthereum Layer 2、サイドチェーン、さらにAvalanche、Fantom、Celoなどの他のブロックチェーンを構築できます。

言うまでもなく、Rustはブロックチェーンの世界でますます人気を集めつつあり、Solana、NEAR、Polkadotなどが第一級のRustサポートを提供しています。おそらく、どちらを学んでも間違いはないと思いますが、初心者にとっては、今日誰かが私に尋ねるなら、Solidityの方がまだ良い選択肢だと言えます。

そのアドバイスを超えて、技術、ユーティリティ、コミュニティ、モメンタム、将来の生存性のバランスが取れたブロックチェーンの不完全なサンプルが以下に示されています:

  • イーサリアム- オリジナルのスマートコントラクトプラットフォーム
  • ZKロールアップ:ZKSync, スタークネット, ヘルメス - 高スループットなEthereumレイヤー2sですが、ネイティブでEVM互換ではありません
  • オプティミスティックロールアップ: アービトラム&Optimism- Ethereumレイヤー2s、EVM互換(楽観的およびZKロールアップの違いについて詳しくはこちらをご覧くださいここ)
  • ポリゴン- イーサリアムサイドチェーン
  • Solana- 高いスループット、安価な取引、高速なブロックタイム、しかしEVM(Rust)よりも学習が難しい
  • NEAR- レイヤー1ブロックチェーン、RustまたはAssemblyscriptでスマートコントラクトを記述できます
  • コスモス- 相互運用するブロックチェーンのエコシステム
  • Polkadot- ブロックチェーンベースのコンピューティングプラットフォームで、それ自体の上に構築されたブロックチェーン同士がトランザクションを実行し、相互につながったブロックチェーンのインターネットを作成することを可能にする
  • オーロラNEARプロトコル上で実行されているEVM互換チェーン。
  • ファントム- EVM互換レイヤー1
  • アバランチ- EVM互換レイヤー1
  • Celo - EVM互換性のあるレイヤー1、スマートフォンを持っている誰でも簡単に暗号通貨を送受信および保管できるように設計されています
  • テゾス- EVM非互換のレイヤー1、多くのNFTプロジェクトがそれを使用しています

ネットワークとやり取りする際には、RPCエンドポイントを使用する必要があります。

これを行う方法はいくつかあります。

  1. パブリック RPC エンドポイントにアクセスする
  2. 独自のノードを実行する
  3. サービスとしてノード・プロバイダーにアクセスする
  4. サービスとして分散ノードプロバイダにアクセスする

パブリックRPCエンドポイントは、ネットワークによって提供されることがよくありますが、ほとんどの本番向けのdappsでは、本番向けには安定していないため、独自のエンドポイントを活用することが望ましいです。

RPCサービスプロバイダーは数多く存在し、以下はその一部です:

Web3 / 分散型ソリューションもあります。Pocket Networkそれは注目を集めているようです。

これらのオプションのいずれかは、おそらくネットワークと直接やり取りするのに適した選択肢です。

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

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

  • ハードハット(JavaScript)はより新しいオプションですが、ますます人気が高まっています。彼らのドキュメントは素晴らしく、ツールと開発者の経験は磨かれており、これは私が個人的にDappsを構築するために使用しているものです。
  • Truffle(JavaScript)は、EVM上でアプリケーションを構築および開発するためのツール群です。成熟し、実戦を経験し、十分に文書化されています。長い間存在しており、多くの開発者が使用しています。
  • ファウンドリーは、Paradigmの新しいSolidity開発環境であり、多くの可能性を示しています。主な傑出した点は、Solidityでテストを書く機能、ファジングのサポート、そしてスピード(Rustで書かれています)です。私はそれについて別の紹介を書きましたここ.
  • ブラウニーSolidity / EVM開発のためのスマートコントラクトの開発およびテストフレームワークは、Pythonベースです。

Solana開発の場合、アンカー新しい開発者の入り口として急速になっています。それは、Solanaプログラムのスキャフォールディング、構築、テストのためのCLIを提供し、フロントエンドの構築に使用できるクライアントライブラリも提供しています。また、SolanaやRust開発を始める際に開発者がしばしば直面する複雑さを抽象化するDSLも含まれています。

ファイルストレージ

web3で画像、動画、その他のファイルをどこに保存しますか?チェーン上にそれほど大きなデータを保存することは通常費用がかかりすぎるため、そこに保存することは避けたいと思うでしょう。

代わりに、われわれは数種類のファイルストレージプロトコルのうちの1つを使用することができます。

  • IPFS-ピア・ツー・ピア・ファイルシステムプロトコル
    • 利点:信頼性があり、大規模なエコシステムで十分に文書化されています
    • 欠点:データがピン留めされていない場合、失われる可能性があります
  • アーウィーブ- データを永久に保存し、1回の取引手数料を支払うことができます。私はArweaveのファンで、それについてブログ投稿をしましたここ
  • Filecoin- Protocol Labsが構築したIPFSと同じチームから、持続的なデータストレージシステムを提供するために設計されたプロトコルです。a handful of ways開発者がFilecoin上に構築するための、web3.storageそれはかなり素敵です。
  • Skynet- まだ本番で使用していませんが、試してみましたが、うまく機能するようです。APIここ見た目は素晴らしいです。データがどのくらい永続化されるか、Skynetが他のプロトコルとの相互運用性を持っているかなど、質問があります。

オフチェーンデータプロトコル

ファイルストレージやオンチェーンストレージに加えて、オフチェーンでデータを保存する必要があるかもしれません。これらの種類のソリューションは、従来のテックスタックでデータベースを使用する方法と同様に使用するかもしれませんが、代わりにそれらは分散型ネットワーク上のn個のノードに複製されるため、(少なくとも理論上は)より信頼性が高くなります。

いくつかのオプションがあります:

  • セラミックネットワーク- 分散型でオープンソースのプラットフォームで、データの作成、ホスティング、共有ができます。Ceramicには後で詳しく説明する素敵なアイデンティティプロトコルもあります。現時点でおそらく私のお気に入りのオフチェーンストレージソリューションです。Here’sかなり良いデモ。
  • テキスタイルThreadDB- IPFSおよびLibp2p上に構築されたマルチパーティーデータベース。 正しく理解している場合、現在大規模なAPI変更が行われている可能性があります。 試してみましたが、ある程度の可能性を示していますが、ドキュメントとDXには改善の余地があります。
  • GunDB- 分散型のピア・ツー・ピア・データベース。Gunはかなり前から存在しており、いくつかのかなり興味深いアプリケーションそれで建てられました。

成熟度の観点から、オフチェーンストレージソリューションのエコシステムは、一部の開発者が望むよりも高度なユースケースを構築するために必要な水準にはまだ達していないというのが私の考えです。ここでのいくつかの課題は、リアルタイムデータ、競合検出と競合解決、書き込み認証、ドキュメンテーション、そして一般的な開発者の経験です。

ブロックチェーンプロトコルとオフチェーンデータソリューションの統合は、完全に分散型のプロトコルスタックを実現する前にクリアする必要がある最後の大きな障害の1つです。これにより、あらゆる種類のアプリケーションをサポートできるようになります。

API (indexing & querying)

私たちがブロックチェーンとデータベースを使った伝統的なテックスタックとのやり取りや構築方法には多くの違いがあります。ブロックチェーンでは、データは他のアプリケーションやフロントエンドから直接効率的かつ簡単に消費される形式で保存されていません。

ブロックチェーンは書き込み操作に最適化されています。しばしば秒間取引、ブロック時間、および取引コストを中心に起こる革新を耳にします。ブロックチェーンデータは時間の経過とともにブロックに書き込まれ、基本的な読み取り操作以外は不可能です。

ほとんどのアプリケーションでは、関係データ、ソート、フィルタリング、フルテキスト検索、ページネーションなどの機能が必要です。これらを実現するためには、データを効率的に取得するためにインデックス化および整理する必要があります。

従来、それは中央集権的なテックスタックでデータベースが行う作業ですが、その索引付けレイヤーはweb3スタックには存在しませんでした。

ザ・グラフこれは、ブロックチェーンデータの索引化およびクエリ処理のためのプロトコルであり、このプロセスを大幅に容易にし、そのための分散型ソリューションを提供しています。誰でも、サブグラフと呼ばれるオープンなGraphQL APIを構築および公開することができ、ブロックチェーンデータを簡単にクエリできます。

The Graphについてもっと学ぶには、ドキュメントをチェックしてくださいここまたは私のチュートリアルここ.

アイデンティティ

Identityは、web3で完全に異なるパラダイムです。web2では、認証はほとんど常にユーザーの個人情報に基づいています。この情報は通常、フォームを介して収集されるか、ユーザーにアプリケーションへのアクセスと引き換えに提供するよう求めるOAuthプロバイダーを介して収集されます。

web3では、アイデンティティは完全にウォレットという考えを中心に展開されます。公開鍵暗号方式.

「ウォレット」という名前はその目的を果たしていますが、Web3に新しく参加した人々にとっては、認証とアイデンティティに関連する用語が混乱を招くと感じています。将来的には、ウォレットが財務だけでなくアイデンティティや信用の側面を組み合わせていることを伝える別の方法を見つけることができればと願っています。

開発者として、ユーザーのウォレットやアドレスに様々な方法でアクセスしてやり取りする方法を理解する必要があります。

非常に基本的なレベルで(非常に一般的な要件でもあるが)、ユーザーのウォレットへのアクセスをリクエストしたい場合があります。これを行うためには、通常、ユーザーのウォレットにウィンドウコンテキスト(Webブラウザ)でアクセスしたり、何かを使用したりします。ウォレット接続またはSolanaのウォレットアダプター.

例えば、Ethereumウォレットが利用可能な場合、window.ethereumにアクセスできます。Solana(window.solana)、Arweave(window.arweaveWallet)なども同様です。WalletConnectは、モバイルWebやReact Nativeに適しており、ユーザーがデバイスから直接モバイルウォレットを使用して承認することを可能にします。

認証を自分で処理したい場合は、ユーザーにトランザクションにサインさせてから、どこかでデコードしてユーザーを認証することができますが、通常はサーバーが必要です。ここは、EVMウォレットを使用した場合にどのように見えるかの例です。ここSolana / Phantomでこれを行う方法の例です。

分散化された方法でユーザープロファイルを管理することはどうですか?セラミックネットワーク最も堅牢なプロトコルとツールスイートを提供しており、分散型アイデンティティを管理するための。最近リリースされましたブログ投稿最新の更新のいくつかを概説し、すべてのツールがどのように連携するかに関するいくつかのガイドラインを提供します。私はそこから始めて、それから探索します彼らのドキュメント始める方法を理解し、私のサンプルプロジェクトをチェックすることを検討してみてくださいここCeramicを使用するself.id.

ユーザーの取得をしたい場合は、ENSテキストレコード、ENSJSライブラリはユーザーデータを取得するための素敵なAPIを提供しています。

const ens = new ENS({ provider, ensAddress: getEnsAddress(‘1’) })

const content = await ens.name('sha.eth').getText('avatar')

SpruceIDまた、約束されているように見えますが、まだ試していません。

セラミックとスプルース両方とも実装するW3C DIDspecificiation、それ自体もWeb3の構築ブロックとして考えるものです。 と言っても、DIDの中央集権的な実装は、仕様が達成しようとしているアイデアに反しています。

クライアント

JavaScriptフレームワークに関しては、クライアントサイドのブロックチェーンSDKはほとんどフレームワークに依存していないため、好きなものを使用して構築することができます。 とは言っても、Reactで構築されたプロジェクトや例が圧倒的に多数あります。 他にも、Gate.ioなどの数少ないライブラリもあります。SolanaウォレットアダプターReactに追加のユーティリティを提供するものがあるので、Reactの学習または理解はおそらく賢明な選択肢だと言えるでしょう。

EthereumのクライアントサイドSDKには、web3.jsそしてethers.js私にとって、Ethersの方がアクセスしやすく、ドキュメントも優れていますが、web3.jsの方が長く存在しています。

Solanaでは、おそらく以下で作業することになります @solana/web3.jsおよび/またはアンカー. Anchorクライアントライブラリを見つけたので、とりあえずSolanaプログラムの構築に使用しています。とにかくAnchorフレームワークを使用しているので、理解するのがはるかに簡単であるとわかりました@solana/web3.js.

オラクル

オラクルにより、開発者はスマートコントラクト内から現実世界のデータや外部システムを読み取ることができます。

例えば、ほとんどの金融アプリケーションは、オフチェーンで起こる実世界のデータやイベントの知識を必要とするため、OraclesはDeFiにおいて特に重要です。

Chainlinkブロックチェーン技術固有のセキュリティおよび信頼性保証を維持しながら、リアルワールドデータへのアクセスとオフチェーン計算を可能にするOracleです。

フラックス経済的に安全なデータフィードへのスマートコントラクトへのアクセスを提供するクロスチェーンオラクルです。

その他のプロトコル

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

ライブピアは分散型ビデオストリーミングネットワークです。70,000以上のGPUがネットワーク上で稼働しており、成熟し広く利用されています。

まとめ

この投稿は、私が学び、実験し、web3で構築する開発者からのフィードバックを収集する際に、私が追いつく生きたドキュメントになります。

もしここで見逃している何かについてフィードバックやアイデアがあれば、お知らせください。開発者が参加して活発に活動している様子を見るのはとてもexcitingです。インフラがまだ進化中ではありますが、大企業に権力とコントロールを与えることなく、人々が調整できる本当に分散化されたプロトコルやアプリケーションを構築するビジョンは重要です。このビジョンを実現することに近づいています。

免責事項:

  1. この記事は[から転載されましたedgeandnode (エッジ アンド ノード)]. すべての著作権は元の著者に帰属します [Nader Dabit].この転載に異議がある場合は、Gate Learnチームがすぐに対応します。
  2. 責任の免責事項:この記事に表される意見は著者個人のものであり、投資アドバイスを構成するものではありません。
  3. 他の言語への記事の翻訳は Gate Learn チームによって行われます。特記されていない限り、翻訳された記事のコピー、配布、または盗用は禁止されています。
Lancez-vous
Inscrivez-vous et obtenez un bon de
100$
!