From 6cbee5fc2b148be26cc33cbb9d63f5870d4268c0 Mon Sep 17 00:00:00 2001 From: Jacob Daitzman Date: Mon, 19 Dec 2022 16:21:30 -0500 Subject: [PATCH 1/3] Algod: Add experimental endpoint for simulating transactions against a real block evaluator (#4436) Co-authored-by: Michael Diamant Co-authored-by: Jason Paulos --- merklesignature/committablePublicKeys.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/merklesignature/committablePublicKeys.go b/merklesignature/committablePublicKeys.go index 7401c67efc..8c10cb2624 100644 --- a/merklesignature/committablePublicKeys.go +++ b/merklesignature/committablePublicKeys.go @@ -34,7 +34,7 @@ type ( keyLifetime uint64 } - // CommittablePublicKey is used to create a binary representation of public keys in the merkle + // CommittablePublicKey is used to create a binary representation of public keys in the merkle // signature scheme. CommittablePublicKey struct { VerifyingKey crypto.FalconVerifier From 4099eeccf50ec43a15e0fe51c2c062b493fcdce9 Mon Sep 17 00:00:00 2001 From: Shant Karakashian <55754073+algonautshant@users.noreply.github.com> Date: Thu, 29 Dec 2022 12:53:44 -0500 Subject: [PATCH 2/3] txHandler: batch transactions to the verifier (#4621) * Batching incoming transaction for crypto verification * Streaming capabilities of transactions to the verifier --- batchverifier.go | 16 +++++----- batchverifier_test.go | 72 ++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 75 insertions(+), 13 deletions(-) diff --git a/batchverifier.go b/batchverifier.go index a358d65e38..b8ff87b797 100644 --- a/batchverifier.go +++ b/batchverifier.go @@ -53,7 +53,7 @@ const minBatchVerifierAlloc = 16 // Batch verifications errors var ( - ErrBatchVerificationFailed = errors.New("At least one signature didn't pass verification") + ErrBatchHasFailedSigs = errors.New("At least one signature didn't pass verification") ) //export ed25519_randombytes_unsafe @@ -104,8 +104,8 @@ func (b *BatchVerifier) expand() { b.signatures = signatures } -// getNumberOfEnqueuedSignatures returns the number of signatures current enqueue onto the batch verifier object -func (b *BatchVerifier) getNumberOfEnqueuedSignatures() int { +// GetNumberOfEnqueuedSignatures returns the number of signatures currently enqueued into the BatchVerifier +func (b *BatchVerifier) GetNumberOfEnqueuedSignatures() int { return len(b.messages) } @@ -120,18 +120,18 @@ func (b *BatchVerifier) Verify() error { // if some signatures are invalid, true will be set in failed at the corresponding indexes, and // ErrBatchVerificationFailed for err func (b *BatchVerifier) VerifyWithFeedback() (failed []bool, err error) { - if b.getNumberOfEnqueuedSignatures() == 0 { + if b.GetNumberOfEnqueuedSignatures() == 0 { return nil, nil } - var messages = make([][]byte, b.getNumberOfEnqueuedSignatures()) - for i, m := range b.messages { - messages[i] = HashRep(m) + var messages = make([][]byte, b.GetNumberOfEnqueuedSignatures()) + for i := range b.messages { + messages[i] = HashRep(b.messages[i]) } allValid, failed := batchVerificationImpl(messages, b.publicKeys, b.signatures) if allValid { return failed, nil } - return failed, ErrBatchVerificationFailed + return failed, ErrBatchHasFailedSigs } // batchVerificationImpl invokes the ed25519 batch verification algorithm. diff --git a/batchverifier_test.go b/batchverifier_test.go index 7c5455703c..6ec24249e1 100644 --- a/batchverifier_test.go +++ b/batchverifier_test.go @@ -17,6 +17,7 @@ package crypto import ( + "fmt" "math/rand" "runtime" "testing" @@ -64,7 +65,7 @@ func TestBatchVerifierBulk(t *testing.T) { sig := sigSecrets.Sign(msg) bv.EnqueueSignature(sigSecrets.SignatureVerifier, msg, sig) } - require.Equal(t, n, bv.getNumberOfEnqueuedSignatures()) + require.Equal(t, n, bv.GetNumberOfEnqueuedSignatures()) require.NoError(t, bv.Verify()) } @@ -121,6 +122,67 @@ func BenchmarkBatchVerifier(b *testing.B) { require.NoError(b, bv.Verify()) } +// BenchmarkBatchVerifierBig with b.N over 1000 will report the expected performance +// gain as the batchsize increases. All sigs are valid. +func BenchmarkBatchVerifierBig(b *testing.B) { + c := makeCurve25519Secret() + for batchSize := 1; batchSize <= 96; batchSize++ { + bv := MakeBatchVerifierWithHint(batchSize) + for i := 0; i < batchSize; i++ { + str := randString() + bv.EnqueueSignature(c.SignatureVerifier, str, c.Sign(str)) + } + b.Run(fmt.Sprintf("running batchsize %d", batchSize), func(b *testing.B) { + totalTransactions := b.N + count := totalTransactions / batchSize + if count*batchSize < totalTransactions { + count++ + } + for x := 0; x < count; x++ { + require.NoError(b, bv.Verify()) + } + }) + } +} + +// BenchmarkBatchVerifierBigWithInvalid builds over BenchmarkBatchVerifierBig by introducing +// invalid sigs to even numbered batch sizes. This shows the impact of invalid sigs on the +// performance. Basically, all the gains from batching disappear. +func BenchmarkBatchVerifierBigWithInvalid(b *testing.B) { + c := makeCurve25519Secret() + badSig := Signature{} + for batchSize := 1; batchSize <= 96; batchSize++ { + bv := MakeBatchVerifierWithHint(batchSize) + for i := 0; i < batchSize; i++ { + str := randString() + if batchSize%2 == 0 && (i == 0 || rand.Float32() < 0.1) { + bv.EnqueueSignature(c.SignatureVerifier, str, badSig) + } else { + bv.EnqueueSignature(c.SignatureVerifier, str, c.Sign(str)) + } + } + b.Run(fmt.Sprintf("running batchsize %d", batchSize), func(b *testing.B) { + totalTransactions := b.N + count := totalTransactions / batchSize + if count*batchSize < totalTransactions { + count++ + } + for x := 0; x < count; x++ { + failed, err := bv.VerifyWithFeedback() + if err != nil { + for i, f := range failed { + if bv.signatures[i] == badSig { + require.True(b, f) + } else { + require.False(b, f) + } + } + } + } + }) + } +} + func TestEmpty(t *testing.T) { partitiontest.PartitionTest(t) bv := MakeBatchVerifier() @@ -155,10 +217,10 @@ func TestBatchVerifierIndividualResults(t *testing.T) { } bv.EnqueueSignature(sigSecrets.SignatureVerifier, msg, sig) } - require.Equal(t, n, bv.getNumberOfEnqueuedSignatures()) + require.Equal(t, n, bv.GetNumberOfEnqueuedSignatures()) failed, err := bv.VerifyWithFeedback() if hasBadSig { - require.ErrorIs(t, err, ErrBatchVerificationFailed) + require.ErrorIs(t, err, ErrBatchHasFailedSigs) } else { require.NoError(t, err) } @@ -185,10 +247,10 @@ func TestBatchVerifierIndividualResultsAllValid(t *testing.T) { sig := sigSecrets.Sign(msg) bv.EnqueueSignature(sigSecrets.SignatureVerifier, msg, sig) } - require.Equal(t, n, bv.getNumberOfEnqueuedSignatures()) + require.Equal(t, n, bv.GetNumberOfEnqueuedSignatures()) failed, err := bv.VerifyWithFeedback() require.NoError(t, err) - require.Equal(t, bv.getNumberOfEnqueuedSignatures(), len(failed)) + require.Equal(t, bv.GetNumberOfEnqueuedSignatures(), len(failed)) for _, f := range failed { require.False(t, f) } From 56296abb0a554784ea1b2cb5bd0d51e4b5048923 Mon Sep 17 00:00:00 2001 From: algoidan <79864820+algoidan@users.noreply.github.com> Date: Mon, 2 Jan 2023 05:50:52 +0200 Subject: [PATCH 3/3] update copyright to 2023 (#4957) --- batchverifier.go | 2 +- batchverifier_test.go | 2 +- crypto_test.go | 2 +- cryptoerror.go | 2 +- curve25519.go | 2 +- curve25519_test.go | 2 +- digest.go | 2 +- encoding_test.go | 2 +- falconWrapper.go | 2 +- falconWrapper_test.go | 5 +++-- hashes.go | 2 +- hashes_test.go | 2 +- memcpy_chk_windows.c | 2 +- merklearray/array.go | 2 +- merklearray/layer.go | 2 +- merklearray/merkle.go | 2 +- merklearray/merkle_test.go | 2 +- merklearray/partial.go | 2 +- merklearray/proof.go | 2 +- merklearray/proof_test.go | 2 +- merklearray/vectorCommitmentArray.go | 2 +- merklearray/vectorCommitmentArray_test.go | 2 +- merklearray/worker.go | 2 +- merklesignature/committablePublicKeys.go | 2 +- merklesignature/committablePublicKeys_test.go | 2 +- merklesignature/const.go | 2 +- merklesignature/kats_test.go | 2 +- merklesignature/keysBuilder.go | 2 +- merklesignature/keysBuilder_test.go | 2 +- merklesignature/merkleSignatureScheme.go | 2 +- merklesignature/merkleSignatureScheme_test.go | 2 +- merklesignature/persistentMerkleSignatureScheme.go | 2 +- merklesignature/persistentMerkleSignatureScheme_test.go | 2 +- merklesignature/posdivs.go | 2 +- merklesignature/posdivs_test.go | 2 +- merkletrie/bitset.go | 2 +- merkletrie/bitset_test.go | 2 +- merkletrie/cache.go | 2 +- merkletrie/cache_test.go | 2 +- merkletrie/committer.go | 2 +- merkletrie/committer_test.go | 2 +- merkletrie/node.go | 2 +- merkletrie/node_test.go | 2 +- merkletrie/trie.go | 2 +- merkletrie/trie_test.go | 2 +- multisig.go | 2 +- multisig_test.go | 2 +- onetimesig.go | 2 +- onetimesig_test.go | 2 +- passphrase/errors.go | 2 +- passphrase/passphrase.go | 2 +- passphrase/passphrase_test.go | 2 +- passphrase/wordlist.go | 2 +- rand.go | 2 +- rand_test.go | 2 +- stateproof/builder.go | 2 +- stateproof/builder_test.go | 2 +- stateproof/coinGenerator.go | 2 +- stateproof/coinGenerator_test.go | 2 +- stateproof/committableSignatureSlot.go | 2 +- stateproof/committableSignatureSlot_test.go | 2 +- stateproof/const.go | 2 +- stateproof/structs.go | 2 +- stateproof/verifier.go | 2 +- stateproof/verifier_test.go | 2 +- stateproof/weights.go | 2 +- stateproof/weights_test.go | 2 +- util.go | 2 +- util_test.go | 2 +- vrf.go | 2 +- vrf_test.go | 2 +- 71 files changed, 73 insertions(+), 72 deletions(-) diff --git a/batchverifier.go b/batchverifier.go index b8ff87b797..9c14771bac 100644 --- a/batchverifier.go +++ b/batchverifier.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/batchverifier_test.go b/batchverifier_test.go index 6ec24249e1..c572503ff3 100644 --- a/batchverifier_test.go +++ b/batchverifier_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/crypto_test.go b/crypto_test.go index 86c65f9097..f0e8b1d0ef 100644 --- a/crypto_test.go +++ b/crypto_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/cryptoerror.go b/cryptoerror.go index 26636dd887..3282f8d4a9 100644 --- a/cryptoerror.go +++ b/cryptoerror.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/curve25519.go b/curve25519.go index 91dc5d63e2..e409fc794b 100644 --- a/curve25519.go +++ b/curve25519.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/curve25519_test.go b/curve25519_test.go index 27d153b9df..acd152cba0 100644 --- a/curve25519_test.go +++ b/curve25519_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/digest.go b/digest.go index a65fa4d39b..27bef9a3cd 100644 --- a/digest.go +++ b/digest.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/encoding_test.go b/encoding_test.go index 515f6a3eff..527a56d2cc 100644 --- a/encoding_test.go +++ b/encoding_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/falconWrapper.go b/falconWrapper.go index f24bc94339..0a2c000b9c 100644 --- a/falconWrapper.go +++ b/falconWrapper.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/falconWrapper_test.go b/falconWrapper_test.go index 20b5441eef..45adb124ab 100644 --- a/falconWrapper_test.go +++ b/falconWrapper_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify @@ -17,10 +17,11 @@ package crypto import ( + "testing" + "github.com/algorand/falcon" "github.com/algorand/go-algorand/test/partitiontest" "github.com/stretchr/testify/require" - "testing" ) func TestSignAndVerifyFalcon(t *testing.T) { diff --git a/hashes.go b/hashes.go index 67ccdafc0c..b1a541bbad 100644 --- a/hashes.go +++ b/hashes.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/hashes_test.go b/hashes_test.go index a3054d298a..dd4b8c3bd7 100644 --- a/hashes_test.go +++ b/hashes_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/memcpy_chk_windows.c b/memcpy_chk_windows.c index f14eee0fe0..d79118cdf3 100644 --- a/memcpy_chk_windows.c +++ b/memcpy_chk_windows.c @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merklearray/array.go b/merklearray/array.go index 6b783d8601..4e04b53383 100644 --- a/merklearray/array.go +++ b/merklearray/array.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merklearray/layer.go b/merklearray/layer.go index b1a9281fc0..45aa93ff84 100644 --- a/merklearray/layer.go +++ b/merklearray/layer.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merklearray/merkle.go b/merklearray/merkle.go index 803eb5a25d..b4591bf6b7 100644 --- a/merklearray/merkle.go +++ b/merklearray/merkle.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merklearray/merkle_test.go b/merklearray/merkle_test.go index 0f87474e52..9a1a5c0fd7 100644 --- a/merklearray/merkle_test.go +++ b/merklearray/merkle_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merklearray/partial.go b/merklearray/partial.go index c8e62f4dd0..a1d0861dcc 100644 --- a/merklearray/partial.go +++ b/merklearray/partial.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merklearray/proof.go b/merklearray/proof.go index 2670f69f15..e64479a968 100644 --- a/merklearray/proof.go +++ b/merklearray/proof.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merklearray/proof_test.go b/merklearray/proof_test.go index 4645dccb26..d3683689f6 100644 --- a/merklearray/proof_test.go +++ b/merklearray/proof_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merklearray/vectorCommitmentArray.go b/merklearray/vectorCommitmentArray.go index a9f9b3580c..c11e295aea 100644 --- a/merklearray/vectorCommitmentArray.go +++ b/merklearray/vectorCommitmentArray.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merklearray/vectorCommitmentArray_test.go b/merklearray/vectorCommitmentArray_test.go index d3a4ae0652..e3887880dc 100644 --- a/merklearray/vectorCommitmentArray_test.go +++ b/merklearray/vectorCommitmentArray_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merklearray/worker.go b/merklearray/worker.go index e7a4dc2228..2a8059336f 100644 --- a/merklearray/worker.go +++ b/merklearray/worker.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merklesignature/committablePublicKeys.go b/merklesignature/committablePublicKeys.go index 8c10cb2624..fd4a9f26a1 100644 --- a/merklesignature/committablePublicKeys.go +++ b/merklesignature/committablePublicKeys.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merklesignature/committablePublicKeys_test.go b/merklesignature/committablePublicKeys_test.go index a6884cc59d..08108b302f 100644 --- a/merklesignature/committablePublicKeys_test.go +++ b/merklesignature/committablePublicKeys_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merklesignature/const.go b/merklesignature/const.go index 767f14aaef..52d98390f7 100644 --- a/merklesignature/const.go +++ b/merklesignature/const.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merklesignature/kats_test.go b/merklesignature/kats_test.go index bc61ec47b2..610cdbab91 100644 --- a/merklesignature/kats_test.go +++ b/merklesignature/kats_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merklesignature/keysBuilder.go b/merklesignature/keysBuilder.go index 93553e7d5e..d284ca29b7 100644 --- a/merklesignature/keysBuilder.go +++ b/merklesignature/keysBuilder.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merklesignature/keysBuilder_test.go b/merklesignature/keysBuilder_test.go index ec9e487fe3..24f426e703 100644 --- a/merklesignature/keysBuilder_test.go +++ b/merklesignature/keysBuilder_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merklesignature/merkleSignatureScheme.go b/merklesignature/merkleSignatureScheme.go index b2763d496d..f11ecb9202 100644 --- a/merklesignature/merkleSignatureScheme.go +++ b/merklesignature/merkleSignatureScheme.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merklesignature/merkleSignatureScheme_test.go b/merklesignature/merkleSignatureScheme_test.go index db4f4e6e44..9b56cb11df 100644 --- a/merklesignature/merkleSignatureScheme_test.go +++ b/merklesignature/merkleSignatureScheme_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merklesignature/persistentMerkleSignatureScheme.go b/merklesignature/persistentMerkleSignatureScheme.go index 2ece3380da..c862dcb965 100644 --- a/merklesignature/persistentMerkleSignatureScheme.go +++ b/merklesignature/persistentMerkleSignatureScheme.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merklesignature/persistentMerkleSignatureScheme_test.go b/merklesignature/persistentMerkleSignatureScheme_test.go index 970daf903f..5885f1cf6d 100644 --- a/merklesignature/persistentMerkleSignatureScheme_test.go +++ b/merklesignature/persistentMerkleSignatureScheme_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merklesignature/posdivs.go b/merklesignature/posdivs.go index 9ce88d53e9..ac152234f4 100644 --- a/merklesignature/posdivs.go +++ b/merklesignature/posdivs.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merklesignature/posdivs_test.go b/merklesignature/posdivs_test.go index 579a1c3d5e..394c318705 100644 --- a/merklesignature/posdivs_test.go +++ b/merklesignature/posdivs_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merkletrie/bitset.go b/merkletrie/bitset.go index f7f2d78d09..3007372abd 100644 --- a/merkletrie/bitset.go +++ b/merkletrie/bitset.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merkletrie/bitset_test.go b/merkletrie/bitset_test.go index 758c3299e3..2fa5a35f92 100644 --- a/merkletrie/bitset_test.go +++ b/merkletrie/bitset_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merkletrie/cache.go b/merkletrie/cache.go index 4375825a28..208397edb9 100644 --- a/merkletrie/cache.go +++ b/merkletrie/cache.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merkletrie/cache_test.go b/merkletrie/cache_test.go index 15b14e6767..d9c7a23e30 100644 --- a/merkletrie/cache_test.go +++ b/merkletrie/cache_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merkletrie/committer.go b/merkletrie/committer.go index ac6fcd72c2..bad5fe7e0a 100644 --- a/merkletrie/committer.go +++ b/merkletrie/committer.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merkletrie/committer_test.go b/merkletrie/committer_test.go index 8152743023..6f8dfb2a78 100644 --- a/merkletrie/committer_test.go +++ b/merkletrie/committer_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merkletrie/node.go b/merkletrie/node.go index e4d3a18f3f..33c2f673ab 100644 --- a/merkletrie/node.go +++ b/merkletrie/node.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merkletrie/node_test.go b/merkletrie/node_test.go index 76121b5ae3..1495a8e9c0 100644 --- a/merkletrie/node_test.go +++ b/merkletrie/node_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merkletrie/trie.go b/merkletrie/trie.go index 22c03e1cec..7a214e7097 100644 --- a/merkletrie/trie.go +++ b/merkletrie/trie.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/merkletrie/trie_test.go b/merkletrie/trie_test.go index fd9b38d989..f71545962b 100644 --- a/merkletrie/trie_test.go +++ b/merkletrie/trie_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/multisig.go b/multisig.go index 62ec187a2b..d6f19bf4ab 100644 --- a/multisig.go +++ b/multisig.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/multisig_test.go b/multisig_test.go index 5035300d21..e7f4a17dab 100644 --- a/multisig_test.go +++ b/multisig_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/onetimesig.go b/onetimesig.go index 2aaa58bc0c..344fd33f77 100644 --- a/onetimesig.go +++ b/onetimesig.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/onetimesig_test.go b/onetimesig_test.go index af60a3c736..143bb5c162 100644 --- a/onetimesig_test.go +++ b/onetimesig_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/passphrase/errors.go b/passphrase/errors.go index 7785ca256d..0a50d59c49 100644 --- a/passphrase/errors.go +++ b/passphrase/errors.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/passphrase/passphrase.go b/passphrase/passphrase.go index f90593ce53..0f0d09d34c 100644 --- a/passphrase/passphrase.go +++ b/passphrase/passphrase.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/passphrase/passphrase_test.go b/passphrase/passphrase_test.go index 3874f57e0c..543ed5fd77 100644 --- a/passphrase/passphrase_test.go +++ b/passphrase/passphrase_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/passphrase/wordlist.go b/passphrase/wordlist.go index 4da8591359..670a72b3d7 100644 --- a/passphrase/wordlist.go +++ b/passphrase/wordlist.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/rand.go b/rand.go index 729e01c17b..99f22e1457 100644 --- a/rand.go +++ b/rand.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/rand_test.go b/rand_test.go index 5f69fd55ce..129f831714 100644 --- a/rand_test.go +++ b/rand_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/stateproof/builder.go b/stateproof/builder.go index 3f85656ab4..0e86fa8942 100644 --- a/stateproof/builder.go +++ b/stateproof/builder.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/stateproof/builder_test.go b/stateproof/builder_test.go index 780262e851..6938a4b17e 100644 --- a/stateproof/builder_test.go +++ b/stateproof/builder_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/stateproof/coinGenerator.go b/stateproof/coinGenerator.go index fa88c57706..1c019c869f 100644 --- a/stateproof/coinGenerator.go +++ b/stateproof/coinGenerator.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/stateproof/coinGenerator_test.go b/stateproof/coinGenerator_test.go index 39f3d760c8..d15091f6d0 100644 --- a/stateproof/coinGenerator_test.go +++ b/stateproof/coinGenerator_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/stateproof/committableSignatureSlot.go b/stateproof/committableSignatureSlot.go index 78aef90ec0..7ae0e8ac53 100644 --- a/stateproof/committableSignatureSlot.go +++ b/stateproof/committableSignatureSlot.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/stateproof/committableSignatureSlot_test.go b/stateproof/committableSignatureSlot_test.go index 811c79c4df..b2519cea6c 100644 --- a/stateproof/committableSignatureSlot_test.go +++ b/stateproof/committableSignatureSlot_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/stateproof/const.go b/stateproof/const.go index a9dab2813d..eefe0d1a93 100644 --- a/stateproof/const.go +++ b/stateproof/const.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/stateproof/structs.go b/stateproof/structs.go index d8e0b6883d..7ee599b7ae 100644 --- a/stateproof/structs.go +++ b/stateproof/structs.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/stateproof/verifier.go b/stateproof/verifier.go index 892c9d4770..67d83068f1 100644 --- a/stateproof/verifier.go +++ b/stateproof/verifier.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/stateproof/verifier_test.go b/stateproof/verifier_test.go index 91ee123119..23a5fac3ad 100644 --- a/stateproof/verifier_test.go +++ b/stateproof/verifier_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/stateproof/weights.go b/stateproof/weights.go index 8d0bdd13dc..aa849ec6a9 100644 --- a/stateproof/weights.go +++ b/stateproof/weights.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/stateproof/weights_test.go b/stateproof/weights_test.go index d7a6948970..5800c49f54 100644 --- a/stateproof/weights_test.go +++ b/stateproof/weights_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/util.go b/util.go index 2ee4ee7941..aa8dd3cfc4 100644 --- a/util.go +++ b/util.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/util_test.go b/util_test.go index 281d78a1de..667da0bcd0 100644 --- a/util_test.go +++ b/util_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/vrf.go b/vrf.go index dfc2fbf1c6..bfdf4ec407 100644 --- a/vrf.go +++ b/vrf.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify diff --git a/vrf_test.go b/vrf_test.go index 72c7f68b3a..22b3e75277 100644 --- a/vrf_test.go +++ b/vrf_test.go @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2022 Algorand, Inc. +// Copyright (C) 2019-2023 Algorand, Inc. // This file is part of go-algorand // // go-algorand is free software: you can redistribute it and/or modify