Hardhatを触り始めていきなりつまづいたエラーだったので、解決策と発生の流れについて自分なりに調べたことをまとめておく。
Hardhatの挙動についてはまだまだ浅学なので内容の正しさについてはご注意を。
- エラーの内容
- 解決方法
- 一番手っ取り早い方法
- 多分きれいな方法
- 発生手順
- 原因
Hardhatを触り始めていきなりつまづいたエラーだったので、解決策と発生の流れについて自分なりに調べたことをまとめておく。
Hardhatの挙動についてはまだまだ浅学なので内容の正しさについてはご注意を。
TruffleからHardhatに乗り換えたので、よく利用しているConsoleの使い方についてもまとめる。
あまりConsoleを直接叩いてEthereumとやりとりする人は見ない気もするが誰かの参考にでもなれば。
いちばんは自分用のメモ。
Hardhatの導入と基本的な使い方は以前の記事を参考に。
y-nakajo.hatenablog.com
今更ながらではあるが、2023年9月にConsensysよりTruffleの開発停止が発表された。
上記ブログでは、今後のSmartContractの開発環境はHardhatを利用するようにアナウンスされている。
自分も今までTruffleのみでHardhatは利用していなかったのでこれを機にHardhatの使い方の基本を学ぶ。
ここで取り扱うのはEthereumのSmartContractである。
Hardhat公式ブログのGuidesをやっていく。
hardhat.org
先日(ブログ記事執筆時だと一昨日) OpenZeppelinが主催するEthernaut CTFが開催されていました。
こちら、オンライン参加可能なので色々と時間もできたタイミングだしということで参加してみました。土日なので本当は近場にお出かけ予定でしたが、優勝賞金でMacBook買ってあげるからという必死の説得によって妻にも参加OKをもらいました。
最終的にはタイトルにある通り全然解けなかったです。
次に参加するためにメモとして参加した後の反省点を残そうと思います。
タイトルの通り、React + Metamask SDKで作成するDappsのチュートリアルを公開しました。
github.com
リッチなDappsを作る場合は、BuidleGuidl もありますが、リッチすぎて基本を押さえるのが難しいと思ったので自前で作ってみました。
内容は非常に簡単なERC20トークンを扱うDappsの作成チュートリアルです。Metamaskとそのほかもろもろの基本の使い方を抑えるのには十分かと思います。
EVMのMemoryは利用サイズに応じてgas costが増加する。具体的にどの程度の値になるのかを調べたので記事に残しておく。
なお、gas costの詳細な計算式は以下の公式サイトを参照
github.com
前回に引き続きSSZ(Simple Serialize)について解説する。今回はSSZのMerkleizationについてまとめる。
前回の記事はこちら。
y-nakajo.hatenablog.com
Merkleizationについては、引き続きSSZの仕様を参考にした。
github.com
Eth1.0ではPatricia Merkle Trieを採用していたが、sszではよりシンプルにするために、Binary Merkle Treeを採用した。
さらにhashアルゴリズムもより汎用性を高めるためにkeccak256ではなく、広く利用されているsha256を採用した。
また、SSZではSchema構造を維持したままMerkleizeされる。これにより、Schemaの一部のデータのみをProofと共に共有することが可能となっている。
例えば次に示すDepositDataスキーマをMerkleizeする場合は、下図のtreeが構成され、root hashが求まる。
class DepositData(Container): pubkey: BLSPubkey # (= Bytes48) withdrawal_credentials: Bytes32 amount: Gwei # (= Uint64) signature: BLSSignature # Signing over DepositMessage (= Bytes96)
以降、Merkleization方法の各ステップを詳しく解説する。