Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
whqwjb
go-ethereum
提交
f49e398e
G
go-ethereum
项目概览
whqwjb
/
go-ethereum
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
go-ethereum
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f49e398e
编写于
4月 03, 2015
作者:
O
obscuren
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
bool => int
上级
29a9c6be
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
63 addition
and
63 deletion
+63
-63
core/vm/gas.go
core/vm/gas.go
+63
-63
未找到文件。
core/vm/gas.go
浏览文件 @
f49e398e
...
...
@@ -38,7 +38,7 @@ func baseCheck(op OpCode, stack *stack, gas *big.Int) error {
return
err
}
if
r
.
stackPush
&&
len
(
stack
.
data
)
-
r
.
stackPop
>
int
(
params
.
StackLimit
.
Int64
())
{
if
r
.
stackPush
>
0
&&
len
(
stack
.
data
)
-
r
.
stackPop
+
r
.
stackPush
>
int
(
params
.
StackLimit
.
Int64
())
+
1
{
return
fmt
.
Errorf
(
"stack limit reached %d (%d)"
,
len
(
stack
.
data
),
params
.
StackLimit
.
Int64
())
}
...
...
@@ -57,70 +57,70 @@ func toWordSize(size *big.Int) *big.Int {
type
req
struct
{
stackPop
int
gas
*
big
.
Int
stackPush
bool
stackPush
int
}
var
_baseCheck
=
map
[
OpCode
]
req
{
// opcode | stack pop | gas price | stack push
ADD
:
{
2
,
GasFastestStep
,
true
},
LT
:
{
2
,
GasFastestStep
,
true
},
GT
:
{
2
,
GasFastestStep
,
true
},
SLT
:
{
2
,
GasFastestStep
,
true
},
SGT
:
{
2
,
GasFastestStep
,
true
},
EQ
:
{
2
,
GasFastestStep
,
true
},
ISZERO
:
{
1
,
GasFastestStep
,
true
},
SUB
:
{
2
,
GasFastestStep
,
true
},
AND
:
{
2
,
GasFastestStep
,
true
},
OR
:
{
2
,
GasFastestStep
,
true
},
XOR
:
{
2
,
GasFastestStep
,
true
},
NOT
:
{
1
,
GasFastestStep
,
true
},
BYTE
:
{
2
,
GasFastestStep
,
true
},
CALLDATALOAD
:
{
1
,
GasFastestStep
,
true
},
CALLDATACOPY
:
{
3
,
GasFastestStep
,
true
},
MLOAD
:
{
1
,
GasFastestStep
,
true
},
MSTORE
:
{
2
,
GasFastestStep
,
false
},
MSTORE8
:
{
2
,
GasFastestStep
,
false
},
CODECOPY
:
{
3
,
GasFastestStep
,
false
},
MUL
:
{
2
,
GasFastStep
,
true
},
DIV
:
{
2
,
GasFastStep
,
true
},
SDIV
:
{
2
,
GasFastStep
,
true
},
MOD
:
{
2
,
GasFastStep
,
true
},
SMOD
:
{
2
,
GasFastStep
,
true
},
SIGNEXTEND
:
{
2
,
GasFastStep
,
true
},
ADDMOD
:
{
3
,
GasMidStep
,
true
},
MULMOD
:
{
3
,
GasMidStep
,
true
},
JUMP
:
{
1
,
GasMidStep
,
false
},
JUMPI
:
{
2
,
GasSlowStep
,
false
},
EXP
:
{
2
,
GasSlowStep
,
true
},
ADDRESS
:
{
0
,
GasQuickStep
,
true
},
ORIGIN
:
{
0
,
GasQuickStep
,
true
},
CALLER
:
{
0
,
GasQuickStep
,
true
},
CALLVALUE
:
{
0
,
GasQuickStep
,
true
},
CODESIZE
:
{
0
,
GasQuickStep
,
true
},
GASPRICE
:
{
0
,
GasQuickStep
,
true
},
COINBASE
:
{
0
,
GasQuickStep
,
true
},
TIMESTAMP
:
{
0
,
GasQuickStep
,
true
},
NUMBER
:
{
0
,
GasQuickStep
,
true
},
CALLDATASIZE
:
{
0
,
GasQuickStep
,
true
},
DIFFICULTY
:
{
0
,
GasQuickStep
,
true
},
GASLIMIT
:
{
0
,
GasQuickStep
,
true
},
POP
:
{
1
,
GasQuickStep
,
false
},
PC
:
{
0
,
GasQuickStep
,
true
},
MSIZE
:
{
0
,
GasQuickStep
,
true
},
GAS
:
{
0
,
GasQuickStep
,
true
},
BLOCKHASH
:
{
1
,
GasExtStep
,
true
},
BALANCE
:
{
1
,
GasExtStep
,
true
},
EXTCODESIZE
:
{
1
,
GasExtStep
,
true
},
EXTCODECOPY
:
{
4
,
GasExtStep
,
false
},
SLOAD
:
{
1
,
params
.
SloadGas
,
true
},
SSTORE
:
{
2
,
Zero
,
false
},
SHA3
:
{
2
,
params
.
Sha3Gas
,
true
},
CREATE
:
{
3
,
params
.
CreateGas
,
true
},
CALL
:
{
7
,
params
.
CallGas
,
true
},
CALLCODE
:
{
7
,
params
.
CallGas
,
true
},
JUMPDEST
:
{
0
,
params
.
JumpdestGas
,
false
},
SUICIDE
:
{
1
,
Zero
,
false
},
RETURN
:
{
2
,
Zero
,
false
},
PUSH1
:
{
0
,
GasFastestStep
,
true
},
DUP1
:
{
0
,
Zero
,
true
},
ADD
:
{
2
,
GasFastestStep
,
1
},
LT
:
{
2
,
GasFastestStep
,
1
},
GT
:
{
2
,
GasFastestStep
,
1
},
SLT
:
{
2
,
GasFastestStep
,
1
},
SGT
:
{
2
,
GasFastestStep
,
1
},
EQ
:
{
2
,
GasFastestStep
,
1
},
ISZERO
:
{
1
,
GasFastestStep
,
1
},
SUB
:
{
2
,
GasFastestStep
,
1
},
AND
:
{
2
,
GasFastestStep
,
1
},
OR
:
{
2
,
GasFastestStep
,
1
},
XOR
:
{
2
,
GasFastestStep
,
1
},
NOT
:
{
1
,
GasFastestStep
,
1
},
BYTE
:
{
2
,
GasFastestStep
,
1
},
CALLDATALOAD
:
{
1
,
GasFastestStep
,
1
},
CALLDATACOPY
:
{
3
,
GasFastestStep
,
1
},
MLOAD
:
{
1
,
GasFastestStep
,
1
},
MSTORE
:
{
2
,
GasFastestStep
,
0
},
MSTORE8
:
{
2
,
GasFastestStep
,
0
},
CODECOPY
:
{
3
,
GasFastestStep
,
0
},
MUL
:
{
2
,
GasFastStep
,
1
},
DIV
:
{
2
,
GasFastStep
,
1
},
SDIV
:
{
2
,
GasFastStep
,
1
},
MOD
:
{
2
,
GasFastStep
,
1
},
SMOD
:
{
2
,
GasFastStep
,
1
},
SIGNEXTEND
:
{
2
,
GasFastStep
,
1
},
ADDMOD
:
{
3
,
GasMidStep
,
1
},
MULMOD
:
{
3
,
GasMidStep
,
1
},
JUMP
:
{
1
,
GasMidStep
,
0
},
JUMPI
:
{
2
,
GasSlowStep
,
0
},
EXP
:
{
2
,
GasSlowStep
,
1
},
ADDRESS
:
{
0
,
GasQuickStep
,
1
},
ORIGIN
:
{
0
,
GasQuickStep
,
1
},
CALLER
:
{
0
,
GasQuickStep
,
1
},
CALLVALUE
:
{
0
,
GasQuickStep
,
1
},
CODESIZE
:
{
0
,
GasQuickStep
,
1
},
GASPRICE
:
{
0
,
GasQuickStep
,
1
},
COINBASE
:
{
0
,
GasQuickStep
,
1
},
TIMESTAMP
:
{
0
,
GasQuickStep
,
1
},
NUMBER
:
{
0
,
GasQuickStep
,
1
},
CALLDATASIZE
:
{
0
,
GasQuickStep
,
1
},
DIFFICULTY
:
{
0
,
GasQuickStep
,
1
},
GASLIMIT
:
{
0
,
GasQuickStep
,
1
},
POP
:
{
1
,
GasQuickStep
,
0
},
PC
:
{
0
,
GasQuickStep
,
1
},
MSIZE
:
{
0
,
GasQuickStep
,
1
},
GAS
:
{
0
,
GasQuickStep
,
1
},
BLOCKHASH
:
{
1
,
GasExtStep
,
1
},
BALANCE
:
{
1
,
GasExtStep
,
1
},
EXTCODESIZE
:
{
1
,
GasExtStep
,
1
},
EXTCODECOPY
:
{
4
,
GasExtStep
,
0
},
SLOAD
:
{
1
,
params
.
SloadGas
,
1
},
SSTORE
:
{
2
,
Zero
,
0
},
SHA3
:
{
2
,
params
.
Sha3Gas
,
1
},
CREATE
:
{
3
,
params
.
CreateGas
,
1
},
CALL
:
{
7
,
params
.
CallGas
,
1
},
CALLCODE
:
{
7
,
params
.
CallGas
,
1
},
JUMPDEST
:
{
0
,
params
.
JumpdestGas
,
0
},
SUICIDE
:
{
1
,
Zero
,
0
},
RETURN
:
{
2
,
Zero
,
0
},
PUSH1
:
{
0
,
GasFastestStep
,
1
},
DUP1
:
{
0
,
Zero
,
1
},
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录