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 = {
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
)
{
postData
({
call
:
"getBalance"
,
args
:
[
address
]},
cb
);
},
...
...
@@ -115,6 +130,8 @@ window.eth = {
}
}
},
}
window
.
eth
.
_callbacks
=
{}
window
.
eth
.
_onCallbacks
=
{}
...
...
ethereal/assets/qml/first_run.qml
View file @
1adfc272
...
...
@@ -61,7 +61,7 @@ ApplicationWindow {
text
:
"Restore"
enabled
:
false
onClicked
:
{
var
success
=
eth
.
importAndSetPrivKey
(
txPrivKey
.
text
)
var
success
=
lib
.
importAndSetPrivKey
(
txPrivKey
.
text
)
if
(
success
){
importedDetails
.
visible
=
true
restoreColumn
.
visible
=
false
...
...
@@ -139,7 +139,7 @@ ApplicationWindow {
id
:
newKey
text
:
"I don't have an account yet"
onClicked
:
{
var
res
=
eth
.
createAndSetPrivKey
()
var
res
=
lib
.
createAndSetPrivKey
()
mnemonicInput
.
text
=
res
[
0
]
addressInput
.
text
=
res
[
1
]
privkeyInput
.
text
=
res
[
2
]
...
...
ethereal/assets/qml/webapp.qml
View file @
1adfc272
...
...
@@ -47,13 +47,37 @@ ApplicationWindow {
try
{
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"
:
var
block
=
eth
.
getBlock
(
"b9b56cf6f907fbee21db0cd7cbc0e6fea2fe29503a3943e275c5e467d649cb06"
)
postData
(
data
.
_seed
,
block
)
break
case
"getBlockByHash"
:
var
block
=
eth
.
getBlock
(
"b9b56cf6f907fbee21db0cd7cbc0e6fea2fe29503a3943e275c5e467d649cb06"
)
postData
(
data
.
_seed
,
block
)
break
case
"transact"
:
require
(
5
)
...
...
@@ -94,11 +118,14 @@ ApplicationWindow {
postData
(
data
.
_seed
,
null
)
break
;
case
"set"
:
console
.
log
(
"'Set' has been depcrecated"
)
/*
for(var key in data.args) {
if(webview.hasOwnProperty(key)) {
window[key] = data.args[key];
}
}
*/
break
;
case
"getSecretToAddress"
:
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 (
var
StartConsole
bool
var
StartMining
bool
var
StartRpc
bool
var
RpcPort
int
var
UseUPnP
bool
var
OutboundPort
string
var
ShowGenesis
bool
...
...
@@ -28,6 +29,7 @@ func Init() {
flag
.
BoolVar
(
&
UseSeed
,
"seed"
,
true
,
"seed peers"
)
flag
.
BoolVar
(
&
GenAddr
,
"genaddr"
,
false
,
"create a new priv/pub 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
(
&
DataDir
,
"dir"
,
".ethereal"
,
"ethereum data directory"
)
flag
.
StringVar
(
&
ImportKey
,
"import"
,
""
,
"imports the given private key (hex)"
)
...
...
ethereal/ethereum.go
View file @
1adfc272
...
...
@@ -100,9 +100,13 @@ func main() {
}
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
()
}
}
log
.
Printf
(
"Starting Ethereum GUI v%s
\n
"
,
ethutil
.
Config
.
Ver
)
...
...
@@ -110,5 +114,11 @@ func main() {
ethereum
.
MaxPeers
=
MaxPeer
gui
:=
ethui
.
New
(
ethereum
)
ethereum
.
Start
(
UseSeed
)
gui
.
Start
(
AssetPath
)
// Wait for shutdown
ethereum
.
WaitForShutdown
()
}
ethereal/ui/ext_app.go
View file @
1adfc272
...
...
@@ -34,7 +34,7 @@ type ExtApplication struct {
func
NewExtApplication
(
container
AppContainer
,
lib
*
UiLib
)
*
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
bool
),
...
...
ethereal/ui/gui.go
View file @
1adfc272
...
...
@@ -25,6 +25,7 @@ type Gui struct {
// The public Ethereum library
lib
*
EthLib
uiLib
*
UiLib
txDb
*
ethdb
.
LDBDatabase
...
...
@@ -52,7 +53,7 @@ func New(ethereum *eth.Ethereum) *Gui {
//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
}
}
...
...
@@ -67,7 +68,7 @@ func (gui *Gui) Start(assetPath string) {
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"
)
// Create a new QML engine
gui
.
engine
=
qml
.
NewEngine
()
...
...
@@ -75,11 +76,12 @@ func (gui *Gui) Start(assetPath string) {
// Expose the eth library and the ui library to QML
context
.
SetVar
(
"eth"
,
gui
)
uiLib
:
=
NewUiLib
(
gui
.
engine
,
gui
.
eth
,
assetPath
)
context
.
SetVar
(
"ui"
,
uiLib
)
gui
.
uiLib
=
NewUiLib
(
gui
.
engine
,
gui
.
eth
,
assetPath
)
context
.
SetVar
(
"ui"
,
gui
.
uiLib
)
// Load the main QML interface
data
,
_
:=
ethutil
.
Config
.
Db
.
Get
([]
byte
(
"KeyRing"
))
/*
var err error
var component qml.Object
firstRun := len(data) == 0
...
...
@@ -115,6 +117,63 @@ func (gui *Gui) Start(assetPath string) {
gui.win.Wait()
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
()
{
...
...
@@ -148,7 +207,7 @@ func (gui *Gui) update() {
state
:=
gui
.
eth
.
StateManager
()
.
TransState
()
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
{
select
{
...
...
@@ -156,7 +215,7 @@ func (gui *Gui) update() {
tx
:=
txMsg
.
Tx
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
{
gui
.
win
.
Root
()
.
Call
(
"addTx"
,
ethpub
.
NewPTx
(
tx
))
...
...
@@ -182,7 +241,7 @@ func (gui *Gui) update() {
gui
.
win
.
Root
()
.
Call
(
"setWalletValue"
,
str
)
}
else
{
object
:=
state
.
Get
StateObjec
t
(
gui
.
addr
)
object
:=
state
.
Get
Accoun
t
(
gui
.
addr
)
if
bytes
.
Compare
(
tx
.
Sender
(),
gui
.
addr
)
==
0
{
object
.
SubAmount
(
tx
.
Value
)
}
else
if
bytes
.
Compare
(
tx
.
Recipient
,
gui
.
addr
)
==
0
{
...
...
ethereum/config.go
View file @
1adfc272
...
...
@@ -7,6 +7,7 @@ import (
var
StartConsole
bool
var
StartMining
bool
var
StartRpc
bool
var
RpcPort
int
var
UseUPnP
bool
var
OutboundPort
string
var
ShowGenesis
bool
...
...
@@ -26,6 +27,7 @@ func Init() {
flag
.
BoolVar
(
&
ShowGenesis
,
"g"
,
false
,
"prints genesis header and exits"
)
//flag.BoolVar(&UseGui, "gui", true, "use the gui")
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
(
&
UseUPnP
,
"upnp"
,
false
,
"enable UPnP support"
)
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 {
case
"contract"
:
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
)
if
err
!=
nil
{
fmt
.
Println
(
err
)
...
...
ethereum/ethereum.go
View file @
1adfc272
package
main
import
(
"encoding/hex"
"fmt"
"github.com/ethereum/eth-go"
"github.com/ethereum/eth-go/ethchain"
...
...
@@ -122,24 +123,8 @@ func main() {
// Set the max peers
ethereum
.
MaxPeers
=
MaxPeer
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
=
ethrpc
.
NewJsonRpcServer
(
ethpub
.
NewPEthereum
(
ethereum
.
StateManager
(),
ethereum
.
BlockChain
(),
ethereum
.
TxPool
()))
go
ethereum
.
RpcServer
.
Start
()
}
RegisterInterrupts
(
ethereum
)
ethereum
.
Start
(
UseSeed
)
// Set Mining status
ethereum
.
Mining
=
StartMining
if
StartMining
{
logger
.
Infoln
(
"Miner started"
)
...
...
@@ -155,7 +140,9 @@ func main() {
keyRing
:=
ethutil
.
NewValueFromBytes
(
data
)
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
()
}()
...
...
@@ -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
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