gitlab.com/SkynetLabs/skyd@v1.6.9/skymodules/seeds_test.go (about)

     1  package skymodules
     2  
     3  import (
     4  	"bytes"
     5  	"testing"
     6  
     7  	"gitlab.com/NebulousLabs/fastrand"
     8  
     9  	"go.sia.tech/siad/crypto"
    10  	"go.sia.tech/siad/modules"
    11  	"go.sia.tech/siad/types"
    12  )
    13  
    14  // TestEphemeralRenterSeed tests the ephemeralRenterSeed methods.
    15  func TestEphemeralRenterSeed(t *testing.T) {
    16  	// Create random wallet seed.
    17  	var walletSeed modules.Seed
    18  	fastrand.Read(walletSeed[:])
    19  
    20  	renterSeed := DeriveRenterSeed(walletSeed)
    21  	fastrand.Read(renterSeed[:])
    22  
    23  	// Test for blockheights 0 to ephemeralSeedInterval-1
    24  	for bh := types.BlockHeight(0); bh < ephemeralSeedInterval; bh++ {
    25  		expectedSeed := crypto.HashAll(renterSeed, 0)
    26  		seed := renterSeed.EphemeralRenterSeed(bh)
    27  		if !bytes.Equal(expectedSeed[:], seed[:]) {
    28  			t.Fatal("Seeds don't match for blockheight", bh)
    29  		}
    30  	}
    31  	// Test for blockheights ephemeralSeedInterval to 2*ephemeralSeedInterval-1
    32  	for bh := ephemeralSeedInterval; bh < 2*ephemeralSeedInterval; bh++ {
    33  		expectedSeed := crypto.HashAll(renterSeed, 1)
    34  		seed := renterSeed.EphemeralRenterSeed(bh)
    35  		if !bytes.Equal(expectedSeed[:], seed[:]) {
    36  			t.Fatal("Seeds don't match for blockheight", bh)
    37  		}
    38  	}
    39  }