Working with javascript SDK for Atomic Transaction

Hey! I am working on Atomic Transaction and i am facing this error:

TypeError: Array elements must be byte arrays
    at new SendRawTransaction

My Code is as follows:

const atomicTransaction = (async () => {

    let params = await algodClient.getTransactionParams().do();

    let amount = Math.floor(Math.random() * 1000);
    var mnemonic = "bid address sibling timber either various stumble skin coral stock caught quarter proof brave tattoo useful ship glory limb load weapon parent pistol absent cattle"
    var recoveredAccount = algosdk.mnemonicToSecretKey(mnemonic);
    let names1 = '{"firstName":"Mo", "lastName":"TW"}';
    let names2 = '{"firstName":"Au", "lastName":"Liau"}';
    let names3 = '{"firstName":"Tau", "lastName":"TT"}';

    let txn1 = {
        "from": recoveredAccount.addr,
        "to": "KILVDKGGW4USADYMF67LWU47FZIZCKAQSJZTKLGWQW2NOSAWOPG5YGXQYE",
        "fee": 1,
        "amount": amount,
        "firstRound": params.firstRound,
        "lastRound": params.lastRound,
        "genesisID": params.genesisID,
        "genesisHash": params.genesisHash,
        "note": new Uint8Array(new TextEncoder().encode(names1)),
    };
    console.log(txn1)
    let txn2 = {
        "from": recoveredAccount.addr,
        "to": "GF3LRLD7XRHE5GLWIVMRX3ESFHEZNAFZJSXHB2TMNPMB5V3HKS6SPQ7VCU",
        "fee": 1,
        "amount": amount,
        "firstRound": params.firstRound,
        "lastRound": params.lastRound,
        "genesisID": params.genesisID,
        "genesisHash": params.genesisHash,
        "note": new Uint8Array(new TextEncoder().encode(names2)),
    };
    console.log(txn2)
    let txn3 = {
        "from": recoveredAccount.addr,
        "to": "KD3DOFNWGWBFVZUNCS5JYIUOSJMC6VECXKTY6WXMQQBPEPD4ZXQNH76GGY",
        "fee": 1,
        "amount": amount,
        "firstRound": params.firstRound,
        "lastRound": params.lastRound,
        "genesisID": params.genesisID,
        "genesisHash": params.genesisHash,
        "note": new Uint8Array(new TextEncoder().encode(names3)),
    };
    console.log(txn3)
    // assign group id to transactions
    algosdk.assignGroupID([txn1, txn2, txn3]);
    // sign transactions
    let signedTxn1 = algosdk.signTransaction(txn1, recoveredAccount.sk);
    let signedTxn2 = algosdk.signTransaction(txn2, recoveredAccount.sk);
    let signedTxn3 = algosdk.signTransaction(txn3, recoveredAccount.sk);
    // const signedTxn1 = txn1.signTxn(recoveredAccount.sk);
    // const signedTxn2 = txn2.signTxn(recoveredAccount.sk);
    // const signedTxn3 = txn3.signTxn(recoveredAccount.sk);
    // let sendTx = await algodClient.sendRawTransaction(signedTxn.blob).do();
     // send transactions (note that the accounts need to be funded for this to work)
    console.log('Sending transactions...');
    const sendTx = await algodClient
        .sendRawTransaction([signedTxn1, signedTxn2, signedTxn3])
        .do();

    console.log("Transaction : " + sendTx.txId);
})().catch(e => {
    console.log(e);
});

Can i get help where the error is.

All I can say, that it should work, using the latest JavaScript sdk:

	<script 
	  src="https://cdn.jsdelivr.net/npm/algosdk@v1.15.0/dist/browser/algosdk.min.js" 
	  integrity="sha384-wURu1H0s7z6Nj/AiP4O+0EorWZNvjiXwex7pNwtJH77x60mNs0Wm2zR37iUtHMwH" 
	  crossorigin="anonymous">
	</script>

@Maugli I am using JavaScript not Java

I know. I referred to the correct algosdk.min.js

1 Like