mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-17 09:23:48 +00:00
consensus/ethash: shuffle func calc*Size comments around
This commit is contained in:
parent
15d0c9bcd7
commit
0326bb8824
1 changed files with 10 additions and 11 deletions
|
|
@ -20,20 +20,19 @@ package ethash
|
||||||
|
|
||||||
import "math/big"
|
import "math/big"
|
||||||
|
|
||||||
// cacheSize calculates and returns the size of the ethash verification cache that
|
// cacheSize returns the size of the ethash verification cache that belongs to a certain
|
||||||
// belongs to a certain block number. The cache size grows linearly, however, we
|
// block number.
|
||||||
// always take the highest prime below the linearly growing threshold in order to
|
|
||||||
// reduce the risk of accidental regularities leading to cyclic behavior.
|
|
||||||
func cacheSize(block uint64) uint64 {
|
func cacheSize(block uint64) uint64 {
|
||||||
// If we have a pre-generated value, use that
|
|
||||||
epoch := int(block / epochLength)
|
epoch := int(block / epochLength)
|
||||||
if epoch < maxEpoch {
|
if epoch < maxEpoch {
|
||||||
return cacheSizes[epoch]
|
return cacheSizes[epoch]
|
||||||
}
|
}
|
||||||
// No known cache size, calculate manually (sanity branch only)
|
|
||||||
return calcCacheSize(epoch)
|
return calcCacheSize(epoch)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// calcCacheSize calculates the cache size for epoch. The cache size grows linearly,
|
||||||
|
// however, we always take the highest prime below the linearly growing threshold in order
|
||||||
|
// to reduce the risk of accidental regularities leading to cyclic behavior.
|
||||||
func calcCacheSize(epoch int) uint64 {
|
func calcCacheSize(epoch int) uint64 {
|
||||||
size := cacheInitBytes + cacheGrowthBytes*uint64(epoch) - hashBytes
|
size := cacheInitBytes + cacheGrowthBytes*uint64(epoch) - hashBytes
|
||||||
for !new(big.Int).SetUint64(size / hashBytes).ProbablyPrime(1) { // Always accurate for n < 2^64
|
for !new(big.Int).SetUint64(size / hashBytes).ProbablyPrime(1) { // Always accurate for n < 2^64
|
||||||
|
|
@ -42,12 +41,9 @@ func calcCacheSize(epoch int) uint64 {
|
||||||
return size
|
return size
|
||||||
}
|
}
|
||||||
|
|
||||||
// datasetSize calculates and returns the size of the ethash mining dataset that
|
// datasetSize returns the size of the ethash mining dataset that belongs to a certain
|
||||||
// belongs to a certain block number. The dataset size grows linearly, however, we
|
// block number.
|
||||||
// always take the highest prime below the linearly growing threshold in order to
|
|
||||||
// reduce the risk of accidental regularities leading to cyclic behavior.
|
|
||||||
func datasetSize(block uint64) uint64 {
|
func datasetSize(block uint64) uint64 {
|
||||||
// If we have a pre-generated value, use that
|
|
||||||
epoch := int(block / epochLength)
|
epoch := int(block / epochLength)
|
||||||
if epoch < len(datasetSizes) {
|
if epoch < len(datasetSizes) {
|
||||||
return datasetSizes[epoch]
|
return datasetSizes[epoch]
|
||||||
|
|
@ -55,6 +51,9 @@ func datasetSize(block uint64) uint64 {
|
||||||
return calcDatasetSize(epoch)
|
return calcDatasetSize(epoch)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// calcDatasetSize calculates the dataset size for epoch. The dataset size grows linearly,
|
||||||
|
// however, we always take the highest prime below the linearly growing threshold in order
|
||||||
|
// to reduce the risk of accidental regularities leading to cyclic behavior.
|
||||||
func calcDatasetSize(epoch int) uint64 {
|
func calcDatasetSize(epoch int) uint64 {
|
||||||
size := datasetInitBytes + datasetGrowthBytes*uint64(epoch) - mixBytes
|
size := datasetInitBytes + datasetGrowthBytes*uint64(epoch) - mixBytes
|
||||||
for !new(big.Int).SetUint64(size / mixBytes).ProbablyPrime(1) { // Always accurate for n < 2^64
|
for !new(big.Int).SetUint64(size / mixBytes).ProbablyPrime(1) { // Always accurate for n < 2^64
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue