Use bits.Mul64 on p2p challenge
This commit is contained in:
parent
d2187564ca
commit
b138b39ab5
|
@ -5,6 +5,7 @@ import (
|
|||
"encoding/binary"
|
||||
"git.gammaspectra.live/P2Pool/consensus/v3/monero/crypto"
|
||||
"git.gammaspectra.live/P2Pool/consensus/v3/types"
|
||||
"math/bits"
|
||||
"sync/atomic"
|
||||
"unsafe"
|
||||
)
|
||||
|
@ -41,7 +42,7 @@ func FindChallengeSolution(challenge HandshakeChallenge, consensusId types.Hash,
|
|||
return salt, sum, false
|
||||
}
|
||||
|
||||
if types.DifficultyFrom64(binary.LittleEndian.Uint64(sum[len(sum)-int(unsafe.Sizeof(uint64(0))):])).Mul64(HandshakeChallengeDifficulty).Hi == 0 {
|
||||
if hi, _ := bits.Mul64(binary.LittleEndian.Uint64(sum[len(sum)-int(unsafe.Sizeof(uint64(0))):]), HandshakeChallengeDifficulty); hi == 0 {
|
||||
//found solution
|
||||
return salt, sum, true
|
||||
}
|
||||
|
@ -52,5 +53,6 @@ func FindChallengeSolution(challenge HandshakeChallenge, consensusId types.Hash,
|
|||
|
||||
func CalculateChallengeHash(challenge HandshakeChallenge, consensusId types.Hash, solution uint64) (hash types.Hash, ok bool) {
|
||||
hash = crypto.PooledKeccak256(challenge[:], consensusId[:], binary.LittleEndian.AppendUint64(nil, solution))
|
||||
return hash, types.DifficultyFrom64(binary.LittleEndian.Uint64(hash[types.HashSize-int(unsafe.Sizeof(uint64(0))):])).Mul64(HandshakeChallengeDifficulty).Hi == 0
|
||||
hi, _ := bits.Mul64(binary.LittleEndian.Uint64(hash[types.HashSize-int(unsafe.Sizeof(uint64(0))):]), HandshakeChallengeDifficulty)
|
||||
return hash, hi == 0
|
||||
}
|
||||
|
|
|
@ -10,7 +10,6 @@ import (
|
|||
"git.gammaspectra.live/P2Pool/consensus/v3/types"
|
||||
"git.gammaspectra.live/P2Pool/consensus/v3/utils"
|
||||
"git.gammaspectra.live/P2Pool/sha3"
|
||||
"lukechampine.com/uint128"
|
||||
"math"
|
||||
"math/bits"
|
||||
"slices"
|
||||
|
@ -453,13 +452,13 @@ func NextDifficulty(consensus *Consensus, timestamps []uint64, difficultyData []
|
|||
}
|
||||
}()
|
||||
|
||||
deltaDifficulty := uint128.Uint128(maxDifficulty).Sub(uint128.Uint128(minDifficulty))
|
||||
deltaDifficulty := maxDifficulty.Sub(minDifficulty)
|
||||
curDifficulty := deltaDifficulty.Mul64(consensus.TargetBlockTime).Div64(deltaTimestamp)
|
||||
|
||||
if curDifficulty.Cmp64(consensus.MinimumDifficulty) < 0 {
|
||||
return types.DifficultyFrom64(consensus.MinimumDifficulty), nil
|
||||
}
|
||||
return types.Difficulty(curDifficulty), nil
|
||||
return curDifficulty, nil
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue