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
4cb0bfe9
Commit
4cb0bfe9
authored
Mar 02, 2015
by
Taylor Gerring
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' of github.com:ethereum/go-ethereum into removews
Conflicts: cmd/ethereum/flags.go cmd/mist/flags.go
parents
cfe03702
65cad14f
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
153 additions
and
150 deletions
+153
-150
flags.go
cmd/ethereum/flags.go
+44
-33
main.go
cmd/ethereum/main.go
+22
-19
repl.go
cmd/ethereum/repl/repl.go
+1
-0
flags.go
cmd/mist/flags.go
+25
-24
main.go
cmd/mist/main.go
+1
-1
cmd.go
cmd/utils/cmd.go
+2
-2
genesis.go
core/genesis.go
+0
-2
common.go
ethutil/common.go
+11
-2
javascript_runtime.go
javascript/javascript_runtime.go
+9
-49
js_lib.go
javascript/js_lib.go
+1
-1
miner.go
miner/miner.go
+1
-6
worker.go
miner/worker.go
+14
-0
server.go
rpc/http/server.go
+5
-3
dump.go
state/dump.go
+5
-2
vm.go
vm/vm.go
+12
-6
No files found.
cmd/ethereum/flags.go
View file @
4cb0bfe9
...
...
@@ -27,6 +27,7 @@ import (
"log"
"os"
"path"
"runtime"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/ethutil"
...
...
@@ -36,39 +37,41 @@ import (
)
var
(
Identifier
string
KeyRing
string
DiffTool
bool
DiffType
string
KeyStore
string
StartRpc
bool
StartWebSockets
bool
RpcPort
int
OutboundPort
string
ShowGenesis
bool
AddPeer
string
MaxPeer
int
GenAddr
bool
BootNodes
string
NodeKey
*
ecdsa
.
PrivateKey
NAT
nat
.
Interface
SecretFile
string
ExportDir
string
NonInteractive
bool
Datadir
string
LogFile
string
ConfigFile
string
DebugFile
string
LogLevel
int
LogFormat
string
Dump
bool
DumpHash
string
DumpNumber
int
VmType
int
ImportChain
string
SHH
bool
Dial
bool
PrintVersion
bool
Identifier
string
KeyRing
string
DiffTool
bool
DiffType
string
KeyStore
string
StartRpc
bool
StartWebSockets
bool
RpcListenAddress
string
RpcPort
int
OutboundPort
string
ShowGenesis
bool
AddPeer
string
MaxPeer
int
GenAddr
bool
BootNodes
string
NodeKey
*
ecdsa
.
PrivateKey
NAT
nat
.
Interface
SecretFile
string
ExportDir
string
NonInteractive
bool
Datadir
string
LogFile
string
ConfigFile
string
DebugFile
string
LogLevel
int
LogFormat
string
Dump
bool
DumpHash
string
DumpNumber
int
VmType
int
ImportChain
string
SHH
bool
Dial
bool
PrintVersion
bool
MinerThreads
int
)
// flags specific to cli client
...
...
@@ -92,6 +95,7 @@ func Init() {
flag
.
StringVar
(
&
KeyRing
,
"keyring"
,
""
,
"identifier for keyring to use"
)
flag
.
StringVar
(
&
KeyStore
,
"keystore"
,
"db"
,
"system to store keyrings: db|file (db)"
)
flag
.
StringVar
(
&
RpcListenAddress
,
"rpcaddr"
,
"127.0.0.1"
,
"address for json-rpc server to listen on"
)
flag
.
IntVar
(
&
RpcPort
,
"rpcport"
,
8545
,
"port to start json-rpc server on"
)
flag
.
BoolVar
(
&
StartRpc
,
"rpc"
,
false
,
"start rpc server"
)
flag
.
BoolVar
(
&
NonInteractive
,
"y"
,
false
,
"non-interactive mode (say yes to confirmations)"
)
...
...
@@ -116,6 +120,7 @@ func Init() {
flag
.
BoolVar
(
&
StartMining
,
"mine"
,
false
,
"start dagger mining"
)
flag
.
BoolVar
(
&
StartJsConsole
,
"js"
,
false
,
"launches javascript console"
)
flag
.
BoolVar
(
&
PrintVersion
,
"version"
,
false
,
"prints version number"
)
flag
.
IntVar
(
&
MinerThreads
,
"minerthreads"
,
runtime
.
NumCPU
(),
"number of miner threads"
)
// Network stuff
var
(
...
...
@@ -132,6 +137,12 @@ func Init() {
flag
.
Parse
()
// When the javascript console is started log to a file instead
// of stdout
if
StartJsConsole
{
LogFile
=
path
.
Join
(
Datadir
,
"ethereum.log"
)
}
var
err
error
if
NAT
,
err
=
nat
.
Parse
(
*
natstr
);
err
!=
nil
{
log
.
Fatalf
(
"-nat: %v"
,
err
)
...
...
cmd/ethereum/main.go
View file @
4cb0bfe9
...
...
@@ -62,20 +62,21 @@ func main() {
utils
.
InitConfig
(
VmType
,
ConfigFile
,
Datadir
,
"ETH"
)
ethereum
,
err
:=
eth
.
New
(
&
eth
.
Config
{
Name
:
p2p
.
MakeName
(
ClientIdentifier
,
Version
),
KeyStore
:
KeyStore
,
DataDir
:
Datadir
,
LogFile
:
LogFile
,
LogLevel
:
LogLevel
,
LogFormat
:
LogFormat
,
MaxPeers
:
MaxPeer
,
Port
:
OutboundPort
,
NAT
:
NAT
,
KeyRing
:
KeyRing
,
Shh
:
true
,
Dial
:
Dial
,
BootNodes
:
BootNodes
,
NodeKey
:
NodeKey
,
Name
:
p2p
.
MakeName
(
ClientIdentifier
,
Version
),
KeyStore
:
KeyStore
,
DataDir
:
Datadir
,
LogFile
:
LogFile
,
LogLevel
:
LogLevel
,
LogFormat
:
LogFormat
,
MaxPeers
:
MaxPeer
,
Port
:
OutboundPort
,
NAT
:
NAT
,
KeyRing
:
KeyRing
,
Shh
:
true
,
Dial
:
Dial
,
BootNodes
:
BootNodes
,
NodeKey
:
NodeKey
,
MinerThreads
:
MinerThreads
,
})
if
err
!=
nil
{
...
...
@@ -113,10 +114,6 @@ func main() {
return
}
if
StartMining
{
utils
.
StartMining
(
ethereum
)
}
if
len
(
ImportChain
)
>
0
{
start
:=
time
.
Now
()
err
:=
utils
.
ImportChain
(
ethereum
,
ImportChain
)
...
...
@@ -128,11 +125,17 @@ func main() {
}
if
StartRpc
{
utils
.
StartRpc
(
ethereum
,
RpcPort
)
utils
.
StartRpc
(
ethereum
,
Rpc
ListenAddress
,
Rpc
Port
)
}
utils
.
StartEthereum
(
ethereum
)
fmt
.
Printf
(
"Welcome to the FRONTIER
\n
"
)
if
StartMining
{
ethereum
.
Miner
()
.
Start
()
}
if
StartJsConsole
{
InitJsConsole
(
ethereum
)
}
else
if
len
(
InputFile
)
>
0
{
...
...
cmd/ethereum/repl/repl.go
View file @
4cb0bfe9
...
...
@@ -60,6 +60,7 @@ func (self *JSRepl) Start() {
if
!
self
.
running
{
self
.
running
=
true
repllogger
.
Infoln
(
"init JS Console"
)
reader
:=
bufio
.
NewReader
(
self
.
history
)
for
{
line
,
err
:=
reader
.
ReadString
(
'\n'
)
...
...
cmd/mist/flags.go
View file @
4cb0bfe9
...
...
@@ -37,30 +37,30 @@ import (
)
var
(
Identifier
string
KeyRing
string
KeyStore
string
StartRpc
bool
StartWebSockets
bool
RpcPort
int
OutboundPort
string
ShowGenesis
bool
AddPeer
string
MaxPeer
int
GenAddr
bool
BootNodes
string
NodeKey
*
ecdsa
.
PrivateKey
NAT
nat
.
Interface
SecretFile
string
ExportDir
string
NonInteractive
bool
Datadir
string
LogFile
string
ConfigFile
string
DebugFile
string
LogLevel
int
VmType
int
MinerThreads
int
Identifier
string
KeyRing
string
KeyStore
string
StartRpc
bool
RpcListenAddress
string
RpcPort
int
OutboundPort
string
ShowGenesis
bool
AddPeer
string
MaxPeer
int
GenAddr
bool
BootNodes
string
NodeKey
*
ecdsa
.
PrivateKey
NAT
nat
.
Interface
SecretFile
string
ExportDir
string
NonInteractive
bool
Datadir
string
LogFile
string
ConfigFile
string
DebugFile
string
LogLevel
int
VmType
int
MinerThreads
int
)
// flags specific to gui client
...
...
@@ -78,6 +78,7 @@ func Init() {
flag
.
StringVar
(
&
Identifier
,
"id"
,
""
,
"Custom client identifier"
)
flag
.
StringVar
(
&
KeyRing
,
"keyring"
,
""
,
"identifier for keyring to use"
)
flag
.
StringVar
(
&
KeyStore
,
"keystore"
,
"db"
,
"system to store keyrings: db|file (db)"
)
flag
.
StringVar
(
&
RpcListenAddress
,
"rpcaddr"
,
"127.0.0.1"
,
"address for json-rpc server to listen on"
)
flag
.
IntVar
(
&
RpcPort
,
"rpcport"
,
8545
,
"port to start json-rpc server on"
)
flag
.
BoolVar
(
&
StartRpc
,
"rpc"
,
true
,
"start rpc server"
)
flag
.
BoolVar
(
&
NonInteractive
,
"y"
,
false
,
"non-interactive mode (say yes to confirmations)"
)
...
...
cmd/mist/main.go
View file @
4cb0bfe9
...
...
@@ -73,7 +73,7 @@ func run() error {
utils
.
KeyTasks
(
ethereum
.
KeyManager
(),
KeyRing
,
GenAddr
,
SecretFile
,
ExportDir
,
NonInteractive
)
if
StartRpc
{
utils
.
StartRpc
(
ethereum
,
RpcPort
)
utils
.
StartRpc
(
ethereum
,
Rpc
ListenAddress
,
Rpc
Port
)
}
gui
:=
NewWindow
(
ethereum
,
config
,
KeyRing
,
LogLevel
)
...
...
cmd/utils/cmd.go
View file @
4cb0bfe9
...
...
@@ -159,9 +159,9 @@ func KeyTasks(keyManager *crypto.KeyManager, KeyRing string, GenAddr bool, Secre
clilogger
.
Infof
(
"Main address %x
\n
"
,
keyManager
.
Address
())
}
func
StartRpc
(
ethereum
*
eth
.
Ethereum
,
RpcPort
int
)
{
func
StartRpc
(
ethereum
*
eth
.
Ethereum
,
Rpc
ListenAddress
string
,
Rpc
Port
int
)
{
var
err
error
ethereum
.
RpcServer
,
err
=
rpchttp
.
NewRpcHttpServer
(
xeth
.
New
(
ethereum
),
RpcPort
)
ethereum
.
RpcServer
,
err
=
rpchttp
.
NewRpcHttpServer
(
xeth
.
New
(
ethereum
),
Rpc
ListenAddress
,
Rpc
Port
)
if
err
!=
nil
{
clilogger
.
Errorf
(
"Could not start RPC interface (port %v): %v"
,
RpcPort
,
err
)
}
else
{
...
...
core/genesis.go
View file @
4cb0bfe9
...
...
@@ -51,8 +51,6 @@ func GenesisBlock(db ethutil.Database) *types.Block {
statedb
.
Sync
()
genesis
.
Header
()
.
Root
=
statedb
.
Root
()
fmt
.
Printf
(
"+++ genesis +++
\n
Root: %x
\n
Hash: %x
\n
"
,
genesis
.
Header
()
.
Root
,
genesis
.
Hash
())
return
genesis
}
...
...
ethutil/common.go
View file @
4cb0bfe9
...
...
@@ -15,11 +15,13 @@ import (
func
DefaultAssetPath
()
string
{
var
assetPath
string
pwd
,
_
:=
os
.
Getwd
()
srcdir
:=
path
.
Join
(
os
.
Getenv
(
"GOPATH"
),
"src"
,
"github.com"
,
"ethereum"
,
"go-ethereum"
,
"cmd"
,
"mist"
)
// If the current working directory is the go-ethereum dir
// assume a debug build and use the source directory as
// asset directory.
pwd
,
_
:=
os
.
Getwd
()
if
pwd
==
path
.
Join
(
os
.
Getenv
(
"GOPATH"
),
"src"
,
"github.com"
,
"ethereum"
,
"go-ethereum"
,
"cmd"
,
"mist"
)
{
if
pwd
==
srcdir
{
assetPath
=
path
.
Join
(
pwd
,
"assets"
)
}
else
{
switch
runtime
.
GOOS
{
...
...
@@ -35,6 +37,13 @@ func DefaultAssetPath() string {
assetPath
=
"."
}
}
// Check if the assetPath exists. If not, try the source directory
// This happens when binary is run from outside cmd/mist directory
if
_
,
err
:=
os
.
Stat
(
assetPath
);
os
.
IsNotExist
(
err
)
{
assetPath
=
path
.
Join
(
srcdir
,
"assets"
)
}
return
assetPath
}
...
...
javascript/javascript_runtime.go
View file @
4cb0bfe9
...
...
@@ -24,7 +24,7 @@ var jsrelogger = logger.NewLogger("JSRE")
type
JSRE
struct
{
ethereum
*
eth
.
Ethereum
Vm
*
otto
.
Otto
pipe
*
xeth
.
XEth
xeth
*
xeth
.
XEth
events
event
.
Subscription
...
...
@@ -67,7 +67,7 @@ func NewJSRE(ethereum *eth.Ethereum) *JSRE {
// We have to make sure that, whoever calls this, calls "Stop"
go
re
.
mainLoop
()
re
.
Bind
(
"eth"
,
&
JSEthereum
{
re
.
pipe
,
re
.
Vm
,
ethereum
})
re
.
Bind
(
"eth"
,
&
JSEthereum
{
re
.
xeth
,
re
.
Vm
,
ethereum
})
re
.
initStdFuncs
()
...
...
@@ -113,12 +113,10 @@ func (self *JSRE) mainLoop() {
func
(
self
*
JSRE
)
initStdFuncs
()
{
t
,
_
:=
self
.
Vm
.
Get
(
"eth"
)
eth
:=
t
.
Object
()
eth
.
Set
(
"watch"
,
self
.
watch
)
eth
.
Set
(
"addPeer"
,
self
.
addPeer
)
eth
.
Set
(
"connect"
,
self
.
connect
)
eth
.
Set
(
"require"
,
self
.
require
)
eth
.
Set
(
"stopMining"
,
self
.
stopMining
)
eth
.
Set
(
"startMining"
,
self
.
startMining
)
eth
.
Set
(
"execBlock"
,
self
.
execBlock
)
eth
.
Set
(
"dump"
,
self
.
dump
)
eth
.
Set
(
"export"
,
self
.
export
)
}
...
...
@@ -152,7 +150,8 @@ func (self *JSRE) dump(call otto.FunctionCall) otto.Value {
}
statedb
:=
state
.
New
(
block
.
Root
(),
self
.
ethereum
.
Db
())
v
,
_
:=
self
.
Vm
.
ToValue
(
statedb
.
Dump
())
v
,
_
:=
self
.
Vm
.
ToValue
(
statedb
.
RawDump
())
return
v
}
...
...
@@ -167,36 +166,7 @@ func (self *JSRE) startMining(call otto.FunctionCall) otto.Value {
return
v
}
// eth.watch
func
(
self
*
JSRE
)
watch
(
call
otto
.
FunctionCall
)
otto
.
Value
{
addr
,
_
:=
call
.
Argument
(
0
)
.
ToString
()
var
storageAddr
string
var
cb
otto
.
Value
var
storageCallback
bool
if
len
(
call
.
ArgumentList
)
>
2
{
storageCallback
=
true
storageAddr
,
_
=
call
.
Argument
(
1
)
.
ToString
()
cb
=
call
.
Argument
(
2
)
}
else
{
cb
=
call
.
Argument
(
1
)
}
if
storageCallback
{
self
.
objectCb
[
addr
+
storageAddr
]
=
append
(
self
.
objectCb
[
addr
+
storageAddr
],
cb
)
// event := "storage:" + string(ethutil.Hex2Bytes(addr)) + ":" + string(ethutil.Hex2Bytes(storageAddr))
// self.ethereum.EventMux().Subscribe(event, self.changeChan)
}
else
{
self
.
objectCb
[
addr
]
=
append
(
self
.
objectCb
[
addr
],
cb
)
// event := "object:" + string(ethutil.Hex2Bytes(addr))
// self.ethereum.EventMux().Subscribe(event, self.changeChan)
}
return
otto
.
UndefinedValue
()
}
func
(
self
*
JSRE
)
addPeer
(
call
otto
.
FunctionCall
)
otto
.
Value
{
func
(
self
*
JSRE
)
connect
(
call
otto
.
FunctionCall
)
otto
.
Value
{
nodeURL
,
err
:=
call
.
Argument
(
0
)
.
ToString
()
if
err
!=
nil
{
return
otto
.
FalseValue
()
...
...
@@ -222,22 +192,12 @@ func (self *JSRE) require(call otto.FunctionCall) otto.Value {
return
t
}
func
(
self
*
JSRE
)
execBlock
(
call
otto
.
FunctionCall
)
otto
.
Value
{
hash
,
err
:=
call
.
Argument
(
0
)
.
ToString
()
if
err
!=
nil
{
return
otto
.
UndefinedValue
()
}
err
=
utils
.
BlockDo
(
self
.
ethereum
,
ethutil
.
Hex2Bytes
(
hash
))
if
err
!=
nil
{
fmt
.
Println
(
err
)
func
(
self
*
JSRE
)
export
(
call
otto
.
FunctionCall
)
otto
.
Value
{
if
len
(
call
.
ArgumentList
)
==
0
{
fmt
.
Println
(
"err: require file name"
)
return
otto
.
FalseValue
()
}
return
otto
.
TrueValue
()
}
func
(
self
*
JSRE
)
export
(
call
otto
.
FunctionCall
)
otto
.
Value
{
fn
,
err
:=
call
.
Argument
(
0
)
.
ToString
()
if
err
!=
nil
{
fmt
.
Println
(
err
)
...
...
javascript/js_lib.go
View file @
4cb0bfe9
...
...
@@ -16,7 +16,7 @@ function pp(object) {
str += " ]";
} else if(typeof(object) === "object") {
str += "{ ";
var last = Object.keys(object).
sort().
pop()
var last = Object.keys(object).pop()
for(var k in object) {
str += k + ": " + pp(object[k]);
...
...
miner/miner.go
View file @
4cb0bfe9
...
...
@@ -52,10 +52,5 @@ func (self *Miner) Stop() {
}
func
(
self
*
Miner
)
HashRate
()
int64
{
var
tot
int64
for
_
,
agent
:=
range
self
.
worker
.
agents
{
tot
+=
agent
.
Pow
()
.
GetHashrate
()
}
return
tot
return
self
.
worker
.
HashRate
()
}
miner/worker.go
View file @
4cb0bfe9
...
...
@@ -5,6 +5,7 @@ import (
"math/big"
"sort"
"sync"
"time"
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/types"
...
...
@@ -111,6 +112,8 @@ func (self *worker) register(agent Agent) {
func
(
self
*
worker
)
update
()
{
events
:=
self
.
mux
.
Subscribe
(
core
.
ChainEvent
{},
core
.
NewMinedBlockEvent
{})
timer
:=
time
.
NewTicker
(
2
*
time
.
Second
)
out
:
for
{
select
{
...
...
@@ -129,6 +132,8 @@ out:
agent
.
Stop
()
}
break
out
case
<-
timer
.
C
:
minerlogger
.
Debugln
(
"Hash rate:"
,
self
.
HashRate
(),
"Khash"
)
}
}
...
...
@@ -244,3 +249,12 @@ func (self *worker) commitTransaction(tx *types.Transaction) error {
return
nil
}
func
(
self
*
worker
)
HashRate
()
int64
{
var
tot
int64
for
_
,
agent
:=
range
self
.
agents
{
tot
+=
agent
.
Pow
()
.
GetHashrate
()
}
return
tot
}
rpc/http/server.go
View file @
4cb0bfe9
...
...
@@ -29,8 +29,8 @@ import (
var
rpchttplogger
=
logger
.
NewLogger
(
"RPC-HTTP"
)
var
JSON
rpc
.
JsonWrapper
func
NewRpcHttpServer
(
pipe
*
xeth
.
XEth
,
port
int
)
(
*
RpcHttpServer
,
error
)
{
sport
:=
fmt
.
Sprintf
(
"
127.0.0.1:%d"
,
port
)
func
NewRpcHttpServer
(
pipe
*
xeth
.
XEth
,
address
string
,
port
int
)
(
*
RpcHttpServer
,
error
)
{
sport
:=
fmt
.
Sprintf
(
"
%s:%d"
,
address
,
port
)
l
,
err
:=
net
.
Listen
(
"tcp"
,
sport
)
if
err
!=
nil
{
return
nil
,
err
...
...
@@ -41,6 +41,7 @@ func NewRpcHttpServer(pipe *xeth.XEth, port int) (*RpcHttpServer, error) {
quit
:
make
(
chan
bool
),
pipe
:
pipe
,
port
:
port
,
addr
:
address
,
},
nil
}
...
...
@@ -49,6 +50,7 @@ type RpcHttpServer struct {
listener
net
.
Listener
pipe
*
xeth
.
XEth
port
int
addr
string
}
func
(
s
*
RpcHttpServer
)
exitHandler
()
{
...
...
@@ -69,7 +71,7 @@ func (s *RpcHttpServer) Stop() {
}
func
(
s
*
RpcHttpServer
)
Start
()
{
rpchttplogger
.
Infof
(
"Starting RPC-HTTP server on
port %d"
,
s
.
port
)
rpchttplogger
.
Infof
(
"Starting RPC-HTTP server on
%s:%d"
,
s
.
addr
,
s
.
port
)
go
s
.
exitHandler
()
api
:=
rpc
.
NewEthereumApi
(
s
.
pipe
)
...
...
state/dump.go
View file @
4cb0bfe9
...
...
@@ -20,7 +20,7 @@ type World struct {
Accounts
map
[
string
]
Account
`json:"accounts"`
}
func
(
self
*
StateDB
)
Dump
()
[]
byte
{
func
(
self
*
StateDB
)
RawDump
()
World
{
world
:=
World
{
Root
:
ethutil
.
Bytes2Hex
(
self
.
trie
.
Root
()),
Accounts
:
make
(
map
[
string
]
Account
),
...
...
@@ -39,8 +39,11 @@ func (self *StateDB) Dump() []byte {
}
world
.
Accounts
[
ethutil
.
Bytes2Hex
(
it
.
Key
)]
=
account
}
return
world
}
json
,
err
:=
json
.
MarshalIndent
(
world
,
""
,
" "
)
func
(
self
*
StateDB
)
Dump
()
[]
byte
{
json
,
err
:=
json
.
MarshalIndent
(
self
.
RawDump
(),
""
,
" "
)
if
err
!=
nil
{
fmt
.
Println
(
"dump err"
,
err
)
}
...
...
vm/vm.go
View file @
4cb0bfe9
...
...
@@ -16,6 +16,8 @@ type Vm struct {
logStr
string
err
error
// For logging
debug
bool
Dbg
Debugger
...
...
@@ -32,7 +34,7 @@ func New(env Environment) *Vm {
lt
=
LogTyDiff
}
return
&
Vm
{
env
:
env
,
logTy
:
lt
,
Recoverable
:
true
}
return
&
Vm
{
debug
:
false
,
env
:
env
,
logTy
:
lt
,
Recoverable
:
true
}
}
func
(
self
*
Vm
)
Run
(
me
,
caller
ContextRef
,
code
[]
byte
,
value
,
gas
,
price
*
big
.
Int
,
callData
[]
byte
)
(
ret
[]
byte
,
err
error
)
{
...
...
@@ -938,17 +940,21 @@ func (self *Vm) RunPrecompiled(p *PrecompiledAccount, callData []byte, context *
}
func
(
self
*
Vm
)
Printf
(
format
string
,
v
...
interface
{})
VirtualMachine
{
if
self
.
logTy
==
LogTyPretty
{
self
.
logStr
+=
fmt
.
Sprintf
(
format
,
v
...
)
if
self
.
debug
{
if
self
.
logTy
==
LogTyPretty
{
self
.
logStr
+=
fmt
.
Sprintf
(
format
,
v
...
)
}
}
return
self
}
func
(
self
*
Vm
)
Endl
()
VirtualMachine
{
if
self
.
logTy
==
LogTyPretty
{
vmlogger
.
Debugln
(
self
.
logStr
)
self
.
logStr
=
""
if
self
.
debug
{
if
self
.
logTy
==
LogTyPretty
{
vmlogger
.
Debugln
(
self
.
logStr
)
self
.
logStr
=
""
}
}
return
self
...
...
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