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
1adfc272
Commit
1adfc272
authored
May 13, 2014
by
obscuren
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'release/poc5-rc4'
parents
721d3a9a
9caf53f8
Changes
11
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
355 additions
and
185 deletions
+355
-185
ethereum.js
ethereal/assets/ext/ethereum.js
+17
-0
first_run.qml
ethereal/assets/qml/first_run.qml
+131
-131
webapp.qml
ethereal/assets/qml/webapp.qml
+29
-2
test.html
ethereal/assets/util/test.html
+43
-0
config.go
ethereal/config.go
+2
-0
ethereum.go
ethereal/ethereum.go
+12
-2
ext_app.go
ethereal/ui/ext_app.go
+1
-1
gui.go
ethereal/ui/gui.go
+88
-29
config.go
ethereum/config.go
+2
-0
dev_console.go
ethereum/dev_console.go
+1
-1
ethereum.go
ethereum/ethereum.go
+29
-19
No files found.
ethereal/assets/ext/ethereum.js
View file @
1adfc272
...
@@ -36,6 +36,21 @@ window.eth = {
...
@@ -36,6 +36,21 @@ window.eth = {
postData
({
call
:
"getKey"
},
cb
);
postData
({
call
:
"getKey"
},
cb
);
},
},
getTxCountAt
:
function
(
address
,
cb
)
{
postData
({
call
:
"getTxCountAt"
,
args
:
[
address
]},
cb
);
},
getIsMining
:
function
(
cb
){
postData
({
call
:
"getIsMining"
},
cb
)
},
getIsListening
:
function
(
cb
){
postData
({
call
:
"getIsListening"
},
cb
)
},
getCoinBase
:
function
(
cb
){
postData
({
call
:
"getCoinBase"
},
cb
);
},
getPeerCount
:
function
(
cb
){
postData
({
call
:
"getPeerCount"
},
cb
);
},
getBalanceAt
:
function
(
address
,
cb
)
{
getBalanceAt
:
function
(
address
,
cb
)
{
postData
({
call
:
"getBalance"
,
args
:
[
address
]},
cb
);
postData
({
call
:
"getBalance"
,
args
:
[
address
]},
cb
);
},
},
...
@@ -115,6 +130,8 @@ window.eth = {
...
@@ -115,6 +130,8 @@ window.eth = {
}
}
}
}
},
},
}
}
window
.
eth
.
_callbacks
=
{}
window
.
eth
.
_callbacks
=
{}
window
.
eth
.
_onCallbacks
=
{}
window
.
eth
.
_onCallbacks
=
{}
...
...
ethereal/assets/qml/first_run.qml
View file @
1adfc272
...
@@ -61,7 +61,7 @@ ApplicationWindow {
...
@@ -61,7 +61,7 @@ ApplicationWindow {
text
:
"Restore"
text
:
"Restore"
enabled
:
false
enabled
:
false
onClicked
:
{
onClicked
:
{
var
success
=
eth
.
importAndSetPrivKey
(
txPrivKey
.
text
)
var
success
=
lib
.
importAndSetPrivKey
(
txPrivKey
.
text
)
if
(
success
){
if
(
success
){
importedDetails
.
visible
=
true
importedDetails
.
visible
=
true
restoreColumn
.
visible
=
false
restoreColumn
.
visible
=
false
...
@@ -139,7 +139,7 @@ ApplicationWindow {
...
@@ -139,7 +139,7 @@ ApplicationWindow {
id
:
newKey
id
:
newKey
text
:
"I don't have an account yet"
text
:
"I don't have an account yet"
onClicked
:
{
onClicked
:
{
var
res
=
eth
.
createAndSetPrivKey
()
var
res
=
lib
.
createAndSetPrivKey
()
mnemonicInput
.
text
=
res
[
0
]
mnemonicInput
.
text
=
res
[
0
]
addressInput
.
text
=
res
[
1
]
addressInput
.
text
=
res
[
1
]
privkeyInput
.
text
=
res
[
2
]
privkeyInput
.
text
=
res
[
2
]
...
...
ethereal/assets/qml/webapp.qml
View file @
1adfc272
...
@@ -47,13 +47,37 @@ ApplicationWindow {
...
@@ -47,13 +47,37 @@ ApplicationWindow {
try
{
try
{
switch
(
data
.
call
)
{
switch
(
data
.
call
)
{
case
"getCoinBase"
:
postData
(
data
.
_seed
,
eth
.
getCoinBase
())
break
case
"getIsListening"
:
postData
(
data
.
_seed
,
eth
.
getIsListening
())
break
case
"getIsMining"
:
postData
(
data
.
_seed
,
eth
.
getIsMining
())
break
case
"getPeerCount"
:
postData
(
data
.
_seed
,
eth
.
getPeerCount
())
break
case
"getTxCountAt"
:
require
(
1
)
postData
(
data
.
_seed
,
eth
.
getTxCountAt
(
data
.
args
[
0
]))
break
case
"getBlockByNumber"
:
case
"getBlockByNumber"
:
var
block
=
eth
.
getBlock
(
"b9b56cf6f907fbee21db0cd7cbc0e6fea2fe29503a3943e275c5e467d649cb06"
)
var
block
=
eth
.
getBlock
(
"b9b56cf6f907fbee21db0cd7cbc0e6fea2fe29503a3943e275c5e467d649cb06"
)
postData
(
data
.
_seed
,
block
)
postData
(
data
.
_seed
,
block
)
break
break
case
"getBlockByHash"
:
case
"getBlockByHash"
:
var
block
=
eth
.
getBlock
(
"b9b56cf6f907fbee21db0cd7cbc0e6fea2fe29503a3943e275c5e467d649cb06"
)
var
block
=
eth
.
getBlock
(
"b9b56cf6f907fbee21db0cd7cbc0e6fea2fe29503a3943e275c5e467d649cb06"
)
postData
(
data
.
_seed
,
block
)
postData
(
data
.
_seed
,
block
)
break
break
case
"transact"
:
case
"transact"
:
require
(
5
)
require
(
5
)
...
@@ -94,11 +118,14 @@ ApplicationWindow {
...
@@ -94,11 +118,14 @@ ApplicationWindow {
postData
(
data
.
_seed
,
null
)
postData
(
data
.
_seed
,
null
)
break
;
break
;
case
"set"
:
case
"set"
:
console
.
log
(
"'Set' has been depcrecated"
)
/*
for(var key in data.args) {
for(var key in data.args) {
if(webview.hasOwnProperty(key)) {
if(webview.hasOwnProperty(key)) {
window[key] = data.args[key];
window[key] = data.args[key];
}
}
}
}
*/
break
;
break
;
case
"getSecretToAddress"
:
case
"getSecretToAddress"
:
require
(
1
)
require
(
1
)
...
...
ethereal/assets/util/test.html
0 → 100644
View file @
1adfc272
<html>
<head>
<title>
Utils
</title>
</head>
<body
onload=
"init();"
>
<label>
Nonce for 2ef47100e0787b915105fd5e3f4ff6752079d5cb
</label>
<p
id=
"nonce"
></p>
<label>
Connected peers
</label>
<p
id=
"peers"
></p>
<label>
Is mining
</label>
<p
id=
"isMining"
></p>
<label>
Is listening
</label>
<p
id=
"isListen"
></p>
<label>
Coinbase
</label>
<p
id=
"coinbase"
></p>
<script
type=
"text/javascript"
>
function
init
()
{
eth
.
getTxCountAt
(
"2ef47100e0787b915105fd5e3f4ff6752079d5cb"
,
function
(
nonce
){
document
.
querySelector
(
"#nonce"
).
innerHTML
=
nonce
;
})
eth
.
getPeerCount
(
function
(
peerLength
){
document
.
querySelector
(
"#peers"
).
innerHTML
=
peerLength
;
})
eth
.
getIsMining
(
function
(
mining
){
document
.
querySelector
(
"#isMining"
).
innerHTML
=
mining
;
})
eth
.
getIsListening
(
function
(
listen
){
document
.
querySelector
(
"#isListen"
).
innerHTML
=
listen
;
})
eth
.
getCoinBase
(
function
(
address
){
document
.
querySelector
(
"#coinbase"
).
innerHTML
=
address
;
})
}
</script>
</body>
</html>
ethereal/config.go
View file @
1adfc272
...
@@ -7,6 +7,7 @@ import (
...
@@ -7,6 +7,7 @@ import (
var
StartConsole
bool
var
StartConsole
bool
var
StartMining
bool
var
StartMining
bool
var
StartRpc
bool
var
StartRpc
bool
var
RpcPort
int
var
UseUPnP
bool
var
UseUPnP
bool
var
OutboundPort
string
var
OutboundPort
string
var
ShowGenesis
bool
var
ShowGenesis
bool
...
@@ -28,6 +29,7 @@ func Init() {
...
@@ -28,6 +29,7 @@ func Init() {
flag
.
BoolVar
(
&
UseSeed
,
"seed"
,
true
,
"seed peers"
)
flag
.
BoolVar
(
&
UseSeed
,
"seed"
,
true
,
"seed peers"
)
flag
.
BoolVar
(
&
GenAddr
,
"genaddr"
,
false
,
"create a new priv/pub key"
)
flag
.
BoolVar
(
&
GenAddr
,
"genaddr"
,
false
,
"create a new priv/pub key"
)
flag
.
BoolVar
(
&
ExportKey
,
"export"
,
false
,
"export private key"
)
flag
.
BoolVar
(
&
ExportKey
,
"export"
,
false
,
"export private key"
)
flag
.
IntVar
(
&
RpcPort
,
"rpcport"
,
8080
,
"port to start json-rpc server on"
)
flag
.
StringVar
(
&
OutboundPort
,
"p"
,
"30303"
,
"listening port"
)
flag
.
StringVar
(
&
OutboundPort
,
"p"
,
"30303"
,
"listening port"
)
flag
.
StringVar
(
&
DataDir
,
"dir"
,
".ethereal"
,
"ethereum data directory"
)
flag
.
StringVar
(
&
DataDir
,
"dir"
,
".ethereal"
,
"ethereum data directory"
)
flag
.
StringVar
(
&
ImportKey
,
"import"
,
""
,
"imports the given private key (hex)"
)
flag
.
StringVar
(
&
ImportKey
,
"import"
,
""
,
"imports the given private key (hex)"
)
...
...
ethereal/ethereum.go
View file @
1adfc272
...
@@ -100,9 +100,13 @@ func main() {
...
@@ -100,9 +100,13 @@ func main() {
}
}
if
StartRpc
{
if
StartRpc
{
ethereum
.
RpcServer
=
ethrpc
.
NewJsonRpcServer
(
ethpub
.
NewPEthereum
(
ethereum
.
StateManager
(),
ethereum
.
BlockChain
(),
ethereum
.
TxPool
()))
ethereum
.
RpcServer
,
err
=
ethrpc
.
NewJsonRpcServer
(
ethpub
.
NewPEthereum
(
ethereum
),
RpcPort
)
if
err
!=
nil
{
log
.
Println
(
"Could not start RPC interface:"
,
err
)
}
else
{
go
ethereum
.
RpcServer
.
Start
()
go
ethereum
.
RpcServer
.
Start
()
}
}
}
log
.
Printf
(
"Starting Ethereum GUI v%s
\n
"
,
ethutil
.
Config
.
Ver
)
log
.
Printf
(
"Starting Ethereum GUI v%s
\n
"
,
ethutil
.
Config
.
Ver
)
...
@@ -110,5 +114,11 @@ func main() {
...
@@ -110,5 +114,11 @@ func main() {
ethereum
.
MaxPeers
=
MaxPeer
ethereum
.
MaxPeers
=
MaxPeer
gui
:=
ethui
.
New
(
ethereum
)
gui
:=
ethui
.
New
(
ethereum
)
ethereum
.
Start
(
UseSeed
)
gui
.
Start
(
AssetPath
)
gui
.
Start
(
AssetPath
)
// Wait for shutdown
ethereum
.
WaitForShutdown
()
}
}
ethereal/ui/ext_app.go
View file @
1adfc272
...
@@ -34,7 +34,7 @@ type ExtApplication struct {
...
@@ -34,7 +34,7 @@ type ExtApplication struct {
func
NewExtApplication
(
container
AppContainer
,
lib
*
UiLib
)
*
ExtApplication
{
func
NewExtApplication
(
container
AppContainer
,
lib
*
UiLib
)
*
ExtApplication
{
app
:=
&
ExtApplication
{
app
:=
&
ExtApplication
{
ethpub
.
NewPEthereum
(
lib
.
eth
.
StateManager
(),
lib
.
eth
.
BlockChain
(),
lib
.
eth
.
TxPool
()
),
ethpub
.
NewPEthereum
(
lib
.
eth
),
make
(
chan
ethutil
.
React
,
1
),
make
(
chan
ethutil
.
React
,
1
),
make
(
chan
ethutil
.
React
,
1
),
make
(
chan
ethutil
.
React
,
1
),
make
(
chan
bool
),
make
(
chan
bool
),
...
...
ethereal/ui/gui.go
View file @
1adfc272
...
@@ -25,6 +25,7 @@ type Gui struct {
...
@@ -25,6 +25,7 @@ type Gui struct {
// The public Ethereum library
// The public Ethereum library
lib
*
EthLib
lib
*
EthLib
uiLib
*
UiLib
txDb
*
ethdb
.
LDBDatabase
txDb
*
ethdb
.
LDBDatabase
...
@@ -52,7 +53,7 @@ func New(ethereum *eth.Ethereum) *Gui {
...
@@ -52,7 +53,7 @@ func New(ethereum *eth.Ethereum) *Gui {
//ethereum.StateManager().WatchAddr(addr)
//ethereum.StateManager().WatchAddr(addr)
}
}
pub
:=
ethpub
.
NewPEthereum
(
ethereum
.
StateManager
(),
ethereum
.
BlockChain
(),
ethereum
.
TxPool
()
)
pub
:=
ethpub
.
NewPEthereum
(
ethereum
)
return
&
Gui
{
eth
:
ethereum
,
lib
:
lib
,
txDb
:
db
,
addr
:
addr
,
pub
:
pub
}
return
&
Gui
{
eth
:
ethereum
,
lib
:
lib
,
txDb
:
db
,
addr
:
addr
,
pub
:
pub
}
}
}
...
@@ -67,7 +68,7 @@ func (gui *Gui) Start(assetPath string) {
...
@@ -67,7 +68,7 @@ func (gui *Gui) Start(assetPath string) {
Init
:
func
(
p
*
ethpub
.
PTx
,
obj
qml
.
Object
)
{
p
.
Value
=
""
;
p
.
Hash
=
""
;
p
.
Address
=
""
},
Init
:
func
(
p
*
ethpub
.
PTx
,
obj
qml
.
Object
)
{
p
.
Value
=
""
;
p
.
Hash
=
""
;
p
.
Address
=
""
},
}})
}})
ethutil
.
Config
.
SetClientString
(
fmt
.
Sprintf
(
"/Ethereal v%s"
,
"0.5.0 RC
3
"
))
ethutil
.
Config
.
SetClientString
(
fmt
.
Sprintf
(
"/Ethereal v%s"
,
"0.5.0 RC
4
"
))
ethutil
.
Config
.
Log
.
Infoln
(
"[GUI] Starting GUI"
)
ethutil
.
Config
.
Log
.
Infoln
(
"[GUI] Starting GUI"
)
// Create a new QML engine
// Create a new QML engine
gui
.
engine
=
qml
.
NewEngine
()
gui
.
engine
=
qml
.
NewEngine
()
...
@@ -75,11 +76,12 @@ func (gui *Gui) Start(assetPath string) {
...
@@ -75,11 +76,12 @@ func (gui *Gui) Start(assetPath string) {
// Expose the eth library and the ui library to QML
// Expose the eth library and the ui library to QML
context
.
SetVar
(
"eth"
,
gui
)
context
.
SetVar
(
"eth"
,
gui
)
uiLib
:
=
NewUiLib
(
gui
.
engine
,
gui
.
eth
,
assetPath
)
gui
.
uiLib
=
NewUiLib
(
gui
.
engine
,
gui
.
eth
,
assetPath
)
context
.
SetVar
(
"ui"
,
uiLib
)
context
.
SetVar
(
"ui"
,
gui
.
uiLib
)
// Load the main QML interface
// Load the main QML interface
data
,
_
:=
ethutil
.
Config
.
Db
.
Get
([]
byte
(
"KeyRing"
))
data
,
_
:=
ethutil
.
Config
.
Db
.
Get
([]
byte
(
"KeyRing"
))
/*
var err error
var err error
var component qml.Object
var component qml.Object
firstRun := len(data) == 0
firstRun := len(data) == 0
...
@@ -115,6 +117,63 @@ func (gui *Gui) Start(assetPath string) {
...
@@ -115,6 +117,63 @@ func (gui *Gui) Start(assetPath string) {
gui.win.Wait()
gui.win.Wait()
gui.eth.Stop()
gui.eth.Stop()
*/
var
win
*
qml
.
Window
var
err
error
if
len
(
data
)
==
0
{
win
,
err
=
gui
.
showKeyImport
(
context
)
}
else
{
win
,
err
=
gui
.
showWallet
(
context
)
}
if
err
!=
nil
{
ethutil
.
Config
.
Log
.
Infoln
(
"FATAL: asset not found: you can set an alternative asset path on on the command line using option 'asset_path'"
)
panic
(
err
)
}
win
.
Show
()
win
.
Wait
()
gui
.
eth
.
Stop
()
}
func
(
gui
*
Gui
)
showWallet
(
context
*
qml
.
Context
)
(
*
qml
.
Window
,
error
)
{
component
,
err
:=
gui
.
engine
.
LoadFile
(
gui
.
uiLib
.
AssetPath
(
"qml/wallet.qml"
))
if
err
!=
nil
{
return
nil
,
err
}
win
:=
gui
.
createWindow
(
component
)
go
gui
.
setInitialBlockChain
()
go
gui
.
readPreviousTransactions
()
go
gui
.
update
()
return
win
,
nil
}
func
(
gui
*
Gui
)
showKeyImport
(
context
*
qml
.
Context
)
(
*
qml
.
Window
,
error
)
{
context
.
SetVar
(
"lib"
,
gui
.
lib
)
component
,
err
:=
gui
.
engine
.
LoadFile
(
gui
.
uiLib
.
AssetPath
(
"qml/first_run.qml"
))
if
err
!=
nil
{
return
nil
,
err
}
return
gui
.
createWindow
(
component
),
nil
}
func
(
gui
*
Gui
)
createWindow
(
comp
qml
.
Object
)
*
qml
.
Window
{
win
:=
comp
.
CreateWindow
(
nil
)
gui
.
win
=
win
gui
.
uiLib
.
win
=
win
db
:=
&
Debugger
{
gui
.
win
,
make
(
chan
bool
)}
gui
.
lib
.
Db
=
db
gui
.
uiLib
.
Db
=
db
return
gui
.
win
}
}
func
(
gui
*
Gui
)
setInitialBlockChain
()
{
func
(
gui
*
Gui
)
setInitialBlockChain
()
{
...
@@ -148,7 +207,7 @@ func (gui *Gui) update() {
...
@@ -148,7 +207,7 @@ func (gui *Gui) update() {
state
:=
gui
.
eth
.
StateManager
()
.
TransState
()
state
:=
gui
.
eth
.
StateManager
()
.
TransState
()
unconfirmedFunds
:=
new
(
big
.
Int
)
unconfirmedFunds
:=
new
(
big
.
Int
)
gui
.
win
.
Root
()
.
Call
(
"setWalletValue"
,
fmt
.
Sprintf
(
"%v"
,
ethutil
.
CurrencyToString
(
state
.
Get
StateObjec
t
(
gui
.
addr
)
.
Amount
)))
gui
.
win
.
Root
()
.
Call
(
"setWalletValue"
,
fmt
.
Sprintf
(
"%v"
,
ethutil
.
CurrencyToString
(
state
.
Get
Accoun
t
(
gui
.
addr
)
.
Amount
)))
for
{
for
{
select
{
select
{
...
@@ -156,7 +215,7 @@ func (gui *Gui) update() {
...
@@ -156,7 +215,7 @@ func (gui *Gui) update() {
tx
:=
txMsg
.
Tx
tx
:=
txMsg
.
Tx
if
txMsg
.
Type
==
ethchain
.
TxPre
{
if
txMsg
.
Type
==
ethchain
.
TxPre
{
object
:=
state
.
Get
StateObjec
t
(
gui
.
addr
)
object
:=
state
.
Get
Accoun
t
(
gui
.
addr
)
if
bytes
.
Compare
(
tx
.
Sender
(),
gui
.
addr
)
==
0
&&
object
.
Nonce
<=
tx
.
Nonce
{
if
bytes
.
Compare
(
tx
.
Sender
(),
gui
.
addr
)
==
0
&&
object
.
Nonce
<=
tx
.
Nonce
{
gui
.
win
.
Root
()
.
Call
(
"addTx"
,
ethpub
.
NewPTx
(
tx
))
gui
.
win
.
Root
()
.
Call
(
"addTx"
,
ethpub
.
NewPTx
(
tx
))
...
@@ -182,7 +241,7 @@ func (gui *Gui) update() {
...
@@ -182,7 +241,7 @@ func (gui *Gui) update() {
gui
.
win
.
Root
()
.
Call
(
"setWalletValue"
,
str
)
gui
.
win
.
Root
()
.
Call
(
"setWalletValue"
,
str
)
}
else
{
}
else
{
object
:=
state
.
Get
StateObjec
t
(
gui
.
addr
)
object
:=
state
.
Get
Accoun
t
(
gui
.
addr
)
if
bytes
.
Compare
(
tx
.
Sender
(),
gui
.
addr
)
==
0
{
if
bytes
.
Compare
(
tx
.
Sender
(),
gui
.
addr
)
==
0
{
object
.
SubAmount
(
tx
.
Value
)
object
.
SubAmount
(
tx
.
Value
)
}
else
if
bytes
.
Compare
(
tx
.
Recipient
,
gui
.
addr
)
==
0
{
}
else
if
bytes
.
Compare
(
tx
.
Recipient
,
gui
.
addr
)
==
0
{
...
...
ethereum/config.go
View file @
1adfc272
...
@@ -7,6 +7,7 @@ import (
...
@@ -7,6 +7,7 @@ import (
var
StartConsole
bool
var
StartConsole
bool
var
StartMining
bool
var
StartMining
bool
var
StartRpc
bool
var
StartRpc
bool
var
RpcPort
int
var
UseUPnP
bool
var
UseUPnP
bool
var
OutboundPort
string
var
OutboundPort
string
var
ShowGenesis
bool
var
ShowGenesis
bool
...
@@ -26,6 +27,7 @@ func Init() {
...
@@ -26,6 +27,7 @@ func Init() {
flag
.
BoolVar
(
&
ShowGenesis
,
"g"
,
false
,
"prints genesis header and exits"
)
flag
.
BoolVar
(
&
ShowGenesis
,
"g"
,
false
,
"prints genesis header and exits"
)
//flag.BoolVar(&UseGui, "gui", true, "use the gui")
//flag.BoolVar(&UseGui, "gui", true, "use the gui")
flag
.
BoolVar
(
&
StartRpc
,
"r"
,
false
,
"start rpc server"
)
flag
.
BoolVar
(
&
StartRpc
,
"r"
,
false
,
"start rpc server"
)
flag
.
IntVar
(
&
RpcPort
,
"rpcport"
,
8080
,
"port to start json-rpc server on"
)
flag
.
BoolVar
(
&
NonInteractive
,
"y"
,
false
,
"non-interactive mode (say yes to confirmations)"
)
flag
.
BoolVar
(
&
NonInteractive
,
"y"
,
false
,
"non-interactive mode (say yes to confirmations)"
)
flag
.
BoolVar
(
&
UseUPnP
,
"upnp"
,
false
,
"enable UPnP support"
)
flag
.
BoolVar
(
&
UseUPnP
,
"upnp"
,
false
,
"enable UPnP support"
)
flag
.
BoolVar
(
&
UseSeed
,
"seed"
,
true
,
"seed peers"
)
flag
.
BoolVar
(
&
UseSeed
,
"seed"
,
true
,
"seed peers"
)
...
...
ethereum/dev_console.go
View file @
1adfc272
...
@@ -191,7 +191,7 @@ func (i *Console) ParseInput(input string) bool {
...
@@ -191,7 +191,7 @@ func (i *Console) ParseInput(input string) bool {
case
"contract"
:
case
"contract"
:
fmt
.
Println
(
"Contract editor (Ctrl-D = done)"
)
fmt
.
Println
(
"Contract editor (Ctrl-D = done)"
)
mainInput
,
initInput
:=
mutan
.
PreP
rocess
(
i
.
Editor
())
mainInput
,
initInput
:=
mutan
.
PreP
arse
(
i
.
Editor
())
mainScript
,
err
:=
utils
.
Compile
(
mainInput
)
mainScript
,
err
:=
utils
.
Compile
(
mainInput
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
err
)
fmt
.
Println
(
err
)
...
...
ethereum/ethereum.go
View file @
1adfc272
package
main
package
main
import
(
import
(
"encoding/hex"
"fmt"
"fmt"
"github.com/ethereum/eth-go"
"github.com/ethereum/eth-go"
"github.com/ethereum/eth-go/ethchain"
"github.com/ethereum/eth-go/ethchain"
...
@@ -122,24 +123,8 @@ func main() {
...
@@ -122,24 +123,8 @@ func main() {
// Set the max peers
// Set the max peers
ethereum
.
MaxPeers
=
MaxPeer
ethereum
.
MaxPeers
=
MaxPeer
if
StartConsole
{
// Set Mining status
err
:=
os
.
Mkdir
(
ethutil
.
Config
.
ExecPath
,
os
.
ModePerm
)
ethereum
.
Mining
=
StartMining
// Error is OK if the error is ErrExist
if
err
!=
nil
&&
!
os
.
IsExist
(
err
)
{
log
.
Panic
(
"Unable to create EXECPATH:"
,
err
)
}
console
:=
NewConsole
(
ethereum
)
go
console
.
Start
()
}
if
StartRpc
{
ethereum
.
RpcServer
=
ethrpc
.
NewJsonRpcServer
(
ethpub
.
NewPEthereum
(
ethereum
.
StateManager
(),
ethereum
.
BlockChain
(),
ethereum
.
TxPool
()))
go
ethereum
.
RpcServer
.
Start
()
}
RegisterInterrupts
(
ethereum
)
ethereum
.
Start
(
UseSeed
)
if
StartMining
{
if
StartMining
{
logger
.
Infoln
(
"Miner started"
)
logger
.
Infoln
(
"Miner started"
)
...
@@ -155,7 +140,9 @@ func main() {
...
@@ -155,7 +140,9 @@ func main() {
keyRing
:=
ethutil
.
NewValueFromBytes
(
data
)
keyRing
:=
ethutil
.
NewValueFromBytes
(
data
)
addr
:=
keyRing
.
Get
(
1
)
.
Bytes
()
addr
:=
keyRing
.
Get
(
1
)
.
Bytes
()
miner
:=
ethminer
.
NewDefaultMiner
(
addr
,
ethereum
)
pair
,
_
:=
ethchain
.
NewKeyPairFromSec
(
ethutil
.
FromHex
(
hex
.
EncodeToString
(
addr
)))
miner
:=
ethminer
.
NewDefaultMiner
(
pair
.
Address
(),
ethereum
)
miner
.
Start
()
miner
.
Start
()
}()
}()
...
@@ -164,6 +151,29 @@ func main() {
...
@@ -164,6 +151,29 @@ func main() {
}
}
if
StartConsole
{
err
:=
os
.
Mkdir
(
ethutil
.
Config
.
ExecPath
,
os
.
ModePerm
)
// Error is OK if the error is ErrExist
if
err
!=
nil
&&
!
os
.
IsExist
(
err
)
{
log
.
Panic
(
"Unable to create EXECPATH:"
,
err
)
}
console
:=
NewConsole
(
ethereum
)
go
console
.
Start
()
}
if
StartRpc
{
ethereum
.
RpcServer
,
err
=
ethrpc
.
NewJsonRpcServer
(
ethpub
.
NewPEthereum
(
ethereum
),
RpcPort
)
if
err
!=
nil
{
logger
.
Infoln
(
"Could not start RPC interface:"
,
err
)
}
else
{
go
ethereum
.
RpcServer
.
Start
()
}
}
RegisterInterrupts
(
ethereum
)
ethereum
.
Start
(
UseSeed
)
// Wait for shutdown
// Wait for shutdown
ethereum
.
WaitForShutdown
()
ethereum
.
WaitForShutdown
()
}
}
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