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
Show 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"
...
...
@@ -43,6 +44,7 @@ var (
KeyStore
string
StartRpc
bool
StartWebSockets
bool
RpcListenAddress
string
RpcPort
int
OutboundPort
string
ShowGenesis
bool
...
...
@@ -69,6 +71,7 @@ var (
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
...
...
@@ -76,6 +76,7 @@ func main() {
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
...
...
@@ -41,7 +41,7 @@ var (
KeyRing
string
KeyStore
string
StartRpc
bool
StartWebSockets
bool
RpcListenAddress
string
RpcPort
int
OutboundPort
string
ShowGenesis
bool
...
...
@@ -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,18 +940,22 @@ func (self *Vm) RunPrecompiled(p *PrecompiledAccount, callData []byte, context *
}
func
(
self
*
Vm
)
Printf
(
format
string
,
v
...
interface
{})
VirtualMachine
{
if
self
.
debug
{
if
self
.
logTy
==
LogTyPretty
{
self
.
logStr
+=
fmt
.
Sprintf
(
format
,
v
...
)
}
}
return
self
}
func
(
self
*
Vm
)
Endl
()
VirtualMachine
{
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