diff options
author | Péter Szilágyi <peterke@gmail.com> | 2015-09-17 18:32:00 +0800 |
---|---|---|
committer | Péter Szilágyi <peterke@gmail.com> | 2015-09-17 18:43:52 +0800 |
commit | 6f3cb12924a87525026c814078ebf3a7f9cb0acb (patch) | |
tree | e66e9782404e2176f2e9cddb61f7be37523b682a | |
parent | 58fbcaa750aaa51d349ef28d98b58c9a0cfeee31 (diff) | |
download | go-tangerine-6f3cb12924a87525026c814078ebf3a7f9cb0acb.tar.gz go-tangerine-6f3cb12924a87525026c814078ebf3a7f9cb0acb.tar.zst go-tangerine-6f3cb12924a87525026c814078ebf3a7f9cb0acb.zip |
core: allow modifying test-chain block times
-rw-r--r-- | core/chain_makers.go | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/core/chain_makers.go b/core/chain_makers.go index d3b7c42b6..70233438d 100644 --- a/core/chain_makers.go +++ b/core/chain_makers.go @@ -131,6 +131,17 @@ func (b *BlockGen) PrevBlock(index int) *types.Block { return b.chain[index] } +// OffsetTime modifies the time instance of a block, implicitly changing its +// associated difficulty. It's useful to test scenarios where forking is not +// tied to chain length directly. +func (b *BlockGen) OffsetTime(seconds int64) { + b.header.Time.Add(b.header.Time, new(big.Int).SetInt64(seconds)) + if b.header.Time.Cmp(b.parent.Header().Time) <= 0 { + panic("block time out of range") + } + b.header.Difficulty = CalcDifficulty(b.header.Time.Uint64(), b.parent.Time().Uint64(), b.parent.Number(), b.parent.Difficulty()) +} + // GenerateChain creates a chain of n blocks. The first block's // parent will be the provided parent. db is used to store // intermediate states and should contain the parent's state trie. |