good morning!!!!

Skip to content
Snippets Groups Projects
Select Git revision
  • 65a9a265c2049b22f9fe78f0f93715ed00a33014
  • devel default protected
  • concurrent
  • erigon22
  • body-download
  • merge-1
  • mdbx_erigon
  • roaring_up6
  • alpha
  • eth67
  • anchor-log
  • stable
  • naming
  • apache-mutation
  • gc_cache
  • db_migration_reset_blocks
  • mdbx_aug_dbg_64
  • docker_faster_build
  • readme1
  • readme2
  • optimized_fee_history
  • v2022.06.04
  • v2022.04.05
  • v2022.06.03
  • v2022.06.02
  • v2022.06.01
  • v2022.05.09
  • v2022.05.08
  • v2022.05.07
  • v2022.05.06
  • v2022.05.05
  • v2022.05.04
  • v2022.05.03
  • v2022.05.02
  • v2022.05.01
  • v2022.04.04
  • v2022.04.03
  • v2022.04.02
  • v2022.04.01
  • v2022.03.02
  • v2022.03.01
41 results

difficulty_test_util.go

Blame
  • Forked from an inaccessible project.
    user avatar
    Alex Sharov authored and GitHub committed
    * rename
    
    * rename "make grpc"
    
    * rename "abi bindings templates"
    
    * rename "abi bindings templates"
    0be3044b
    History
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    difficulty_test_util.go 2.51 KiB
    // Copyright 2017 The go-ethereum Authors
    // This file is part of the go-ethereum library.
    //
    // The go-ethereum library is free software: you can redistribute it and/or modify
    // it under the terms of the GNU Lesser General Public License as published by
    // the Free Software Foundation, either version 3 of the License, or
    // (at your option) any later version.
    //
    // The go-ethereum library 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 Lesser General Public License for more details.
    //
    // You should have received a copy of the GNU Lesser General Public License
    // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
    
    package tests
    
    import (
    	"fmt"
    	"math/big"
    
    	"github.com/ledgerwatch/erigon/common"
    	"github.com/ledgerwatch/erigon/common/math"
    	"github.com/ledgerwatch/erigon/consensus/ethash"
    	"github.com/ledgerwatch/erigon/core/types"
    	"github.com/ledgerwatch/erigon/params"
    )
    
    //go:generate gencodec -type DifficultyTest -field-override difficultyTestMarshaling -out gen_difficultytest.go
    
    type DifficultyTest struct {
    	ParentTimestamp    uint64      `json:"parentTimestamp"`
    	ParentDifficulty   *big.Int    `json:"parentDifficulty"`
    	UncleHash          common.Hash `json:"parentUncles"`
    	CurrentTimestamp   uint64      `json:"currentTimestamp"`
    	CurrentBlockNumber uint64      `json:"currentBlockNumber"`
    	CurrentDifficulty  *big.Int    `json:"currentDifficulty"`
    }
    
    type difficultyTestMarshaling struct {
    	ParentTimestamp    math.HexOrDecimal64
    	ParentDifficulty   *math.HexOrDecimal256
    	CurrentTimestamp   math.HexOrDecimal64
    	CurrentDifficulty  *math.HexOrDecimal256
    	UncleHash          common.Hash
    	CurrentBlockNumber math.HexOrDecimal64
    }
    
    func (test *DifficultyTest) Run(config *params.ChainConfig) error {
    	parentNumber := big.NewInt(int64(test.CurrentBlockNumber - 1))
    	parent := &types.Header{
    		Difficulty: test.ParentDifficulty,
    		Time:       test.ParentTimestamp,
    		Number:     parentNumber,
    		UncleHash:  test.UncleHash,
    	}
    
    	actual := ethash.CalcDifficulty(config, test.CurrentTimestamp, parent.Time, parent.Difficulty, parent.Number.Uint64(), parent.UncleHash)
    	exp := test.CurrentDifficulty
    
    	if actual.Cmp(exp) != 0 {
    		return fmt.Errorf("parent[time %v diff %v unclehash:%x] child[time %v number %v] diff %v != expected %v",
    			test.ParentTimestamp, test.ParentDifficulty, test.UncleHash,
    			test.CurrentTimestamp, test.CurrentBlockNumber, actual, exp)
    	}
    	return nil
    
    }