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
9e56811a
Commit
9e56811a
authored
Jul 08, 2016
by
Péter Szilágyi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
core: gracefully handle missing homestead block config
parent
6060e098
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
106 additions
and
1 deletion
+106
-1
genesis_test.go
cmd/geth/genesis_test.go
+105
-0
config.go
core/config.go
+1
-1
No files found.
cmd/geth/genesis_test.go
0 → 100644
View file @
9e56811a
// Copyright 2016 The go-ethereum Authors
// This file is part of go-ethereum.
//
// go-ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// go-ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
package
main
import
(
"io/ioutil"
"os"
"path/filepath"
"testing"
)
var
customGenesisTests
=
[]
struct
{
genesis
string
query
string
result
string
}{
// Plain genesis file without anything extra
{
genesis
:
`{
"alloc" : {},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x20000",
"extraData" : "",
"gasLimit" : "0x2fefd8",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00"
}`
,
query
:
"eth.getBlock(0).nonce"
,
result
:
"0x0000000000000042"
,
},
// Genesis file with an empty chain configuration (ensure missing fields work)
{
genesis
:
`{
"alloc" : {},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x20000",
"extraData" : "",
"gasLimit" : "0x2fefd8",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00",
"config" : {}
}`
,
query
:
"eth.getBlock(0).nonce"
,
result
:
"0x0000000000000042"
,
},
// Genesis file with specific chain configurations
{
genesis
:
`{
"alloc" : {},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x20000",
"extraData" : "",
"gasLimit" : "0x2fefd8",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00",
"config" : {
"homesteadBlock" : 314,
},
}`
,
query
:
"eth.getBlock(0).nonce"
,
result
:
"0x0000000000000042"
,
},
}
// Tests that initializing Geth with a custom genesis block and chain definitions
// work properly.
func
TestCustomGenesis
(
t
*
testing
.
T
)
{
for
i
,
tt
:=
range
customGenesisTests
{
// Create a temporary data directory to use and inspect later
datadir
:=
tmpdir
(
t
)
defer
os
.
RemoveAll
(
datadir
)
// Initialize the data directory with the custom genesis block
json
:=
filepath
.
Join
(
datadir
,
"genesis.json"
)
if
err
:=
ioutil
.
WriteFile
(
json
,
[]
byte
(
tt
.
genesis
),
0600
);
err
!=
nil
{
t
.
Fatalf
(
"test %d: failed to write genesis file: %v"
,
i
,
err
)
}
runGeth
(
t
,
"--datadir"
,
datadir
,
"init"
,
json
)
.
cmd
.
Wait
()
// Query the custom genesis block
geth
:=
runGeth
(
t
,
"--datadir"
,
datadir
,
"--maxpeers"
,
"0"
,
"--nodiscover"
,
"--nat"
,
"none"
,
"--ipcdisable"
,
"--exec"
,
tt
.
query
,
"console"
)
geth
.
expectRegexp
(
tt
.
result
)
geth
.
expectExit
()
}
}
core/config.go
View file @
9e56811a
...
@@ -39,7 +39,7 @@ type ChainConfig struct {
...
@@ -39,7 +39,7 @@ type ChainConfig struct {
// IsHomestead returns whether num is either equal to the homestead block or greater.
// IsHomestead returns whether num is either equal to the homestead block or greater.
func
(
c
*
ChainConfig
)
IsHomestead
(
num
*
big
.
Int
)
bool
{
func
(
c
*
ChainConfig
)
IsHomestead
(
num
*
big
.
Int
)
bool
{
if
num
==
nil
{
if
c
.
HomesteadBlock
==
nil
||
num
==
nil
{
return
false
return
false
}
}
return
num
.
Cmp
(
c
.
HomesteadBlock
)
>=
0
return
num
.
Cmp
(
c
.
HomesteadBlock
)
>=
0
...
...
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