gitlab.com/SiaPrime/SiaPrime@v1.4.1/modules/renter/proto/seeds_test.go (about)

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