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
3ebcd366
Commit
3ebcd366
authored
Jul 04, 2014
by
obscuren
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop'
parents
0076fa58
9e38ca55
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
145 additions
and
54 deletions
+145
-54
debugger.qml
ethereal/assets/debugger/debugger.qml
+67
-13
wallet.qml
ethereal/assets/qml/wallet.qml
+2
-2
debugger.go
ethereal/debugger.go
+31
-16
gui.go
ethereal/gui.go
+15
-13
main.go
ethereal/main.go
+11
-3
main.go
ethereum/main.go
+9
-2
cmd.go
utils/cmd.go
+10
-5
No files found.
ethereal/assets/debugger/debugger.qml
View file @
3ebcd366
...
@@ -7,6 +7,7 @@ import QtQuick.Controls.Styles 1.1
...
@@ -7,6 +7,7 @@ import QtQuick.Controls.Styles 1.1
import
Ethereum
1.0
import
Ethereum
1.0
ApplicationWindow
{
ApplicationWindow
{
id
:
win
visible
:
false
visible
:
false
title
:
"IceCREAM"
title
:
"IceCREAM"
minimumWidth
:
1280
minimumWidth
:
1280
...
@@ -17,6 +18,10 @@ ApplicationWindow {
...
@@ -17,6 +18,10 @@ ApplicationWindow {
property
alias
codeText
:
codeEditor
.
text
property
alias
codeText
:
codeEditor
.
text
property
alias
dataText
:
rawDataField
.
text
property
alias
dataText
:
rawDataField
.
text
onClosing
:
{
compileTimer
.
stop
()
}
MenuBar
{
MenuBar
{
Menu
{
Menu
{
title
:
"Debugger"
title
:
"Debugger"
...
@@ -34,12 +39,44 @@ ApplicationWindow {
...
@@ -34,12 +39,44 @@ ApplicationWindow {
MenuItem
{
MenuItem
{
text
:
"Continue"
text
:
"Continue"
shortcut
:
"Ctrl+
c
"
shortcut
:
"Ctrl+
g
"
onTriggered
:
dbg
.
continue
()
onTriggered
:
dbg
.
continue
()
}
}
MenuItem
{
text
:
"Command"
shortcut
:
"Ctrl+l"
onTriggered
:
{
dbgCommand
.
focus
=
true
}
}
MenuItem
{
text
:
"Focus code"
shortcut
:
"Ctrl+1"
onTriggered
:
{
codeEditor
.
focus
=
true
}
}
MenuItem
{
text
:
"Focus data"
shortcut
:
"Ctrl+2"
onTriggered
:
{
rawDataField
.
focus
=
true
}
}
/*
MenuItem {
text: "Close window"
shortcut: "Ctrl+w"
onTriggered: {
win.close()
}
}
*/
}
}
}
}
SplitView
{
SplitView
{
anchors.fill
:
parent
anchors.fill
:
parent
property
var
asmModel
:
ListModel
{
property
var
asmModel
:
ListModel
{
...
@@ -73,6 +110,15 @@ ApplicationWindow {
...
@@ -73,6 +110,15 @@ ApplicationWindow {
anchors.bottom
:
parent
.
bottom
anchors.bottom
:
parent
.
bottom
anchors.left
:
parent
.
left
anchors.left
:
parent
.
left
anchors.right
:
settings
.
left
anchors.right
:
settings
.
left
focus
:
true
Timer
{
id
:
compileTimer
interval
:
500
;
running
:
true
;
repeat
:
true
onTriggered
:
{
dbg
.
compile
(
codeEditor
.
text
)
}
}
}
}
Column
{
Column
{
...
@@ -185,7 +231,7 @@ ApplicationWindow {
...
@@ -185,7 +231,7 @@ ApplicationWindow {
}
}
height
:
parent
.
height
height
:
parent
.
height
width
:
parent
.
width
width
:
parent
.
width
TableViewColumn
{
id
:
message
;
role
:
"message"
;
title
:
"log"
;
width
:
logTableView
.
width
}
TableViewColumn
{
id
:
message
;
role
:
"message"
;
title
:
"log"
;
width
:
logTableView
.
width
-
2
}
model
:
logModel
model
:
logModel
}
}
}
}
...
@@ -207,24 +253,15 @@ ApplicationWindow {
...
@@ -207,24 +253,15 @@ ApplicationWindow {
y
:
1
y
:
1
x
:
asmTableView
.
width
x
:
asmTableView
.
width
width
:
500
width
:
500
placeholderText
:
"Debugger
command (help for help
)"
placeholderText
:
"Debugger
(type 'help'
)"
Keys.onReturnPressed
:
{
Keys.onReturnPressed
:
{
exec
()
exec
()
}
}
}
}
Button
{
anchors
{
left
:
dbgCommand
.
right
}
text
:
"Exec"
onClicked
:
{
exec
()
}
}
}
}
toolBar
:
ToolBar
{
toolBar
:
ToolBar
{
height
:
30
RowLayout
{
RowLayout
{
spacing
:
5
spacing
:
5
...
@@ -254,6 +291,23 @@ ApplicationWindow {
...
@@ -254,6 +291,23 @@ ApplicationWindow {
text
:
"Continue"
text
:
"Continue"
}
}
}
}
ComboBox
{
id
:
snippets
anchors.right
:
parent
.
right
model
:
ListModel
{
ListElement
{
text
:
"Snippets"
;
value
:
""
}
ListElement
{
text
:
"Call Contract"
;
value
:
"var[2] in;
\n
var ret;
\n\n
in[0] =
\"
arg1
\"\n
in[1] = 0xdeadbeef
\n\n
var success = call(0x0c542ddea93dae0c2fcb2cf175f03ad80d6be9a0, 0, 7000, in, ret)
\n\n
return ret"
}
}
onCurrentIndexChanged
:
{
if
(
currentIndex
!=
0
)
{
var
code
=
snippets
.
model
.
get
(
currentIndex
).
value
;
codeEditor
.
insert
(
codeEditor
.
cursorPosition
,
code
)
}
}
}
}
}
function
debugCurrent
()
{
function
debugCurrent
()
{
...
...
ethereal/assets/qml/wallet.qml
View file @
3ebcd366
...
@@ -248,9 +248,9 @@ ApplicationWindow {
...
@@ -248,9 +248,9 @@ ApplicationWindow {
text
:
"Client ID"
text
:
"Client ID"
}
}
TextField
{
TextField
{
text
:
eth
.
clientId
()
text
:
eth
.
getCustomIdentifier
()
onTextChanged
:
{
onTextChanged
:
{
eth
.
changeClientId
(
text
)
eth
.
setCustomIdentifier
(
text
)
}
}
}
}
}
}
...
...
ethereal/debugger.go
View file @
3ebcd366
...
@@ -52,13 +52,31 @@ func (self *DebuggerWindow) SetCode(code string) {
...
@@ -52,13 +52,31 @@ func (self *DebuggerWindow) SetCode(code string) {
func
(
self
*
DebuggerWindow
)
SetData
(
data
string
)
{
func
(
self
*
DebuggerWindow
)
SetData
(
data
string
)
{
self
.
win
.
Set
(
"dataText"
,
data
)
self
.
win
.
Set
(
"dataText"
,
data
)
}
}
func
(
self
*
DebuggerWindow
)
SetAsm
(
data
string
)
{
func
(
self
*
DebuggerWindow
)
SetAsm
(
data
[]
byte
)
{
dis
:=
ethchain
.
Disassemble
(
ethutil
.
Hex2Bytes
(
data
))
self
.
win
.
Root
()
.
Call
(
"clearAsm"
)
dis
:=
ethchain
.
Disassemble
(
data
)
for
_
,
str
:=
range
dis
{
for
_
,
str
:=
range
dis
{
self
.
win
.
Root
()
.
Call
(
"setAsm"
,
str
)
self
.
win
.
Root
()
.
Call
(
"setAsm"
,
str
)
}
}
}
}
func
(
self
*
DebuggerWindow
)
Compile
(
code
string
)
{
var
err
error
script
:=
ethutil
.
StringToByteFunc
(
code
,
func
(
s
string
)
(
ret
[]
byte
)
{
ret
,
err
=
ethutil
.
Compile
(
s
,
true
)
return
})
if
err
==
nil
{
self
.
SetAsm
(
script
)
}
}
func
(
self
*
DebuggerWindow
)
ClearLog
()
{
self
.
win
.
Root
()
.
Call
(
"clearLog"
)
}
func
(
self
*
DebuggerWindow
)
Debug
(
valueStr
,
gasStr
,
gasPriceStr
,
scriptStr
,
dataStr
string
)
{
func
(
self
*
DebuggerWindow
)
Debug
(
valueStr
,
gasStr
,
gasPriceStr
,
scriptStr
,
dataStr
string
)
{
if
!
self
.
Db
.
done
{
if
!
self
.
Db
.
done
{
self
.
Db
.
Q
<-
true
self
.
Db
.
Q
<-
true
...
@@ -81,7 +99,7 @@ func (self *DebuggerWindow) Debug(valueStr, gasStr, gasPriceStr, scriptStr, data
...
@@ -81,7 +99,7 @@ func (self *DebuggerWindow) Debug(valueStr, gasStr, gasPriceStr, scriptStr, data
var
err
error
var
err
error
script
:=
ethutil
.
StringToByteFunc
(
scriptStr
,
func
(
s
string
)
(
ret
[]
byte
)
{
script
:=
ethutil
.
StringToByteFunc
(
scriptStr
,
func
(
s
string
)
(
ret
[]
byte
)
{
ret
,
err
=
ethutil
.
Compile
(
s
)
ret
,
err
=
ethutil
.
Compile
(
s
,
false
)
return
return
})
})
...
@@ -91,27 +109,21 @@ func (self *DebuggerWindow) Debug(valueStr, gasStr, gasPriceStr, scriptStr, data
...
@@ -91,27 +109,21 @@ func (self *DebuggerWindow) Debug(valueStr, gasStr, gasPriceStr, scriptStr, data
return
return
}
}
dis
:=
ethchain
.
Disassemble
(
script
)
self
.
SetAsm
(
script
)
self
.
win
.
Root
()
.
Call
(
"clearAsm"
)
for
_
,
str
:=
range
dis
{
self
.
win
.
Root
()
.
Call
(
"setAsm"
,
str
)
}
var
(
var
(
gas
=
ethutil
.
Big
(
gasStr
)
gas
=
ethutil
.
Big
(
gasStr
)
gasPrice
=
ethutil
.
Big
(
gasPriceStr
)
gasPrice
=
ethutil
.
Big
(
gasPriceStr
)
value
=
ethutil
.
Big
(
valueStr
)
value
=
ethutil
.
Big
(
valueStr
)
// Contract addr as test address
// Contract addr as test address
keyPair
=
self
.
lib
.
eth
.
KeyManager
()
.
KeyPair
()
keyPair
=
self
.
lib
.
eth
.
KeyManager
()
.
KeyPair
()
callerTx
=
ethchain
.
NewContractCreationTx
(
ethutil
.
Big
(
valueStr
),
gas
,
gasPrice
,
script
)
)
)
callerTx
.
Sign
(
keyPair
.
PrivateKey
)
state
:=
self
.
lib
.
eth
.
BlockChain
()
.
CurrentBlock
.
State
()
state
:=
self
.
lib
.
eth
.
StateManager
()
.
Trans
State
()
account
:=
self
.
lib
.
eth
.
StateManager
()
.
TransState
()
.
GetAccount
(
keyPair
.
Address
())
account
:=
self
.
lib
.
eth
.
StateManager
()
.
TransState
()
.
GetAccount
(
keyPair
.
Address
())
contract
:=
ethchain
.
MakeContract
(
callerTx
,
state
)
contract
:=
ethchain
.
NewStateObject
([]
byte
{
0
}
)
contract
.
Amount
=
value
contract
.
Amount
=
value
callerClosure
:=
ethchain
.
NewClosure
(
account
,
contract
,
script
,
state
,
gas
,
gasPrice
)
callerClosure
:=
ethchain
.
NewClosure
(
account
,
contract
,
script
,
state
,
gas
,
gasPrice
)
block
:=
self
.
lib
.
eth
.
BlockChain
()
.
CurrentBlock
block
:=
self
.
lib
.
eth
.
BlockChain
()
.
CurrentBlock
...
@@ -179,8 +191,9 @@ func (self *DebuggerWindow) ExecCommand(command string) {
...
@@ -179,8 +191,9 @@ func (self *DebuggerWindow) ExecCommand(command string) {
cmd
:=
strings
.
Split
(
command
,
" "
)
cmd
:=
strings
.
Split
(
command
,
" "
)
switch
cmd
[
0
]
{
switch
cmd
[
0
]
{
case
"help"
:
case
"help"
:
self
.
Logln
(
"Debgger commands:"
)
self
.
Logln
(
"Debugger commands:"
)
self
.
Logln
(
"break, bp Set breakpoint"
)
self
.
Logln
(
"break, bp Set breakpoint on instruction"
)
self
.
Logln
(
"clear [log, break, bp] Clears previous set sub-command(s)"
)
case
"break"
,
"bp"
:
case
"break"
,
"bp"
:
if
len
(
cmd
)
>
1
{
if
len
(
cmd
)
>
1
{
lineNo
,
err
:=
strconv
.
Atoi
(
cmd
[
1
])
lineNo
,
err
:=
strconv
.
Atoi
(
cmd
[
1
])
...
@@ -202,6 +215,8 @@ func (self *DebuggerWindow) ExecCommand(command string) {
...
@@ -202,6 +215,8 @@ func (self *DebuggerWindow) ExecCommand(command string) {
self
.
vm
.
BreakPoints
=
nil
self
.
vm
.
BreakPoints
=
nil
self
.
Logln
(
"Breakpoints cleared"
)
self
.
Logln
(
"Breakpoints cleared"
)
case
"log"
:
self
.
ClearLog
()
default
:
default
:
self
.
Logf
(
"clear '%s' is not valid"
,
cmd
[
1
])
self
.
Logf
(
"clear '%s' is not valid"
,
cmd
[
1
])
}
}
...
...
ethereal/gui.go
View file @
3ebcd366
...
@@ -9,6 +9,7 @@ import (
...
@@ -9,6 +9,7 @@ import (
"github.com/ethereum/eth-go/ethlog"
"github.com/ethereum/eth-go/ethlog"
"github.com/ethereum/eth-go/ethpub"
"github.com/ethereum/eth-go/ethpub"
"github.com/ethereum/eth-go/ethutil"
"github.com/ethereum/eth-go/ethutil"
"github.com/ethereum/eth-go/ethwire"
"github.com/ethereum/go-ethereum/utils"
"github.com/ethereum/go-ethereum/utils"
"github.com/go-qml/qml"
"github.com/go-qml/qml"
"math/big"
"math/big"
...
@@ -36,11 +37,13 @@ type Gui struct {
...
@@ -36,11 +37,13 @@ type Gui struct {
logLevel
ethlog
.
LogLevel
logLevel
ethlog
.
LogLevel
open
bool
open
bool
Session
string
Session
string
clientIdentity
*
ethwire
.
SimpleClientIdentity
config
*
ethutil
.
ConfigManager
}
}
// Create GUI, but doesn't start it
// Create GUI, but doesn't start it
func
NewWindow
(
ethereum
*
eth
.
Ethereum
,
session
string
,
logLevel
int
)
*
Gui
{
func
NewWindow
(
ethereum
*
eth
.
Ethereum
,
config
*
ethutil
.
ConfigManager
,
clientIdentity
*
ethwire
.
SimpleClientIdentity
,
session
string
,
logLevel
int
)
*
Gui
{
db
,
err
:=
ethdb
.
NewLDBDatabase
(
"tx_database"
)
db
,
err
:=
ethdb
.
NewLDBDatabase
(
"tx_database"
)
if
err
!=
nil
{
if
err
!=
nil
{
panic
(
err
)
panic
(
err
)
...
@@ -48,11 +51,10 @@ func NewWindow(ethereum *eth.Ethereum, session string, logLevel int) *Gui {
...
@@ -48,11 +51,10 @@ func NewWindow(ethereum *eth.Ethereum, session string, logLevel int) *Gui {
pub
:=
ethpub
.
NewPEthereum
(
ethereum
)
pub
:=
ethpub
.
NewPEthereum
(
ethereum
)
return
&
Gui
{
eth
:
ethereum
,
txDb
:
db
,
pub
:
pub
,
logLevel
:
ethlog
.
LogLevel
(
logLevel
),
Session
:
session
,
open
:
false
}
return
&
Gui
{
eth
:
ethereum
,
txDb
:
db
,
pub
:
pub
,
logLevel
:
ethlog
.
LogLevel
(
logLevel
),
Session
:
session
,
open
:
false
,
clientIdentity
:
clientIdentity
,
config
:
config
}
}
}
func
(
gui
*
Gui
)
Start
(
assetPath
string
)
{
func
(
gui
*
Gui
)
Start
(
assetPath
string
)
{
const
version
=
"0.5.16"
defer
gui
.
txDb
.
Close
()
defer
gui
.
txDb
.
Close
()
...
@@ -65,8 +67,6 @@ func (gui *Gui) Start(assetPath string) {
...
@@ -65,8 +67,6 @@ func (gui *Gui) Start(assetPath string) {
Init
:
func
(
p
*
ethpub
.
KeyVal
,
obj
qml
.
Object
)
{
p
.
Key
=
""
;
p
.
Value
=
""
},
Init
:
func
(
p
*
ethpub
.
KeyVal
,
obj
qml
.
Object
)
{
p
.
Key
=
""
;
p
.
Value
=
""
},
}})
}})
ethutil
.
Config
.
SetClientString
(
"Ethereal"
)
// Create a new QML engine
// Create a new QML engine
gui
.
engine
=
qml
.
NewEngine
()
gui
.
engine
=
qml
.
NewEngine
()
context
:=
gui
.
engine
.
Context
()
context
:=
gui
.
engine
.
Context
()
...
@@ -103,14 +103,14 @@ func (gui *Gui) Start(assetPath string) {
...
@@ -103,14 +103,14 @@ func (gui *Gui) Start(assetPath string) {
ethlog
.
AddLogSystem
(
gui
)
ethlog
.
AddLogSystem
(
gui
)
}
}
win
.
Wait
()
win
.
Wait
()
// need to silence gui logger after window closed otherwise logsystem hangs
// need to silence gui logger after window closed otherwise logsystem hangs
(but do not save loglevel)
gui
.
SetLogLevel
(
ethlog
.
Silence
)
gui
.
logLevel
=
ethlog
.
Silence
gui
.
open
=
false
gui
.
open
=
false
}
}
func
(
gui
*
Gui
)
Stop
()
{
func
(
gui
*
Gui
)
Stop
()
{
if
gui
.
open
{
if
gui
.
open
{
gui
.
SetLogLevel
(
ethlog
.
Silence
)
gui
.
logLevel
=
ethlog
.
Silence
gui
.
open
=
false
gui
.
open
=
false
gui
.
win
.
Hide
()
gui
.
win
.
Hide
()
}
}
...
@@ -369,17 +369,19 @@ func (gui *Gui) Create(recipient, value, gas, gasPrice, data string) (*ethpub.PR
...
@@ -369,17 +369,19 @@ func (gui *Gui) Create(recipient, value, gas, gasPrice, data string) (*ethpub.PR
return
gui
.
pub
.
Transact
(
gui
.
privateKey
(),
recipient
,
value
,
gas
,
gasPrice
,
data
)
return
gui
.
pub
.
Transact
(
gui
.
privateKey
(),
recipient
,
value
,
gas
,
gasPrice
,
data
)
}
}
func
(
gui
*
Gui
)
ChangeClientId
(
id
string
)
{
func
(
gui
*
Gui
)
SetCustomIdentifier
(
customIdentifier
string
)
{
ethutil
.
Config
.
SetIdentifier
(
id
)
gui
.
clientIdentity
.
SetCustomIdentifier
(
customIdentifier
)
gui
.
config
.
Save
(
"id"
,
customIdentifier
)
}
}
func
(
gui
*
Gui
)
ClientId
()
string
{
func
(
gui
*
Gui
)
GetCustomIdentifier
()
string
{
return
ethutil
.
Config
.
Identifier
return
gui
.
clientIdentity
.
GetCustomIdentifier
()
}
}
// functions that allow Gui to implement interface ethlog.LogSystem
// functions that allow Gui to implement interface ethlog.LogSystem
func
(
gui
*
Gui
)
SetLogLevel
(
level
ethlog
.
LogLevel
)
{
func
(
gui
*
Gui
)
SetLogLevel
(
level
ethlog
.
LogLevel
)
{
gui
.
logLevel
=
level
gui
.
logLevel
=
level
gui
.
config
.
Save
(
"loglevel"
,
level
)
}
}
func
(
gui
*
Gui
)
GetLogLevel
()
ethlog
.
LogLevel
{
func
(
gui
*
Gui
)
GetLogLevel
()
ethlog
.
LogLevel
{
...
...
ethereal/main.go
View file @
3ebcd366
...
@@ -8,6 +8,11 @@ import (
...
@@ -8,6 +8,11 @@ import (
"runtime"
"runtime"
)
)
const
(
ClientIdentifier
=
"Ethereal"
Version
=
"0.5.16"
)
func
main
()
{
func
main
()
{
// Leave QT on top at ALL times. Qt Needs to be initialized from the main thread
// Leave QT on top at ALL times. Qt Needs to be initialized from the main thread
qml
.
Init
(
nil
)
qml
.
Init
(
nil
)
...
@@ -23,7 +28,8 @@ func main() {
...
@@ -23,7 +28,8 @@ func main() {
// precedence: code-internal flag default < config file < environment variables < command line
// precedence: code-internal flag default < config file < environment variables < command line
Init
()
// parsing command line
Init
()
// parsing command line
utils
.
InitConfig
(
ConfigFile
,
Datadir
,
Identifier
,
"ETH"
)
config
:=
utils
.
InitConfig
(
ConfigFile
,
Datadir
,
"ETH"
)
utils
.
InitDataDir
(
Datadir
)
utils
.
InitDataDir
(
Datadir
)
...
@@ -36,7 +42,9 @@ func main() {
...
@@ -36,7 +42,9 @@ func main() {
// create, import, export keys
// create, import, export keys
utils
.
KeyTasks
(
keyManager
,
KeyRing
,
GenAddr
,
SecretFile
,
ExportDir
,
NonInteractive
)
utils
.
KeyTasks
(
keyManager
,
KeyRing
,
GenAddr
,
SecretFile
,
ExportDir
,
NonInteractive
)
ethereum
:=
utils
.
NewEthereum
(
db
,
keyManager
,
UseUPnP
,
OutboundPort
,
MaxPeer
)
clientIdentity
:=
utils
.
NewClientIdentity
(
ClientIdentifier
,
Version
,
Identifier
)
ethereum
:=
utils
.
NewEthereum
(
db
,
clientIdentity
,
keyManager
,
UseUPnP
,
OutboundPort
,
MaxPeer
)
if
ShowGenesis
{
if
ShowGenesis
{
utils
.
ShowGenesis
(
ethereum
)
utils
.
ShowGenesis
(
ethereum
)
...
@@ -46,7 +54,7 @@ func main() {
...
@@ -46,7 +54,7 @@ func main() {
utils
.
StartRpc
(
ethereum
,
RpcPort
)
utils
.
StartRpc
(
ethereum
,
RpcPort
)
}
}
gui
:=
NewWindow
(
ethereum
,
KeyRing
,
LogLevel
)
gui
:=
NewWindow
(
ethereum
,
config
,
clientIdentity
,
KeyRing
,
LogLevel
)
utils
.
RegisterInterrupt
(
func
(
os
.
Signal
)
{
utils
.
RegisterInterrupt
(
func
(
os
.
Signal
)
{
gui
.
Stop
()
gui
.
Stop
()
...
...
ethereum/main.go
View file @
3ebcd366
...
@@ -6,6 +6,11 @@ import (
...
@@ -6,6 +6,11 @@ import (
"runtime"
"runtime"
)
)
const
(
ClientIdentifier
=
"Ethereum(G)"
Version
=
"0.5.16"
)
var
logger
=
ethlog
.
NewLogger
(
"CLI"
)
var
logger
=
ethlog
.
NewLogger
(
"CLI"
)
func
main
()
{
func
main
()
{
...
@@ -15,7 +20,7 @@ func main() {
...
@@ -15,7 +20,7 @@ func main() {
// precedence: code-internal flag default < config file < environment variables < command line
// precedence: code-internal flag default < config file < environment variables < command line
Init
()
// parsing command line
Init
()
// parsing command line
utils
.
InitConfig
(
ConfigFile
,
Datadir
,
Identifier
,
"ETH"
)
utils
.
InitConfig
(
ConfigFile
,
Datadir
,
"ETH"
)
utils
.
InitDataDir
(
Datadir
)
utils
.
InitDataDir
(
Datadir
)
...
@@ -28,7 +33,9 @@ func main() {
...
@@ -28,7 +33,9 @@ func main() {
// create, import, export keys
// create, import, export keys
utils
.
KeyTasks
(
keyManager
,
KeyRing
,
GenAddr
,
SecretFile
,
ExportDir
,
NonInteractive
)
utils
.
KeyTasks
(
keyManager
,
KeyRing
,
GenAddr
,
SecretFile
,
ExportDir
,
NonInteractive
)
ethereum
:=
utils
.
NewEthereum
(
db
,
keyManager
,
UseUPnP
,
OutboundPort
,
MaxPeer
)
clientIdentity
:=
utils
.
NewClientIdentity
(
ClientIdentifier
,
Version
,
Identifier
)
ethereum
:=
utils
.
NewEthereum
(
db
,
clientIdentity
,
keyManager
,
UseUPnP
,
OutboundPort
,
MaxPeer
)
if
ShowGenesis
{
if
ShowGenesis
{
utils
.
ShowGenesis
(
ethereum
)
utils
.
ShowGenesis
(
ethereum
)
...
...
utils/cmd.go
View file @
3ebcd366
...
@@ -10,6 +10,7 @@ import (
...
@@ -10,6 +10,7 @@ import (
"github.com/ethereum/eth-go/ethpub"
"github.com/ethereum/eth-go/ethpub"
"github.com/ethereum/eth-go/ethrpc"
"github.com/ethereum/eth-go/ethrpc"
"github.com/ethereum/eth-go/ethutil"
"github.com/ethereum/eth-go/ethutil"
"github.com/ethereum/eth-go/ethwire"
"io"
"io"
"log"
"log"
"os"
"os"
...
@@ -98,9 +99,9 @@ func InitLogging(Datadir string, LogFile string, LogLevel int, DebugFile string)
...
@@ -98,9 +99,9 @@ func InitLogging(Datadir string, LogFile string, LogLevel int, DebugFile string)
}
}
}
}
func
InitConfig
(
ConfigFile
string
,
Datadir
string
,
Identifier
string
,
EnvPrefix
string
)
{
func
InitConfig
(
ConfigFile
string
,
Datadir
string
,
EnvPrefix
string
)
*
ethutil
.
ConfigManager
{
InitDataDir
(
Datadir
)
InitDataDir
(
Datadir
)
ethutil
.
ReadConfig
(
ConfigFile
,
Datadir
,
Identifie
r
,
EnvPrefix
)
return
ethutil
.
ReadConfig
(
ConfigFile
,
Datadi
r
,
EnvPrefix
)
}
}
func
exit
(
err
error
)
{
func
exit
(
err
error
)
{
...
@@ -122,8 +123,12 @@ func NewDatabase() ethutil.Database {
...
@@ -122,8 +123,12 @@ func NewDatabase() ethutil.Database {
return
db
return
db
}
}
func
NewEthereum
(
db
ethutil
.
Database
,
keyManager
*
ethcrypto
.
KeyManager
,
usePnp
bool
,
OutboundPort
string
,
MaxPeer
int
)
*
eth
.
Ethereum
{
func
NewClientIdentity
(
clientIdentifier
,
version
,
customIdentifier
string
)
*
ethwire
.
SimpleClientIdentity
{
ethereum
,
err
:=
eth
.
New
(
db
,
keyManager
,
eth
.
CapDefault
,
usePnp
)
return
ethwire
.
NewSimpleClientIdentity
(
clientIdentifier
,
version
,
customIdentifier
)
}
func
NewEthereum
(
db
ethutil
.
Database
,
clientIdentity
ethwire
.
ClientIdentity
,
keyManager
*
ethcrypto
.
KeyManager
,
usePnp
bool
,
OutboundPort
string
,
MaxPeer
int
)
*
eth
.
Ethereum
{
ethereum
,
err
:=
eth
.
New
(
db
,
clientIdentity
,
keyManager
,
eth
.
CapDefault
,
usePnp
)
if
err
!=
nil
{
if
err
!=
nil
{
logger
.
Fatalln
(
"eth start err:"
,
err
)
logger
.
Fatalln
(
"eth start err:"
,
err
)
}
}
...
@@ -133,7 +138,7 @@ func NewEthereum(db ethutil.Database, keyManager *ethcrypto.KeyManager, usePnp b
...
@@ -133,7 +138,7 @@ func NewEthereum(db ethutil.Database, keyManager *ethcrypto.KeyManager, usePnp b
}
}
func
StartEthereum
(
ethereum
*
eth
.
Ethereum
,
UseSeed
bool
)
{
func
StartEthereum
(
ethereum
*
eth
.
Ethereum
,
UseSeed
bool
)
{
logger
.
Infof
(
"Starting
Ethereum v%s"
,
ethutil
.
Config
.
Ver
)
logger
.
Infof
(
"Starting
%s"
,
ethereum
.
ClientIdentity
()
)
ethereum
.
Start
(
UseSeed
)
ethereum
.
Start
(
UseSeed
)
RegisterInterrupt
(
func
(
sig
os
.
Signal
)
{
RegisterInterrupt
(
func
(
sig
os
.
Signal
)
{
ethereum
.
Stop
()
ethereum
.
Stop
()
...
...
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