From 7cb57b6f962fb0d64af1a993c060f50e05be32aa Mon Sep 17 00:00:00 2001 From: "ALGO Tables (Jeff S.)" <105945985+algotables@users.noreply.github.com> Date: Sat, 11 May 2024 13:21:09 -0700 Subject: [PATCH] Fix signer handling in AtomicTransactionComposer Resolved the TypeError by correctly implementing the signer function using algosdk.makeBasicAccountTransactionSigner. This change ensures that the AtomicTransactionComposer correctly processes the signing of transactions, enabling successful atomic transfers of ALGOs between accounts. --- challenge/index.ts | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/challenge/index.ts b/challenge/index.ts index e459cef..5ac1757 100644 --- a/challenge/index.ts +++ b/challenge/index.ts @@ -42,10 +42,15 @@ const ptxn2 = algosdk.makePaymentTxnWithSuggestedParamsFromObject({ amount: 2000000, // 2 ALGOs }); -const atc = new algosdk.AtomicTransactionComposer() -atc.addTransaction({txn: ptxn1, signer: sender}) -atc.addTransaction({txn: ptxn2, signer: sender}) +// Assuming sender comes with a secret key or you can derive it from the mnemonic: +const signer = algosdk.makeBasicAccountTransactionSigner(sender); -const result = await algokit.sendAtomicTransactionComposer({atc:atc, sendParams: {suppressLog:true}}, algodClient) -console.log(`The first payment transaction sent ${result.transactions[0].amount} microAlgos and the second payment transaction sent ${result.transactions[1].amount} microAlgos`) +const atc = new algosdk.AtomicTransactionComposer(); +// Now pass the signer as a function to each transaction +atc.addTransaction({ txn: ptxn1, signer: signer }); +atc.addTransaction({ txn: ptxn2, signer: signer }); + +// Now your code for executing the transaction composer should work as expected: +const result = await algokit.sendAtomicTransactionComposer({ atc: atc, sendParams: { suppressLog: true } }, algodClient); +console.log(`The first payment transaction sent ${result.transactions[0].amount} microAlgos and the second payment transaction sent ${result.transactions[1].amount} microAlgos`);