diff --git a/internal/postrs/proof.go b/internal/postrs/proof.go index f67498460..dcad0e8b2 100644 --- a/internal/postrs/proof.go +++ b/internal/postrs/proof.go @@ -6,7 +6,6 @@ package postrs import "C" import ( - "encoding/hex" "errors" "fmt" "sync" @@ -38,12 +37,6 @@ func NewScryptParams(n, r, p uint) ScryptParams { } } -type HexEncoded []byte - -func (h HexEncoded) String() string { - return hex.EncodeToString(h) -} - // ErrVerifierClosed is returned when calling a method on an already closed Scrypt instance. var ErrVerifierClosed = errors.New("verifier has been closed") diff --git a/proving/proving_test.go b/proving/proving_test.go index 6d593a360..bbdc5c7ab 100644 --- a/proving/proving_test.go +++ b/proving/proving_test.go @@ -17,8 +17,6 @@ import ( "github.com/spacemeshos/post/verifying" ) -const KiB = 1024 - func getTestConfig(tb testing.TB) (config.Config, config.InitOpts) { cfg := config.DefaultConfig() @@ -163,84 +161,10 @@ func Test_Generate_DetectInvalidParameters(t *testing.T) { newCfg, zaptest.NewLogger(t, zaptest.Level(zap.DebugLevel)), WithDataSource(newCfg, nodeId, commitmentAtxId, opts.DataDir), - WithPowFlags(postrs.GetRecommendedPowFlags()), + LightMode(), ) var errConfigMismatch initialization.ConfigMismatchError require.ErrorAs(t, err, &errConfigMismatch) require.Equal(t, "LabelsPerUnit", errConfigMismatch.Param) }) } - -func Test_Generate_TestNetSettings(t *testing.T) { - r := require.New(t) - log := zaptest.NewLogger(t, zaptest.Level(zap.DebugLevel)) - - nodeId := make([]byte, 32) - commitmentAtxId := make([]byte, 32) - ch := make(shared.Challenge, 32) - cfg := config.DefaultConfig() - - // Test-net settings: - cfg.LabelsPerUnit = 20 * KiB / postrs.LabelLength // 20kB unit - cfg.K1 = 273 - cfg.K2 = 300 - cfg.K3 = 100 - - opts := config.DefaultInitOpts() - opts.Scrypt.N = 16 - opts.ProviderID = new(uint32) - *opts.ProviderID = postrs.CPUProviderID() - opts.NumUnits = 2 - opts.DataDir = t.TempDir() - - init, err := initialization.NewInitializer( - initialization.WithNodeId(nodeId), - initialization.WithCommitmentAtxId(commitmentAtxId), - initialization.WithConfig(cfg), - initialization.WithInitOpts(opts), - initialization.WithLogger(log), - ) - r.NoError(err) - r.NoError(init.Initialize(context.Background())) - - n, err := rand.Read(ch) - r.NoError(err) - r.Equal(len(ch), n) - - proof, proofMetaData, err := Generate( - context.Background(), - ch, - cfg, - log, - WithDataSource(cfg, nodeId, commitmentAtxId, opts.DataDir), - WithPowFlags(postrs.GetRecommendedPowFlags()), - ) - r.NoError(err, "numUnits: %d", opts.NumUnits) - r.NotNil(proof) - r.NotNil(proofMetaData) - - r.Equal(nodeId, proofMetaData.NodeId) - r.Equal(commitmentAtxId, proofMetaData.CommitmentAtxId) - r.Equal(ch, proofMetaData.Challenge) - r.Equal(cfg.LabelsPerUnit, proofMetaData.LabelsPerUnit) - r.Equal(opts.NumUnits, proofMetaData.NumUnits) - - numLabels := cfg.LabelsPerUnit * uint64(opts.NumUnits) - indexBitSize := uint(shared.BinaryRepresentationMinBits(numLabels)) - r.Equal(shared.Size(indexBitSize, uint(cfg.K2)), uint(len(proof.Indices))) - - log.Info("post status", - zap.Uint64("numLabels", numLabels), - zap.Int("indices size", len(proof.Indices)), - ) - verifier, err := verifying.NewProofVerifier([]byte{}) - r.NoError(err) - defer verifier.Close() - r.NoError(verifier.Verify( - proof, - proofMetaData, - cfg, - zaptest.NewLogger(t, zaptest.Level(zap.DebugLevel)), - verifying.WithLabelScryptParams(opts.Scrypt)), - ) -} diff --git a/verifying/verifying_test.go b/verifying/verifying_test.go index e1d9e0184..6e259575a 100644 --- a/verifying/verifying_test.go +++ b/verifying/verifying_test.go @@ -236,67 +236,23 @@ func BenchmarkVerifying(b *testing.B) { ch := make(shared.Challenge, 32) rand.Read(ch) - p, m, err := proving.Generate(context.Background(), ch, cfg, zaptest.NewLogger(b), proving.WithDataSource(cfg, nodeId, commitmentAtxId, opts.DataDir)) + p, m, err := proving.Generate(context.Background(), ch, cfg, zaptest.NewLogger(b), proving.WithDataSource(cfg, nodeId, commitmentAtxId, opts.DataDir), proving.LightMode()) require.NoError(b, err) verifier, err := NewProofVerifier([]byte{}) require.NoError(b, err) defer verifier.Close() - for _, k3 := range []uint32{5, 25, 50, 100} { + for _, k3 := range []int{5, 25, 50, 100} { testName := fmt.Sprintf("k3=%d", k3) - cfg.K3 = k3 - b.Run(testName, func(b *testing.B) { for i := 0; i < b.N; i++ { start := time.Now() - err := verifier.Verify(p, m, cfg, zaptest.NewLogger(b)) + err := verifier.Verify(p, m, cfg, zaptest.NewLogger(b), Subset(k3)) require.NoError(b, err) b.ReportMetric(time.Since(start).Seconds(), "sec/proof") } }) } } - -func Benchmark_Verify_Fastnet(b *testing.B) { - r := require.New(b) - nodeId := make([]byte, 32) - commitmentAtxId := make([]byte, 32) - ch := make(shared.Challenge, 32) - - cfg, opts := getTestConfig(b) - cfg.K1 = 12 - cfg.K2 = 4 - cfg.K3 = 2 - cfg.LabelsPerUnit = 32 - cfg.MaxNumUnits = 4 - cfg.MinNumUnits = 2 - - opts.NumUnits = cfg.MinNumUnits - - init, err := initialization.NewInitializer( - initialization.WithNodeId(nodeId), - initialization.WithCommitmentAtxId(commitmentAtxId), - initialization.WithConfig(cfg), - initialization.WithInitOpts(opts), - ) - r.NoError(err) - r.NoError(init.Initialize(context.Background())) - - verifier, err := NewProofVerifier([]byte{}) - require.NoError(b, err) - defer verifier.Close() - - for i := 0; i < b.N; i++ { - rand.Read(ch) - proof, proofMetadata, err := proving.Generate(context.Background(), ch, cfg, zaptest.NewLogger(b), proving.WithDataSource(cfg, nodeId, commitmentAtxId, opts.DataDir)) - r.NoError(err) - - b.StartTimer() - start := time.Now() - r.NoError(verifier.Verify(proof, proofMetadata, cfg, zaptest.NewLogger(b))) - b.ReportMetric(time.Since(start).Seconds(), "sec/proof") - b.StopTimer() - } -}