Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
6e24b158
Commit
6e24b158
authored
Dec 18, 2014
by
obscuren
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' into poc8
parents
22d29a6d
59ef6e36
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
13 additions
and
49 deletions
+13
-49
vm_env.go
cmd/utils/vm_env.go
+1
-3
execution.go
core/execution.go
+4
-2
vm_env.go
core/vm_env.go
+1
-3
vm.go
tests/helper/vm.go
+1
-2
closure.go
vm/closure.go
+3
-32
vm_debug.go
vm/vm_debug.go
+2
-4
vm_env.go
xeth/vm_env.go
+1
-3
No files found.
cmd/utils/vm_env.go
View file @
6e24b158
...
...
@@ -49,9 +49,7 @@ func (self *VMEnv) Transfer(from, to vm.Account, amount *big.Int) error {
}
func
(
self
*
VMEnv
)
vm
(
addr
,
data
[]
byte
,
gas
,
price
,
value
*
big
.
Int
)
*
core
.
Execution
{
evm
:=
vm
.
New
(
self
,
vm
.
DebugVmTy
)
return
core
.
NewExecution
(
evm
,
addr
,
data
,
gas
,
price
,
value
)
return
core
.
NewExecution
(
self
,
addr
,
data
,
gas
,
price
,
value
)
}
func
(
self
*
VMEnv
)
Call
(
caller
vm
.
ClosureRef
,
addr
,
data
[]
byte
,
gas
,
price
,
value
*
big
.
Int
)
([]
byte
,
error
)
{
...
...
core/execution.go
View file @
6e24b158
...
...
@@ -16,8 +16,10 @@ type Execution struct {
SkipTransfer
bool
}
func
NewExecution
(
vm
vm
.
VirtualMachine
,
address
,
input
[]
byte
,
gas
,
gasPrice
,
value
*
big
.
Int
)
*
Execution
{
return
&
Execution
{
vm
:
vm
,
address
:
address
,
input
:
input
,
Gas
:
gas
,
price
:
gasPrice
,
value
:
value
}
func
NewExecution
(
env
vm
.
Environment
,
address
,
input
[]
byte
,
gas
,
gasPrice
,
value
*
big
.
Int
)
*
Execution
{
evm
:=
vm
.
New
(
env
,
vm
.
DebugVmTy
)
return
&
Execution
{
vm
:
evm
,
address
:
address
,
input
:
input
,
Gas
:
gas
,
price
:
gasPrice
,
value
:
value
}
}
func
(
self
*
Execution
)
Addr
()
[]
byte
{
...
...
core/vm_env.go
View file @
6e24b158
...
...
@@ -43,9 +43,7 @@ func (self *VMEnv) Transfer(from, to vm.Account, amount *big.Int) error {
}
func
(
self
*
VMEnv
)
vm
(
addr
,
data
[]
byte
,
gas
,
price
,
value
*
big
.
Int
)
*
Execution
{
evm
:=
vm
.
New
(
self
,
vm
.
DebugVmTy
)
return
NewExecution
(
evm
,
addr
,
data
,
gas
,
price
,
value
)
return
NewExecution
(
self
,
addr
,
data
,
gas
,
price
,
value
)
}
func
(
self
*
VMEnv
)
Call
(
me
vm
.
ClosureRef
,
addr
,
data
[]
byte
,
gas
,
price
,
value
*
big
.
Int
)
([]
byte
,
error
)
{
...
...
tests/helper/vm.go
View file @
6e24b158
...
...
@@ -68,8 +68,7 @@ func (self *Env) Transfer(from, to vm.Account, amount *big.Int) error {
}
func
(
self
*
Env
)
vm
(
addr
,
data
[]
byte
,
gas
,
price
,
value
*
big
.
Int
)
*
core
.
Execution
{
evm
:=
vm
.
New
(
self
,
vm
.
DebugVmTy
)
exec
:=
core
.
NewExecution
(
evm
,
addr
,
data
,
gas
,
price
,
value
)
exec
:=
core
.
NewExecution
(
self
,
addr
,
data
,
gas
,
price
,
value
)
exec
.
SkipTransfer
=
self
.
skipTransfer
return
exec
...
...
vm/closure.go
View file @
6e24b158
...
...
@@ -3,7 +3,6 @@ package vm
import
(
"math/big"
"github.com/ethereum/go-ethereum/ethutil"
"github.com/ethereum/go-ethereum/state"
)
...
...
@@ -11,8 +10,6 @@ type ClosureRef interface {
ReturnGas
(
*
big
.
Int
,
*
big
.
Int
)
Address
()
[]
byte
SetCode
([]
byte
)
GetStorage
(
*
big
.
Int
)
*
ethutil
.
Value
SetStorage
(
*
big
.
Int
,
*
ethutil
.
Value
)
}
type
Closure
struct
{
...
...
@@ -41,10 +38,6 @@ func NewClosure(msg *state.Message, caller ClosureRef, object ClosureRef, code [
return
c
}
func
(
c
*
Closure
)
GetValue
(
x
uint64
)
*
ethutil
.
Value
{
return
c
.
GetRangeValue
(
x
,
1
)
}
func
(
c
*
Closure
)
GetOp
(
x
uint64
)
OpCode
{
return
OpCode
(
c
.
GetByte
(
x
))
}
...
...
@@ -65,30 +58,12 @@ func (c *Closure) GetBytes(x, y int) []byte {
return
c
.
Code
[
x
:
x
+
y
]
}
func
(
c
*
Closure
)
GetRangeValue
(
x
,
y
uint64
)
*
ethutil
.
Valu
e
{
func
(
c
*
Closure
)
GetRangeValue
(
x
,
y
uint64
)
[]
byt
e
{
if
x
>=
uint64
(
len
(
c
.
Code
))
||
y
>=
uint64
(
len
(
c
.
Code
))
{
return
ethutil
.
NewValue
(
0
)
}
partial
:=
c
.
Code
[
x
:
x
+
y
]
return
ethutil
.
NewValue
(
partial
)
}
/*
* State storage functions
*/
func
(
c
*
Closure
)
SetStorage
(
x
*
big
.
Int
,
val
*
ethutil
.
Value
)
{
c
.
object
.
SetStorage
(
x
,
val
)
}
func
(
c
*
Closure
)
GetStorage
(
x
*
big
.
Int
)
*
ethutil
.
Value
{
m
:=
c
.
object
.
GetStorage
(
x
)
if
m
==
nil
{
return
ethutil
.
EmptyValue
()
return
nil
}
return
m
return
c
.
Code
[
x
:
x
+
y
]
}
func
(
c
*
Closure
)
Return
(
ret
[]
byte
)
[]
byte
{
...
...
@@ -123,10 +98,6 @@ func (c *Closure) ReturnGas(gas, price *big.Int) {
/*
* Set / Get
*/
func
(
c
*
Closure
)
Caller
()
ClosureRef
{
return
c
.
caller
}
func
(
c
*
Closure
)
Address
()
[]
byte
{
return
c
.
object
.
Address
()
}
...
...
vm/vm_debug.go
View file @
6e24b158
...
...
@@ -181,7 +181,6 @@ func (self *DebugVm) Run(me, caller ClosureRef, code []byte, value, gas, price *
var
mult
*
big
.
Int
y
,
x
:=
stack
.
Peekn
()
//val := closure.GetStorage(x)
val
:=
statedb
.
GetState
(
closure
.
Address
(),
x
.
Bytes
())
if
len
(
val
)
==
0
&&
len
(
y
.
Bytes
())
>
0
{
// 0 => non 0
...
...
@@ -714,8 +713,7 @@ func (self *DebugVm) Run(me, caller ClosureRef, code []byte, value, gas, price *
//a := big.NewInt(int64(op) - int64(PUSH1) + 1)
a
:=
uint64
(
op
-
PUSH1
+
1
)
//pc.Add(pc, ethutil.Big1)
data
:=
closure
.
GetRangeValue
(
pc
+
1
,
a
)
val
:=
ethutil
.
BigD
(
data
.
Bytes
())
val
:=
ethutil
.
BigD
(
closure
.
GetRangeValue
(
pc
+
1
,
a
))
// Push value to stack
stack
.
Push
(
val
)
pc
+=
a
...
...
@@ -723,7 +721,7 @@ func (self *DebugVm) Run(me, caller ClosureRef, code []byte, value, gas, price *
step
+=
int
(
op
)
-
int
(
PUSH1
)
+
1
self
.
Printf
(
" => 0x%x"
,
data
.
Bytes
())
self
.
Printf
(
" => 0x%x"
,
val
.
Bytes
())
case
POP
:
stack
.
Pop
()
case
DUP1
,
DUP2
,
DUP3
,
DUP4
,
DUP5
,
DUP6
,
DUP7
,
DUP8
,
DUP9
,
DUP10
,
DUP11
,
DUP12
,
DUP13
,
DUP14
,
DUP15
,
DUP16
:
...
...
xeth/vm_env.go
View file @
6e24b158
...
...
@@ -47,9 +47,7 @@ func (self *VMEnv) Transfer(from, to vm.Account, amount *big.Int) error {
}
func
(
self
*
VMEnv
)
vm
(
addr
,
data
[]
byte
,
gas
,
price
,
value
*
big
.
Int
)
*
core
.
Execution
{
evm
:=
vm
.
New
(
self
,
vm
.
DebugVmTy
)
return
core
.
NewExecution
(
evm
,
addr
,
data
,
gas
,
price
,
value
)
return
core
.
NewExecution
(
self
,
addr
,
data
,
gas
,
price
,
value
)
}
func
(
self
*
VMEnv
)
Call
(
me
vm
.
ClosureRef
,
addr
,
data
[]
byte
,
gas
,
price
,
value
*
big
.
Int
)
([]
byte
,
error
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment