Solidity
今回は、Solidityのv0.6.5で追加されたImmutable keywordについて紹介します。 なお、v0.6.5は2020/04/06にリリースされております。執筆時点での最新バージョンはv0.6.8となっています。Immutable keywordについての公式の説明はこちらのブログを参照くださ…
今回の記事はSolidity Assembly入門という連載記事の第5回目です。この連載ではSolidityのコードをコンパイルした時に生成されるopcodeについて解説していきます。 この連載ではSolidityのコードをデバッグするのに必要な知識を得られることを目的としていま…
y-nakajo.hatenablog.com 今回は上記の以前の記事で触れた、Ethereumのdebug機構について調べたことをまとめていきます。 Ethereumでは任意のtxをdebugするための機能が、またSolidityではbyte codeとソースファイルをmappingするための情報が提供されていま…
今回はみんなが待ち望んでいたと思われる非常に便利なツールを紹介します。 それがこちら。sol-traceです! github.comReadme.mdを見て分かる通り、truffleのtestに組み込むことでrevertが発生した時に、エラーの対象のソースファイルと行数を表示してくれま…
今回はこちらの記事を読んで思いついたSmartContractの紹介記事です。 btcnews.jp今回、BancorはPausableを継承したSmartContractを作成していたことで、BNTに関してはすぐにpaused状態にして流出を防ぐことができました。 しかし、この処置に関しては上記の…
今回の記事はSolidity Assembly入門という連載記事の第4回目です。 この連載ではSolidityのコードをコンパイルした時に生成されるopcodeについて解説していきます。 この連載ではSolidityのコードをデバッグするのに必要な知識を得られることを目的としてい…
最近は暇があればcasper FFGのSmart ContractをvyperからSolidityに変換しています。 github.com作業をしていくにあたり、vyperのコードからSolidityのコードへ変換する際のtipsが思ったよりも溜まってきたので、忘れないうちに記事にしてまとめておきます。…
今回の記事はSolidity Assembly入門という連載記事の第3回目です。 この連載ではSolidityのコードをコンパイルした時に生成されるopcodeについて解説していきます。 この連載ではSolidityのコードをデバッグするのに必要な知識を得られることを目的としてい…
今回の記事はSolidity Assembly入門という連載記事の第2回目です。 この連載ではSolidityのコードをコンパイルした時に生成されるopcodeについて解説していきます。 この連載ではSolidityのコードをデバッグするのに必要な知識を得られることを目的としてい…
今回の記事はSolidity Assembly入門という連載記事の第1回目です。 この連載ではSolidityのコードをコンパイルした時に生成されるopcodeについて解説していきます。 この連載ではSolidityのコードをデバッグするのに必要な知識を得られることを目的としてい…
Solidityをコンパイルして生成されたopcodes=SmartContractが、Contract CreationのときにEthereumのStateDBに保存されるまでの仕組みがどうなっているのか興味が湧いたので調べてみました。というわけで、今回の記事はContract Creationの仕組みについてま…
自分がEthereumを学習したときの経験を元にゼロからEthereumを勉強するためのロードマップをまとめてみました。 先人たちは大体この流れで学習を進めていったと思います。
先日セキュリティーアラートが上がり、多くの取引所が一時ERC20準拠トークンの取引を停止したという報道とともに話題になった、BatchOverFlowについて今更な感じですが自分なりにまとめてみます。今回の問題についてはGunosyの@yamarkzさんがいち早くまとめ…
Ethereumではstorageにデータを格納する場合、32byteごとにgas代がかかります。この32byteの境界を意識することでガス代が節約できます。 という話をたまに聞くのですが、実体験として経験したことがなかったので実際に試してみました。 今回は試してみたテ…
brew upgrade solidityしても0.4.19が落ちてこなくてなんでだろう?ってずっと思ったら、homeberw用の配布ファイル(になるのかな?)のsolidity.rbに記載してあるバージョン番号を書き換え忘れているのが原因だったようです。 github.comPR出てたのでそちら…
新しく提案されているERCでは他のERCを利用しているものが多くなってきました。今回はその中でも個人的によく目について気になっていたERC-165とERC-820について調べたことをまとめます。ERC-165とERC-820は基本的にはどちらもStandard Interface Detection…
ERC-223 tokenは画期的な部分もありますが、完全にtokenの喪失を防げるわけでは無いです。 例えば、fallback関数を定義済みのContractに対しては送金可能だし、0x00000000000000000000000000000000000001234に送金したら多分private keyを持っている人がいな…
ethereumコミュニティーで、配列の途中のデータを削除して、全体を詰めたいのですがSolidityでどうやったらいいのですか?っていう質問があったので、いろいろと調べてみました。結論としては、Solidityでは配列の要素を削除できません。理由としてはgas代が…
ブロックチェーンを利用する場合、スケーリング等の問題から何かしらオフチェーンで承認を行い、最後の結果をブロックチェーンに登録する。というものを実装したくなることが多々あります。今回はEthereumでオフチェーンでのやり取りを保証するための署名検…
Solidityでは引数などの値の妥当性を検証するためにassertとrequire関数が用意されています。また、コードの実行をストップさせるためのrevert()関数もあります。今回はこれらの関数の挙動についてまとめてみました。 assert(condition) assert関数はconditi…
Contractのセキュリティーを担保する上で、テストのカバレッジ率100%を目指すのは結構重要です。今回は、テストのカバレッジ率を出す方法についてまとめます。今回使うツールはsolidity-coverageです。 github.com
qiita.com こちらの記事に紹介されていたCTF形式(?)なる危険なContractをhackする問題を解いてみました。 後輩の助けを借りながらなんとか全問クリアできました。Contractを実装する上でのセキュリティーのベストプラクティスは 推奨する実装方法 - Ether…
Solidityでいろいろトリッキーなことを試す時にassemblyコードを書くのですが、毎回あれってどう書くんだっけ?ってなるので自分がよく使うassemblyコードをまとめておきます。
EthereumのByzantiumからrevert使うとエラーメッセージをよしなにできるらしいですよ?っていうのが内輪で話題になったので実際にどういう風に利用できるのかを調べてみました。byzantiumのリリースノートはこちら。 blog.ethereum.org
今回はSolidityで書いたContractのドキュメントを自動生成するツールの紹介とその使い方のまとめです。 実業務を考えるとやっぱり、作ったプログラムのAPIリファレンスは自動生成できるようにしておいたほうが何かと便利ですよね。今回利用したツールはこち…
とあるEthereumグループでちょっと話題になったERC223Tokenを実際に試してみました。 ERC223Tokenについてはこちらの方がわかりやすく説明されているので参照ください。 qiita.comERC223のリポジトリはこちら。 GitHub - Dexaran/ERC223-token-standard
ContractのEventの仕組み - アルゴリズムとかオーダーとかに引き続きContractのEvent関連のお話です。 Eventを定義する時にparameterにindexedというmodifierを付与する事ができます。今回はこのindexedの仕組みについてまとめてみました。
今回はContractのEventをテストする時の注意点や思いついたtipsなどをまとめました。 結局は非同期で動いていることを意識してなかったのが原因ではあるのですが、node動かしながら試してたことをそのままテストに書いてもうまくいかないといういい例の一つ…
Ethereum Advent Calendar 2017 の 7 日目の記事です。 ContractにEventを定義すると、Contractの状態が変更された時などに必要な人が通知を受け取れるようになります。 しかし、getter系のfunctionにはEventが設定できなかったりします。 今回はこのEventの…
更新 この記事の内容は古いため、20180417現在では使えません。最新での導入方法についてはこちらにまとめています。 y-nakajo.hatenablog.com OpenZeppelin(zeppelin-solidity)はEthereumのContract作るなら使わないと損だよ!ってぐらい便利なContractのラ…