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

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

React + Metamask SDKのDappsチュートリアルを公開しました

タイトルの通り、React + Metamask SDKで作成するDappsのチュートリアルを公開しました。 github.com リッチなDappsを作る場合は、BuidleGuidl もありますが、リッチすぎて基本を押さえるのが難しいと思ったので自前で作ってみました。内容は非常に簡単なERC…

EVMのmemory gas cost

EVMのMemoryは利用サイズに応じてgas costが増加する。具体的にどの程度の値になるのかを調べたので記事に残しておく。なお、gas costの詳細な計算式は以下の公式サイトを参照 github.com

SSZのMerkleization

前回に引き続きSSZ(Simple Serialize)について解説する。今回はSSZのMerkleizationについてまとめる。前回の記事はこちら。 y-nakajo.hatenablog.comMerkleizationについては、引き続きSSZの仕様を参考にした。 github.com 概要 Eth1.0ではPatricia Merkle T…

SSZ - Simple Serialize

本記事では、現在のConsensus-Layer(旧Beacon Chain)で採用されているシリアル化アルゴリズムのSimple Serialize、通称sszについてまとめる。sszについてまとめるにあたり、以下のサイトを参考にした。github.com ethereum.org eth2book.info 導入の理由 ssz…

Validatorのリワード計算方法

Validatorの報酬の計算方法は以下のページに整理されているが、これはPhaase0の計算式である。 kb.beaconcha.inConsensus-LayerはAltairとBellatrixの2回のアップデートが加えられており、現在のValidatorの報酬計算式は変更されている。詳しくは以下のペー…

2022年12月Ethereum Mainnetの同期について

先ほどEthereum Mainnetの同期が完了したので、同期に必要なシステム要件と掛かった時間を記録として残す。 なお、同期に必要となる時間はネットワーク状況や、接続したpeerによって大幅に前後することに注意。また、今回同期に用いたマシンは個人利用PCであ…

Failed to import transformers.trainer because of the following error の解決方法

huggingfaceのtransformersを使っていたら、急に「Failed to import transformers.trainer because of the following error」というエラーが発生した。対応方法がなかなか見つからなかったので記事に残しておく。 環境 Windows 11 Home + WSL2 + Ubuntu-20.0…

Docker Desktop for Windowsに外部からアクセスできるようにする

Docker Desktop for WindowsでNginxを建てて、そのNginxにLAN内のほかのPCからアクセスする方法。 Windows Firewallに対して80番ポート(Nginxをホスト側の80番ポートにフォワードしてる場合だが)を開ける。 他のブログなどで書かれているのは大体ここまで。…

Windows 11 + RTX2080TiでのDeepLearning環境メモ

nvidia driverを最新版にしたり、cuDNNの公開鍵が無効になったため、cudaを入れなおしたりなどしていたらpytorchからGPUが認識できなくなってしまった(泣 環境を再構築したので、cudaやdriver versionなどをメモとして残しておく。 cudaとNvidiaのdriver及…

Windowsで回線速度を定期的に測定する

最近はネットワークやルータ周りにも興味が出てきて勉強中。勉強のためにルータを直接いじりたいけど、業務用は少し高いのでASUSのルータ RT-AX3000を購入したところ、これはtransixに対応していないのでPPPoEで接続するように変更した。 PPPoEだと速度が遅…

BlockのgasLimitとgasUsedの関係とマイナーの戦略

www.youtube.com僕もよく拝見している、やさしいDeFiチャンネルの「やさしいEthereumガスの解説&きびしいEIP1559猛勉強」の動画内でこんな疑問があがっていた。「マイナーはUsedGasを見てBlockに含めるTransactionを決定しているのか?」この辺りは自分も明…

cudaのGPG Keyが無効になってたので綺麗?に削除してみた

久々にMyPCで機械学習を動かそうとしたら、cuda周りでエラーが発生した。nvidiaのドライバーも新しくしたので、入れなおそうと思ってupdateしたけど、GPG key周りでエラーが発生してうまくアップデートができなかった。なので、まずは古いcuda関連のライブラ…

Attestation

今回はBeaconChainのAttestationについて学んだことを整理するために記事にする。 なお、Attestationの仕様については基本的に以下の公式のspecを参照した。 github.com 基礎知識 Attestationとは Attestationの構造 AttestationDataの構造 Attestationが有…

TapyrusのTestnet nodeをECS + Fargate で立てる

最近は業務でTapyrusを用いたweb3システムの設計開発リードを行ってます。が、主に上流工程とマネージメントがメインで開発はチームメンバーに任せっきりです。 ということで、久々にTapyrusの環境構築を行ってみたので、その内容を整理して記事にします。 …

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パター…