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

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

Ethereum

truffleでminer.stopなテストの書き方

Truffleでちょっと特殊(?)なテストを書こうとしたら思ったよりもハマってしまったので、備忘録的に残しておきます。 miner.stopしたら動かないテスト miner.stopするとsendTransactionでフリーズする理由 miner.stopでフリーズしないテスト まとめ

Solidity v0.6.5で追加されたImmutable keywordについて

今回は、Solidityのv0.6.5で追加されたImmutable keywordについて紹介します。 なお、v0.6.5は2020/04/06にリリースされております。執筆時点での最新バージョンはv0.6.8となっています。Immutable keywordについての公式の説明はこちらのブログを参照くださ…

Meta-Transactionのセキュリティを向上させるEIP-1344

今回はIstanbulアップデートで導入されたEIP-1344についてまとめたいと思います。EIP-1344の説明をする前にMeta-Transactionの仕組みとMeta-Transactionが抱える問題を簡単に説明します。その後に、EIP-1344で何が解決されたのかを説明します。EIPの原文はこ…

RLPとMerkle Patricia Tree(Trie)

今回はEthereumで用いられている2つのデータエンコード方式、RLP(Recursive Length Prefix)とPatricia Tree(Trie)について説明します。 RLP(Recursive Length Prefix) 概要 接頭辞の種別 例 具体的な使用例 Merkle Patricia Tree(Trie) 概要 前提:基本的な…

Devcon5 - Day 3 Rough Report

1. Optimization techniques for EVM implementations 2. (e)WASM Code Golfing - Below Par with Nim 3. Yul, eWasm, Solidity: Progress and Future Plans 4. Wasm Precompiles for Eth 1.x 5. EVM Roundtable: Everything You Wanted to Ask, But Were Af…

Devcon5 - Day 2 Rough Report

1. Welcome Ceremony ~ key note sessions 2. Eth 1.x Explained 3. Eth 2.0 tldr 4. Ewasm: Past, Present, Future 5. Lightning Fast Light Clients for the Future of Ethereum 6. Eth 2.0 Light Clients: How Light is Light? 7. How Do We Make Dapps a…

Devcon5 - Day 1 Rough Report

0. Registration 1. State Channels Sumit: B10 2. An EVM-Based Formal Rules Language: B3 (だとおもう。。) 3. Japanese, Human-Readable Smart Contracts: B3 4. Building a Formally-Verified DApp with the Reach DSL, today!: B3 5. WASM and Rust: B…

EIP-1679 istanbulで導入候補のEIPを整理する その4

今回も引き続き、福岡ブロックチェーン勉強会#29 エキスパートコースでQ&A形式で発表した、EIP-1679についてまとめていきます。 github.com本記事は連載記事となっております。よろしければ前回の記事もご覧ください。 y-nakajo.hatenablog.com y-nakajo.hat…

EIP-1679 istanbulで導入候補のEIPを整理する その3

今回も引き続き、福岡ブロックチェーン勉強会#29 エキスパートコースでQ&A形式で発表した、EIP-1679についてまとめていきます。 github.com本記事は連載記事となっております。よろしければ前回の記事もご覧ください。 y-nakajo.hatenablog.com y-nakajo.hat…

EIP-1679 istanbulで導入候補のEIPを整理する その1

今回は、先日の福岡ブロックチェーン勉強会#29 エキスパートコースでQ&A形式で発表した、EIP-1679についてまとめていきます。 github.comこのEIP-1679は次のEthereum1.0のアップデートであるIstanbulで導入されるEIPについてまとめたものです。EIP-1679は現…

EIP-615 - サブルーチンと静的ジャンプをEVMに導入する

今回は、次期updateの提案、EIP-1679 Hardfork Meta: Istanbulで導入候補に上がっている、EIP-615について解説します。 eips.ethereum.org

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を勉強するためのロードマップをまとめてみました。 先人たちは大体この流れで学習を進めていったと思います。