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
d1a6084b
Commit
d1a6084b
authored
Oct 07, 2014
by
obscuren
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'release/0.6.8'
parents
bd95fd77
a9b85776
Changes
9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
1134 additions
and
956 deletions
+1134
-956
flags.go
ethereum/flags.go
+34
-28
main.go
ethereum/main.go
+4
-0
html_messaging.js
mist/assets/ext/html_messaging.js
+5
-23
pre.js
mist/assets/ext/pre.js
+0
-3
qt_messaging_adapter.js
mist/assets/ext/qt_messaging_adapter.js
+21
-0
main.qml
mist/assets/qml/main.qml
+898
-890
webapp.qml
mist/assets/qml/webapp.qml
+1
-1
gui.go
mist/gui.go
+10
-11
websockets.go
utils/websockets.go
+161
-0
No files found.
ethereum/flags.go
View file @
d1a6084b
...
@@ -10,36 +10,41 @@ import (
...
@@ -10,36 +10,41 @@ import (
"github.com/ethereum/eth-go/ethlog"
"github.com/ethereum/eth-go/ethlog"
)
)
var
Identifier
string
var
(
var
KeyRing
string
Identifier
string
var
DiffTool
bool
KeyRing
string
var
DiffType
string
DiffTool
bool
var
KeyStore
string
DiffType
string
var
StartRpc
bool
KeyStore
string
var
RpcPort
int
StartRpc
bool
var
UseUPnP
bool
StartWebSockets
bool
var
OutboundPort
string
RpcPort
int
var
ShowGenesis
bool
UseUPnP
bool
var
AddPeer
string
OutboundPort
string
var
MaxPeer
int
ShowGenesis
bool
var
GenAddr
bool
AddPeer
string
var
UseSeed
bool
MaxPeer
int
var
SecretFile
string
GenAddr
bool
var
ExportDir
string
UseSeed
bool
var
NonInteractive
bool
SecretFile
string
var
Datadir
string
ExportDir
string
var
LogFile
string
NonInteractive
bool
var
ConfigFile
string
Datadir
string
var
DebugFile
string
LogFile
string
var
LogLevel
int
ConfigFile
string
var
Dump
bool
DebugFile
string
var
DumpHash
string
LogLevel
int
var
DumpNumber
int
Dump
bool
DumpHash
string
DumpNumber
int
)
// flags specific to cli client
// flags specific to cli client
var
StartMining
bool
var
(
var
StartJsConsole
bool
StartMining
bool
var
InputFile
string
StartJsConsole
bool
InputFile
string
)
func
defaultDataDir
()
string
{
func
defaultDataDir
()
string
{
usr
,
_
:=
user
.
Current
()
usr
,
_
:=
user
.
Current
()
...
@@ -62,6 +67,7 @@ func Init() {
...
@@ -62,6 +67,7 @@ func Init() {
flag
.
IntVar
(
&
MaxPeer
,
"maxpeer"
,
10
,
"maximum desired peers"
)
flag
.
IntVar
(
&
MaxPeer
,
"maxpeer"
,
10
,
"maximum desired peers"
)
flag
.
IntVar
(
&
RpcPort
,
"rpcport"
,
8080
,
"port to start json-rpc server on"
)
flag
.
IntVar
(
&
RpcPort
,
"rpcport"
,
8080
,
"port to start json-rpc server on"
)
flag
.
BoolVar
(
&
StartRpc
,
"rpc"
,
false
,
"start rpc server"
)
flag
.
BoolVar
(
&
StartRpc
,
"rpc"
,
false
,
"start rpc server"
)
flag
.
BoolVar
(
&
StartWebSockets
,
"ws"
,
false
,
"start websocket server"
)
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
(
&
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"
)
...
...
ethereum/main.go
View file @
d1a6084b
...
@@ -103,6 +103,10 @@ func main() {
...
@@ -103,6 +103,10 @@ func main() {
utils
.
StartRpc
(
ethereum
,
RpcPort
)
utils
.
StartRpc
(
ethereum
,
RpcPort
)
}
}
if
StartWebSockets
{
utils
.
StartWebSockets
(
ethereum
)
}
utils
.
StartEthereum
(
ethereum
,
UseSeed
)
utils
.
StartEthereum
(
ethereum
,
UseSeed
)
// this blocks the thread
// this blocks the thread
...
...
mist/assets/ext/html_messaging.js
View file @
d1a6084b
// The magic return variable. The magic return variable will be set during the execution of the QML call.
// The magic return variable. The magic return variable will be set during the execution of the QML call.
(
function
(
window
)
{
(
function
(
window
)
{
function
message
(
type
,
data
)
{
var
Promise
=
window
.
Promise
;
document
.
title
=
JSON
.
stringify
({
type
:
type
,
data
:
data
});
if
(
typeof
(
Promise
)
===
"undefined"
)
{
var
Promise
=
Q
.
Promise
;
return
window
.
____returnData
;
}
}
function
isPromise
(
o
)
{
function
isPromise
(
o
)
{
...
@@ -446,6 +445,7 @@
...
@@ -446,6 +445,7 @@
}
}
});
});
var
g_seed
=
1
;
var
g_seed
=
1
;
function
postData
(
data
,
cb
)
{
function
postData
(
data
,
cb
)
{
data
.
_seed
=
g_seed
;
data
.
_seed
=
g_seed
;
...
@@ -459,24 +459,6 @@
...
@@ -459,24 +459,6 @@
g_seed
++
;
g_seed
++
;
navigator
.
qt
.
postMessage
(
JSON
.
stringify
(
data
));
window
.
_messagingAdapter
.
call
(
this
,
JSON
.
stringify
(
data
))
}
navigator
.
qt
.
onmessage
=
function
(
ev
)
{
var
data
=
JSON
.
parse
(
ev
.
data
)
if
(
data
.
_event
!==
undefined
)
{
eth
.
trigger
(
data
.
_event
,
data
.
data
);
}
else
{
if
(
data
.
_seed
)
{
var
cb
=
eth
.
_callbacks
[
data
.
_seed
];
if
(
cb
)
{
cb
.
call
(
this
,
data
.
data
)
// Remove the "trigger" callback
delete
eth
.
_callbacks
[
ev
.
_seed
];
}
}
}
}
}
})(
this
);
})(
this
);
mist/assets/ext/pre.js
deleted
100644 → 0
View file @
bd95fd77
if
(
typeof
(
Promise
)
===
"undefined"
)
{
window
.
Promise
=
Q
.
Promise
;
}
mist/assets/ext/qt_messaging_adapter.js
0 → 100644
View file @
d1a6084b
window
.
_messagingAdapter
=
function
(
data
)
{
navigator
.
qt
.
postMessage
(
data
);
};
navigator
.
qt
.
onmessage
=
function
(
ev
)
{
var
data
=
JSON
.
parse
(
ev
.
data
)
if
(
data
.
_event
!==
undefined
)
{
eth
.
trigger
(
data
.
_event
,
data
.
data
);
}
else
{
if
(
data
.
_seed
)
{
var
cb
=
eth
.
_callbacks
[
data
.
_seed
];
if
(
cb
)
{
cb
.
call
(
this
,
data
.
data
)
// Remove the "trigger" callback
delete
eth
.
_callbacks
[
ev
.
_seed
];
}
}
}
}
mist/assets/qml/main.qml
View file @
d1a6084b
This diff is collapsed.
Click to expand it.
mist/assets/qml/webapp.qml
View file @
d1a6084b
...
@@ -164,7 +164,7 @@ import "../ext/qml_messaging.js" as Messaging
...
@@ -164,7 +164,7 @@ import "../ext/qml_messaging.js" as Messaging
experimental
.
preferences
.
javascriptEnabled
:
true
experimental
.
preferences
.
javascriptEnabled
:
true
experimental
.
preferences
.
navigatorQtObjectEnabled
:
true
experimental
.
preferences
.
navigatorQtObjectEnabled
:
true
experimental
.
preferences
.
developerExtrasEnabled
:
true
experimental
.
preferences
.
developerExtrasEnabled
:
true
experimental
.
userScripts
:
[
"../ext/q
.js"
,
"../ext/pre
.js"
,
"../ext/big.js"
,
"../ext/string.js"
,
"../ext/html_messaging.js"
]
experimental
.
userScripts
:
[
"../ext/q
t_messaging_adapter.js"
,
"../ext/q
.js"
,
"../ext/big.js"
,
"../ext/string.js"
,
"../ext/html_messaging.js"
]
experimental
.
onMessageReceived
:
{
experimental
.
onMessageReceived
:
{
console
.
log
(
"[onMessageReceived]: "
,
message
.
data
)
console
.
log
(
"[onMessageReceived]: "
,
message
.
data
)
// TODO move to messaging.js
// TODO move to messaging.js
...
...
mist/gui.go
View file @
d1a6084b
...
@@ -271,7 +271,8 @@ func (gui *Gui) loadAddressBook() {
...
@@ -271,7 +271,8 @@ func (gui *Gui) loadAddressBook() {
}
}
func
(
gui
*
Gui
)
insertTransaction
(
window
string
,
tx
*
ethchain
.
Transaction
)
{
func
(
gui
*
Gui
)
insertTransaction
(
window
string
,
tx
*
ethchain
.
Transaction
)
{
nameReg
:=
ethpipe
.
New
(
gui
.
eth
)
.
World
()
.
Config
()
.
Get
(
"NameReg"
)
pipe
:=
ethpipe
.
New
(
gui
.
eth
)
nameReg
:=
pipe
.
World
()
.
Config
()
.
Get
(
"NameReg"
)
addr
:=
gui
.
address
()
addr
:=
gui
.
address
()
var
inout
string
var
inout
string
...
@@ -282,14 +283,14 @@ func (gui *Gui) insertTransaction(window string, tx *ethchain.Transaction) {
...
@@ -282,14 +283,14 @@ func (gui *Gui) insertTransaction(window string, tx *ethchain.Transaction) {
}
}
var
(
var
(
ptx
=
ethpipe
.
NewJSTx
(
tx
)
ptx
=
ethpipe
.
NewJSTx
(
tx
,
pipe
.
World
()
.
State
()
)
send
=
nameReg
.
Storage
(
tx
.
Sender
())
send
=
nameReg
.
Storage
(
tx
.
Sender
())
rec
=
nameReg
.
Storage
(
tx
.
Recipient
)
rec
=
nameReg
.
Storage
(
tx
.
Recipient
)
s
,
r
string
s
,
r
string
)
)
if
tx
.
CreatesContract
()
{
if
tx
.
CreatesContract
()
{
rec
=
nameReg
.
Storage
(
tx
.
CreationAddress
())
rec
=
nameReg
.
Storage
(
tx
.
CreationAddress
(
pipe
.
World
()
.
State
()
))
}
}
if
send
.
Len
()
!=
0
{
if
send
.
Len
()
!=
0
{
...
@@ -301,7 +302,7 @@ func (gui *Gui) insertTransaction(window string, tx *ethchain.Transaction) {
...
@@ -301,7 +302,7 @@ func (gui *Gui) insertTransaction(window string, tx *ethchain.Transaction) {
r
=
strings
.
Trim
(
rec
.
Str
(),
"
\x00
"
)
r
=
strings
.
Trim
(
rec
.
Str
(),
"
\x00
"
)
}
else
{
}
else
{
if
tx
.
CreatesContract
()
{
if
tx
.
CreatesContract
()
{
r
=
ethutil
.
Bytes2Hex
(
tx
.
CreationAddress
())
r
=
ethutil
.
Bytes2Hex
(
tx
.
CreationAddress
(
pipe
.
World
()
.
State
()
))
}
else
{
}
else
{
r
=
ethutil
.
Bytes2Hex
(
tx
.
Recipient
)
r
=
ethutil
.
Bytes2Hex
(
tx
.
Recipient
)
}
}
...
@@ -466,13 +467,11 @@ func (gui *Gui) update() {
...
@@ -466,13 +467,11 @@ func (gui *Gui) update() {
var
(
var
(
pct
float64
=
1.0
/
float64
(
chainLength
)
*
float64
(
blockLength
)
pct
float64
=
1.0
/
float64
(
chainLength
)
*
float64
(
blockLength
)
dlWidget
=
gui
.
win
.
Root
()
.
ObjectByName
(
"downloadIndicator"
)
dlWidget
=
gui
.
win
.
Root
()
.
ObjectByName
(
"downloadIndicator"
)
dlLabel
=
gui
.
win
.
Root
()
.
ObjectByName
(
"downloadLabel"
)
)
)
if
pct
<
1.0
{
dlWidget
.
Set
(
"visible"
,
true
)
dlWidget
.
Set
(
"value"
,
pct
)
dlWidget
.
Set
(
"value"
,
pct
)
dlLabel
.
Set
(
"text"
,
fmt
.
Sprintf
(
"%d / %d"
,
blockLength
,
chainLength
))
}
else
{
dlWidget
.
Set
(
"visible"
,
false
)
}
case
<-
statsUpdateTicker
.
C
:
case
<-
statsUpdateTicker
.
C
:
gui
.
setStatsPane
()
gui
.
setStatsPane
()
...
@@ -500,7 +499,7 @@ func (gui *Gui) setStatsPane() {
...
@@ -500,7 +499,7 @@ func (gui *Gui) setStatsPane() {
runtime
.
ReadMemStats
(
&
memStats
)
runtime
.
ReadMemStats
(
&
memStats
)
statsPane
:=
gui
.
getObjectByName
(
"statsPane"
)
statsPane
:=
gui
.
getObjectByName
(
"statsPane"
)
statsPane
.
Set
(
"text"
,
fmt
.
Sprintf
(
`###### Mist 0.6.
7
(%s) #######
statsPane
.
Set
(
"text"
,
fmt
.
Sprintf
(
`###### Mist 0.6.
8
(%s) #######
eth %d (p2p = %d)
eth %d (p2p = %d)
...
...
utils/websockets.go
0 → 100644
View file @
d1a6084b
package
utils
import
(
"github.com/ethereum/eth-go"
"github.com/ethereum/eth-go/ethpipe"
"github.com/ethereum/eth-go/ethutil"
"github.com/ethereum/eth-go/websocket"
)
func
args
(
v
...
interface
{})
[]
interface
{}
{
return
v
}
type
WebSocketServer
struct
{
ethereum
*
eth
.
Ethereum
filterCallbacks
map
[
int
][]
int
}
func
NewWebSocketServer
(
eth
*
eth
.
Ethereum
)
*
WebSocketServer
{
return
&
WebSocketServer
{
eth
,
make
(
map
[
int
][]
int
)}
}
func
(
self
*
WebSocketServer
)
Serv
()
{
pipe
:=
ethpipe
.
NewJSPipe
(
self
.
ethereum
)
wsServ
:=
websocket
.
NewServer
(
"/eth"
,
":40404"
)
wsServ
.
MessageFunc
(
func
(
c
*
websocket
.
Client
,
msg
*
websocket
.
Message
)
{
switch
msg
.
Call
{
case
"compile"
:
data
:=
ethutil
.
NewValue
(
msg
.
Args
)
bcode
,
err
:=
ethutil
.
Compile
(
data
.
Get
(
0
)
.
Str
(),
false
)
if
err
!=
nil
{
c
.
Write
(
args
(
nil
,
err
.
Error
()),
msg
.
Seed
)
}
code
:=
ethutil
.
Bytes2Hex
(
bcode
)
c
.
Write
(
args
(
code
,
nil
),
msg
.
Seed
)
case
"getBlockByNumber"
:
args
:=
msg
.
Arguments
()
block
:=
pipe
.
BlockByNumber
(
int32
(
args
.
Get
(
0
)
.
Uint
()))
c
.
Write
(
block
,
msg
.
Seed
)
case
"getKey"
:
c
.
Write
(
pipe
.
Key
()
.
PrivateKey
,
msg
.
Seed
)
case
"transact"
:
if
mp
,
ok
:=
msg
.
Args
[
0
]
.
(
map
[
string
]
interface
{});
ok
{
object
:=
mapToTxParams
(
mp
)
c
.
Write
(
args
(
pipe
.
Transact
(
object
[
"from"
],
object
[
"to"
],
object
[
"value"
],
object
[
"gas"
],
object
[
"gasPrice"
],
object
[
"data"
])),
msg
.
Seed
,
)
}
case
"getCoinBase"
:
c
.
Write
(
pipe
.
CoinBase
(),
msg
.
Seed
)
case
"getIsListening"
:
c
.
Write
(
pipe
.
IsListening
(),
msg
.
Seed
)
case
"getIsMining"
:
c
.
Write
(
pipe
.
IsMining
(),
msg
.
Seed
)
case
"getPeerCoint"
:
c
.
Write
(
pipe
.
PeerCount
(),
msg
.
Seed
)
case
"getCountAt"
:
args
:=
msg
.
Arguments
()
c
.
Write
(
pipe
.
TxCountAt
(
args
.
Get
(
0
)
.
Str
()),
msg
.
Seed
)
case
"getCodeAt"
:
args
:=
msg
.
Arguments
()
c
.
Write
(
len
(
pipe
.
CodeAt
(
args
.
Get
(
0
)
.
Str
())),
msg
.
Seed
)
case
"getBlockByHash"
:
args
:=
msg
.
Arguments
()
c
.
Write
(
pipe
.
BlockByHash
(
args
.
Get
(
0
)
.
Str
()),
msg
.
Seed
)
case
"getStorageAt"
:
args
:=
msg
.
Arguments
()
c
.
Write
(
pipe
.
StorageAt
(
args
.
Get
(
0
)
.
Str
(),
args
.
Get
(
1
)
.
Str
()),
msg
.
Seed
)
case
"getBalanceAt"
:
args
:=
msg
.
Arguments
()
c
.
Write
(
pipe
.
BalanceAt
(
args
.
Get
(
0
)
.
Str
()),
msg
.
Seed
)
case
"getSecretToAddress"
:
args
:=
msg
.
Arguments
()
c
.
Write
(
pipe
.
SecretToAddress
(
args
.
Get
(
0
)
.
Str
()),
msg
.
Seed
)
case
"newFilter"
:
case
"newFilterString"
:
case
"messages"
:
// TODO
}
})
wsServ
.
Listen
()
}
func
StartWebSockets
(
eth
*
eth
.
Ethereum
)
{
sock
:=
NewWebSocketServer
(
eth
)
go
sock
.
Serv
()
}
// TODO This is starting to become a generic method. Move to utils
func
mapToTxParams
(
object
map
[
string
]
interface
{})
map
[
string
]
string
{
// Default values
if
object
[
"from"
]
==
nil
{
object
[
"from"
]
=
""
}
if
object
[
"to"
]
==
nil
{
object
[
"to"
]
=
""
}
if
object
[
"value"
]
==
nil
{
object
[
"value"
]
=
""
}
if
object
[
"gas"
]
==
nil
{
object
[
"gas"
]
=
""
}
if
object
[
"gasPrice"
]
==
nil
{
object
[
"gasPrice"
]
=
""
}
var
dataStr
string
var
data
[]
string
if
str
,
ok
:=
object
[
"data"
]
.
(
string
);
ok
{
data
=
[]
string
{
str
}
}
for
_
,
str
:=
range
data
{
if
ethutil
.
IsHex
(
str
)
{
str
=
str
[
2
:
]
if
len
(
str
)
!=
64
{
str
=
ethutil
.
LeftPadString
(
str
,
64
)
}
}
else
{
str
=
ethutil
.
Bytes2Hex
(
ethutil
.
LeftPadBytes
(
ethutil
.
Big
(
str
)
.
Bytes
(),
32
))
}
dataStr
+=
str
}
object
[
"data"
]
=
dataStr
conv
:=
make
(
map
[
string
]
string
)
for
key
,
value
:=
range
object
{
if
v
,
ok
:=
value
.
(
string
);
ok
{
conv
[
key
]
=
v
}
}
return
conv
}
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