アルゴリズムとかオーダーとか

仕事で勉強したことなどをまとめてます

ganache-cliのデータを永続化する

今回はganache-cliのデータをファイルに吐き出して永続化する方法について説明します。
ganache-cliのデータを永続化できるとDappsのサンプルを提供する時にセットアップ済みのnodeもセットで提供できるため、非常に有用ですよね。
0x protocolでもganache-cliのsnapshotを提供しており、すぐにsampleを動かせるようになっています。
https://0xproject.com/wiki#Ganache-Setup-Guide0xproject.com

それでは早速、ganache-cliでデータを永続化する方法を説明します。と言っても非常に簡単だったので、さらに応用してevm_snapshotも利用した復元ポイントを持ったdumpデータの作成方法も合わせて説明したいと思います。

続きを読む

IntelliJ Idea(Ultimate)からmochaのdebuggerを使う

今回はタイトルの通り、IntelliJ Ideaを使ったmochaのdebuggerを使う環境構築の方法を紹介します。
いい加減、mochaのtestを書くためにconsole.logで変数を追っていくのに疲れたので、重い腰をあげてdebugger環境を作ってみました。

結論としては非常に簡単に作れました。なお、Ultimate版のみ対応とのことです。

では以下で構築方法を簡単に説明します。

続きを読む

Solidity Assembly入門 ~ Function Selector ~

今回の記事はSolidity Assembly入門という連載記事の第5回目です。

この連載ではSolidityのコードをコンパイルした時に生成されるopcodeについて解説していきます。
この連載ではSolidityのコードをデバッグするのに必要な知識を得られることを目的としています。
前回の記事はこちら。
y-nakajo.hatenablog.com

第5回目の今回は、Solidityの関数をEVM上でどのように表現されているのかについて説明します。公式ドキュメントはこちらです。
Solidity Document#Function Selector
Solidity Document#Functions

続きを読む

Node.jsのtestでsinonを使ってspyする

今回の記事はNode.jsのTest用ライブラリの紹介です。
Node.jsでtestを書く時に今までmochaとchaiを使ってきました。今回はconsole.warnの呼び出しをspyしたくてどうやったらいいのか?を調べていた時にこのライブラリを発見しました。
sinonjs.org

ちょっと触った感じ、非常に使いやすいmockupツールだと思います。以降はconsole.warnをspyすることを題材にして使い方を説明します。

続きを読む

debug_traceTransactionとprogram counterとsource mapping

y-nakajo.hatenablog.com
今回は上記の以前の記事で触れた、Ethereumのdebug機構について調べたことをまとめていきます。
Ethereumでは任意のtxをdebugするための機能が、またSolidityではbyte codeとソースファイルをmappingするための情報が提供されています。
今回はこれらの情報について説明します。

続きを読む