2018-01-01から1ヶ月間の記事一覧
Ethereumはstorageにデータを登録する際に、ストレージ使用料がかかります。実はこの使用料はどうやら一定では無いらしく、データをセットする同じfunctionを実行しているのに最初だけ高かったりします。すごく気になったので実際にどういう時にいくらのgas…
Ethereumでスマートコントラクトを実行するとgasを消費します。そのため、スマートコントラクトを実行するために発行するTransactionにgas limitを指定する必要があります。 さて、このgas limitって一体いくつに設定したらいいのでしょうか?Transactionのg…
ethereumコミュニティーで、配列の途中のデータを削除して、全体を詰めたいのですがSolidityでどうやったらいいのですか?っていう質問があったので、いろいろと調べてみました。結論としては、Solidityでは配列の要素を削除できません。理由としてはgas代が…
truffleを使ってContractをデプロイしようとした時などによく目にするエラーメッセージ insufficient funds for gas * price + value や exceeds block gas limit などのエラーはnodeがtransaction poolに新しくtransactionを追加する際のチェックに通らなか…
y-nakajo.hatenablog.com 以前の記事でEthereumの署名検証の仕組みについて書きましたが、この記事を書いてる時にecrecover(hash, v, r, s)で署名と元となるhashデータから公開鍵が求まるのが不思議でid:techmedia-thinkに質問したところブログでまとめてく…
RaidenNetworkもテストネットに公開されていたので、RaidenNetworkの勉強のためにまずは簡単な実装であるμRaidenについて調査してみました。 今回はμRaidenについての理解を整理する意味でも記事としてまとめてみます。
ブロックチェーンを利用する場合、スケーリング等の問題から何かしらオフチェーンで承認を行い、最後の結果をブロックチェーンに登録する。というものを実装したくなることが多々あります。今回はEthereumでオフチェーンでのやり取りを保証するための署名検…
EthreumのμRaidenのサンプルを動かそうとしたら、accountのkeystore Json fileが必要になったのですが、もともと持ってるMetaMaskのアカウントを使いたかったのですが、MetaMaskからはkeystoreファイルがダウンロードできなかったのでmnemonicとパスワードを…
今回はtruffleのmigrate taskの中でasync/awaitを使って非同期処理をする方法についてまとめました。 この記事は truffle v4.0.4時点でのものです。migrate taskの中でasync/awaitを使いたいシチュエーションとしては、例えば、TokenAとUseTokenという2つの…
タイトルの通りです。基本的には他のHDWalletから取得したmnemonicをimportすることが多いと思いますが、ちょっとしたミスでやらかした場合、十中八九etherを盗まれてしまうので注意してくださいね。すでにpull requestも投げられてるのですがまだ取り込まれ…
Solidityでは引数などの値の妥当性を検証するためにassertとrequire関数が用意されています。また、コードの実行をストップさせるためのrevert()関数もあります。今回はこれらの関数の挙動についてまとめてみました。 assert(condition) assert関数はconditi…
Contractのセキュリティーを担保する上で、テストのカバレッジ率100%を目指すのは結構重要です。今回は、テストのカバレッジ率を出す方法についてまとめます。今回使うツールはsolidity-coverageです。 github.com
qiita.com こちらの記事に紹介されていたCTF形式(?)なる危険なContractをhackする問題を解いてみました。 後輩の助けを借りながらなんとか全問クリアできました。Contractを実装する上でのセキュリティーのベストプラクティスは 推奨する実装方法 - Ether…
MultiSIg Contractのテストをしたくてtruffle-hdwallet-providerをマルチアカウントに対応しようかと思い、久しぶりにgithubを覗いてみたらすでに対応されていました。github.com ということで早速動作確認してみました。