Skip to content

Commit 28c25af

Browse files
committed
vm
1 parent c366fac commit 28c25af

File tree

104 files changed

+1976
-2
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

104 files changed

+1976
-2
lines changed

README.md

+11-2
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,21 @@
77
## 目录
88

99
- [go-ethereum代码阅读环境搭建](/go-ethereum源码阅读环境搭建.md)
10+
- [以太坊黄皮书 符号索引](a黄皮书里面出现的所有的符号索引.md)
1011
- [rlp源码解析](/rlp源码解析.md)
1112
- [trie源码分析](/trie源码分析.md)
1213
- [ethdb源码分析](/ethdb源码分析.md)
1314
- [rpc源码分析](/rpc源码分析.md)
1415
- [p2p源码分析](/p2p源码分析.md)
1516
- [eth协议源码分析](/eth源码分析.md)
1617
- core源码分析
17-
- [chain_indexer源码分析](/core-chain_indexer源码解析.md)
18-
- [bloombits源码分析](/core-bloombits源码分析.md)
18+
- [区块链索引 chain_indexer源码分析](/core-chain_indexer源码解析.md)
19+
- [布隆过滤器索引 bloombits源码分析](/core-bloombits源码分析.md)
20+
- [以太坊的trie树管理 回滚等操作 state源码分析](/core-state源码分析.md)
21+
- vm 虚拟机源码分析
22+
- [虚拟机堆栈和内存数据结构分析](/core-vm-stack-memory源码分析.md)
23+
- [虚拟机指令,跳转表,解释器源码分析](/core-vm-jumptable-instruction.md)
24+
- [虚拟机源码分析](/core-vm源码分析.md)
25+
26+
27+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
2+
3+
![image](picture/sign_state_1.png)
4+
![image](picture/sign_state_3.png)是t+1时刻的状态(account trie).
5+
![image](picture/sign_state_4.png)是状态转换函数,也可以理解为执行引擎
6+
![image](picture/sign_state_5.png) 是transaction。 一次交易。
7+
![image](picture/sign_state_6.png)
8+
![image](picture/sign_state_7.png) 是区块级别的状态转换函数。
9+
![image](picture/sign_state_8.png) B是区块,由很多交易组成。
10+
![image](picture/sign_state_9.png) 0号位置的交易
11+
![image](picture/sign_state_10.png) 其中Ω是块终结状态转换函数(一个奖励挖矿者的函数)
12+
![image](picture/sign_ether.png) Ether的标识
13+
![image](picture/sign_ether_value.png) Ether的价值
14+
![image](picture/sign_machine_state.png) machine-state
15+
16+
## 一些基本的规则
17+
18+
- 对于大多数的函数来说,都用大写字母来标识。
19+
- 元组一般用大写字母来标识
20+
- 标量或者固定大小的字节数组都用小写字母标识。 比如 n 代表交易的nonce, 有一些可能有例外,比如δ代表 一个给定指令需要的堆栈数据的多少。
21+
- 变长的字节数组一般用加粗的小写字母。 比如 **o** 代表一个message call的输出数据。对于某些重要的也可能使用加粗的大写字母
22+
23+
24+
![image](picture/sign_set_b.png) 字节序列
25+
![image](picture/sign_set_p.png) 正整数
26+
![image](picture/sign_set_b32.png) 32字节长度的字节序列
27+
![image](picture/sign_set_p256.png) 小于 2^256 的正整数
28+
**[ ]** 用于索引数组里面的对应元素
29+
![image](picture/sign_stack.png) 代表机器堆栈(machine's stack)的第一个对象
30+
![image](picture/sign_memory.png) 代表了机器内存(machine's memory)里面的前32个元素
31+
![image](picture/sign_placeholder_1.png) 一个占位符号,可以是任意字符代表任意对象
32+
33+
![image](picture/sign_placeholder_2.png) 代表这个对象被修改后的值
34+
![image](picture/sign_placeholder_3.png) 中间状态
35+
![image](picture/sign_placeholder_4.png) 中间状态2
36+
37+
![image](picture/sign_func_1.png) ![image](picture/sign_func_2.png) 如果前面的f代表了一个函数, 那么后面的f*代表了一个相识的函数,不过是对内部的元素依次执行f的一个函数。
38+
39+
![image](picture/sign_last_item.png) 代表了列表里面的最后一个元素
40+
![image](picture/sign_last_item_1.png) 代表了列表里面的最后一个元素
41+
![image](picture/sign_seq_item.png) 求x的长度
42+
43+
44+
![image](picture/sign_state_nonce.png) a代表某个地址,代表某个账号的nonce
45+
![image](picture/sign_state_balance.png) banlance 余额
46+
![image](picture/sign_state_root.png) storage trie 的 root hash
47+
![image](picture/sign_state_code.png) Code的hash。 如果code是b 那么KEC(b)===这个hash
48+
49+
50+
![image](picture/sign_l1.png)
51+
52+
![image](picture/sign_ls.png) world state collapse function
53+
![image](picture/sign_pa.png)
54+
55+
56+
![image](picture/sign_math_any.png) 任意的 any
57+
![image](picture/sign_math_or.png) 并集 or
58+
![image](picture/sign_math_and.png) 交集 and
59+
60+
![image](picture/sign_homestead.png) Homestead
61+
## 交易
62+
63+
![image](picture/sign_t_nonce.png) 交易的nonce
64+
![image](picture/sign_t_gasprice.png) gasPrice
65+
![image](picture/sign_t_gaslimit.png) gasLimit
66+
![image](picture/sign_t_to.png) to
67+
![image](picture/sign_t_value.png) value
68+
69+
![image](picture/sign_t_w.png)![image](picture/sign_t_tr.png)![image](picture/sign_t_ts.png)通过者三个值可以得到sender的地址
70+
71+
![image](picture/sign_t_ti.png) 合约的初始化代码
72+
![image](picture/sign_t_data.png) 方法调用的入参
73+
![image](picture/sign_t_lt.png)
74+
75+
## 区块头
76+
77+
![image](picture/sign_h_p.png)ParentHash
78+
![image](picture/sign_h_o.png)OmmersHash
79+
![image](picture/sign_h_c.png)beneficiary矿工地址
80+
![image](picture/sign_h_r.png)stateRoot
81+
![image](picture/sign_h_t.png)transactionRoot
82+
![image](picture/sign_h_e.png)receiptRoot
83+
![image](picture/sign_h_b.png)logsBloom
84+
![image](picture/sign_h_d.png)难度
85+
![image](picture/sign_h_i.png)number高度
86+
![image](picture/sign_h_l.png)gasLimit
87+
![image](picture/sign_h_g.png)gasUsed
88+
![image](picture/sign_h_s.png)timestamp
89+
![image](picture/sign_h_x.png)extraData
90+
![image](picture/sign_h_m.png)mixHash
91+
![image](picture/sign_h_n.png)nonce
92+
## 回执
93+
94+
![image](picture/sign_r_i.png) 第i个交易的receipt
95+
96+
![image](picture/sign_receipt.png)
97+
![image](picture/sign_r_state.png) 交易执行后的world-state
98+
![image](picture/sign_r_gasused.png)交易执行后区块总的gas使用量
99+
![image](picture/sign_r_bloom.png)本交易执行产生的所有log的布隆过滤数据
100+
![image](picture/sign_r_log.png)交易产生的日志集合
101+
102+
![image](picture/sign_r_logentry.png) Log entry Oa日志产生的地址, Ot topic Od 时间
103+
104+
## 交易执行
105+
![image](picture/sign_substate_a.png) substate
106+
![image](picture/sign_substate_as.png) suicide set
107+
![image](picture/sign_substate_al.png) log series
108+
![image](picture/sign_substate_ar.png) refund balance
109+
110+
![image](picture/sign_gas_total.png) 交易过程中使用的总gas数量。
111+
![image](picture/sign_gas_log.png) 交易产生的日志。
112+
113+
![image](picture/sign_i_a.png) 执行代码的拥有者
114+
![image](picture/sign_i_o.png) 交易的发起者
115+
![image](picture/sign_i_p.png) gasPrice
116+
![image](picture/sign_i_d.png) inputdata
117+
![image](picture/sign_i_s.png) 引起代码执行的地址,如果是交易那么是交易的发起人
118+
![image](picture/sign_i_v.png) value
119+
![image](picture/sign_i_b.png) 需要执行的代码
120+
![image](picture/sign_i_h.png) 当前的区块头
121+
![image](picture/sign_i_e.png) 当前的调用深度
122+
123+
124+
![image](picture/sign_exec_model.png) 执行模型 s suicide set; l 日志集合 **o** 输出 ; r refund
125+
126+
![image](picture/sign_exec_func.png) 执行函数
127+
128+
![image](picture/sign_m_g.png) 当前可用的gas
129+
![image](picture/sign_u_pc.png) 程序计数器
130+
![image](picture/sign_u_m.png) 内存内容
131+
![image](picture/sign_u_i.png) 内存中有效的word数量
132+
![image](picture/sign_u_s.png) 堆栈内容
133+
134+
![image](picture/sign_m_w.png) w代表当前需要执行的指令
135+
136+
![image](picture/sign_stack_removed.png) 指令需要移除的堆栈对象个数
137+
![image](picture/sign_stack_added.png) 指令需要增加的堆栈对象个数

0 commit comments

Comments
 (0)