From ef535165f97d64dc643babb3ea593067bbf4fe95 Mon Sep 17 00:00:00 2001 From: Aryaman Jain Date: Wed, 15 May 2024 17:35:03 +0000 Subject: [PATCH] flamenco: add instrs reset to txn generation --- src/flamenco/txn/fd_txn_generate.c | 14 ++++++++++++++ src/flamenco/txn/fd_txn_generate.h | 6 ++++++ 2 files changed, 20 insertions(+) diff --git a/src/flamenco/txn/fd_txn_generate.c b/src/flamenco/txn/fd_txn_generate.c index 39816e51c0..0628fbe35b 100644 --- a/src/flamenco/txn/fd_txn_generate.c +++ b/src/flamenco/txn/fd_txn_generate.c @@ -142,3 +142,17 @@ fd_txn_add_instr( uchar * txn_meta_ptr, data_sz, acct_off, data_off ); return (ulong)(write_ptr - out_txn_payload); } + +void +fd_txn_reset_instrs( uchar * txn_meta_ptr, + uchar out_txn_payload[ static FD_TXN_MTU ] ) { + fd_txn_t * txn_meta = (fd_txn_t *)txn_meta_ptr; + ulong instr_start = txn_meta->recent_blockhash_off + FD_TXN_BLOCKHASH_SZ; + + ushort num_instrs = txn_meta->instr_cnt; + ulong instrs_sz = txn_meta->instr[num_instrs-1].data_off + txn_meta->instr[num_instrs-1].data_sz - instr_start; + + fd_memset( (out_txn_payload + instr_start), 0UL, instrs_sz ); + fd_memset( txn_meta->instr, 0UL, num_instrs * sizeof(fd_txn_instr_t) ); + txn_meta->instr_cnt = 0; +} diff --git a/src/flamenco/txn/fd_txn_generate.h b/src/flamenco/txn/fd_txn_generate.h index d7a107c90c..76496166b9 100644 --- a/src/flamenco/txn/fd_txn_generate.h +++ b/src/flamenco/txn/fd_txn_generate.h @@ -46,4 +46,10 @@ fd_txn_add_instr( uchar * txn_meta_ptr, ulong accounts_sz, uchar const * instr_buf, ulong instr_buf_sz ); + +/* Helper method to reset the list of instrs in the metadata and + remove all instrs from the txn payload. */ +void +fd_txn_reset_instrs( uchar * txn_meta_ptr, + uchar out_txn_payload[ static FD_TXN_MTU ] ); FD_PROTOTYPES_END