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

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

Ethereum

dydxをローカルに構築して遊んでみる。

今回はDefiでおなじみのdydxのv2 protocolである、soloで遊ぶためにローカルでsoloを構築する手順を説明します。 dydx.exchangeマージントレード、デリバティブトレードとして有名なdydxですが、最近プロトコルがバージョンアップされv2 soloとなりv1 expoと…

Contract Application Binary Interface(ABI)とは

今回はEthereumでDappsを開発した経験のある人は1度は目にしたことがある、「ABI」について解説します。ABIの仕様は以下のSolidityのドキュメントにまとめられています。 solidity.readthedocs.io ABI仕様の技術的な説明は上記ドキュメントに譲るとして、本…

EthereumのPending TransactionとTransaction Poolについて

今回はEthereumで発行されたTransactionがPending状態である場合にどの様にpoolに保持されているのか。また、Transaction Poolはどの程度のtransaction数を保持するのか?などのTransaction poolの動きについて調べたことをまとめていきたいと思います。今回…

Constantinopleで導入されるEIP-1014について

今回は、いよいよ来週の2019/01/16にupdateされるConstantinopleで導入されるEIPのうちの一つである、EIP-1014について解説します。 eip-1014.mdにも書かれているとおり、これはstate channelに対して非常に重要な機能であり、個人的にConstantinopleで導入…

Solidity Assembly入門 ~ Function Selector ~

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

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のコードをデバッグするのに必要な知識を得られることを目的としてい…

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を自作する手順についてま…

EthereumのTransactionHashの計算方法

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

ganache-cli@beta+web3.eth.subscribeを試してみた

y-nakajo.hatenablog.com 前回の記事の続きになります。 タイトルの通りweb3.eth.subscribeを試してみました。 が、テストのためだけにGethのノードを準備するのはめんどくさいのでtestRPCあらため、ganache-cliでWebSocketサーバ起動できないのかなぁ?と思…

web3.eth.filterとweb3.eth.subscribe

web3.jsは現状2つのバージョンが開発されています。1つはweb3@0.x.x(現行は0.20.5)とweb3@1.0.0です。truffleが利用しているのが0.x.x系で、npm install web3 するとインストールされるのがweb3@1.0.0系です。 0.x.xがstableバージョンであり、1.0.0はまだβ…

ERC-712 ヒューマンリーダブルな型付署名の提案

今回はEthereumに新しく機能を追加する提案であるERC-712を紹介します。 この提案はRPCにすでにあるeth_signをさらに拡張した新しい機能を追加する提案です。μRaidenでも疑似的に実装して利用しています。 github.com

Geth 1.8.1でとりあえず動くTruffleを公開しました

追記 Geth1.8.1に対応したtruffle 4.0.8がすでにリリースされていますのでtruffleを最新版にアップデートしてください。 最新のgo-ethereum 1.8.1でgetTransactionReceiptの挙動が変わっており、それが原因で現状truffle migrate などが正常に動かなくなって…

ERC-20拡張提案でありOpenZeppelinにいち早く導入されたERC-827

今回は番号からわかる通り2018/02現在一番新しい(よね?)ERC-20の拡張提案であるERC-827を紹介します。 github.com

Transactionの消費gasは最大50%offまで!

Hi-Etherのslackで興味深い質問がありました。 storageのデータを削除するときには gasがrefundされるという認識だったのですが、arrayの要素を全削除するときにgasが大量にかかるのはどうしてでしょうか?教えていただきたいです。 確かに、以前の記事でsto…

ERC-20が抱える問題

ERC-20を拡張したToken Standardの提案がいくつか出てきています。これらの提案が新たにされている背景としてはERC-20のToken Standardは2つの問題を抱えているためです。 今回はこの2つの問題について詳しく説明したいと思います。