Web3エンジニアを目指す人の最初のZenn
ターゲット
web3やりたいけど何もわかりません!
設計思想
web3(ブロックチェーンを含めた開発)の開発における設計思想は"スマコンファースト"だと考えています(ユーザーが第一なのは大前提として)。スマコンの負担はなるべく減らしつつ、自立はできるようなちょうど良いバランスでフロントとバックエンドを組み上げていく必要があります。
具体的な開発指針
スマコンでは絶対に変わってはいけないようなコアなDBとコアなロジックだけを持たせるように目指します。またスマコンになるべく不備がないように外部のライブラリを上手く使うことも重要です。(一般的なopenzeppelinやセキュリティ周りのsolmateなど)、根本的なコード量を削る作業が大切です。(省略ではなく)
個人的な小規模開発の便利サービス
Remix
Solidityのブラウザ開発環境
Solidityをブラウザで簡単に実行できるサービスです。テストネットやメインネットにデプロイもできるし、abiさえあれば他のスマコンの関数をGUIから叩くことができるので、めちゃくちゃ便利です。
Hardhat
Solidityのローカル開発環境
Solidityでローカル開発、テスト、本番環境デプロイを行うことができるサービス。Remixでの開発に慣れてきて、ローカルで開発したいなと思い始めたら使うと良いと思います。(テスティングフレームワークのmochaとアサーションライブラリのchaiが裏で動いて)testも簡単にできます。
コンパイルの仕方
npx hardhat compile
テストの仕方
npx hardhat test
HardhatはチュートリアルがわかりやすいからRemixからローカルに移動したい人は是非触ってみてほしい
公式ドキュメント
Alchemy
NFTのあらゆる情報を拾えるAPIサービス
あるユーザーの所持してるNFTを一覧で取得したかったり、特定のスマートコントラクトにロックしてるNFTを取得したいときに使うサービス。openseaなどの大型NFTマーケットプレイスでも利用されてるらしい。使い方はSDKやREST APIなど複数の方法があるので作りたいサービスに合わせて使ってもらえたら嬉しい。
公式ドキュメント
The Graph
スマコンのイベントの保持するAPIサービス
スマートコントラクトの状況(Event)を記録してフロント側に表示するために使うサービスです。スマコンのストレージに情報を保持したくない場合や、しづらい場合に代わりにEventを発行して、オフチェーンで管理してフロントに表示します。web3において情報をオンチェーンに載せるか、オフチェーンに載せるかは腕の見せ所だと思います。
公式ドキュメント
Discussion