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
c47866d2
Commit
c47866d2
authored
10 years ago
by
obscuren
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Miner fixes and updates (including miner)
parent
15f491e5
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
45 additions
and
32 deletions
+45
-32
gui.go
cmd/mist/gui.go
+0
-2
ui_lib.go
cmd/mist/ui_lib.go
+2
-1
block_processor.go
core/block_processor.go
+2
-5
chain_manager.go
core/chain_manager.go
+19
-9
genesis.go
core/genesis.go
+3
-2
block.go
core/types/block.go
+8
-6
backend.go
eth/backend.go
+1
-2
protocol.go
eth/protocol.go
+1
-1
big.go
ethutil/big.go
+2
-1
worker.go
miner/worker.go
+7
-3
No files found.
cmd/mist/gui.go
View file @
c47866d2
...
...
@@ -159,8 +159,6 @@ func (gui *Gui) Stop() {
gui
.
win
.
Hide
()
}
gui
.
uiLib
.
jsEngine
.
Stop
()
guilogger
.
Infoln
(
"Stopped"
)
}
...
...
This diff is collapsed.
Click to expand it.
cmd/mist/ui_lib.go
View file @
c47866d2
...
...
@@ -58,7 +58,8 @@ type UiLib struct {
}
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)}
x
:=
xeth
.
New
(
eth
)
lib
:=
&
UiLib
{
XEth
:
x
,
engine
:
engine
,
eth
:
eth
,
assetPath
:
assetPath
,
jsEngine
:
javascript
.
NewJSRE
(
x
),
filterCallbacks
:
make
(
map
[
int
][]
int
)}
//, filters: make(map[int]*xeth.JSFilter)}
lib
.
filterManager
=
filter
.
NewFilterManager
(
eth
.
EventMux
())
go
lib
.
filterManager
.
Start
()
...
...
This diff is collapsed.
Click to expand it.
core/block_processor.go
View file @
c47866d2
...
...
@@ -253,9 +253,6 @@ func (sm *BlockProcessor) ValidateHeader(block, parent *types.Header) error {
return
fmt
.
Errorf
(
"Difficulty check failed for block %v, %v"
,
block
.
Difficulty
,
expd
)
}
//expl := CalcGasLimit(parent, block)
//if expl.Cmp(block.Header().GasLimit) != 0 {
// block.gasLimit - parent.gasLimit <= parent.gasLimit / 1024
a
:=
new
(
big
.
Int
)
.
Sub
(
block
.
GasLimit
,
parent
.
GasLimit
)
b
:=
new
(
big
.
Int
)
.
Div
(
parent
.
GasLimit
,
big
.
NewInt
(
1024
))
...
...
@@ -263,8 +260,8 @@ func (sm *BlockProcessor) ValidateHeader(block, parent *types.Header) error {
return
fmt
.
Errorf
(
"GasLimit check failed for block %v (%v > %v)"
,
block
.
GasLimit
,
a
,
b
)
}
if
block
.
Time
<
parent
.
Time
{
return
ValidationError
(
"Block timestamp not after prev block (%v - %v)"
,
block
.
Time
,
parent
.
Time
)
if
block
.
Time
<
=
parent
.
Time
{
return
ValidationError
(
"Block timestamp not after
or equal to
prev block (%v - %v)"
,
block
.
Time
,
parent
.
Time
)
}
if
int64
(
block
.
Time
)
>
time
.
Now
()
.
Unix
()
{
...
...
This diff is collapsed.
Click to expand it.
core/chain_manager.go
View file @
c47866d2
...
...
@@ -31,15 +31,18 @@ type StateQuery interface {
func
CalcDifficulty
(
block
,
parent
*
types
.
Header
)
*
big
.
Int
{
diff
:=
new
(
big
.
Int
)
//adjust := new(big.Int).Rsh(parent.Difficulty(), 10)
//if block.Time() >= parent.Time()+8 {
adjust
:=
new
(
big
.
Int
)
.
Div
(
parent
.
Difficulty
,
big
.
NewInt
(
2048
))
min
:=
big
.
NewInt
(
2048
)
adjust
:=
new
(
big
.
Int
)
.
Div
(
parent
.
Difficulty
,
min
)
if
(
block
.
Time
-
parent
.
Time
)
<
8
{
diff
.
Add
(
parent
.
Difficulty
,
adjust
)
}
else
{
diff
.
Sub
(
parent
.
Difficulty
,
adjust
)
}
if
diff
.
Cmp
(
GenesisDiff
)
<
0
{
return
GenesisDiff
}
return
diff
}
...
...
@@ -378,9 +381,12 @@ func (bc *ChainManager) Stop() {
}
func
(
self
*
ChainManager
)
InsertChain
(
chain
types
.
Blocks
)
error
{
println
(
"insert chain start"
)
self
.
tsmu
.
Lock
()
defer
self
.
tsmu
.
Unlock
()
defer
println
(
"insert chain end"
)
for
_
,
block
:=
range
chain
{
// Call in to the block processor and check for errors. It's likely that if one block fails
// all others will fail too (unless a known block is returned).
...
...
@@ -422,14 +428,18 @@ func (self *ChainManager) InsertChain(chain types.Blocks) error {
self
.
mu
.
Unlock
()
if
canonical
{
jsonlogger
.
LogJson
(
&
logger
.
EthChainNewHead
{
BlockHash
:
ethutil
.
Bytes2Hex
(
block
.
Hash
()),
BlockNumber
:
block
.
Number
(),
ChainHeadHash
:
ethutil
.
Bytes2Hex
(
cblock
.
Hash
()),
BlockPrevHash
:
ethutil
.
Bytes2Hex
(
block
.
ParentHash
()),
})
/*
jsonlogger.LogJson(&logger.EthChainNewHead{
BlockHash: ethutil.Bytes2Hex(block.Hash()),
BlockNumber: block.Number(),
ChainHeadHash: ethutil.Bytes2Hex(cblock.Hash()),
BlockPrevHash: ethutil.Bytes2Hex(block.ParentHash()),
})
*/
self
.
setTransState
(
state
.
New
(
block
.
Root
(),
self
.
db
))
self
.
eventMux
.
Post
(
ChainEvent
{
block
,
td
})
}
else
{
//self.eventMux.
}
if
split
{
...
...
This diff is collapsed.
Click to expand it.
core/genesis.go
View file @
c47866d2
...
...
@@ -22,8 +22,10 @@ var ZeroHash512 = make([]byte, 64)
var
EmptyShaList
=
crypto
.
Sha3
(
ethutil
.
Encode
([]
interface
{}{}))
var
EmptyListRoot
=
crypto
.
Sha3
(
ethutil
.
Encode
(
""
))
var
GenesisDiff
=
big
.
NewInt
(
131072
)
func
GenesisBlock
(
db
ethutil
.
Database
)
*
types
.
Block
{
genesis
:=
types
.
NewBlock
(
ZeroHash256
,
ZeroHash160
,
nil
,
big
.
NewInt
(
2048
)
,
42
,
""
)
genesis
:=
types
.
NewBlock
(
ZeroHash256
,
ZeroHash160
,
nil
,
GenesisDiff
,
42
,
""
)
genesis
.
Header
()
.
Number
=
ethutil
.
Big0
genesis
.
Header
()
.
GasLimit
=
big
.
NewInt
(
1000000
)
genesis
.
Header
()
.
GasUsed
=
ethutil
.
Big0
...
...
@@ -53,7 +55,6 @@ func GenesisBlock(db ethutil.Database) *types.Block {
}
statedb
.
Sync
()
genesis
.
Header
()
.
Root
=
statedb
.
Root
()
fmt
.
Println
(
genesis
)
return
genesis
}
...
...
This diff is collapsed.
Click to expand it.
core/types/block.go
View file @
c47866d2
...
...
@@ -40,12 +40,12 @@ type Header struct {
Time
uint64
// Extra data
Extra
string
// Nonce
Nonce
[]
byte
// Mix digest for quick checking to prevent DOS
MixDigest
ethutil
.
Bytes
// SeedHash used for light client verification
SeedHash
ethutil
.
Bytes
// Mix digest for quick checking to prevent DOS
MixDigest
ethutil
.
Bytes
// Nonce
Nonce
[]
byte
}
func
(
self
*
Header
)
rlpData
(
withNonce
bool
)
[]
interface
{}
{
...
...
@@ -62,9 +62,11 @@ func (self *Header) rlpData(withNonce bool) []interface{} {
self
.
GasLimit
,
self
.
GasUsed
,
self
.
Time
,
self
.
Extra
}
self
.
Extra
,
self
.
SeedHash
,
}
if
withNonce
{
fields
=
append
(
fields
,
self
.
SeedHash
,
self
.
MixDigest
,
self
.
Nonce
)
fields
=
append
(
fields
,
self
.
MixDigest
,
self
.
Nonce
)
}
return
fields
...
...
This diff is collapsed.
Click to expand it.
eth/backend.go
View file @
c47866d2
...
...
@@ -19,7 +19,6 @@ import (
"github.com/ethereum/go-ethereum/p2p"
"github.com/ethereum/go-ethereum/p2p/discover"
"github.com/ethereum/go-ethereum/p2p/nat"
"github.com/ethereum/go-ethereum/pow/ezp"
"github.com/ethereum/go-ethereum/rpc"
"github.com/ethereum/go-ethereum/whisper"
)
...
...
@@ -189,7 +188,7 @@ func New(config *Config) (*Ethereum, error) {
hasBlock
:=
eth
.
chainManager
.
HasBlock
insertChain
:=
eth
.
chainManager
.
InsertChain
eth
.
blockPool
=
blockpool
.
New
(
hasBlock
,
insertChain
,
ezp
.
Verify
)
eth
.
blockPool
=
blockpool
.
New
(
hasBlock
,
insertChain
,
pow
.
Verify
)
netprv
,
err
:=
config
.
nodeKey
()
if
err
!=
nil
{
...
...
This diff is collapsed.
Click to expand it.
eth/protocol.go
View file @
c47866d2
...
...
@@ -250,7 +250,7 @@ func (self *ethProtocol) handle() error {
return
self
.
protoError
(
ErrDecode
,
"msg %v: %v"
,
msg
,
err
)
}
hash
:=
request
.
Block
.
Hash
()
fmt
.
Print
ln
(
"received block: %x
"
,
hash
)
fmt
.
Print
f
(
"received block: %x
\n
"
,
hash
)
_
,
chainHead
,
_
:=
self
.
chainManager
.
Status
()
jsonlogger
.
LogJson
(
&
logger
.
EthChainReceivedNewBlock
{
...
...
This diff is collapsed.
Click to expand it.
ethutil/big.go
View file @
c47866d2
...
...
@@ -25,12 +25,13 @@ func Big(num string) *big.Int {
// BigD
//
// Shortcut for new(big.Int).SetBytes(...)
func
B
igD
(
data
[]
byte
)
*
big
.
Int
{
func
B
ytes2Big
(
data
[]
byte
)
*
big
.
Int
{
n
:=
new
(
big
.
Int
)
n
.
SetBytes
(
data
)
return
n
}
func
BigD
(
data
[]
byte
)
*
big
.
Int
{
return
Bytes2Big
(
data
)
}
func
BitTest
(
num
*
big
.
Int
,
i
int
)
bool
{
return
num
.
Bit
(
i
)
>
0
...
...
This diff is collapsed.
Click to expand it.
miner/worker.go
View file @
c47866d2
...
...
@@ -7,6 +7,7 @@ import (
"sync"
"time"
"github.com/ethereum/ethash"
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/ethutil"
...
...
@@ -138,7 +139,7 @@ out:
}
break
out
case
<-
timer
.
C
:
minerlogger
.
Debug
ln
(
"Hash rate:"
,
self
.
HashRate
(),
"Khash"
)
minerlogger
.
Info
ln
(
"Hash rate:"
,
self
.
HashRate
(),
"Khash"
)
}
}
...
...
@@ -164,7 +165,6 @@ func (self *worker) wait() {
if
err
:=
self
.
chain
.
InsertChain
(
types
.
Blocks
{
self
.
current
.
block
});
err
==
nil
{
self
.
mux
.
Post
(
core
.
NewMinedBlockEvent
{
self
.
current
.
block
})
fmt
.
Println
(
"GOOD BLOCK"
,
self
.
current
.
block
)
}
else
{
self
.
commitNewWork
()
}
...
...
@@ -190,7 +190,11 @@ func (self *worker) commitNewWork() {
self
.
mu
.
Lock
()
defer
self
.
mu
.
Unlock
()
self
.
current
=
env
(
self
.
chain
.
NewBlock
(
self
.
coinbase
),
self
.
eth
)
block
:=
self
.
chain
.
NewBlock
(
self
.
coinbase
)
seednum
:=
ethash
.
GetSeedBlockNum
(
block
.
NumberU64
())
block
.
Header
()
.
SeedHash
=
self
.
chain
.
GetBlockByNumber
(
seednum
)
.
SeedHash
()
self
.
current
=
env
(
block
,
self
.
eth
)
parent
:=
self
.
chain
.
GetBlock
(
self
.
current
.
block
.
ParentHash
())
self
.
current
.
coinbase
.
SetGasPool
(
core
.
CalcGasLimit
(
parent
,
self
.
current
.
block
))
...
...
This diff is collapsed.
Click to expand it.
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