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

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

Windows 11 + Prysm + Geth でPraterテストネットと同期する

今更ながらの記事になりますが、今回はWindows 11上でPrysmとGethを利用してBeacon Chainのテストネットである、Praterテストネットの環境を構築する手順を紹介する。今回記事に整理する経緯としては、2022/06/09の01:00ごろに無事にRopstenがThe Mergeに移…

infura.ioを使ってBeacon Chain(ETH2.0)からBlockの情報を取得する

今回はBeacon Chainのblock情報をinfura.ioを使って取得する方法について記事にする。twitterで話題になっている、reorgについて何が起きてるのかを調べるためにblockの情報を見てみたいなぁと思ったのがきっかけである。The Ethereum beacon chain experien…

Docker環境でnltk.Treeグラフをpngとして出力する

今回も機械学習関連の記事である。 nltk.TreeのデータをPNG画像として出力したかったのですが、Docker環境で開発を行なっていた関係でちょっと手こずってしまった。 Docker環境でPNGを出力させる方法がなかなか見つからなかったので、記事としてまとめておく…

Attention Flowを追実験したい

最近は自然言語学習モデルのBERTを活用した実験を行っている。その中で、Attentionで何が表現されているのか?について興味が出てきた。 とあるツテから以下の論文を紹介してもらったので、この論文の中に出てきているサンプルコードを動かしたいというのが…

HugginfaceのTrainerでTensorboard用のログを出力する

今回もDeepLearningについての記事です。 HuggingfaceのTrainerで学習させたときに、学習途中のログをTensorboard用に出力する方法についてまとめます。huggingface.co Tensorboardのログ出力設定 Tensorboardのログを出力するために必要なライブラリ コマン…

BERTのpre-trainingをやってみた 〜雑記〜

今回は深層学習の自然言語モデルである、BERTについて色々触っていたのでその記録を簡単にまとめたいと思う。 ひょんなことから、BERTの事前学習からやらなければならなかったので、実際に用いたライブラリや環境、学習に必要な時間などについて書いていく。…

Windows 10 Home 21H2 + WSL2 + Ubuntu 20.04LTS環境にcudaをインストールする

最近、機械学習をいろいろと触っている。その関係で家のゲーミングPCに機械学習の環境を構築はしたけど、知識不足でcuda(GPUを使うやつ)環境はインストールできていない。 以前に導入を試みた際は、Windows 10ではcuda on WSL2が正式サポートされておらず、W…

google公式のBERTを2021年の最近の環境で動かしてみる

vasteelab.com の記事を参考に、BERTの事前学習を動かしてみたときの備忘録をまとめる。2021年12月現在では、tensorflowのバージョンが上がっていたりなどで、記事に書いてある手順通りではうまく動かなかった。自分が行った修正内容などを共有する目的で整…

go-ethereumのGraphQLを利用する

前回の記事から引き続きgo-ethereumから大量データを取得するために、今回はGraphQLを用いる方法について試したことをまとめる。なお、前回の記事は以下を参照。 y-nakajo.hatenablog.com go-ethereumのGraphQLについて go-ethereumのGraphQLサーバを起動す…

go-ethereumのLevelDBを直接読む

ethereumのデータを分析する場合、大量のBlockHeaderやTransaction、Receiptを取得する必要がある。これらの膨大なデータをHTTPを介してJSON-RPCで取得しようとするとかなりの時間を要することとなる。 そのため、今回は大量データ処理をするために直接go-et…

go-ethereumのpruningを試してみた

今回は、go-ethereumのv1.10から追加されたコマンドである、`go-ethereum snapshot prune-state`を試してみたのでその結果を共有する記事となる。 このコマンドは、go-ethereumのfull nodeを維持すると溜まっていってしまうstate trieのゴミデータを削除(枝…

gethのsyncingについてのソース解析メモ その3

今回はgethのsyncingの全体的な処理の流れについてまとめる。前回のまでの記事はこちら。 その1 その2 syncの開始 remote peerのhandshakeとpeerSetへの登録 fetching処理 fetchHeadersについて idle peerとtask queueとprocessHeaders peerの取得 request…

gethのsyncingについてのソース解析メモ その2

前回の続きとして、今回は特にReceiptsの取得処理周りを見ていく。Receiptの取得処理はfast syncの時に呼ばれ、full syncでは呼ばれないというコメントがあるが、そこの動きがよくわかっていないので、該当コードがどうなっているかを解析する。 ReceiptsPac…

gethのsyncingについてのソース解析メモ その1

Ethereumのfull/fast/snap syncの違いについてより詳しく調べいたと思い、gethのソースを読み始めた。 が、なかなかにボリュームがあるのと、同期処理についてかなり複雑だったので、頭の整理のために解析中の内容をメモとして残しておく。 full/fast syncの…

Apollo Client(React)のGetting Startedを動かすまで

つい最近、社内ハッカソンでGraphQLのライブラリである、ApolloのApollo Client(React版)を触ってみた。その時に、公式のGetting Startedを動かすのに少し手間取ったので、ここに手順をまとめておく。 最後に、GraphQLを触ってみたときの所感を簡単にまとめ…

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と…