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
3664cd58
Commit
3664cd58
authored
Dec 04, 2014
by
obscuren
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Updated testing tools
parent
491edc16
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
69 additions
and
23 deletions
+69
-23
main.go
cmd/ethtest/main.go
+1
-1
main.go
cmd/evm/main.go
+68
-22
No files found.
cmd/ethtest/main.go
View file @
3664cd58
...
@@ -82,7 +82,7 @@ func RunVmTest(js string) (failed int) {
...
@@ -82,7 +82,7 @@ func RunVmTest(js string) (failed int) {
state
.
SetStateObject
(
obj
)
state
.
SetStateObject
(
obj
)
}
}
ret
,
gas
,
err
:=
helper
.
RunVm
(
state
,
test
.
Env
,
test
.
Exec
)
ret
,
_
,
gas
,
err
:=
helper
.
RunVm
(
state
,
test
.
Env
,
test
.
Exec
)
// When an error is returned it doesn't always mean the tests fails.
// When an error is returned it doesn't always mean the tests fails.
// Have to come up with some conditional failing mechanism.
// Have to come up with some conditional failing mechanism.
if
err
!=
nil
{
if
err
!=
nil
{
...
...
cmd/evm/main.go
View file @
3664cd58
...
@@ -32,6 +32,8 @@ import (
...
@@ -32,6 +32,8 @@ import (
"runtime"
"runtime"
"time"
"time"
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/ethutil"
"github.com/ethereum/go-ethereum/ethutil"
"github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/logger"
...
@@ -45,6 +47,7 @@ var (
...
@@ -45,6 +47,7 @@ var (
loglevel
=
flag
.
Int
(
"log"
,
4
,
"log level"
)
loglevel
=
flag
.
Int
(
"log"
,
4
,
"log level"
)
gas
=
flag
.
String
(
"gas"
,
"1000000"
,
"gas amount"
)
gas
=
flag
.
String
(
"gas"
,
"1000000"
,
"gas amount"
)
price
=
flag
.
String
(
"price"
,
"0"
,
"gas price"
)
price
=
flag
.
String
(
"price"
,
"0"
,
"gas price"
)
value
=
flag
.
String
(
"value"
,
"0"
,
"tx value"
)
dump
=
flag
.
Bool
(
"dump"
,
false
,
"dump state after run"
)
dump
=
flag
.
Bool
(
"dump"
,
false
,
"dump state after run"
)
data
=
flag
.
String
(
"data"
,
""
,
"data"
)
data
=
flag
.
String
(
"data"
,
""
,
"data"
)
)
)
...
@@ -61,13 +64,17 @@ func main() {
...
@@ -61,13 +64,17 @@ func main() {
ethutil
.
ReadConfig
(
"/tm/evmtest"
,
"/tmp/evm"
,
""
)
ethutil
.
ReadConfig
(
"/tm/evmtest"
,
"/tmp/evm"
,
""
)
stateObject
:=
state
.
NewStateObject
([]
byte
(
"evmuser"
))
db
,
_
:=
ethdb
.
NewMemDatabase
()
closure
:=
vm
.
NewClosure
(
nil
,
stateObject
,
stateObject
,
ethutil
.
Hex2Bytes
(
*
code
),
ethutil
.
Big
(
*
gas
),
ethutil
.
Big
(
*
price
))
statedb
:=
state
.
New
(
trie
.
New
(
db
,
""
))
sender
:=
statedb
.
NewStateObject
([]
byte
(
"sender"
))
receiver
:=
statedb
.
NewStateObject
([]
byte
(
"receiver"
))
receiver
.
SetCode
([]
byte
(
*
code
))
vmenv
:=
NewEnv
(
statedb
,
[]
byte
(
"evmuser"
),
ethutil
.
Big
(
*
value
))
tstart
:=
time
.
Now
()
tstart
:=
time
.
Now
()
env
:=
NewVmEnv
()
ret
,
e
:=
vmenv
.
Call
(
sender
,
receiver
.
Address
(),
ethutil
.
Hex2Bytes
(
*
data
),
ethutil
.
Big
(
*
gas
),
ethutil
.
Big
(
*
price
),
ethutil
.
Big
(
*
value
))
ret
,
_
,
e
:=
closure
.
Call
(
vm
.
New
(
env
,
vm
.
DebugVmTy
),
ethutil
.
Hex2Bytes
(
*
data
))
logger
.
Flush
()
logger
.
Flush
()
if
e
!=
nil
{
if
e
!=
nil
{
...
@@ -75,7 +82,7 @@ func main() {
...
@@ -75,7 +82,7 @@ func main() {
}
}
if
*
dump
{
if
*
dump
{
fmt
.
Println
(
string
(
env
.
state
.
Dump
()))
fmt
.
Println
(
string
(
statedb
.
Dump
()))
}
}
var
mem
runtime
.
MemStats
var
mem
runtime
.
MemStats
...
@@ -92,26 +99,65 @@ num gc: %d
...
@@ -92,26 +99,65 @@ num gc: %d
fmt
.
Printf
(
"%x
\n
"
,
ret
)
fmt
.
Printf
(
"%x
\n
"
,
ret
)
}
}
type
V
m
Env
struct
{
type
V
M
Env
struct
{
state
*
state
.
State
state
*
state
.
State
block
*
types
.
Block
transactor
[]
byte
value
*
big
.
Int
depth
int
Gas
*
big
.
Int
time
int64
}
}
func
NewVmEnv
()
*
VmEnv
{
func
NewEnv
(
state
*
state
.
State
,
transactor
[]
byte
,
value
*
big
.
Int
)
*
VMEnv
{
db
,
_
:=
ethdb
.
NewMemDatabase
()
return
&
VMEnv
{
return
&
VmEnv
{
state
.
New
(
trie
.
New
(
db
,
""
))}
state
:
state
,
transactor
:
transactor
,
value
:
value
,
time
:
time
.
Now
()
.
Unix
(),
}
}
func
(
self
*
VMEnv
)
State
()
*
state
.
State
{
return
self
.
state
}
func
(
self
*
VMEnv
)
Origin
()
[]
byte
{
return
self
.
transactor
}
func
(
self
*
VMEnv
)
BlockNumber
()
*
big
.
Int
{
return
ethutil
.
Big0
}
func
(
self
*
VMEnv
)
PrevHash
()
[]
byte
{
return
make
([]
byte
,
32
)
}
func
(
self
*
VMEnv
)
Coinbase
()
[]
byte
{
return
self
.
transactor
}
func
(
self
*
VMEnv
)
Time
()
int64
{
return
self
.
time
}
func
(
self
*
VMEnv
)
Difficulty
()
*
big
.
Int
{
return
ethutil
.
Big1
}
func
(
self
*
VMEnv
)
BlockHash
()
[]
byte
{
return
make
([]
byte
,
32
)
}
func
(
self
*
VMEnv
)
Value
()
*
big
.
Int
{
return
self
.
value
}
func
(
self
*
VMEnv
)
GasLimit
()
*
big
.
Int
{
return
big
.
NewInt
(
1000000000
)
}
func
(
self
*
VMEnv
)
Depth
()
int
{
return
self
.
depth
}
func
(
self
*
VMEnv
)
SetDepth
(
i
int
)
{
self
.
depth
=
i
}
func
(
self
*
VMEnv
)
AddLog
(
log
*
state
.
Log
)
{
self
.
state
.
AddLog
(
log
)
}
func
(
self
*
VMEnv
)
Transfer
(
from
,
to
vm
.
Account
,
amount
*
big
.
Int
)
error
{
return
vm
.
Transfer
(
from
,
to
,
amount
)
}
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
)
}
func
(
self
*
VMEnv
)
Call
(
caller
vm
.
ClosureRef
,
addr
,
data
[]
byte
,
gas
,
price
,
value
*
big
.
Int
)
([]
byte
,
error
)
{
exe
:=
self
.
vm
(
addr
,
data
,
gas
,
price
,
value
)
ret
,
err
:=
exe
.
Call
(
addr
,
caller
)
self
.
Gas
=
exe
.
Gas
return
ret
,
err
}
func
(
self
*
VMEnv
)
CallCode
(
caller
vm
.
ClosureRef
,
addr
,
data
[]
byte
,
gas
,
price
,
value
*
big
.
Int
)
([]
byte
,
error
)
{
exe
:=
self
.
vm
(
caller
.
Address
(),
data
,
gas
,
price
,
value
)
return
exe
.
Call
(
addr
,
caller
)
}
}
func
(
VmEnv
)
Origin
()
[]
byte
{
return
nil
}
func
(
self
*
VMEnv
)
Create
(
caller
vm
.
ClosureRef
,
addr
,
data
[]
byte
,
gas
,
price
,
value
*
big
.
Int
)
([]
byte
,
error
,
vm
.
ClosureRef
)
{
func
(
VmEnv
)
BlockNumber
()
*
big
.
Int
{
return
nil
}
exe
:=
self
.
vm
(
addr
,
data
,
gas
,
price
,
value
)
func
(
VmEnv
)
BlockHash
()
[]
byte
{
return
nil
}
return
exe
.
Create
(
caller
)
func
(
VmEnv
)
PrevHash
()
[]
byte
{
return
nil
}
func
(
VmEnv
)
Coinbase
()
[]
byte
{
return
nil
}
func
(
VmEnv
)
Time
()
int64
{
return
0
}
func
(
VmEnv
)
GasLimit
()
*
big
.
Int
{
return
nil
}
func
(
VmEnv
)
Difficulty
()
*
big
.
Int
{
return
nil
}
func
(
VmEnv
)
Value
()
*
big
.
Int
{
return
nil
}
func
(
self
*
VmEnv
)
State
()
*
state
.
State
{
return
self
.
state
}
func
(
VmEnv
)
AddLog
(
*
state
.
Log
)
{}
func
(
VmEnv
)
Transfer
(
from
,
to
vm
.
Account
,
amount
*
big
.
Int
)
error
{
return
nil
}
}
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