Skip to content

akatsuki105/ToyEVM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚗 ToyEVM

Rust

簡易的な EVM(Ethereum Virtual Machine)を実装することを目標とした Rust 製のレポジトリです。

⛓ Ethereum Virtual Machine

EVM についての説明はこちらにまとめてあります。

🎮 Usage

# ビルド & 起動
$ make build   # require make
$ ./toyevm run # toyevm.exe on Windows

# トランザクションの実行
$ ./toyevm run

world state: 8023458051e2611dea07a6f9d2dbbcfb1863079eac68f15e01c6c3853aeaec3c

select next action: transaction(1) or deploy(2) => 1
contract address    > 899C5C9bf8396Ba2c14f819C6D807b96990F86EE
sender address      > 9C2b303267DcFc6F247E777f1e412a2b08E57998

# コントラクトのデプロイ
$ ./toyevm run

world state: c52dc54dfb0dabdeddac0f609b330404178d216e5091f938c4577268ac21027e

select next action: transaction(1) or deploy(2) => 2
contract code      > 61010161010201

109361e7a47f44bd357611501efd6eaa35d252a2 is deployed!

EVM バイトコードを逆アセンブルする機能も備えています。

$ ./toyevm disasm "6005600401"
PUSH 05
PUSH 04
ADD

📄 Source Code

こちらにソースコードについての解説が載っています。

📚 Other

初期ステートの変更

EVM の初期状態は、config/config.jsonに記述されています。

これを変更することで EVM の初期状態を変更することが可能です。

未実装のオペコード

Toy なのでいくつか実装していないオペコードがあります。

また Gas の正確な実装もまだまだです。

今後実装予定です。

Ethereum 関連のドキュメント

EIP など EVM から少し外れた日本語の Ethereum ドキュメントもこのレポジトリには存在しています。

詳しくは docs ディレクトリを見てください。

Releases

No releases published

Packages

No packages published