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

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

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するための情報が提供されています。
今回はこれらの情報について説明します。

続きを読む

sol-trace - truffleのtestでエラー行を表示する

今回はみんなが待ち望んでいたと思われる非常に便利なツールを紹介します。
それがこちら。sol-traceです!
github.com

Readme.mdを見て分かる通り、truffleのtestに組み込むことでrevertが発生した時に、エラーの対象のソースファイルと行数を表示してくれます!

ちなみに、上記のバージョンだとviewやpureなどのconstantな関数を呼び出した時には反応しなかったので、eth_callでも行数が表示されるように修正してPRを出しています!
github.com

以下、使い方を簡単に説明します。

続きを読む

OmiseGoのeWalletをRuby on Railsで利用する

OmiseGoのeWalletのv1.0.0-pre.1がリリースされました。今回の記事ではeWalletの構築とRuby on RailsからeWalletを利用する方法についてまとめます。
github.com

続きを読む

非中央集権的なPausableの提案

今回はこちらの記事を読んで思いついたSmartContractの紹介記事です。
btcnews.jp

今回、BancorはPausableを継承したSmartContractを作成していたことで、BNTに関してはすぐにpaused状態にして流出を防ぐことができました。
しかし、この処置に関しては上記の通り、中央集権的であり運営が絶対的なパワーを持っている事実は否めません。そこで今回はその問題を回避するためのDecentralizedPausableを作りましたのでその紹介をします。

続きを読む

Solidity Assembly入門 ~ 配列について storage/memory ~

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

第4回目の今回は、Solidityの配列について説明します。公式ドキュメントはこちらです。
Solidity Documentation / Arrays

続きを読む

コードから読み解くCasper FFG

github.com
Casper FFGの実装をVyperからSolidityに変換するProjectを実行していました。(一人で。。。)
今回はこの作業の中で理解したCasperの仕組みについてまとめていきます。
ちなみに、理解に合わせて疑問もでてきているのでその辺も合わせて書いていきたいと思います。

続きを読む