aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmd/geth/genesis_test.go1
-rw-r--r--miner/worker.go10
-rw-r--r--params/util.go17
3 files changed, 22 insertions, 6 deletions
diff --git a/cmd/geth/genesis_test.go b/cmd/geth/genesis_test.go
index 7485d7d89..43d678d89 100644
--- a/cmd/geth/genesis_test.go
+++ b/cmd/geth/genesis_test.go
@@ -75,6 +75,7 @@ var customGenesisTests = []struct {
"timestamp" : "0x00",
"config" : {
"homesteadBlock" : 314,
+ "daoForkBlock" : 141
},
}`,
query: "eth.getBlock(0).nonce",
diff --git a/miner/worker.go b/miner/worker.go
index 09cf6b6aa..7197a33ba 100644
--- a/miner/worker.go
+++ b/miner/worker.go
@@ -33,6 +33,7 @@ import (
"github.com/ethereum/go-ethereum/event"
"github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/logger/glog"
+ "github.com/ethereum/go-ethereum/params"
"github.com/ethereum/go-ethereum/pow"
"gopkg.in/fatih/set.v0"
)
@@ -468,7 +469,14 @@ func (self *worker) commitNewWork() {
Extra: self.extra,
Time: big.NewInt(tstamp),
}
-
+ // If we are doing a DAO hard-fork check whether to override the extra-data or not
+ if daoBlock := self.config.DAOForkBlock; daoBlock != nil {
+ // Check whether the block is among the fork extra-override range
+ limit := new(big.Int).Add(daoBlock, params.DAOForkExtraRange)
+ if daoBlock.Cmp(header.Number) <= 0 && header.Number.Cmp(limit) < 0 {
+ header.Extra = common.CopyBytes(params.DAOForkBlockExtra)
+ }
+ }
previous := self.current
// Could potentially happen if starting to mine in an odd state.
err := self.makeCurrent(parent, header)
diff --git a/params/util.go b/params/util.go
index b76850852..a0c9a3199 100644
--- a/params/util.go
+++ b/params/util.go
@@ -16,11 +16,18 @@
package params
-import "math/big"
+import (
+ "math/big"
+
+ "github.com/ethereum/go-ethereum/common"
+)
var (
- TestNetHomesteadBlock = big.NewInt(494000) // testnet homestead block
- MainNetHomesteadBlock = big.NewInt(1150000) // mainnet homestead block
- TestNetDAOForkBlock = big.NewInt(8888888) // testnet dao hard-fork block
- MainNetDAOForkBlock = big.NewInt(9999999) // mainnet dao hard-fork block
+ TestNetHomesteadBlock = big.NewInt(494000) // Testnet homestead block
+ MainNetHomesteadBlock = big.NewInt(1150000) // Mainnet homestead block
+
+ TestNetDAOForkBlock = big.NewInt(8888888) // Testnet dao hard-fork block
+ MainNetDAOForkBlock = big.NewInt(9999999) // Mainnet dao hard-fork block
+ DAOForkBlockExtra = common.FromHex("0x64616f2d686172642d666f726b") // Block extradata to signel the fork with ("dao-hard-fork")
+ DAOForkExtraRange = big.NewInt(10) // Number of blocks to override the extradata (prevent no-fork attacks)
)