Ethereum
Ethereum 2.0のロードマップがだいぶ変わっていたので、久しぶりに調べてみた↓ https://tim.mirror.xyz/CHQtTJb1NDxCK41JpULL-zAJe7YOtw-m4UDw6KDju6c https://tim.mirror.xyz/sR23jU02we6zXRgsF_oTUkttL83S3vyn05vJWnnp-Lc https://blog.ethereum.org/2021/…
Ethereum Foundation Blogで公開された、先月アップグレードされたBerlin以前に存在した脅威に関する開示記事↓ blog.ethereum.org 脅威とは? ↑の記事で取り上げられている脅威というは、処理に時間のかかるトランザクションを作成することでDoS攻撃を可能に…
こないだGethに導入された新しい同期方法Snap Syncについて書いたけど↓ techmedia-think.hatenablog.com 今回は、Beam Syncという同期方法↓ https://github.com/ethereum/stateless-ethereum-specs/blob/master/beam-sync-phase0.md を調べてみる。 Beam Syn…
Ethereumのスケーラビリティを考えた際にネックになるのが巨大なステートストレージ。利用者は1回だけ手数料を積んだトランザクションを発行するだけだけど、ネットワークに参加するフルノードは以降ずっとそのデータを維持しなければならず、ステートの成…
ノードが新しくブロックチェーンネットワークに参加した際、最初にチェーンの初期同期を開始するが、ブロックチェーンの成長と伴にこの初期同期のスピードというのがネックになる。先日リリースされたGeth v1.10.0では、Ethereumのブロックチェーンを同期す…
Ethereumのステートを管理する上で重要な構成要素の1つがMerkle Patricia Trie。ビットコイナーならマークルツリーはお馴染みだが、Merkle Patricia Trieはマークルツリーとはだいぶ勝手が違うデータ構造なので、どんな仕組みで構築されて、特定のアイテム…
最近、Geth v1.9.0で導入されたUltra Light ClientがブロックヘッダーのPoWの検証をスキップしているのを知った。Bitcoinとかだと軽量ノードはブロックヘッダーのみダウンロードし有効なPoWのチェックはしてるから何故そういうアプローチなのか、EthereumのP…
EthereumでもEIP-1469によりノード探索プロトコルでDNSがサポートされたので、内容見てみる↓ arachnid.github.io ↓で解説したように、ノードを起動するとハードコードされたブートストラップノードを使って、アウトバウンドピアの接続対象を検索する。 techm…
EthereumのP2Pネットワークまわりの仕様について、まずノード探索の仕組みについて理解する。 Ethereumのノード探索の仕組み Ethereumは分散ハッシュテーブル(DHT)の一種であるKademliaをベースにしたノード検出プロトコルを実装している(Kademlia自体は…
Solidityで作成するコントラクトの関数から例外を投げる方法について。 http://solidity.readthedocs.io/en/develop/control-structures.html#exceptions コントラクトの関数内で手動で例外を投げたい場合throwを使う。例外が投げられると現在実行中の処理が…
Ethereum使ったアプリケーションをRubyで書けないかなーと思ってRubyのライブラリを調べてみた。 EthereumのRubyライブラリ 公式ドキュメントで紹介されているのは以下の3つ。 ruby-ethereum Rubyで書かれたEVM(Ethereum Virtual Machine)の実装 github.c…
Layout of a Solidity Source File — Solidity 0.4.3-develop documentation Solidityのソースファイルのレイアウト仕様について↑ざっとみておく。 ソースファイルには任意の数のcontractの定義を記述できる。 Version Pragma ソースファイルにはversion pra…
Ethereumのコントラクトはブロックチェーンに記録されると基本的に変更ができない。 じゃあコントラクトにバグがあったり機能追加したい場合にどうするの? という疑問がわく。 DELEGATECALL Homesteadから導入されたEIP-7として定義されているDELEGATECALL…
Ethereumを使ったスマートコントラクト(Solidity版)の作り方について見てみる。 Introduction to Smart Contracts — Solidity 0.4.3-develop documentation シンプルなスマートコントラクト ストレージ Solidityにおけるコントラクトとは、Ethereumのブロ…
Bitcoinのブロックチェーンは取引記録を台帳に記録していくプラットフォームなのに対し、Ethereumは独自のブロックチェーンネットワークで分散アプリケーションを実行するプラットフォームを提供している。 今回は、そんなEthereumの動作環境を作ってみた。 …