Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

txHandler: batch transactions to the verifier #4621

Merged
merged 185 commits into from
Dec 29, 2022
Merged
Show file tree
Hide file tree
Changes from 179 commits
Commits
Show all changes
185 commits
Select commit Hold shift + click to select a range
3608cf9
rename and unexport local functions
algonautshant Sep 23, 2022
05d63ae
update the tests
algonautshant Sep 23, 2022
58e4d3f
update a test
algonautshant Sep 23, 2022
1e96dd6
update test err msg
algonautshant Sep 23, 2022
2db4ee5
CR updates
algonautshant Sep 26, 2022
b0ef3a0
add test and refactoring
algonautshant Sep 27, 2022
530e3a3
Merge remote-tracking branch 'origin/shant/verify_renamings' into sha…
algonautshant Sep 27, 2022
caca719
CR comments
algonautshant Sep 27, 2022
754f0fb
cache txn when only logicsig
algonautshant Sep 28, 2022
d2f8e16
fix comment
algonautshant Sep 28, 2022
bd3697a
draft
algonautshant Sep 26, 2022
179d064
fixes
algonautshant Sep 27, 2022
363e7cd
get Verify failed sig indexes. Add tests
algonautshant Sep 28, 2022
eaa8dc4
rebase
algonautshant Sep 28, 2022
204c710
initial draft
algonautshant Sep 30, 2022
620c271
Verify: chekcout failed sig indexes
algonautshant Sep 28, 2022
0b61671
reuse the func
algonautshant Sep 30, 2022
bf128b1
fix code merge issue
algonautshant Sep 30, 2022
c31a8ee
return txn results
algonautshant Sep 30, 2022
ffaeee4
Merge remote-tracking branch 'upstream/master' into shant/txn_batch_v…
algonautshant Sep 30, 2022
18a2397
testing
algonautshant Oct 1, 2022
f7fc5f4
more progress
algonautshant Oct 1, 2022
b89e82f
fixes
algonautshant Oct 2, 2022
15a8898
working draft
algonautshant Oct 2, 2022
8c392f0
block wait when no seats and batch is full
algonautshant Oct 2, 2022
ae18181
tiny simplification
algonautshant Oct 2, 2022
fe97bfe
CR: fix comment
algonautshant Oct 3, 2022
50933d6
CR: refactor the new interface
algonautshant Oct 3, 2022
7bc7e8f
formatting
algonautshant Oct 3, 2022
eb05ef4
Merge remote-tracking branch 'origin/shant/verify_failed_indexes' int…
algonautshant Oct 3, 2022
13d4701
more refactoring
algonautshant Oct 3, 2022
4ad80d9
gofmt
algonautshant Oct 3, 2022
4bf68b1
Merge remote-tracking branch 'origin/shant/verify_failed_indexes' int…
algonautshant Oct 4, 2022
09bf3c2
fix merge conflicts
algonautshant Oct 4, 2022
6081a6e
partial refactoring for adapting to asyncVerify model
algonautshant Oct 5, 2022
01700bb
add new block watcher
algonautshant Oct 6, 2022
1bb5771
more on txHandler
algonautshant Oct 6, 2022
d1d3df3
fix the test
algonautshant Oct 6, 2022
9b13063
add comments and fix lint issues
algonautshant Oct 6, 2022
17379ba
Merge remote-tracking branch 'upstream/master' into shant/txn_batch_v…
algonautshant Oct 6, 2022
ad0887b
cleanup
algonautshant Oct 6, 2022
04a3fe8
merge conflict fix
algonautshant Oct 6, 2022
94a9d61
merge fallouts
algonautshant Oct 7, 2022
ed49a2c
refactoring in txHandler
algonautshant Oct 7, 2022
1be683e
fix merge fallout
algonautshant Oct 7, 2022
852b3bf
improved timing management and refactoring
algonautshant Oct 8, 2022
948c316
draft of perf test
algonautshant Oct 12, 2022
ecbab6d
progress on perf
algonautshant Oct 13, 2022
1339a1d
gofmt
algonautshant Oct 13, 2022
82ba3d5
more pregress on the benchmark
algonautshant Oct 14, 2022
5ab00b9
benchmark fixed
algonautshant Oct 14, 2022
103113c
benchmark and other improvements
algonautshant Oct 14, 2022
702d246
comments
algonautshant Oct 14, 2022
66dd43e
cleanup before pushing check to execpool
algonautshant Oct 15, 2022
4f085b7
gofmt
algonautshant Oct 15, 2022
6767458
move the checks to inside exec pool task
algonautshant Oct 17, 2022
febee12
a fix
algonautshant Oct 18, 2022
1c88acd
fix bug
algonautshant Oct 18, 2022
6f2794f
some more progress
algonautshant Oct 19, 2022
e4d3374
try higher error rate
algonautshant Oct 19, 2022
a4de8ca
add benchmarks to evaluate the batching performance gains as the batc…
algonautshant Oct 20, 2022
5265923
gofmt
algonautshant Oct 20, 2022
9644982
benchmark without backlog
algonautshant Oct 21, 2022
0c168e9
organize the test and the benchmark
algonautshant Oct 21, 2022
8bc985f
Merge branch 'master' into shant/txn_batch_verify
algonautshant Oct 21, 2022
dc19700
reorganizing the benchmark into a test and a benchmark
algonautshant Oct 22, 2022
91bd758
cleanup
algonautshant Oct 22, 2022
e834b74
comments
algonautshant Oct 22, 2022
5a98a95
test cleanup
algonautshant Oct 24, 2022
64311b2
gofmt
algonautshant Oct 24, 2022
3c5cfa7
Merge remote-tracking branch 'upstream/master' into shant/txn_batch_v…
algonautshant Oct 25, 2022
9ea27d1
move the ctx check. check the error to avoid lint error
algonautshant Oct 25, 2022
d8fb642
fix stateproof handling: not error if no sigs for SP, no seats for SP
algonautshant Oct 25, 2022
5a7639f
remove extra close chan
algonautshant Oct 25, 2022
4ce3b32
no way to close the verifier input channel
algonautshant Oct 25, 2022
913472d
Merge branch 'master' into shant/txn_batch_verify
algonautshant Oct 25, 2022
81a49c5
support for stop/start
algonautshant Oct 26, 2022
b2267ca
lint/ comments
algonautshant Oct 26, 2022
f2787ab
fix and improve the test
algonautshant Oct 27, 2022
4c69a29
error handling cleanup
algonautshant Oct 27, 2022
06ed13f
lint fix
algonautshant Oct 27, 2022
c2108e9
gofmt
algonautshant Oct 27, 2022
d0a6b3d
fix caching bug, add caching to the test
algonautshant Oct 31, 2022
0587ec5
add test for different txn cases
algonautshant Nov 1, 2022
ccf30dc
revert whitespace change
algonautshant Nov 1, 2022
2182ae9
CR comments
algonautshant Nov 1, 2022
6ac8f50
add logicsig test
algonautshant Nov 2, 2022
fbd693a
refactor the tests
algonautshant Nov 2, 2022
b2e6c44
golint fix
algonautshant Nov 2, 2022
fcc3661
CR
algonautshant Nov 2, 2022
53da268
fix test race condition appearance
algonautshant Nov 2, 2022
f4f19fe
Merge remote-tracking branch 'origin/shant/txn_batch_verify' into sha…
algonautshant Nov 2, 2022
8e2b863
CR improvements: (1) increase wait time from 1 to 20ms (2) drop pendi…
algonautshant Nov 3, 2022
6d868fb
CR perf improvement in for loop
algonautshant Nov 3, 2022
b30fb15
CR: use pointer to avoid copy
algonautshant Nov 3, 2022
e085d9d
CR: for loop avoid copy
algonautshant Nov 3, 2022
983f6e1
CR: use pointer for passing BlockHeader
algonautshant Nov 3, 2022
d637784
Merge remote-tracking branch 'origin/shant/txn_batch_verify' into sha…
algonautshant Nov 3, 2022
598c474
CR: pass around point to the block header
algonautshant Nov 3, 2022
4fcacb2
CR: shortcut when all passed
algonautshant Nov 3, 2022
a86659a
merge fix
algonautshant Nov 3, 2022
9749709
gofmt and return val
algonautshant Nov 3, 2022
a639935
CR: rename Context to backlogMessage
algonautshant Nov 4, 2022
9d61283
CR: cleanup error messages
algonautshant Nov 4, 2022
e30d9a4
CR: (1) replace the seats count with the exec bool buffer size. (2) b…
algonautshant Nov 5, 2022
a756aaf
(1) do not block sending messages during shutdown, (2) test error mes…
algonautshant Nov 5, 2022
4e6ef67
test progress
algonautshant Nov 17, 2022
6f51936
Merge remote-tracking branch 'upstream/master' into shant/txn_batch_v…
algonautshant Nov 17, 2022
b9d3e81
Merge remote-tracking branch 'upstream/master' into shant/txn_batch_v…
algonautshant Nov 17, 2022
7476588
fix tests
algonautshant Nov 17, 2022
db1c502
draft test is not ready
algonautshant Nov 17, 2022
6fad429
gofmt
algonautshant Nov 17, 2022
523a539
merge conflict fixes
algonautshant Nov 17, 2022
4759d8e
golint fixes
algonautshant Nov 17, 2022
7a6edf7
CR comments
algonautshant Nov 18, 2022
522562b
add test for sig counting
algonautshant Nov 18, 2022
1a2c0fe
Merge remote-tracking branch 'upstream/master' into shant/txn_batch_v…
algonautshant Nov 18, 2022
284e950
Merge remote-tracking branch 'upstream/master' into shant/txn_batch_v…
algonautshant Nov 19, 2022
3509114
fix batch verifier restart context
algonautshant Nov 19, 2022
75c568a
fix test with new interface
algonautshant Nov 19, 2022
7a246fc
update test
algonautshant Nov 19, 2022
29cd209
fix wg done
algonautshant Nov 19, 2022
ddb923f
add pool shutdown test
algonautshant Nov 19, 2022
4076e42
gofmt
algonautshant Nov 19, 2022
b2d216b
fix bench
algonautshant Nov 21, 2022
c17a9cc
limit the number of times a batch is held from the exec pool when the…
algonautshant Nov 21, 2022
777e0ac
Code: Fix cleanup param, block cleanup on return chan, hold task if b…
algonautshant Nov 22, 2022
f72489d
Use postVerificationQueue directly for returning results from StreamV…
algonautshant Nov 23, 2022
f83101b
add benchmark with backlog worker
algonautshant Nov 23, 2022
8245b96
renaming/refactoring
algonautshant Nov 23, 2022
81d744a
fix comment
algonautshant Nov 23, 2022
e6515a0
Fix race condition and add a test for the block watcher
algonautshant Nov 24, 2022
1c663a2
fix test
algonautshant Nov 28, 2022
6c0b067
CR: addressing multiple review comments.
algonautshant Nov 28, 2022
1b638c7
CR: comments/renaming
algonautshant Nov 29, 2022
4485921
Merge remote-tracking branch 'upstream/master' into shant/txn_batch_v…
algonautshant Nov 29, 2022
b6aa2ae
introduce LedgerForStreamVerifier and remove Fatal
cce Nov 30, 2022
1f5da28
Merge pull request #6 from cce/streamverifier-isolation
algonautshant Nov 30, 2022
59eb8a3
fix tests after the changes merged from Chris
algonautshant Nov 30, 2022
9895d6e
cr: store block hdr as pointer for new block watcher.
algonautshant Dec 1, 2022
ffefbe3
fix golint
algonautshant Dec 1, 2022
abadf87
Merge remote-tracking branch 'upstream/master' into shant/txn_batch_v…
algonautshant Dec 1, 2022
9c2b0ef
fix: when the context is cancled, the streamVerifier input chan will
algonautshant Dec 2, 2022
1c0ea91
Merge remote-tracking branch 'upstream/master' into shant/txn_batch_v…
algonautshant Dec 3, 2022
fbedc88
shutdown verification pool in tests
algonautshant Dec 3, 2022
7705a78
test with the real backlog worker restarting txHandler
algonautshant Dec 5, 2022
46cdd27
CR comments
algonautshant Dec 5, 2022
c0d636f
CR: var renames, other movements
algonautshant Dec 6, 2022
ce12fac
Merge remote-tracking branch 'upstream/master' into shant/txn_batch_v…
algonautshant Dec 6, 2022
18ce271
replace mutex with atomic in NewBlockWatcher
algonautshant Dec 6, 2022
30e0b14
do not print warn/debug messages in these tests
algonautshant Dec 6, 2022
2b364d5
CR fixes
algonautshant Dec 12, 2022
f9299c3
Merge remote-tracking branch 'upstream/master' into shant/txn_batch_v…
algonautshant Dec 13, 2022
a5754da
fix mege conflicts
algonautshant Dec 13, 2022
3ff8cbf
add waitforstop functionality to txSaltedCache to avoid race conditio…
algonautshant Dec 13, 2022
95923c2
fix lint
algonautshant Dec 13, 2022
fa5591f
msig benchmark first draft
algonautshant Dec 14, 2022
bc47cf7
- multisig prep in parallel
algonautshant Dec 15, 2022
ae64c65
gofmt -s
algonautshant Dec 15, 2022
df65d12
msgp gen
algonautshant Dec 15, 2022
7628495
msgp
algonautshant Dec 15, 2022
0529bd9
fix sig invalidation
algonautshant Dec 15, 2022
258037b
Merge remote-tracking branch 'upstream/master' into shant/multisig_be…
algonautshant Dec 15, 2022
0fef8cc
use available cpus
algonautshant Dec 15, 2022
6dab0a0
slow test treatment
algonautshant Dec 15, 2022
956d627
Merge remote-tracking branch 'upstream/master' into shant/txn_batch_v…
algonautshant Dec 15, 2022
3c11c9a
merge fallout
algonautshant Dec 16, 2022
ba4550b
use deadlock mutex
algonautshant Dec 16, 2022
cb0f2b8
disable dedup when reuing txn with backlog worker
algonautshant Dec 16, 2022
2778ba6
blank line
algonautshant Dec 16, 2022
77d2a4e
Merge remote-tracking branch 'upstream/master' into shant/txn_batch_v…
algonautshant Dec 17, 2022
14ddd24
Merge remote-tracking branch 'upstream/master' into shant/txn_batch_v…
algonautshant Dec 19, 2022
fc8c960
CR: simplify timer ticks
algonautshant Dec 23, 2022
43f5a3d
Merge remote-tracking branch 'upstream/master' into shant/txn_batch_v…
algonautshant Dec 23, 2022
9f6a62c
update the test
algonautshant Dec 23, 2022
0c04cf7
fix code merge issue
algonautshant Dec 23, 2022
0d9a233
fix test stability issue
algonautshant Dec 23, 2022
1447f35
Merge remote-tracking branch 'upstream/master' into shant/txn_batch_v…
algonautshant Dec 24, 2022
74c4cb1
CR: shorten waitForNextTxnDuration 5->2, slice init sizes
algonautshant Dec 27, 2022
28ee4b9
Merge remote-tracking branch 'upstream/master' into shant/txn_batch_v…
algonautshant Dec 28, 2022
964e560
CR: refactor and other fixes
algonautshant Dec 28, 2022
c647731
CR: log execpool shutdown event and test for the log message
algonautshant Dec 28, 2022
7361010
fix rename in tests
algonautshant Dec 29, 2022
2d4d8d9
CR: do not recheck sig types
algonautshant Dec 29, 2022
bab964b
CR: remove unused err types and fix the test checking for the errors
algonautshant Dec 29, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions agreement/asyncVoteVerifier_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ func (fp *expiredExecPool) EnqueueBacklog(enqueueCtx context.Context, t execpool
// generate an error, to see if we correctly report that on the verifyVote() call.
return context.Canceled
}
func (fp *expiredExecPool) BufferSize() (length, capacity int) {
return
}

// Test async vote verifier against a full execution pool.
func TestVerificationAgainstFullExecutionPool(t *testing.T) {
Expand Down
4 changes: 2 additions & 2 deletions cmd/goal/clerk.go
Original file line number Diff line number Diff line change
Expand Up @@ -422,7 +422,7 @@ var sendCmd = &cobra.Command{
CurrentProtocol: proto,
},
}
groupCtx, err := verify.PrepareGroupContext([]transactions.SignedTxn{uncheckedTxn}, blockHeader, nil)
groupCtx, err := verify.PrepareGroupContext([]transactions.SignedTxn{uncheckedTxn}, &blockHeader, nil)
if err == nil {
err = verify.LogicSigSanityCheck(&uncheckedTxn, 0, groupCtx)
}
Expand Down Expand Up @@ -823,7 +823,7 @@ var signCmd = &cobra.Command{
}
var groupCtx *verify.GroupContext
if lsig.Logic != nil {
groupCtx, err = verify.PrepareGroupContext(txnGroup, contextHdr, nil)
groupCtx, err = verify.PrepareGroupContext(txnGroup, &contextHdr, nil)
if err != nil {
// this error has to be unsupported protocol
reportErrorf("%s: %v", txFilename, err)
Expand Down
16 changes: 8 additions & 8 deletions crypto/batchverifier.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
}

Expand All @@ -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.
Expand Down
72 changes: 67 additions & 5 deletions crypto/batchverifier_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package crypto

import (
"fmt"
"math/rand"
"runtime"
"testing"
Expand Down Expand Up @@ -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())
}

Expand Down Expand Up @@ -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()
Expand Down Expand Up @@ -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)
}
Expand All @@ -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)
}
Expand Down
2 changes: 1 addition & 1 deletion data/ledger.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ type roundSeed struct {
func LoadLedger(
log logging.Logger, dbFilenamePrefix string, memory bool,
genesisProto protocol.ConsensusVersion, genesisBal bookkeeping.GenesisBalances, genesisID string, genesisHash crypto.Digest,
blockListeners []ledger.BlockListener, cfg config.Local,
blockListeners []ledgercore.BlockListener, cfg config.Local,
) (*Ledger, error) {
if genesisBal.Balances == nil {
genesisBal.Balances = make(map[basics.Address]basics.AccountData)
Expand Down
4 changes: 2 additions & 2 deletions data/transactions/verify/artifact_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ func BenchmarkTinyMan(b *testing.B) {

b.ResetTimer()
for i := 0; i < b.N; i++ {
_, err := TxnGroup(stxnss[i], hdr, nil, &logic.NoHeaderLedger{})
_, err := TxnGroup(stxnss[i], &hdr, nil, &logic.NoHeaderLedger{})
require.NoError(b, err)
}
})
Expand All @@ -93,7 +93,7 @@ func BenchmarkTinyMan(b *testing.B) {

b.ResetTimer()
for i := 0; i < b.N; i++ {
_, err := TxnGroup(stxns, hdr, nil, &logic.NoHeaderLedger{})
_, err := TxnGroup(stxns, &hdr, nil, &logic.NoHeaderLedger{})
require.NoError(b, err)
}
})
Expand Down
Loading