git.gammaspectra.live/P2Pool/consensus/v3@v3.8.0/p2pool/p2p/challenge_test.go (about)

     1  package p2p
     2  
     3  import (
     4  	"crypto/rand"
     5  	"git.gammaspectra.live/P2Pool/consensus/v3/p2pool/sidechain"
     6  	fasthex "github.com/tmthrgd/go-hex"
     7  	"sync/atomic"
     8  	"testing"
     9  )
    10  
    11  func TestFindChallengeSolution(t *testing.T) {
    12  	var handshakeChallenge HandshakeChallenge
    13  	if _, err := rand.Read(handshakeChallenge[:]); err != nil {
    14  		t.Fatal(err)
    15  	}
    16  
    17  	var buf [1 + HandshakeChallengeSize]byte
    18  	buf[0] = byte(MessageHandshakeChallenge)
    19  	copy(buf[1:], handshakeChallenge[:])
    20  
    21  	var stop atomic.Bool
    22  
    23  	if solution, hash, ok := FindChallengeSolution(handshakeChallenge, sidechain.ConsensusDefault.Id, &stop); !ok {
    24  		t.Fatalf("No solution for %s", fasthex.EncodeToString(handshakeChallenge[:]))
    25  	} else {
    26  		t.Logf("Solution for %s is %d (hash %s)", fasthex.EncodeToString(handshakeChallenge[:]), solution, hash.String())
    27  	}
    28  }