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
bde3ff16
Commit
bde3ff16
authored
Feb 13, 2015
by
obscuren
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
merge
parent
76fa75b3
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
17 additions
and
893 deletions
+17
-893
coin.html
cmd/mist/assets/examples/coin.html
+6
-0
main.qml
cmd/mist/assets/qml/main.qml
+1
-868
block_processor.go
core/block_processor.go
+0
-13
manager.go
core/manager.go
+0
-1
backend.go
eth/backend.go
+10
-11
No files found.
cmd/mist/assets/examples/coin.html
View file @
bde3ff16
...
...
@@ -79,6 +79,12 @@
contract
.
received
({
from
:
eth
.
coinbase
}).
changed
(
function
()
{
refresh
();
});
var
ev
=
contract
.
SingleTransact
({})
ev
.
watch
(
function
(
log
)
{
someElement
.
innerHTML
+=
"tnaheousnthaoeu"
;
});
eth
.
watch
(
'chain'
).
changed
(
function
()
{
refresh
();
});
...
...
cmd/mist/assets/qml/main.qml
View file @
bde3ff16
...
...
@@ -11,7 +11,6 @@ import "../ext/http.js" as Http
ApplicationWindow
{
<<<<<<<
HEAD
id
:
root
//flags: Qt.FramelessWindowHint
...
...
@@ -1102,870 +1101,4 @@ ApplicationWindow {
addrField
.
focus
=
true
}
}
}
=======
id
:
root
property
var
ethx
:
Eth
.
ethx
width
:
1200
height
:
820
minimumWidth
:
300
title
:
"Mist"
TextField
{
id
:
copyElementHax
visible
:
false
}
function
copyToClipboard
(
text
)
{
copyElementHax
.
text
=
text
copyElementHax
.
selectAll
()
copyElementHax
.
copy
()
}
// Takes care of loading all default plugins
Component.onCompleted
:
{
var
wallet
=
addPlugin
(
"./views/wallet.qml"
,
{
noAdd
:
true
,
close
:
false
,
section
:
"ethereum"
,
active
:
true
});
addPlugin
(
"./views/miner.qml"
,
{
noAdd
:
true
,
close
:
false
,
section
:
"ethereum"
,
active
:
true
});
addPlugin
(
"./views/transaction.qml"
,
{
noAdd
:
true
,
close
:
false
,
section
:
"legacy"
});
addPlugin
(
"./views/whisper.qml"
,
{
noAdd
:
true
,
close
:
false
,
section
:
"legacy"
});
addPlugin
(
"./views/chain.qml"
,
{
noAdd
:
true
,
close
:
false
,
section
:
"legacy"
});
addPlugin
(
"./views/pending_tx.qml"
,
{
noAdd
:
true
,
close
:
false
,
section
:
"legacy"
});
addPlugin
(
"./views/info.qml"
,
{
noAdd
:
true
,
close
:
false
,
section
:
"legacy"
});
mainSplit
.
setView
(
wallet
.
view
,
wallet
.
menuItem
);
newBrowserTab
(
eth
.
assetPath
(
"html/home.html"
));
// Command setup
gui
.
sendCommand
(
0
)
}
function
activeView
(
view
,
menuItem
)
{
mainSplit
.
setView
(
view
,
menuItem
)
if
(
view
.
hideUrl
)
{
urlPane
.
visible
=
false
;
mainView
.
anchors
.
top
=
rootView
.
top
}
else
{
urlPane
.
visible
=
true
;
mainView
.
anchors
.
top
=
divider
.
bottom
}
}
function
addViews
(
view
,
path
,
options
)
{
var
views
=
mainSplit
.
addComponent
(
view
,
options
)
views
.
menuItem
.
path
=
path
mainSplit
.
views
.
push
(
views
);
if
(
!
options
.
noAdd
)
{
gui
.
addPlugin
(
path
)
}
return
views
}
function
addPlugin
(
path
,
options
)
{
try
{
if
(
typeof
(
path
)
===
"string"
&&
/^https
?
/
.
test
(
path
))
{
console
.
log
(
'load http'
)
Http
.
request
(
path
,
function
(
o
)
{
if
(
o
.
status
===
200
)
{
var
view
=
Qt
.
createQmlObject
(
o
.
responseText
,
mainView
,
path
)
addViews
(
view
,
path
,
options
)
}
})
return
}
var
component
=
Qt
.
createComponent
(
path
);
if
(
component
.
status
!=
Component
.
Ready
)
{
if
(
component
.
status
==
Component
.
Error
)
{
ethx
.
note
(
"error: "
,
component
.
errorString
());
}
return
}
var
view
=
mainView
.
createView
(
component
,
options
)
var
views
=
addViews
(
view
,
path
,
options
)
return
views
}
catch
(
e
)
{
console
.
log
(
e
)
}
}
function
newBrowserTab
(
url
)
{
var
window
=
addPlugin
(
"./views/browser.qml"
,
{
noAdd
:
true
,
close
:
true
,
section
:
"apps"
,
active
:
true
});
window
.
view
.
url
=
url
;
window
.
menuItem
.
title
=
"Mist"
;
activeView
(
window
.
view
,
window
.
menuItem
);
}
menuBar
:
MenuBar
{
Menu
{
title
:
"File"
MenuItem
{
text
:
"Import App"
shortcut
:
"Ctrl+o"
onTriggered
:
{
generalFileDialog
.
show
(
true
,
importApp
)
}
}
MenuItem
{
text
:
"Add plugin"
onTriggered
:
{
generalFileDialog
.
show
(
true
,
function
(
path
)
{
addPlugin
(
path
,
{
close
:
true
,
section
:
"apps"
})
})
}
}
MenuItem
{
text
:
"New tab"
shortcut
:
"Ctrl+t"
onTriggered
:
{
newBrowserTab
(
"about:blank"
);
}
}
MenuSeparator
{}
MenuItem
{
text
:
"Import key"
shortcut
:
"Ctrl+i"
onTriggered
:
{
generalFileDialog
.
show
(
true
,
function
(
path
)
{
gui
.
importKey
(
path
)
})
}
}
MenuItem
{
text
:
"Export keys"
shortcut
:
"Ctrl+e"
onTriggered
:
{
generalFileDialog
.
show
(
false
,
function
(
path
)
{
})
}
}
}
Menu
{
title
:
"Developer"
MenuItem
{
iconSource
:
"../icecream.png"
text
:
"Debugger"
shortcut
:
"Ctrl+d"
onTriggered
:
eth
.
startDebugger
()
}
MenuItem
{
text
:
"Import Tx"
onTriggered
:
{
txImportDialog
.
visible
=
true
}
}
MenuItem
{
text
:
"Run JS file"
onTriggered
:
{
generalFileDialog
.
show
(
true
,
function
(
path
)
{
eth
.
evalJavascriptFile
(
path
)
})
}
}
MenuItem
{
text
:
"Dump state"
onTriggered
:
{
generalFileDialog
.
show
(
false
,
function
(
path
)
{
// Empty hash for latest
gui
.
dumpState
(
""
,
path
)
})
}
}
MenuSeparator
{}
}
Menu
{
title
:
"Network"
MenuItem
{
text
:
"Connect to Node"
shortcut
:
"Ctrl+p"
onTriggered
:
{
addPeerWin
.
visible
=
true
}
}
MenuItem
{
text
:
"Show Peers"
shortcut
:
"Ctrl+e"
onTriggered
:
{
peerWindow
.
visible
=
true
}
}
}
Menu
{
title
:
"Help"
MenuItem
{
text
:
"About"
onTriggered
:
{
aboutWin
.
visible
=
true
}
}
}
Menu
{
title
:
"GLOBAL SHORTCUTS"
visible
:
false
MenuItem
{
visible
:
false
shortcut
:
"Ctrl+l"
onTriggered
:
{
url
.
focus
=
true
}
}
}
}
statusBar
:
StatusBar
{
//height: 32
id
:
statusBar
Label
{
//y: 6
id
:
walletValueLabel
font.pixelSize
:
10
styleColor
:
"#797979"
}
Label
{
//y: 6
objectName
:
"miningLabel"
visible
:
true
font.pixelSize
:
10
anchors.right
:
lastBlockLabel
.
left
anchors.rightMargin
:
5
}
Label
{
//y: 6
id
:
lastBlockLabel
objectName
:
"lastBlockLabel"
visible
:
true
text
:
""
font.pixelSize
:
10
anchors.right
:
peerGroup
.
left
anchors.rightMargin
:
5
}
ProgressBar
{
visible
:
false
id
:
downloadIndicator
value
:
0
objectName
:
"downloadIndicator"
y
:
-
4
x
:
statusBar
.
width
/
2
-
this
.
width
/
2
width
:
160
}
Label
{
visible
:
false
objectName
:
"downloadLabel"
//y: 7
anchors.left
:
downloadIndicator
.
right
anchors.leftMargin
:
5
font.pixelSize
:
10
text
:
"0 / 0"
}
RowLayout
{
id
:
peerGroup
//y: 7
anchors.right
:
parent
.
right
MouseArea
{
onDoubleClicked
:
peerWindow
.
visible
=
true
anchors.fill
:
parent
}
Label
{
id
:
peerLabel
font.pixelSize
:
10
text
:
"0 / 0"
}
}
}
property
var
blockModel
:
ListModel
{
id
:
blockModel
}
SplitView
{
property
var
views
:
[];
id
:
mainSplit
anchors.fill
:
parent
resizing
:
false
function
setView
(
view
,
menu
)
{
for
(
var
i
=
0
;
i
<
views
.
length
;
i
++
)
{
views
[
i
].
view
.
visible
=
false
views
[
i
].
menuItem
.
setSelection
(
false
)
}
view
.
visible
=
true
menu
.
setSelection
(
true
)
}
function
addComponent
(
view
,
options
)
{
view
.
visible
=
false
view
.
anchors
.
fill
=
mainView
var
menuItem
=
menu
.
createMenuItem
(
view
,
options
);
if
(
view
.
hasOwnProperty
(
"menuItem"
)
)
{
view
.
menuItem
=
menuItem
;
}
if
(
view
.
hasOwnProperty
(
"onReady"
)
)
{
view
.
onReady
.
call
(
view
)
}
if
(
options
.
active
)
{
setView
(
view
,
menuItem
)
}
return
{
view
:
view
,
menuItem
:
menuItem
}
}
/*********************
* Main menu.
********************/
Rectangle
{
id
:
menu
Layout.minimumWidth
:
210
Layout.maximumWidth
:
210
anchors.top
:
parent
.
top
color
:
"#ececec"
Component
{
id
:
menuItemTemplate
Rectangle
{
id
:
menuItem
property
var
view
;
property
var
path
;
property
var
closable
;
property
alias
title
:
label
.
text
property
alias
icon
:
icon
.
source
property
alias
secondaryTitle
:
secondary
.
text
function
setSelection
(
on
)
{
sel
.
visible
=
on
}
width
:
206
height
:
28
color
:
"#00000000"
anchors
{
left
:
parent
.
left
leftMargin
:
4
}
Rectangle
{
id
:
sel
visible
:
false
anchors.fill
:
parent
color
:
"#00000000"
Rectangle
{
id
:
r
anchors.fill
:
parent
border.color
:
"#CCCCCC"
border.width
:
1
radius
:
5
color
:
"#FFFFFFFF"
}
Rectangle
{
anchors
{
top
:
r
.
top
bottom
:
r
.
bottom
right
:
r
.
right
}
width
:
10
color
:
"#FFFFFFFF"
Rectangle
{
anchors
{
left
:
parent
.
left
right
:
parent
.
right
top
:
parent
.
top
}
height
:
1
color
:
"#CCCCCC"
}
Rectangle
{
anchors
{
left
:
parent
.
left
right
:
parent
.
right
bottom
:
parent
.
bottom
}
height
:
1
color
:
"#CCCCCC"
}
}
}
MouseArea
{
anchors.fill
:
parent
onClicked
:
{
activeView
(
view
,
menuItem
);
}
}
Image
{
id
:
icon
height
:
20
width
:
20
anchors
{
left
:
parent
.
left
verticalCenter
:
parent
.
verticalCenter
leftMargin
:
3
}
MouseArea
{
anchors.fill
:
parent
onClicked
:
{
menuItem
.
closeApp
()
}
}
}
Text
{
id
:
label
anchors
{
left
:
icon
.
right
verticalCenter
:
parent
.
verticalCenter
leftMargin
:
3
}
color
:
"#0D0A01"
font.pixelSize
:
12
}
Text
{
id
:
secondary
anchors
{
right
:
parent
.
right
rightMargin
:
8
verticalCenter
:
parent
.
verticalCenter
}
color
:
"#AEADBE"
font.pixelSize
:
12
}
function
closeApp
()
{
if
(
!
this
.
closable
)
{
return
;
}
if
(
this
.
view
.
hasOwnProperty
(
"onDestroy"
))
{
this
.
view
.
onDestroy
.
call
(
this
.
view
)
}
this
.
view
.
destroy
()
this
.
destroy
()
for
(
var
i
=
0
;
i
<
mainSplit
.
views
.
length
;
i
++
)
{
var
view
=
mainSplit
.
views
[
i
];
if
(
view
.
menuItem
===
this
)
{
mainSplit
.
views
.
splice
(
i
,
1
);
break
;
}
}
gui
.
removePlugin
(
this
.
path
)
activeView
(
mainSplit
.
views
[
0
].
view
,
mainSplit
.
views
[
0
].
menuItem
);
}
}
}
function
createMenuItem
(
view
,
options
)
{
if
(
options
===
undefined
)
{
options
=
{};
}
var
section
;
switch
(
options
.
section
)
{
case
"ethereum"
:
section
=
menuDefault
;
break
;
case
"legacy"
:
section
=
menuLegacy
;
break
;
default
:
section
=
menuApps
;
break
;
}
var
comp
=
menuItemTemplate
.
createObject
(
section
)
comp
.
view
=
view
comp
.
title
=
view
.
title
if
(
view
.
hasOwnProperty
(
"iconSource"
))
{
comp
.
icon
=
view
.
iconSource
;
}
comp
.
closable
=
options
.
close
;
return
comp
}
ColumnLayout
{
id
:
menuColumn
y
:
10
width
:
parent
.
width
anchors.left
:
parent
.
left
anchors.right
:
parent
.
right
spacing
:
3
Text
{
text
:
"ETHEREUM"
font.bold
:
true
anchors
{
left
:
parent
.
left
leftMargin
:
5
}
color
:
"#888888"
}
ColumnLayout
{
id
:
menuDefault
spacing
:
3
anchors
{
left
:
parent
.
left
right
:
parent
.
right
}
}
Text
{
text
:
"NET"
font.bold
:
true
anchors
{
left
:
parent
.
left
leftMargin
:
5
}
color
:
"#888888"
}
ColumnLayout
{
id
:
menuApps
spacing
:
3
anchors
{
left
:
parent
.
left
right
:
parent
.
right
}
}
Text
{
text
:
"DEBUG"
font.bold
:
true
anchors
{
left
:
parent
.
left
leftMargin
:
5
}
color
:
"#888888"
}
ColumnLayout
{
id
:
menuLegacy
spacing
:
3
anchors
{
left
:
parent
.
left
right
:
parent
.
right
}
}
}
}
/*********************
* Main view
********************/
Rectangle
{
id
:
rootView
anchors.right
:
parent
.
right
anchors.left
:
menu
.
right
anchors.bottom
:
parent
.
bottom
anchors.top
:
parent
.
top
color
:
"#00000000"
Rectangle
{
id
:
urlPane
height
:
40
color
:
"#00000000"
anchors
{
left
:
parent
.
left
right
:
parent
.
right
leftMargin
:
5
rightMargin
:
5
top
:
parent
.
top
topMargin
:
5
}
TextField
{
id
:
url
objectName
:
"url"
placeholderText
:
"DApp URL"
anchors
{
left
:
parent
.
left
right
:
parent
.
right
top
:
parent
.
top
topMargin
:
5
rightMargin
:
5
leftMargin
:
5
}
Keys.onReturnPressed
:
{
if
(
/^https
?
/
.
test
(
this
.
text
))
{
newBrowserTab
(
this
.
text
);
}
else
{
addPlugin
(
this
.
text
,
{
close
:
true
,
section
:
"apps"
})
}
}
}
}
// Border
Rectangle
{
id
:
divider
anchors
{
left
:
parent
.
left
right
:
parent
.
right
top
:
urlPane
.
bottom
}
z
:
-
1
height
:
1
color
:
"#CCCCCC"
}
Rectangle
{
id
:
mainView
color
:
"#00000000"
anchors.right
:
parent
.
right
anchors.left
:
parent
.
left
anchors.bottom
:
parent
.
bottom
anchors.top
:
divider
.
bottom
function
createView
(
component
)
{
var
view
=
component
.
createObject
(
mainView
)
return
view
;
}
}
}
}
/******************
* Dialogs
*****************/
FileDialog
{
id
:
generalFileDialog
property
var
callback
;
onAccepted
:
{
var
path
=
this
.
fileUrl
.
toString
();
callback
.
call
(
this
,
path
);
}
function
show
(
selectExisting
,
callback
)
{
generalFileDialog
.
callback
=
callback
;
generalFileDialog
.
selectExisting
=
selectExisting
;
this
.
open
();
}
}
/******************
* Wallet functions
*****************/
function
importApp
(
path
)
{
var
ext
=
path
.
split
(
'.'
).
pop
()
if
(
ext
==
"html"
||
ext
==
"htm"
)
{
eth
.
openHtml
(
path
)
}
else
if
(
ext
==
"qml"
){
addPlugin
(
path
,
{
close
:
true
,
section
:
"apps"
})
}
}
function
setWalletValue
(
value
)
{
walletValueLabel
.
text
=
value
}
function
loadPlugin
(
name
)
{
console
.
log
(
"Loading plugin"
+
name
)
var
view
=
mainView
.
addPlugin
(
name
)
}
function
setPeers
(
text
)
{
peerLabel
.
text
=
text
}
function
addPeer
(
peer
)
{
// We could just append the whole peer object but it cries if you try to alter them
peerModel
.
append
({
ip
:
peer
.
ip
,
port
:
peer
.
port
,
lastResponse
:
timeAgo
(
peer
.
lastSend
),
latency
:
peer
.
latency
,
version
:
peer
.
version
,
caps
:
peer
.
caps
})
}
function
resetPeers
(){
peerModel
.
clear
()
}
function
timeAgo
(
unixTs
){
var
lapsed
=
(
Date
.
now
()
-
new
Date
(
unixTs
*
1000
))
/
1000
return
(
lapsed
+
" seconds ago"
)
}
function
convertToPretty
(
unixTs
){
var
a
=
new
Date
(
unixTs
*
1000
);
var
months
=
[
'Jan'
,
'Feb'
,
'Mar'
,
'Apr'
,
'May'
,
'Jun'
,
'Jul'
,
'Aug'
,
'Sep'
,
'Oct'
,
'Nov'
,
'Dec'
];
var
year
=
a
.
getFullYear
();
var
month
=
months
[
a
.
getMonth
()];
var
date
=
a
.
getDate
();
var
hour
=
a
.
getHours
();
var
min
=
a
.
getMinutes
();
var
sec
=
a
.
getSeconds
();
var
time
=
date
+
' '
+
month
+
' '
+
year
+
' '
+
hour
+
':'
+
min
+
':'
+
sec
;
return
time
;
}
/**********************
* Windows
*********************/
Window
{
id
:
peerWindow
//flags: Qt.CustomizeWindowHint | Qt.Tool | Qt.WindowCloseButtonHint
height
:
200
width
:
700
Rectangle
{
anchors.fill
:
parent
property
var
peerModel
:
ListModel
{
id
:
peerModel
}
TableView
{
anchors.fill
:
parent
id
:
peerTable
model
:
peerModel
TableViewColumn
{
width
:
200
;
role
:
"ip"
;
title
:
"IP"
}
TableViewColumn
{
width
:
260
;
role
:
"version"
;
title
:
"Version"
}
TableViewColumn
{
width
:
180
;
role
:
"caps"
;
title
:
"Capabilities"
}
}
}
}
Window
{
id
:
aboutWin
visible
:
false
title
:
"About"
minimumWidth
:
350
maximumWidth
:
350
maximumHeight
:
280
minimumHeight
:
280
Image
{
id
:
aboutIcon
height
:
150
width
:
150
fillMode
:
Image
.
PreserveAspectFit
smooth
:
true
source
:
"../facet.png"
x
:
10
y
:
30
}
Text
{
anchors.left
:
aboutIcon
.
right
anchors.leftMargin
:
10
anchors.top
:
parent
.
top
anchors.topMargin
:
30
font.pointSize
:
12
text
:
"<h2>Mist (0.7.10)</h2><br><h3>Development</h3>Jeffrey Wilcke<br>Viktor Trón<br>Felix Lange<br>Taylor Gerring<br>Daniel Nagy<br><h3>UX</h3>Alex van de Sande<br>"
}
}
Window
{
id
:
txImportDialog
minimumWidth
:
270
maximumWidth
:
270
maximumHeight
:
50
minimumHeight
:
50
TextField
{
id
:
txImportField
width
:
170
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.left
:
parent
.
left
anchors.leftMargin
:
10
onAccepted
:
{
}
}
Button
{
anchors.left
:
txImportField
.
right
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.leftMargin
:
5
text
:
"Import"
onClicked
:
{
eth
.
importTx
(
txImportField
.
text
)
txImportField
.
visible
=
false
}
}
Component.onCompleted
:
{
addrField
.
focus
=
true
}
}
Window
{
id
:
addPeerWin
visible
:
false
minimumWidth
:
400
maximumWidth
:
400
maximumHeight
:
50
minimumHeight
:
50
title
:
"Connect to Node"
TextField
{
id
:
addrField
placeholderText
:
"enode://<hex node id>:<IP address>:<port>"
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.left
:
parent
.
left
anchors.right
:
addPeerButton
.
left
anchors.leftMargin
:
10
anchors.rightMargin
:
10
onAccepted
:
{
eth
.
connectToPeer
(
addrField
.
text
)
addPeerWin
.
visible
=
false
}
}
Button
{
id
:
addPeerButton
anchors.right
:
parent
.
right
anchors.verticalCenter
:
parent
.
verticalCenter
anchors.rightMargin
:
10
text
:
"Connect"
onClicked
:
{
eth
.
connectToPeer
(
addrField
.
text
)
addPeerWin
.
visible
=
false
}
}
Component.onCompleted
:
{
addrField
.
focus
=
true
}
}
}
>>>>>>>
32
a9c0ca809508c1648b8f44f3e09725af7a80d3
}
\ No newline at end of file
core/block_processor.go
View file @
bde3ff16
...
...
@@ -23,19 +23,6 @@ type PendingBlockEvent struct {
var
statelogger
=
logger
.
NewLogger
(
"BLOCK"
)
type
EthManager
interface
{
BlockProcessor
()
*
BlockProcessor
ChainManager
()
*
ChainManager
TxPool
()
*
TxPool
PeerCount
()
int
IsMining
()
bool
IsListening
()
bool
Peers
()
[]
*
p2p
.
Peer
KeyManager
()
*
crypto
.
KeyManager
Db
()
ethutil
.
Database
EventMux
()
*
event
.
TypeMux
}
type
BlockProcessor
struct
{
db
ethutil
.
Database
// Mutex for locking the block processor. Blocks can only be handled one at a time
...
...
core/manager.go
View file @
bde3ff16
...
...
@@ -16,7 +16,6 @@ type EthManager interface {
IsListening
()
bool
Peers
()
[]
*
p2p
.
Peer
KeyManager
()
*
crypto
.
KeyManager
ClientIdentity
()
p2p
.
ClientIdentity
Db
()
ethutil
.
Database
EventMux
()
*
event
.
TypeMux
}
eth/backend.go
View file @
bde3ff16
...
...
@@ -20,14 +20,16 @@ import (
)
var
logger
=
ethlogger
.
NewLogger
(
"SERV"
)
var
jsonlogger
=
ethlogger
.
NewJsonLogger
()
type
Config
struct
{
Name
string
KeyStore
string
DataDir
string
LogFile
string
LogLevel
int
KeyRing
string
Name
string
KeyStore
string
DataDir
string
LogFile
string
LogLevel
int
KeyRing
string
LogFormat
string
MaxPeers
int
Port
string
...
...
@@ -47,9 +49,6 @@ type Config struct {
KeyManager
*
crypto
.
KeyManager
}
var
logger
=
ethlogger
.
NewLogger
(
"SERV"
)
var
jsonlogger
=
ethlogger
.
NewJsonLogger
()
func
(
cfg
*
Config
)
parseBootNodes
()
[]
*
discover
.
Node
{
var
ns
[]
*
discover
.
Node
for
_
,
url
:=
range
strings
.
Split
(
cfg
.
BootNodes
,
" "
)
{
...
...
@@ -240,10 +239,10 @@ func (s *Ethereum) Coinbase() []byte {
// Start the ethereum
func
(
s
*
Ethereum
)
Start
()
error
{
jsonlogger
.
LogJson
(
&
ethlogger
.
LogStarting
{
ClientString
:
s
.
ClientIdentity
()
.
String
()
,
ClientString
:
s
.
net
.
Name
,
Coinbase
:
ethutil
.
Bytes2Hex
(
s
.
KeyManager
()
.
Address
()),
ProtocolVersion
:
ProtocolVersion
,
LogEvent
:
ethlogger
.
LogEvent
{
Guid
:
ethutil
.
Bytes2Hex
(
s
.
ClientIdentity
()
.
Pubkey
(
))},
LogEvent
:
ethlogger
.
LogEvent
{
Guid
:
ethutil
.
Bytes2Hex
(
crypto
.
FromECDSAPub
(
&
s
.
net
.
PrivateKey
.
PublicKey
))},
})
err
:=
s
.
net
.
Start
()
...
...
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