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
Show 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
...
...
@@ -1103,869 +1102,3 @@ ApplicationWindow {
}
}
}
\ No newline at end of file
=======
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
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,6 +20,7 @@ import (
)
var
logger
=
ethlogger
.
NewLogger
(
"SERV"
)
var
jsonlogger
=
ethlogger
.
NewJsonLogger
()
type
Config
struct
{
Name
string
...
...
@@ -28,6 +29,7 @@ type Config struct {
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