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

msgpack decode error [pos 294]: only encoded map or array can be decoded into a struct #35

Closed
ghost opened this issue Jun 13, 2022 · 2 comments
Labels
help wanted Extra attention is needed question Further information is requested

Comments

@ghost
Copy link

ghost commented Jun 13, 2022

Getting err mentioned in the title on submitting the swap group transaction

Right now i am using node v 14.0 and algosdk version 1.17.0

Steps to reproduce

so here is what we are doing we are trying to swap using tinyman sdk we have a backend i send him params req to do swapping there he creates 4 transaction ( a group transaction) 2 of which are meant to be signed by tinyman sdk and two are meant to be signed by the frontend aka the person who is trying to do the swapping ... so what backend does is he signs the txn that needs to be signed by the backend and send me the all 4 txns ... i sign the remaining 2 txns and create a array and submit those ... while submitting that txn i get the msgpack error at pos: 294

here is the code that i am performing on the frontend

                             const decoded_txn1 = algosdk.decodeSignedTransaction(
				Buffer.from(res.data.signed_txn.stxn1, "base64")
			).lsig?.l;
			console.log(
				"the decoded txn is :",
				algosdk.decodeSignedTransaction(
					Buffer.from(res.data.signed_txn.stxn1, "base64")
				)
			);
			const decoded_txn2 = algosdk.decodeSignedTransaction(
				Buffer.from(res.data.signed_txn.stxn2, "base64")
			).lsig?.l;
			console.log(
				"the decoded txn is :",
				algosdk.decodeSignedTransaction(
					Buffer.from(res.data.signed_txn.stxn2, "base64")
				)
			);
			// const txnId1 = await myAlgoConnect.signTransaction(res.data[0].txn);
			const signedTxns: any = await myAlgoConnect.signTransaction(
				[res.data.unsigned_txn.txn1, res.data.unsigned_txn.txn2].map(
					(txn: any) => txn
				)
			);
			console.log("the signed txn is :", signedTxns);
			const signed = [];
			signed.push(signedTxns[0].blob);
			signed.push(decoded_txn1);
			signed.push(signedTxns[1].blob);
			signed.push(decoded_txn2);

			console.log("the signe array is :", signed);

			let tx = await client.sendRawTransaction(signed).do();
			console.log("Transaction : " + tx.txId);
			let confirmedTxn = await algosdk.waitForConfirmation(
				client,
				tx.txId,
				4
			);
			console.log("the confirmed txn is :", confirmedTxn);
		}

-the res.data.signed_txn are the txn that are already signed by the backend
-the res.data.unsigned_txn are the txn that needs to be signed by the frontend

the data that i am getting from backend is
{ "signed_txn": { "stxn1": "gqRsc2lngaFsxQNcBCAIAQAAva7+BAMEBQYlJA1EMQkyAxJEMRUyAxJEMSAyAxJEMgQiDUQzAQAxABJEMwEQIQcSRDMBGIGs194dEkQzARkiEjMBGyEEEhA3ARoAgAlib290c3RyYXASEEAAXDMBGSMSRDMBG4ECEjcBGgCABHN3YXASEEACOzMBGyISRDcBGgCABG1pbnQSQAE7NwEaAIAEYnVybhJAAZg3ARoAgAZyZWRlZW0SQAJbNwEaAIAEZmVlcxJAAnkAIQYhBSQjEk0yBBJENwEaARclEjcBGgIXJBIQRDMCADEAEkQzAhAhBBJEMwIhIxJEMwIiIxwSRDMCIyEHEkQzAiQjEkQzAiWACFRNUE9PTDExEkQzAiZRAA+AD1RpbnltYW5Qb29sMS4xIBJEMwIngBNodHRwczovL3RpbnltYW4ub3JnEkQzAikyAxJEMwIqMgMSRDMCKzIDEkQzAiwyAxJEMwMAMQASRDMDECEFEkQzAxElEkQzAxQxABJEMwMSIxJEJCMTQAAQMwEBMwIBCDMDAQg1AUIBsTMEADEAEkQzBBAhBRJEMwQRJBJEMwQUMQASRDMEEiMSRDMBATMCAQgzAwEIMwQBCDUBQgF8MgQhBhJENwEcATEAE0Q3ARwBMwQUEkQzAgAxABNEMwIUMQASRDMDADMCABJEMwIRJRJEMwMUMwMHMwMQIhJNMQASRDMDESMzAxAiEk0kEkQzBAAxABJEMwQUMwIAEkQzAQEzBAEINQFCAREyBCEGEkQ3ARwBMQATRDcBHAEzAhQSRDMDFDMDBzMDECISTTcBHAESRDMCADEAEkQzAhQzBAASRDMCESUSRDMDADEAEkQzAxQzAwczAxAiEk0zBAASRDMDESMzAxAiEk0kEkQzBAAxABNEMwQUMQASRDMBATMCAQgzAwEINQFCAJAyBCEFEkQ3ARwBMQATRDMCADcBHAESRDMCADEAE0QzAwAxABJEMwIUMwIHMwIQIhJNMQASRDMDFDMDBzMDECISTTMCABJEMwEBMwMBCDUBQgA+MgQhBBJENwEcATEAE0QzAhQzAgczAhAiEk03ARwBEkQzAQEzAgEINQFCABIyBCEEEkQzAQEzAgEINQFCAAAzAAAxABNEMwAHMQASRDMACDQBD0OjdHhujKRhcGFhksQEc3dhcMQCZmmkYXBhc5LOAJ+XPc4DuCvcpGFwYXSRxCAEzdCClExhS38IXK2Ty2C4ALvYIPveAQnXc4K5GMZ0K6RhcGlkzgO3q6yjZmVlzQPoomZ2zgFSlVujZ2VurHRlc3RuZXQtdjEuMKJnaMQgSGO1GKSzyE7IEPItTxCByw9x8FmnrCDexi9/cOUJOiKjZ3JwxCASDWuTSLUW+zDJsUot+B3TCItojg+n8oHeoe7ZC2teaKJsds4BUplDo3NuZMQgS4jy0Gb7ZcISjP2zb5geqse5Tl0YxJsqRg6gs6LDLoSkdHlwZaRhcHBs", "stxn2": "gqRsc2lngaFsxQNcBCAIAQAAva7+BAMEBQYlJA1EMQkyAxJEMRUyAxJEMSAyAxJEMgQiDUQzAQAxABJEMwEQIQcSRDMBGIGs194dEkQzARkiEjMBGyEEEhA3ARoAgAlib290c3RyYXASEEAAXDMBGSMSRDMBG4ECEjcBGgCABHN3YXASEEACOzMBGyISRDcBGgCABG1pbnQSQAE7NwEaAIAEYnVybhJAAZg3ARoAgAZyZWRlZW0SQAJbNwEaAIAEZmVlcxJAAnkAIQYhBSQjEk0yBBJENwEaARclEjcBGgIXJBIQRDMCADEAEkQzAhAhBBJEMwIhIxJEMwIiIxwSRDMCIyEHEkQzAiQjEkQzAiWACFRNUE9PTDExEkQzAiZRAA+AD1RpbnltYW5Qb29sMS4xIBJEMwIngBNodHRwczovL3RpbnltYW4ub3JnEkQzAikyAxJEMwIqMgMSRDMCKzIDEkQzAiwyAxJEMwMAMQASRDMDECEFEkQzAxElEkQzAxQxABJEMwMSIxJEJCMTQAAQMwEBMwIBCDMDAQg1AUIBsTMEADEAEkQzBBAhBRJEMwQRJBJEMwQUMQASRDMEEiMSRDMBATMCAQgzAwEIMwQBCDUBQgF8MgQhBhJENwEcATEAE0Q3ARwBMwQUEkQzAgAxABNEMwIUMQASRDMDADMCABJEMwIRJRJEMwMUMwMHMwMQIhJNMQASRDMDESMzAxAiEk0kEkQzBAAxABJEMwQUMwIAEkQzAQEzBAEINQFCAREyBCEGEkQ3ARwBMQATRDcBHAEzAhQSRDMDFDMDBzMDECISTTcBHAESRDMCADEAEkQzAhQzBAASRDMCESUSRDMDADEAEkQzAxQzAwczAxAiEk0zBAASRDMDESMzAxAiEk0kEkQzBAAxABNEMwQUMQASRDMBATMCAQgzAwEINQFCAJAyBCEFEkQ3ARwBMQATRDMCADcBHAESRDMCADEAE0QzAwAxABJEMwIUMwIHMwIQIhJNMQASRDMDFDMDBzMDECISTTMCABJEMwEBMwMBCDUBQgA+MgQhBBJENwEcATEAE0QzAhQzAgczAhAiEk03ARwBEkQzAQEzAgEINQFCABIyBCEEEkQzAQEzAgEINQFCAAAzAAAxABNEMwAHMQASRDMACDQBD0OjdHhui6RhYW10zgGBEjekYXJjdsQgBM3QgpRMYUt/CFytk8tguAC72CD73gEJ13OCuRjGdCujZmVlzQPoomZ2zgFSlVujZ2VurHRlc3RuZXQtdjEuMKJnaMQgSGO1GKSzyE7IEPItTxCByw9x8FmnrCDexi9/cOUJOiKjZ3JwxCASDWuTSLUW+zDJsUot+B3TCItojg+n8oHeoe7ZC2teaKJsds4BUplDo3NuZMQgS4jy0Gb7ZcISjP2zb5geqse5Tl0YxJsqRg6gs6LDLoSkdHlwZaVheGZlcqR4YWlkzgCflz0=" }, "unsigned_txn": { "txn1": "i6NhbXTNB9CjZmVlzQPoomZ2zgFSlVujZ2VurHRlc3RuZXQtdjEuMKJnaMQgSGO1GKSzyE7IEPItTxCByw9x8FmnrCDexi9/cOUJOiKjZ3JwxCASDWuTSLUW+zDJsUot+B3TCItojg+n8oHeoe7ZC2teaKJsds4BUplDpG5vdGXEA2ZlZaNyY3bEIEuI8tBm+2XCEoz9s2+YHqrHuU5dGMSbKkYOoLOiwy6Eo3NuZMQgBM3QgpRMYUt/CFytk8tguAC72CD73gEJ13OCuRjGdCukdHlwZaNwYXk=", "txn2": "iqNhbXTOAGrPwKNmZWXNA+iiZnbOAVKVW6NnZW6sdGVzdG5ldC12MS4womdoxCBIY7UYpLPITsgQ8i1PEIHLD3HwWaesIN7GL39w5Qk6IqNncnDEIBINa5NItRb7MMmxSi34HdMIi2iOD6fygd6h7tkLa15oomx2zgFSmUOjcmN2xCBLiPLQZvtlwhKM/bNvmB6qx7lOXRjEmypGDqCzosMuhKNzbmTEIATN0IKUTGFLfwhcrZPLYLgAu9gg+94BCddzgrkYxnQrpHR5cGWjcGF5" } }

these are encoded txns

after decoding the signed txn from the backend i get

Screenshot 2022-06-13 at 1 00 11 PM

now i am submitting the lsig.l to the submit fuction but getting the error at that time

Expected behaviour

the group txn should submit

Actual behaviour

gitves back a error msgpack decode error [pos 294]: only encoded map or array can be decoded into a struct

@gokselcoban
Copy link
Contributor

Hi @aryanwebmob,
I assume that you were using the submit function of TinymanClient. This function accepts transaction_group. Do you convert them into TransactionGroup?

Sorry for the late reply. I hope you have already solved the problem.

@gokselcoban gokselcoban added help wanted Extra attention is needed question Further information is requested labels Nov 16, 2022
@gokselcoban
Copy link
Contributor

Thank you for the report, I assume that this issue is resolved. Closing the issue because there is no activity.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed question Further information is requested
Projects
None yet
Development

No branches or pull requests

1 participant