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

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

StreamによるState管理のすすめ

つい最近、社内ハッカソンでFlutterを用いたアプリ開発を行いました。その時に、FlutterやReactなどにおける、State ManagementやApplication Architecture(というか設計手法?)について色々と議論しました。その中で、Flutterでよく使われているBlocパター…

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についての公式の説明はこちらのブログを参照くださ…

web3.jsのmock方法

今回の記事では、DappsのUnit Testでweb3.jsをmockする方法について紹介します。 sinon.jsを用いた方法と、jestを用いた方法の2パターンを紹介します。本記事で紹介している内容のサンプルプロジェクトも作りましたので参考にしてください。 github.com テス…

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を整理する その2

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

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で導入…

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