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
54bce64e
Commit
54bce64e
authored
Jan 12, 2014
by
obscuren
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Validations reordering & added nonce validation
parent
bee05d52
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
18 additions
and
14 deletions
+18
-14
block_manager.go
block_manager.go
+18
-14
No files found.
block_manager.go
View file @
54bce64e
...
...
@@ -114,30 +114,34 @@ func (bm *BlockManager) CalculateTD(block *ethutil.Block) bool {
}
// Validates the current block. Returns an error if the block was invalid,
// an uncle or anything that isn't on the current block chain
// an uncle or anything that isn't on the current block chain.
// Validation validates easy over difficult (dagger takes longer time = difficult)
func
(
bm
*
BlockManager
)
ValidateBlock
(
block
*
ethutil
.
Block
)
error
{
// TODO
// 1. Check if the nonce of the block is valid
// 2. Check if the difficulty is correct
// Check if we have the parent hash, if it isn't known we discard it
// Reasons might be catching up or simply an invalid block
if
bm
.
bc
.
HasBlock
(
block
.
PrevHash
)
{
// Check each uncle's previous hash. In order for it to be valid
// is if it has the same block hash as the current
for
_
,
uncle
:=
range
block
.
Uncles
{
if
uncle
.
PrevHash
!=
block
.
PrevHash
{
if
Debug
{
log
.
Printf
(
"Uncle prvhash mismatch %x %x
\n
"
,
block
.
PrevHash
,
uncle
.
PrevHash
)
}
return
errors
.
New
(
"Mismatching Prvhash from uncle"
)
if
!
bm
.
bc
.
HasBlock
(
block
.
PrevHash
)
{
return
errors
.
New
(
"Block's parent unknown"
)
}
// Check each uncle's previous hash. In order for it to be valid
// is if it has the same block hash as the current
for
_
,
uncle
:=
range
block
.
Uncles
{
if
uncle
.
PrevHash
!=
block
.
PrevHash
{
if
Debug
{
log
.
Printf
(
"Uncle prvhash mismatch %x %x
\n
"
,
block
.
PrevHash
,
uncle
.
PrevHash
)
}
return
errors
.
New
(
"Mismatching Prvhash from uncle"
)
}
}
else
{
return
errors
.
New
(
"Block's parent unknown"
)
}
// Verify the nonce of the block. Return an error if it's not valid
if
!
DaggerVerify
(
block
.
Hash
(),
block
.
Nonce
)
{
return
errors
.
New
(
"Block's nonce is invalid"
)
}
return
nil
}
...
...
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