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
8f91d47b
Commit
8f91d47b
authored
Jul 21, 2014
by
obscuren
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into develop
parents
93261b98
5d2669db
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
35 additions
and
16 deletions
+35
-16
block.go
ethchain/block.go
+28
-5
state_manager.go
ethchain/state_manager.go
+6
-11
miner.go
ethminer/miner.go
+1
-0
No files found.
ethchain/block.go
View file @
8f91d47b
...
@@ -7,7 +7,7 @@ import (
...
@@ -7,7 +7,7 @@ import (
"github.com/ethereum/eth-go/ethtrie"
"github.com/ethereum/eth-go/ethtrie"
"github.com/ethereum/eth-go/ethutil"
"github.com/ethereum/eth-go/ethutil"
"math/big"
"math/big"
"strconv"
_
"strconv"
"time"
"time"
)
)
...
@@ -252,20 +252,43 @@ func (self *Block) SetReceipts(receipts []*Receipt, txs []*Transaction) {
...
@@ -252,20 +252,43 @@ func (self *Block) SetReceipts(receipts []*Receipt, txs []*Transaction) {
func
(
block
*
Block
)
setTransactions
(
txs
[]
*
Transaction
)
{
func
(
block
*
Block
)
setTransactions
(
txs
[]
*
Transaction
)
{
block
.
transactions
=
txs
block
.
transactions
=
txs
/*
trie := ethtrie.NewTrie(ethutil.Config.Db, "")
for i, tx := range txs {
trie.Update(strconv.Itoa(i), string(tx.RlpEncode()))
}
switch trie.Root.(type) {
case string:
block.TxSha = []byte(trie.Root.(string))
case []byte:
block.TxSha = trie.Root.([]byte)
default:
panic(fmt.Sprintf("invalid root type %T", trie.Root))
}
*/
}
func
CreateTxSha
(
receipts
Receipts
)
(
sha
[]
byte
)
{
trie
:=
ethtrie
.
NewTrie
(
ethutil
.
Config
.
Db
,
""
)
trie
:=
ethtrie
.
NewTrie
(
ethutil
.
Config
.
Db
,
""
)
for
i
,
tx
:=
range
tx
s
{
for
i
,
receipt
:=
range
receipt
s
{
trie
.
Update
(
str
conv
.
Itoa
(
i
),
string
(
tx
.
Rlp
Encode
()))
trie
.
Update
(
str
ing
(
ethutil
.
NewValue
(
i
)
.
Encode
()),
string
(
ethutil
.
NewValue
(
receipt
.
RlpData
())
.
Encode
()))
}
}
switch
trie
.
Root
.
(
type
)
{
switch
trie
.
Root
.
(
type
)
{
case
string
:
case
string
:
block
.
TxS
ha
=
[]
byte
(
trie
.
Root
.
(
string
))
s
ha
=
[]
byte
(
trie
.
Root
.
(
string
))
case
[]
byte
:
case
[]
byte
:
block
.
TxS
ha
=
trie
.
Root
.
([]
byte
)
s
ha
=
trie
.
Root
.
([]
byte
)
default
:
default
:
panic
(
fmt
.
Sprintf
(
"invalid root type %T"
,
trie
.
Root
))
panic
(
fmt
.
Sprintf
(
"invalid root type %T"
,
trie
.
Root
))
}
}
return
sha
}
func
(
self
*
Block
)
SetTxHash
(
receipts
Receipts
)
{
self
.
TxSha
=
CreateTxSha
(
receipts
)
}
}
func
(
block
*
Block
)
Value
()
*
ethutil
.
Value
{
func
(
block
*
Block
)
Value
()
*
ethutil
.
Value
{
...
...
ethchain/state_manager.go
View file @
8f91d47b
...
@@ -201,11 +201,16 @@ func (sm *StateManager) Process(block *Block, dontReact bool) (err error) {
...
@@ -201,11 +201,16 @@ func (sm *StateManager) Process(block *Block, dontReact bool) (err error) {
fmt
.
Printf
(
"## %x %x ##
\n
"
,
block
.
Hash
(),
block
.
Number
)
fmt
.
Printf
(
"## %x %x ##
\n
"
,
block
.
Hash
(),
block
.
Number
)
}
}
_
,
err
=
sm
.
ApplyDiff
(
state
,
parent
,
block
)
receipts
,
err
:
=
sm
.
ApplyDiff
(
state
,
parent
,
block
)
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
}
}
txSha
:=
CreateTxSha
(
receipts
)
if
bytes
.
Compare
(
txSha
,
block
.
TxSha
)
!=
0
{
return
fmt
.
Errorf
(
"Error validating tx sha. Received %x, got %x"
,
block
.
TxSha
,
txSha
)
}
// Block validation
// Block validation
if
err
=
sm
.
ValidateBlock
(
block
);
err
!=
nil
{
if
err
=
sm
.
ValidateBlock
(
block
);
err
!=
nil
{
statelogger
.
Errorln
(
"Error validating block:"
,
err
)
statelogger
.
Errorln
(
"Error validating block:"
,
err
)
...
@@ -219,17 +224,7 @@ func (sm *StateManager) Process(block *Block, dontReact bool) (err error) {
...
@@ -219,17 +224,7 @@ func (sm *StateManager) Process(block *Block, dontReact bool) (err error) {
return
err
return
err
}
}
/*
if ethutil.Config.Paranoia {
valid, _ := ethtrie.ParanoiaCheck(state.trie)
if !valid {
err = fmt.Errorf("PARANOIA: World state trie corruption")
}
}
*/
if
!
block
.
State
()
.
Cmp
(
state
)
{
if
!
block
.
State
()
.
Cmp
(
state
)
{
err
=
fmt
.
Errorf
(
"Invalid merkle root.
\n
rec: %x
\n
is: %x"
,
block
.
State
()
.
trie
.
Root
,
state
.
trie
.
Root
)
err
=
fmt
.
Errorf
(
"Invalid merkle root.
\n
rec: %x
\n
is: %x"
,
block
.
State
()
.
trie
.
Root
,
state
.
trie
.
Root
)
return
return
}
}
...
...
ethminer/miner.go
View file @
8f91d47b
...
@@ -165,6 +165,7 @@ func (self *Miner) mineNewBlock() {
...
@@ -165,6 +165,7 @@ func (self *Miner) mineNewBlock() {
logger
.
Debugln
(
err
)
logger
.
Debugln
(
err
)
}
}
self
.
txs
=
append
(
txs
,
unhandledTxs
...
)
self
.
txs
=
append
(
txs
,
unhandledTxs
...
)
self
.
block
.
SetTxHash
(
receipts
)
// Set the transactions to the block so the new SHA3 can be calculated
// Set the transactions to the block so the new SHA3 can be calculated
self
.
block
.
SetReceipts
(
receipts
,
txs
)
self
.
block
.
SetReceipts
(
receipts
,
txs
)
...
...
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