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
8135752a
Commit
8135752a
authored
Feb 17, 2015
by
obscuren
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
"centralised" mining to backend. Closes #323
parent
164de5e2
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
47 additions
and
96 deletions
+47
-96
ext_app.go
cmd/mist/ext_app.go
+1
-1
gui.go
cmd/mist/gui.go
+1
-4
ui_lib.go
cmd/mist/ui_lib.go
+5
-9
filter.go
core/filter.go
+2
-2
manager.go
core/manager.go
+1
-2
backend.go
eth/backend.go
+19
-63
miner.go
miner/miner.go
+4
-4
worker.go
miner/worker.go
+3
-4
filter.go
ui/filter.go
+1
-1
filter.go
ui/qt/filter.go
+1
-1
xeth.go
xeth/xeth.go
+9
-5
No files found.
cmd/mist/ext_app.go
View file @
8135752a
...
...
@@ -43,7 +43,7 @@ type AppContainer interface {
type
ExtApplication
struct
{
*
xeth
.
XEth
eth
core
.
EthManager
eth
core
.
Backend
events
event
.
Subscription
watcherQuitChan
chan
bool
...
...
cmd/mist/gui.go
View file @
8135752a
...
...
@@ -41,7 +41,6 @@ import (
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/ethutil"
"github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/miner"
"github.com/ethereum/go-ethereum/ui/qt/qwhisper"
"github.com/ethereum/go-ethereum/xeth"
"github.com/obscuren/qml"
...
...
@@ -81,8 +80,6 @@ type Gui struct {
config
*
ethutil
.
ConfigManager
plugins
map
[
string
]
plugin
miner
*
miner
.
Miner
}
// Create GUI, but doesn't start it
...
...
@@ -454,7 +451,7 @@ func (gui *Gui) update() {
case
<-
generalUpdateTicker
.
C
:
statusText
:=
"#"
+
gui
.
eth
.
ChainManager
()
.
CurrentBlock
()
.
Number
()
.
String
()
lastBlockLabel
.
Set
(
"text"
,
statusText
)
miningLabel
.
Set
(
"text"
,
"Mining @ "
+
strconv
.
FormatInt
(
gui
.
uiLib
.
miner
.
HashRate
(),
10
)
+
"/Khash"
)
miningLabel
.
Set
(
"text"
,
"Mining @ "
+
strconv
.
FormatInt
(
gui
.
uiLib
.
Miner
()
.
HashRate
(),
10
)
+
"/Khash"
)
/*
blockLength := gui.eth.BlockPool().BlocksProcessed
...
...
cmd/mist/ui_lib.go
View file @
8135752a
...
...
@@ -30,7 +30,6 @@ import (
"github.com/ethereum/go-ethereum/ethutil"
"github.com/ethereum/go-ethereum/event/filter"
"github.com/ethereum/go-ethereum/javascript"
"github.com/ethereum/go-ethereum/miner"
"github.com/ethereum/go-ethereum/xeth"
"github.com/obscuren/qml"
)
...
...
@@ -56,13 +55,10 @@ type UiLib struct {
filterCallbacks
map
[
int
][]
int
filterManager
*
filter
.
FilterManager
miner
*
miner
.
Miner
}
func
NewUiLib
(
engine
*
qml
.
Engine
,
eth
*
eth
.
Ethereum
,
assetPath
string
)
*
UiLib
{
lib
:=
&
UiLib
{
XEth
:
xeth
.
New
(
eth
),
engine
:
engine
,
eth
:
eth
,
assetPath
:
assetPath
,
jsEngine
:
javascript
.
NewJSRE
(
eth
),
filterCallbacks
:
make
(
map
[
int
][]
int
)}
//, filters: make(map[int]*xeth.JSFilter)}
lib
.
miner
=
miner
.
New
(
eth
.
KeyManager
()
.
Address
(),
eth
)
lib
.
filterManager
=
filter
.
NewFilterManager
(
eth
.
EventMux
())
go
lib
.
filterManager
.
Start
()
...
...
@@ -221,20 +217,20 @@ func (self *UiLib) RemoveLocalTransaction(id int) {
}
func
(
self
*
UiLib
)
SetGasPrice
(
price
string
)
{
self
.
miner
.
MinAcceptedGasPrice
=
ethutil
.
Big
(
price
)
self
.
Miner
()
.
MinAcceptedGasPrice
=
ethutil
.
Big
(
price
)
}
func
(
self
*
UiLib
)
SetExtra
(
extra
string
)
{
self
.
miner
.
Extra
=
extra
self
.
Miner
()
.
Extra
=
extra
}
func
(
self
*
UiLib
)
ToggleMining
()
bool
{
if
!
self
.
miner
.
Mining
()
{
self
.
miner
.
Start
()
if
!
self
.
Miner
()
.
Mining
()
{
self
.
Miner
()
.
Start
()
return
true
}
else
{
self
.
miner
.
Stop
()
self
.
Miner
()
.
Stop
()
return
false
}
...
...
core/filter.go
View file @
8135752a
...
...
@@ -25,7 +25,7 @@ type FilterOptions struct {
// Filtering interface
type
Filter
struct
{
eth
EthManager
eth
Backend
earliest
int64
latest
int64
skip
int
...
...
@@ -40,7 +40,7 @@ type Filter struct {
// Create a new filter which uses a bloom filter on blocks to figure out whether a particular block
// is interesting or not.
func
NewFilter
(
eth
EthManager
)
*
Filter
{
func
NewFilter
(
eth
Backend
)
*
Filter
{
return
&
Filter
{
eth
:
eth
}
}
...
...
core/manager.go
View file @
8135752a
...
...
@@ -7,12 +7,11 @@ import (
"github.com/ethereum/go-ethereum/p2p"
)
type
EthManager
interface
{
type
Backend
interface
{
BlockProcessor
()
*
BlockProcessor
ChainManager
()
*
ChainManager
TxPool
()
*
TxPool
PeerCount
()
int
IsMining
()
bool
IsListening
()
bool
Peers
()
[]
*
p2p
.
Peer
KeyManager
()
*
crypto
.
KeyManager
...
...
eth/backend.go
View file @
8135752a
...
...
@@ -11,6 +11,7 @@ import (
"github.com/ethereum/go-ethereum/ethutil"
"github.com/ethereum/go-ethereum/event"
ethlogger
"github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/miner"
"github.com/ethereum/go-ethereum/p2p"
"github.com/ethereum/go-ethereum/p2p/discover"
"github.com/ethereum/go-ethereum/p2p/nat"
...
...
@@ -95,6 +96,7 @@ type Ethereum struct {
eventMux
*
event
.
TypeMux
txSub
event
.
Subscription
blockSub
event
.
Subscription
miner
*
miner
.
Miner
RpcServer
rpc
.
RpcServer
WsServer
rpc
.
RpcServer
...
...
@@ -151,6 +153,7 @@ func New(config *Config) (*Ethereum, error) {
eth
.
blockProcessor
=
core
.
NewBlockProcessor
(
db
,
eth
.
txPool
,
eth
.
chainManager
,
eth
.
EventMux
())
eth
.
chainManager
.
SetProcessor
(
eth
.
blockProcessor
)
eth
.
whisper
=
whisper
.
New
()
eth
.
miner
=
miner
.
New
(
keyManager
.
Address
(),
eth
)
hasBlock
:=
eth
.
chainManager
.
HasBlock
insertChain
:=
eth
.
chainManager
.
InsertChain
...
...
@@ -181,69 +184,22 @@ func New(config *Config) (*Ethereum, error) {
return
eth
,
nil
}
func
(
s
*
Ethereum
)
KeyManager
()
*
crypto
.
KeyManager
{
return
s
.
keyManager
}
func
(
s
*
Ethereum
)
Logger
()
ethlogger
.
LogSystem
{
return
s
.
logger
}
func
(
s
*
Ethereum
)
Name
()
string
{
return
s
.
net
.
Name
}
func
(
s
*
Ethereum
)
ChainManager
()
*
core
.
ChainManager
{
return
s
.
chainManager
}
func
(
s
*
Ethereum
)
BlockProcessor
()
*
core
.
BlockProcessor
{
return
s
.
blockProcessor
}
func
(
s
*
Ethereum
)
TxPool
()
*
core
.
TxPool
{
return
s
.
txPool
}
func
(
s
*
Ethereum
)
BlockPool
()
*
BlockPool
{
return
s
.
blockPool
}
func
(
s
*
Ethereum
)
Whisper
()
*
whisper
.
Whisper
{
return
s
.
whisper
}
func
(
s
*
Ethereum
)
EventMux
()
*
event
.
TypeMux
{
return
s
.
eventMux
}
func
(
self
*
Ethereum
)
Db
()
ethutil
.
Database
{
return
self
.
db
}
func
(
s
*
Ethereum
)
IsMining
()
bool
{
return
s
.
Mining
}
func
(
s
*
Ethereum
)
IsListening
()
bool
{
// XXX TODO
return
false
}
func
(
s
*
Ethereum
)
PeerCount
()
int
{
return
s
.
net
.
PeerCount
()
}
func
(
s
*
Ethereum
)
Peers
()
[]
*
p2p
.
Peer
{
return
s
.
net
.
Peers
()
}
func
(
s
*
Ethereum
)
MaxPeers
()
int
{
return
s
.
net
.
MaxPeers
}
func
(
s
*
Ethereum
)
Coinbase
()
[]
byte
{
return
nil
// TODO
}
func
(
s
*
Ethereum
)
KeyManager
()
*
crypto
.
KeyManager
{
return
s
.
keyManager
}
func
(
s
*
Ethereum
)
Logger
()
ethlogger
.
LogSystem
{
return
s
.
logger
}
func
(
s
*
Ethereum
)
Name
()
string
{
return
s
.
net
.
Name
}
func
(
s
*
Ethereum
)
ChainManager
()
*
core
.
ChainManager
{
return
s
.
chainManager
}
func
(
s
*
Ethereum
)
BlockProcessor
()
*
core
.
BlockProcessor
{
return
s
.
blockProcessor
}
func
(
s
*
Ethereum
)
TxPool
()
*
core
.
TxPool
{
return
s
.
txPool
}
func
(
s
*
Ethereum
)
BlockPool
()
*
BlockPool
{
return
s
.
blockPool
}
func
(
s
*
Ethereum
)
Whisper
()
*
whisper
.
Whisper
{
return
s
.
whisper
}
func
(
s
*
Ethereum
)
EventMux
()
*
event
.
TypeMux
{
return
s
.
eventMux
}
func
(
s
*
Ethereum
)
Db
()
ethutil
.
Database
{
return
s
.
db
}
func
(
s
*
Ethereum
)
Miner
()
*
miner
.
Miner
{
return
s
.
miner
}
func
(
s
*
Ethereum
)
IsListening
()
bool
{
return
true
}
// Always listening
func
(
s
*
Ethereum
)
PeerCount
()
int
{
return
s
.
net
.
PeerCount
()
}
func
(
s
*
Ethereum
)
Peers
()
[]
*
p2p
.
Peer
{
return
s
.
net
.
Peers
()
}
func
(
s
*
Ethereum
)
MaxPeers
()
int
{
return
s
.
net
.
MaxPeers
}
func
(
s
*
Ethereum
)
Coinbase
()
[]
byte
{
return
nil
}
// TODO
// Start the ethereum
func
(
s
*
Ethereum
)
Start
()
error
{
...
...
miner/miner.go
View file @
8135752a
...
...
@@ -3,7 +3,7 @@ package miner
import
(
"math/big"
"github.com/ethereum/go-ethereum/
eth
"
"github.com/ethereum/go-ethereum/
core
"
"github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/pow/ezp"
)
...
...
@@ -16,13 +16,13 @@ type Miner struct {
MinAcceptedGasPrice
*
big
.
Int
Extra
string
c
oinbase
[]
byte
C
oinbase
[]
byte
mining
bool
}
func
New
(
coinbase
[]
byte
,
eth
*
eth
.
Ethereum
)
*
Miner
{
func
New
(
coinbase
[]
byte
,
eth
core
.
Backend
)
*
Miner
{
miner
:=
&
Miner
{
c
oinbase
:
coinbase
,
C
oinbase
:
coinbase
,
worker
:
newWorker
(
coinbase
,
eth
),
}
...
...
miner/worker.go
View file @
8135752a
...
...
@@ -8,7 +8,6 @@ import (
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/eth"
"github.com/ethereum/go-ethereum/ethutil"
"github.com/ethereum/go-ethereum/event"
"github.com/ethereum/go-ethereum/pow"
...
...
@@ -25,7 +24,7 @@ type environment struct {
uncles
*
set
.
Set
}
func
env
(
block
*
types
.
Block
,
eth
*
eth
.
Ethereum
)
*
environment
{
func
env
(
block
*
types
.
Block
,
eth
core
.
Backend
)
*
environment
{
state
:=
state
.
New
(
block
.
Root
(),
eth
.
Db
())
env
:=
&
environment
{
totalUsedGas
:
new
(
big
.
Int
),
...
...
@@ -63,7 +62,7 @@ type worker struct {
quit
chan
struct
{}
pow
pow
.
PoW
eth
*
eth
.
Ethereum
eth
core
.
Backend
chain
*
core
.
ChainManager
proc
*
core
.
BlockProcessor
coinbase
[]
byte
...
...
@@ -73,7 +72,7 @@ type worker struct {
mining
bool
}
func
newWorker
(
coinbase
[]
byte
,
eth
*
eth
.
Ethereum
)
*
worker
{
func
newWorker
(
coinbase
[]
byte
,
eth
core
.
Backend
)
*
worker
{
return
&
worker
{
eth
:
eth
,
mux
:
eth
.
EventMux
(),
...
...
ui/filter.go
View file @
8135752a
...
...
@@ -15,7 +15,7 @@ func fromHex(s string) []byte {
return
nil
}
func
NewFilterFromMap
(
object
map
[
string
]
interface
{},
eth
core
.
EthManager
)
*
core
.
Filter
{
func
NewFilterFromMap
(
object
map
[
string
]
interface
{},
eth
core
.
Backend
)
*
core
.
Filter
{
filter
:=
core
.
NewFilter
(
eth
)
if
object
[
"earliest"
]
!=
nil
{
...
...
ui/qt/filter.go
View file @
8135752a
...
...
@@ -6,7 +6,7 @@ import (
"github.com/obscuren/qml"
)
func
NewFilterFromMap
(
object
map
[
string
]
interface
{},
eth
core
.
EthManager
)
*
core
.
Filter
{
func
NewFilterFromMap
(
object
map
[
string
]
interface
{},
eth
core
.
Backend
)
*
core
.
Filter
{
filter
:=
ui
.
NewFilterFromMap
(
object
,
eth
)
if
object
[
"topics"
]
!=
nil
{
...
...
xeth/xeth.go
View file @
8135752a
...
...
@@ -14,6 +14,7 @@ import (
"github.com/ethereum/go-ethereum/ethutil"
"github.com/ethereum/go-ethereum/event"
"github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/miner"
"github.com/ethereum/go-ethereum/p2p"
"github.com/ethereum/go-ethereum/state"
"github.com/ethereum/go-ethereum/whisper"
...
...
@@ -27,13 +28,13 @@ type Backend interface {
ChainManager
()
*
core
.
ChainManager
TxPool
()
*
core
.
TxPool
PeerCount
()
int
IsMining
()
bool
IsListening
()
bool
Peers
()
[]
*
p2p
.
Peer
KeyManager
()
*
crypto
.
KeyManager
Db
()
ethutil
.
Database
EventMux
()
*
event
.
TypeMux
Whisper
()
*
whisper
.
Whisper
Miner
()
*
miner
.
Miner
}
type
XEth
struct
{
...
...
@@ -42,6 +43,7 @@ type XEth struct {
chainManager
*
core
.
ChainManager
state
*
State
whisper
*
Whisper
miner
*
miner
.
Miner
}
func
New
(
eth
Backend
)
*
XEth
{
...
...
@@ -50,15 +52,17 @@ func New(eth Backend) *XEth {
blockProcessor
:
eth
.
BlockProcessor
(),
chainManager
:
eth
.
ChainManager
(),
whisper
:
NewWhisper
(
eth
.
Whisper
()),
miner
:
eth
.
Miner
(),
}
xeth
.
state
=
NewState
(
xeth
)
return
xeth
}
func
(
self
*
XEth
)
Backend
()
Backend
{
return
self
.
eth
}
func
(
self
*
XEth
)
State
()
*
State
{
return
self
.
state
}
func
(
self
*
XEth
)
Whisper
()
*
Whisper
{
return
self
.
whisper
}
func
(
self
*
XEth
)
Backend
()
Backend
{
return
self
.
eth
}
func
(
self
*
XEth
)
State
()
*
State
{
return
self
.
state
}
func
(
self
*
XEth
)
Whisper
()
*
Whisper
{
return
self
.
whisper
}
func
(
self
*
XEth
)
Miner
()
*
miner
.
Miner
{
return
self
.
miner
}
func
(
self
*
XEth
)
BlockByHash
(
strHash
string
)
*
Block
{
hash
:=
fromHex
(
strHash
)
...
...
@@ -96,7 +100,7 @@ func (self *XEth) PeerCount() int {
}
func
(
self
*
XEth
)
IsMining
()
bool
{
return
self
.
eth
.
Is
Mining
()
return
self
.
miner
.
Mining
()
}
func
(
self
*
XEth
)
IsListening
()
bool
{
...
...
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