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

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

2018-01-01から1年間の記事一覧

secp256k-1には整数解は存在しないことの証明

久しぶりのブログ投稿になります。こんにちは。今回はsecp256k-1であるに整数解は存在しないことの証明を行いたいと思います。元々はgemとC Libraryで書かれたsecp256k-1のライブラリが返す加算結果が違っていて、どっちのライブラリが正しい値かを手計算で…

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

今回はganache-cliのデータをファイルに吐き出して永続化する方法について説明します。 ganache-cliのデータを永続化できるとDappsのサンプルを提供する時にセットアップ済みのnodeもセットで提供できるため、非常に有用ですよね。 0x protocolでもganache-c…

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

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

AWS上にbitcoin-seederを立てる

今回はDNSを使ったことはあるけど設定したことがないNetwork初心者の僕がbitcoinのdns-seederを立てたので、その時の作業ログ的なものをまとめたいと思います。seederのプログラムはこちらを使いました。 github.com

Solidity Assembly入門 ~ Function Selector ~

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

Hi-Ether Meetup #7 Fukuoka 参加レポート

福岡では第2回目の開催となるHi-Ether Meetup #7 Fukuokaに参加してきましたのでそのレポートをまとめます。 techplay.jp

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

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

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.comReadme.mdを見て分かる通り、truffleのtestに組み込むことでrevertが発生した時に、エラーの対象のソースファイルと行数を表示してくれま…

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状態にして流出を防ぐことができました。 しかし、この処置に関しては上記の…

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

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

コードから読み解くCasper FFG

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

Plasma 勉強会3回目の参加レポ

y-nakajo.hatenablog.com y-nakajo.hatenablog.com毎月恒例となってます。Plasma #3に参加してきましたので、そのレポートをまとめていきます。 リアルタイムツイートはいつもの通りtogetterにまとめております。 togetter.com今回の会場はPlasmaの本拠地(…

Solidityとvyperの変換tips

最近は暇があればcasper FFGのSmart ContractをvyperからSolidityに変換しています。 github.com作業をしていくにあたり、vyperのコードからSolidityのコードへ変換する際のtipsが思ったよりも溜まってきたので、忘れないうちに記事にしてまとめておきます。…

Solidity Assembly入門 ~ フリーメモリポインタ ~

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

Solidity Assembly入門 ~ 5つの記憶領域 ~

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

Hi-Ether Meetup #4 Fukuoka 参加レポート

先日、Hi-Ether Meetup #4 Fukuokaに参加してきましたので今回はそのレポートをまとめます。今回は初の福岡開催です!開催場所はGMO ペパボ研究所さんのイベントスペースをお借りしました。 僕も運営メンバーとして参画していたのですが、他のメンバーが非常…

Solidity Assembly入門 ~ Remixデバッガーの使い方 ~

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

Plasma 勉強会2回目の参加レポ

y-nakajo.hatenablog.com 前回に引き続き、Plasma #2に参加してきましたので、そのレポートをまとめていきます。 plasma-research.connpass.com

EthereumのContract Creationの仕組み

Solidityをコンパイルして生成されたopcodes=SmartContractが、Contract CreationのときにEthereumのStateDBに保存されるまでの仕組みがどうなっているのか興味が湧いたので調べてみました。というわけで、今回の記事はContract Creationの仕組みについてま…

Ethereumを学習するときのロードマップ

自分がEthereumを学習したときの経験を元にゼロからEthereumを勉強するためのロードマップをまとめてみました。 先人たちは大体この流れで学習を進めていったと思います。

ERC20のバグと誤報されたBatchOverFlowを体験してみる

先日セキュリティーアラートが上がり、多くの取引所が一時ERC20準拠トークンの取引を停止したという報道とともに話題になった、BatchOverFlowについて今更な感じですが自分なりにまとめてみます。今回の問題についてはGunosyの@yamarkzさんがいち早くまとめ…

Plasma 勉強会1回目の参加レポ

最近特にホットな話題となっているPlasmaの勉強会が開かれるということで早速参加してきました! plasma-research.connpass.com 今回はPlasma勉強会の第1回目のレポートをまとめたいと思います。また、参加メンバーのリアルタイムツイートについてもtogette…

uPortでmyAppを作ってみた

Hi-Etherで少し話題に出ていたuPortを実際に触ってみました。 uPort Developer PortaluPortの説明についての説明はこちらのブログが綺麗にまとまってますのでご参照ください。 zoom-blc.com今回はuPort AppManagerを使ってUport Appを自作する手順についてま…

lk-test-helpersの導入方法20180417版/truffleでimportを使う

github.com をtruffle testで使うための導入方法20180417版です。y-nakajo.hatenablog.com こちらの以前の記事で紹介していた手順が最新のbabelでは使えなくなっていたので、最新版のbabelに対応した導入手順をまとめ直しました。

Hi-Ether Meetup - Block #2レポート

2018/04/13に開催されたHi-Ether Meetup - Block #2に参加してきましたのでそのレポート記事です。会場はすごく綺麗なDMM.com様のイベントスペースでした。 東京タワーが綺麗で完全におのぼりさん状態で写真撮ったりしてましたwまた、今回から@kazush-mさん…

python3.6.4の開発環境構築

なんだかんだでpythonで提供されているライブラリを使う頻度が多くなったので、とあるモジュールを作成するにあたり勉強がてらpythonで作成することにしました。今回は開発環境を構築した時のメモを残しておきます。 自分用のメモなので雑にまとめてます。 I…

EthereumのTransactionHashの計算方法

EthereumはBitcoinと同様にTransactionHashをTransactionのrawデータから求めることができます。 今回はEthereumのTransactionHashの求め方について調べたことをまとめました。

truffle consoleで終了処理を追加する方法

truffle consoleを終了するときに追加で何らかの処理を実行したいときはconsole(=REPL)起動中でも次のようにして追加できます。 > repl.repl.on("exit", () => {~~なんか自前の終了処理~~})これで.exitしたときに追加の終了処理を走らせてREPLを正常に終了さ…