LoginSignup
1
0

web3開発者を目指すためのSolidity勉強方法

Posted at

スマートコントラクトの特徴

  • Solidityによるスマートコントラクトは「サーバーサイドの開発」というイメージに近い。ただし従来のサーバーサイド開発と大きく異なるのは、自分たちで個別のサーバー(あるいはDB)を用意せず、Ethereumメインネットワーク(あるいは他の通貨のネットワーク)を世界で唯一のサーバーとして共有する。

💡 ReduxやVuex等のFLUXに基づいたState Management(状態管理)の経験がある方には、Single State Of Truth(「信頼できる唯一の情報源」)という言い方が分かりやすい。EthereumメインネットワークをSingle State Of Truthとするのがスマートコントラクト開発。

  • **スマートコントラクトは一度Deployしたら修正できない。**ブロックチェーン的な特徴と言える。例えばスマートコントラクトにセキュリティ上の問題点があった場合、新しくスマートコントラクトをDeployし直すしかない
  • スマートコントラクト上でコードを実行するのには費用がかかる。上記で紹介したように全員で一つのサーバーを共有するので、余計な処理やデータ転送でネットワークが重くなるのを避けるためにこのようにコードの実行に課金されるように設計された。つまり、メモリ単位でのコードの最適化が求められる(冗長なコードを書くとユーザーに余計なお金を払わせることになってしまう)。昨今の可読性を重視してフロントエンド的な書き方とは対照的で、むしろCやJavaのような古い言語の書き方や競プロの書き方に近い
  • Solidityはどんな言語に似ていると言えるか。SolidtiyはJavaScriptをベースに開発され、大元の記法は共通している。しかし、厳格な静的言語であるSolidityと、動的言語であるJavaScriptでは埋められらない隔たりがあるというのが個人的な所感。むしろTypeScriptに近いと言った方が正確

◎「SolidtiyはJavaScriptを元に開発された」
△「正:「SolidtiyはJavaScriptに似た言語である」
◯「SolidityはTypeScriptの経験があるエンジニアと親和性が高い」

求める能力的な要件

必須要件

  • プログラミングやComputerScienceのバックグラウンドがある

個人的な所管ですが、Pythonで競プロをやっていた方や、研究の手段としてプログラミングをしていた方は親和性が高いと思います。

  • Solidityで「セキュアかつある程度最適化された」スマートコントラクトが実装できる

  • 英語で情報集することに抵抗がない(ある程度は英語での情報収集が必須になるため。ただし、研究で使用するような英語よりは遥かに容易)

望ましい要件

  • Reactによるフロントエンド開発の経験(業務レベルでなくて良い)

Reactのキャッチアップについては現状では必要ないですが、希望者には別途ご案内します。僕がReact入門の電子書籍出そうと思っているくらいなので、最短のフローをご案内できます

  • Moralisを利用してNFTマーケットプレイスの実装ができる
    • Moralisの使い方
    • MoralisのDB設計

Moralisとは簡単に言うとDapps開発を簡易化するためのサービスです(Web3におけるFirebaseのようなものです)。
開発の工数を大幅に削減できます。
ただし、スマートコントラクトの実装はどのみち必須です。

具体的な実装予定の機能

NFTマーケットプレイスを開発します。

リリースに必要な最小限度の機能(いわゆるMVP)から始めて、ユーザー間でのC2Cな二次流通機能、ボンディングカーブ等の高度な機能の実装を予定しています。

初期段階で必須

  • NFTのMINT
  • NFTのTransfer
  • NFTの売買(※Transferとほぼ同じ)

将来的に実装したい機能

  • NFTの価格のボンディングカーブ
  • Programable NFT

学習リソース

まずやるべきこと

CryptoZombie

市販の書籍ではSolidityの文法・記法そのものに対して十分な紙幅が割けられていない。Solidityの公式ドキュメントでも推奨されている教材で実装をハンズオンで体験できる。

https://baasinfo.net/?p=3791

書籍の紹介

ブロックチェーン実践入門: ビットコインからイーサリアム、DApp開発まで

「そもそもブロックチェーンとは?ETHの仕様とは」が気になる方向け。ブロックチェーンの基礎やETHの仕様について技術的な側面からインプットしておくとSolidityやDapps開発等の学習効率も良い。

SolidityとEthereumによる実践スマートコントラクト開発 ―Truffle Suiteを用いた開発の基礎からデプロイまで』(オライリー)

題名ほどスマートコントラクトについて掘り下げていない。

マスタリングイーサリアム』(オライリー)

ETHの著者による書籍。有名だが、難解でおすすめできない。

公式ドキュメント

常に公式ドキュメントは読むべき。
公式ドキュメントを理解するためにその他の教材や資料が存在する。

Solidity公式ドキュメント

Solidity公式ドキュメント(和訳)(ただし、和訳版は多少バージョンが古いです)

Web3.js公式ドキュメント

OpenZeppelin公式ドキュメント

参考資料

SolidityとEthereumによる実践スマートコントラクト開発 ―Truffle Suiteを用いた開発の基礎からデプロイまで
スマートコントラクトの仕組みと法律
図解即戦力 暗号と認証のしくみと理論がこれ1冊でしっかりわかる教科書

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0