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
353ecbb7
Commit
353ecbb7
authored
Jul 14, 2014
by
zelig
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' of github.com:ethereum/go-ethereum into feature/ethutil-refactor
parents
6b296d90
e53acdc2
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
112 additions
and
87 deletions
+112
-87
debugger.qml
ethereal/assets/debugger/debugger.qml
+4
-2
wallet.qml
ethereal/assets/qml/wallet.qml
+6
-6
webapp.qml
ethereal/assets/qml/webapp.qml
+2
-3
debugger.go
ethereal/debugger.go
+11
-2
ext_app.go
ethereal/ext_app.go
+4
-5
flags.go
ethereal/flags.go
+2
-2
gui.go
ethereal/gui.go
+52
-55
html_container.go
ethereal/html_container.go
+4
-3
qml_container.go
ethereal/qml_container.go
+9
-1
flags.go
ethereum/flags.go
+2
-0
javascript_runtime.go
ethereum/javascript_runtime.go
+8
-8
main.go
ethereum/main.go
+8
-0
No files found.
ethereal/assets/debugger/debugger.qml
View file @
353ecbb7
...
...
@@ -19,7 +19,7 @@ ApplicationWindow {
property
alias
dataText
:
rawDataField
.
text
onClosing
:
{
compileTimer
.
stop
()
//
compileTimer.stop()
}
MenuBar
{
...
...
@@ -112,13 +112,15 @@ ApplicationWindow {
anchors.right
:
settings
.
left
focus
:
true
/*
Timer {
id: compileTimer
interval: 500 ; running: true ; repeat: true
onTriggered: {
dbg
.
compile
(
codeEditor
.
text
)
dbg.
autoComp
(codeEditor.text)
}
}
*/
}
Column
{
...
...
ethereal/assets/qml/wallet.qml
View file @
353ecbb7
...
...
@@ -100,7 +100,7 @@ ApplicationWindow {
anchors.right
:
parent
.
right
height
:
200
Image
{
source
:
ui
.
assetPath
(
"tx.png"
)
source
:
"../tx.png"
anchors.horizontalCenter
:
parent
.
horizontalCenter
MouseArea
{
anchors.fill
:
parent
...
...
@@ -110,7 +110,7 @@ ApplicationWindow {
}
}
Image
{
source
:
ui
.
assetPath
(
"new.png"
)
source
:
"../new.png"
anchors.horizontalCenter
:
parent
.
horizontalCenter
MouseArea
{
anchors.fill
:
parent
...
...
@@ -120,7 +120,7 @@ ApplicationWindow {
}
}
Image
{
source
:
ui
.
assetPath
(
"net.png"
)
source
:
"../net.png"
anchors.horizontalCenter
:
parent
.
horizontalCenter
MouseArea
{
anchors.fill
:
parent
...
...
@@ -131,7 +131,7 @@ ApplicationWindow {
}
Image
{
source
:
ui
.
assetPath
(
"heart.png"
)
source
:
"../heart.png"
anchors.horizontalCenter
:
parent
.
horizontalCenter
MouseArea
{
anchors.fill
:
parent
...
...
@@ -436,7 +436,7 @@ ApplicationWindow {
onDoubleClicked
:
peerWindow
.
visible
=
true
anchors.fill
:
parent
}
source
:
ui
.
assetPath
(
"network.png"
)
source
:
"../network.png"
}
}
...
...
@@ -624,7 +624,7 @@ ApplicationWindow {
width
:
150
fillMode
:
Image
.
PreserveAspectFit
smooth
:
true
source
:
ui
.
assetPath
(
"facet.png"
)
source
:
"../facet.png"
x
:
10
y
:
10
}
...
...
ethereal/assets/qml/webapp.qml
View file @
353ecbb7
...
...
@@ -38,7 +38,7 @@ ApplicationWindow {
experimental.preferences.javascriptEnabled
:
true
experimental.preferences.navigatorQtObjectEnabled
:
true
experimental.preferences.developerExtrasEnabled
:
true
experimental.userScripts
:
[
ui
.
assetPath
(
"ext/pre.js"
),
ui
.
assetPath
(
"ext/big.js"
),
ui
.
assetPath
(
"ext/string.js"
),
ui
.
assetPath
(
"ext/ethereum.js"
)
]
experimental.userScripts
:
[
"../ext/pre.js"
,
"../ext/big.js"
,
"../ext/string.js"
,
"../ext/ethereum.js"
]
experimental.onMessageReceived
:
{
console
.
log
(
"[onMessageReceived]: "
,
message
.
data
)
// TODO move to messaging.js
...
...
@@ -191,6 +191,7 @@ ApplicationWindow {
inspector
.
visible
=
false
}
else
{
inspector
.
visible
=
true
inspector
.
url
=
webview
.
experimental
.
remoteInspectorUrl
}
}
onDoubleClicked
:
{
...
...
@@ -224,7 +225,6 @@ ApplicationWindow {
WebView
{
id
:
inspector
visible
:
false
url
:
webview
.
experimental
.
remoteInspectorUrl
anchors
{
left
:
root
.
left
right
:
root
.
right
...
...
@@ -238,7 +238,6 @@ ApplicationWindow {
name
:
"inspectorShown"
PropertyChanges
{
target
:
inspector
url
:
webview
.
experimental
.
remoteInspectorUrl
}
}
]
...
...
ethereal/debugger.go
View file @
353ecbb7
...
...
@@ -74,6 +74,13 @@ func (self *DebuggerWindow) Compile(code string) {
}
}
// Used by QML
func
(
self
*
DebuggerWindow
)
AutoComp
(
code
string
)
{
if
self
.
Db
.
done
{
self
.
Compile
(
code
)
}
}
func
(
self
*
DebuggerWindow
)
ClearLog
()
{
self
.
win
.
Root
()
.
Call
(
"clearLog"
)
}
...
...
@@ -110,8 +117,6 @@ func (self *DebuggerWindow) Debug(valueStr, gasStr, gasPriceStr, scriptStr, data
return
}
self
.
SetAsm
(
script
)
var
(
gas
=
ethutil
.
Big
(
gasStr
)
gasPrice
=
ethutil
.
Big
(
gasPriceStr
)
...
...
@@ -257,6 +262,10 @@ func (self *Debugger) StepHook(pc int, op ethchain.OpCode, mem *ethchain.Memory,
return
self
.
halting
(
pc
,
op
,
mem
,
stack
,
stateObject
)
}
func
(
self
*
Debugger
)
SetCode
(
byteCode
[]
byte
)
{
self
.
main
.
SetAsm
(
byteCode
)
}
func
(
self
*
Debugger
)
BreakPoints
()
[]
int64
{
return
self
.
breakPoints
}
...
...
ethereal/ext_app.go
View file @
353ecbb7
...
...
@@ -4,7 +4,6 @@ import (
"fmt"
"github.com/ethereum/eth-go/ethchain"
"github.com/ethereum/eth-go/ethpub"
"github.com/ethereum/eth-go/ethreact"
"github.com/ethereum/eth-go/ethutil"
"github.com/go-qml/qml"
)
...
...
@@ -25,8 +24,8 @@ type AppContainer interface {
type
ExtApplication
struct
{
*
ethpub
.
PEthereum
blockChan
chan
eth
react
.
Even
t
changeChan
chan
eth
react
.
Even
t
blockChan
chan
eth
util
.
Reac
t
changeChan
chan
eth
util
.
Reac
t
quitChan
chan
bool
watcherQuitChan
chan
bool
...
...
@@ -38,8 +37,8 @@ type ExtApplication struct {
func
NewExtApplication
(
container
AppContainer
,
lib
*
UiLib
)
*
ExtApplication
{
app
:=
&
ExtApplication
{
ethpub
.
NewPEthereum
(
lib
.
eth
),
make
(
chan
eth
react
.
Event
),
make
(
chan
eth
react
.
Event
),
make
(
chan
eth
util
.
React
,
1
),
make
(
chan
eth
util
.
React
,
1
),
make
(
chan
bool
),
make
(
chan
bool
),
container
,
...
...
ethereal/flags.go
View file @
353ecbb7
...
...
@@ -52,8 +52,8 @@ func defaultAssetPath() string {
assetPath
=
filepath
.
Join
(
exedir
,
"../Resources"
)
case
"linux"
:
assetPath
=
"/usr/share/ethereal"
case
"window"
:
fallthrough
case
"window
s
"
:
assetPath
=
"./assets"
default
:
assetPath
=
"."
}
...
...
ethereal/gui.go
View file @
353ecbb7
...
...
@@ -8,7 +8,6 @@ import (
"github.com/ethereum/eth-go/ethdb"
"github.com/ethereum/eth-go/ethlog"
"github.com/ethereum/eth-go/ethpub"
"github.com/ethereum/eth-go/ethreact"
"github.com/ethereum/eth-go/ethutil"
"github.com/ethereum/eth-go/ethwire"
"github.com/ethereum/go-ethereum/utils"
...
...
@@ -144,7 +143,7 @@ func (gui *Gui) showWallet(context *qml.Context) (*qml.Window, error) {
gui
.
readPreviousTransactions
()
gui
.
setPeerInfo
()
gui
.
update
()
g
o
g
ui
.
update
()
return
win
,
nil
}
...
...
@@ -267,10 +266,20 @@ func (gui *Gui) setWalletValue(amount, unconfirmedFunds *big.Int) {
func
(
gui
*
Gui
)
update
()
{
reactor
:=
gui
.
eth
.
Reactor
()
blockChan
:=
make
(
chan
ethreact
.
Event
)
txChan
:=
make
(
chan
ethreact
.
Event
)
objectChan
:=
make
(
chan
ethreact
.
Event
)
peerChan
:=
make
(
chan
ethreact
.
Event
)
blockChan
:=
make
(
chan
ethutil
.
React
,
1
)
txChan
:=
make
(
chan
ethutil
.
React
,
1
)
objectChan
:=
make
(
chan
ethutil
.
React
,
1
)
peerChan
:=
make
(
chan
ethutil
.
React
,
1
)
reactor
.
Subscribe
(
"newBlock"
,
blockChan
)
reactor
.
Subscribe
(
"newTx:pre"
,
txChan
)
reactor
.
Subscribe
(
"newTx:post"
,
txChan
)
nameReg
:=
ethpub
.
EthereumConfig
(
gui
.
eth
.
StateManager
())
.
NameReg
()
if
nameReg
!=
nil
{
reactor
.
Subscribe
(
"object:"
+
string
(
nameReg
.
Address
()),
objectChan
)
}
reactor
.
Subscribe
(
"peerList"
,
peerChan
)
ticker
:=
time
.
NewTicker
(
5
*
time
.
Second
)
...
...
@@ -279,66 +288,54 @@ func (gui *Gui) update() {
unconfirmedFunds
:=
new
(
big
.
Int
)
gui
.
win
.
Root
()
.
Call
(
"setWalletValue"
,
fmt
.
Sprintf
(
"%v"
,
ethutil
.
CurrencyToString
(
state
.
GetAccount
(
gui
.
address
())
.
Amount
)))
go
func
()
{
for
{
select
{
case
b
:=
<-
blockChan
:
block
:=
b
.
Resource
.
(
*
ethchain
.
Block
)
gui
.
processBlock
(
block
,
false
)
if
bytes
.
Compare
(
block
.
Coinbase
,
gui
.
address
())
==
0
{
gui
.
setWalletValue
(
gui
.
eth
.
StateManager
()
.
CurrentState
()
.
GetAccount
(
gui
.
address
())
.
Amount
,
nil
)
}
for
{
select
{
case
b
:=
<-
blockChan
:
block
:=
b
.
Resource
.
(
*
ethchain
.
Block
)
gui
.
processBlock
(
block
,
false
)
if
bytes
.
Compare
(
block
.
Coinbase
,
gui
.
address
())
==
0
{
gui
.
setWalletValue
(
gui
.
eth
.
StateManager
()
.
CurrentState
()
.
GetAccount
(
gui
.
address
())
.
Amount
,
nil
)
}
case
txMsg
:=
<-
txChan
:
tx
:=
txMsg
.
Resource
.
(
*
ethchain
.
Transaction
)
case
txMsg
:=
<-
txChan
:
tx
:=
txMsg
.
Resource
.
(
*
ethchain
.
Transaction
)
if
txMsg
.
Name
==
"newTx:pre"
{
object
:=
state
.
GetAccount
(
gui
.
address
())
if
txMsg
.
Event
==
"newTx:pre"
{
object
:=
state
.
GetAccount
(
gui
.
address
())
if
bytes
.
Compare
(
tx
.
Sender
(),
gui
.
address
())
==
0
{
gui
.
win
.
Root
()
.
Call
(
"addTx"
,
ethpub
.
NewPTx
(
tx
),
"send"
)
gui
.
txDb
.
Put
(
tx
.
Hash
(),
tx
.
RlpEncode
())
if
bytes
.
Compare
(
tx
.
Sender
(),
gui
.
address
())
==
0
{
gui
.
win
.
Root
()
.
Call
(
"addTx"
,
ethpub
.
NewPTx
(
tx
),
"send"
)
gui
.
txDb
.
Put
(
tx
.
Hash
(),
tx
.
RlpEncode
())
unconfirmedFunds
.
Sub
(
unconfirmedFunds
,
tx
.
Value
)
}
else
if
bytes
.
Compare
(
tx
.
Recipient
,
gui
.
address
())
==
0
{
gui
.
win
.
Root
()
.
Call
(
"addTx"
,
ethpub
.
NewPTx
(
tx
),
"recv"
)
gui
.
txDb
.
Put
(
tx
.
Hash
(),
tx
.
RlpEncode
())
unconfirmedFunds
.
Sub
(
unconfirmedFunds
,
tx
.
Value
)
}
else
if
bytes
.
Compare
(
tx
.
Recipient
,
gui
.
address
())
==
0
{
gui
.
win
.
Root
()
.
Call
(
"addTx"
,
ethpub
.
NewPTx
(
tx
),
"recv"
)
gui
.
txDb
.
Put
(
tx
.
Hash
(),
tx
.
RlpEncode
())
unconfirmedFunds
.
Add
(
unconfirmedFunds
,
tx
.
Value
)
}
unconfirmedFunds
.
Add
(
unconfirmedFunds
,
tx
.
Value
)
}
gui
.
setWalletValue
(
object
.
Amount
,
unconfirmedFunds
)
}
else
{
object
:=
state
.
GetAccount
(
gui
.
address
())
if
bytes
.
Compare
(
tx
.
Sender
(),
gui
.
address
())
==
0
{
object
.
SubAmount
(
tx
.
Value
)
}
else
if
bytes
.
Compare
(
tx
.
Recipient
,
gui
.
address
())
==
0
{
object
.
AddAmount
(
tx
.
Value
)
}
gui
.
setWalletValue
(
object
.
Amount
,
unconfirmedFunds
)
}
else
{
object
:=
state
.
GetAccount
(
gui
.
address
())
if
bytes
.
Compare
(
tx
.
Sender
(),
gui
.
address
())
==
0
{
object
.
SubAmount
(
tx
.
Value
)
}
else
if
bytes
.
Compare
(
tx
.
Recipient
,
gui
.
address
())
==
0
{
object
.
AddAmount
(
tx
.
Value
)
}
gui
.
setWalletValue
(
object
.
Amount
,
nil
)
gui
.
setWalletValue
(
object
.
Amount
,
nil
)
state
.
UpdateStateObject
(
object
)
}
case
<-
objectChan
:
gui
.
loadAddressBook
()
case
<-
peerChan
:
gui
.
setPeerInfo
()
case
<-
ticker
.
C
:
gui
.
setPeerInfo
()
state
.
UpdateStateObject
(
object
)
}
case
<-
objectChan
:
gui
.
loadAddressBook
()
case
<-
peerChan
:
gui
.
setPeerInfo
()
case
<-
ticker
.
C
:
gui
.
setPeerInfo
()
}
}()
reactor
.
Subscribe
(
"newBlock"
,
blockChan
)
reactor
.
Subscribe
(
"newTx:pre"
,
txChan
)
reactor
.
Subscribe
(
"newTx:post"
,
txChan
)
nameReg
:=
ethpub
.
EthereumConfig
(
gui
.
eth
.
StateManager
())
.
NameReg
()
if
nameReg
!=
nil
{
reactor
.
Subscribe
(
"object:"
+
string
(
nameReg
.
Address
()),
objectChan
)
}
reactor
.
Subscribe
(
"peerList"
,
peerChan
)
}
func
(
gui
*
Gui
)
setPeerInfo
()
{
...
...
ethereal/html_container.go
View file @
353ecbb7
...
...
@@ -8,7 +8,6 @@ import (
"github.com/go-qml/qml"
"github.com/howeyc/fsnotify"
"io/ioutil"
"log"
"net/url"
"os"
"path"
...
...
@@ -59,7 +58,7 @@ func (app *HtmlApplication) RootFolder() string {
if
err
!=
nil
{
return
""
}
return
path
.
Dir
(
folder
.
RequestURI
(
))
return
path
.
Dir
(
ethutil
.
WindonizePath
(
folder
.
RequestURI
()
))
}
func
(
app
*
HtmlApplication
)
RecursiveFolders
()
[]
os
.
FileInfo
{
files
,
_
:=
ioutil
.
ReadDir
(
app
.
RootFolder
())
...
...
@@ -77,11 +76,13 @@ func (app *HtmlApplication) NewWatcher(quitChan chan bool) {
app
.
watcher
,
err
=
fsnotify
.
NewWatcher
()
if
err
!=
nil
{
logger
.
Infoln
(
"Could not create new auto-reload watcher:"
,
err
)
return
}
err
=
app
.
watcher
.
Watch
(
app
.
RootFolder
())
if
err
!=
nil
{
log
.
Fatal
(
err
)
logger
.
Infoln
(
"Could not start auto-reload watcher:"
,
err
)
return
}
for
_
,
folder
:=
range
app
.
RecursiveFolders
()
{
fullPath
:=
app
.
RootFolder
()
+
"/"
+
folder
.
Name
()
...
...
ethereal/qml_container.go
View file @
353ecbb7
...
...
@@ -5,6 +5,7 @@ import (
"github.com/ethereum/eth-go/ethpub"
"github.com/ethereum/eth-go/ethutil"
"github.com/go-qml/qml"
"runtime"
)
type
QmlApplication
struct
{
...
...
@@ -20,7 +21,14 @@ func NewQmlApplication(path string, lib *UiLib) *QmlApplication {
}
func
(
app
*
QmlApplication
)
Create
()
error
{
component
,
err
:=
app
.
engine
.
LoadFile
(
app
.
path
)
path
:=
string
(
app
.
path
)
// For some reason for windows we get /c:/path/to/something, windows doesn't like the first slash but is fine with the others so we are removing it
if
string
(
app
.
path
[
0
])
==
"/"
&&
runtime
.
GOOS
==
"windows"
{
path
=
app
.
path
[
1
:
]
}
component
,
err
:=
app
.
engine
.
LoadFile
(
path
)
if
err
!=
nil
{
logger
.
Warnln
(
err
)
}
...
...
ethereum/flags.go
View file @
353ecbb7
...
...
@@ -11,6 +11,7 @@ import (
var
Identifier
string
var
KeyRing
string
var
DiffTool
bool
var
KeyStore
string
var
StartRpc
bool
var
RpcPort
int
...
...
@@ -66,6 +67,7 @@ func Init() {
flag
.
StringVar
(
&
ConfigFile
,
"conf"
,
defaultConfigFile
,
"config file"
)
flag
.
StringVar
(
&
DebugFile
,
"debug"
,
""
,
"debug file (no debugging if not set)"
)
flag
.
IntVar
(
&
LogLevel
,
"loglevel"
,
int
(
ethlog
.
InfoLevel
),
"loglevel: 0-5: silent,error,warn,info,debug,debug detail)"
)
flag
.
BoolVar
(
&
DiffTool
,
"difftool"
,
false
,
"creates output for diff'ing. Sets LogLevel=0"
)
flag
.
BoolVar
(
&
StartMining
,
"mine"
,
false
,
"start dagger mining"
)
flag
.
BoolVar
(
&
StartJsConsole
,
"js"
,
false
,
"launches javascript console"
)
...
...
ethereum/javascript_runtime.go
View file @
353ecbb7
...
...
@@ -6,7 +6,6 @@ import (
"github.com/ethereum/eth-go/ethchain"
"github.com/ethereum/eth-go/ethlog"
"github.com/ethereum/eth-go/ethpub"
"github.com/ethereum/eth-go/ethreact"
"github.com/ethereum/eth-go/ethutil"
"github.com/ethereum/go-ethereum/utils"
"github.com/obscuren/otto"
...
...
@@ -23,8 +22,8 @@ type JSRE struct {
vm
*
otto
.
Otto
lib
*
ethpub
.
PEthereum
blockChan
chan
eth
react
.
Even
t
changeChan
chan
eth
react
.
Even
t
blockChan
chan
eth
util
.
Reac
t
changeChan
chan
eth
util
.
Reac
t
quitChan
chan
bool
objectCb
map
[
string
][]
otto
.
Value
...
...
@@ -49,8 +48,8 @@ func NewJSRE(ethereum *eth.Ethereum) *JSRE {
ethereum
,
otto
.
New
(),
ethpub
.
NewPEthereum
(
ethereum
),
make
(
chan
eth
react
.
Event
),
make
(
chan
eth
react
.
Event
),
make
(
chan
eth
util
.
React
,
1
),
make
(
chan
eth
util
.
React
,
1
),
make
(
chan
bool
),
make
(
map
[
string
][]
otto
.
Value
),
}
...
...
@@ -64,9 +63,6 @@ func NewJSRE(ethereum *eth.Ethereum) *JSRE {
// We have to make sure that, whoever calls this, calls "Stop"
go
re
.
mainLoop
()
// Subscribe to events
reactor
:=
ethereum
.
Reactor
()
reactor
.
Subscribe
(
"newBlock"
,
re
.
blockChan
)
re
.
Bind
(
"eth"
,
&
JSEthereum
{
re
.
lib
,
re
.
vm
})
...
...
@@ -112,6 +108,10 @@ func (self *JSRE) Stop() {
}
func
(
self
*
JSRE
)
mainLoop
()
{
// Subscribe to events
reactor
:=
self
.
ethereum
.
Reactor
()
reactor
.
Subscribe
(
"newBlock"
,
self
.
blockChan
)
out
:
for
{
select
{
...
...
ethereum/main.go
View file @
353ecbb7
...
...
@@ -2,6 +2,7 @@ package main
import
(
"github.com/ethereum/eth-go/ethlog"
"github.com/ethereum/eth-go/ethutil"
"github.com/ethereum/go-ethereum/utils"
"runtime"
)
...
...
@@ -20,7 +21,14 @@ func main() {
// precedence: code-internal flag default < config file < environment variables < command line
Init
()
// parsing command line
// If the difftool option is selected ignore all other log output
if
DiffTool
{
LogLevel
=
0
}
utils
.
InitConfig
(
ConfigFile
,
Datadir
,
"ETH"
)
ethutil
.
Config
.
Diff
=
DiffTool
utils
.
InitDataDir
(
Datadir
)
...
...
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