Algorand2 SDK Generating random Transaction hash for the transactions using TxId() method - Algorand

Algorand2 SDK Generating random Transaction hash for the transactions using TxId() method

post by Sowna on Apr 26, 2023

Hi @fabrice

I am using Algorand2 SDK, below is my code to get the transaction hash for the transactions but it is returning random transaction hashes which are not matching with the explorer hash for the transaction

string ALGOD_API_ADDR = "http://1localhost:8887/";
string ALGOD_API_TOKEN = "8300d867cc2dbc9398dff961d0dbaefae8eaf8730217f5c468a358a4";

var httpClient = HttpClientConfigurator.ConfigureHttpClient(ALGOD_API_ADDR, ALGOD_API_TOKEN);
DefaultApi algodApiInstance= new DefaultApi(httpClient);
var blockinfo = await algodApiInstance.GetBlockAsync(211518);
foreach (var txndata in blockinfo.Block.Transactions)
{
    string trsnsactionHash=txndata.Tx.TxID();
}

post by fabrice on Apr 26, 2023

The issue is that transactions read from the block API need to be processed before being able to compute their transaction ID.

See Calculating Transaction ID - #2 by fabrice

You can see some Go code for that there: indexer/util.go at a63f591c59bc64ea870c742b0197c072003ed0e6 · algorand/indexer · GitHub

You can adapt it to Java.

But the easiest solution is really to use an indexer.

PS: I’ve fixed indentation in code and wrote it between ``` to make it easier to read.

post by FrankS on May 1, 2023

Actually I think that issue is to do with the genesis id / hash stuff being missing in the block transactions…

@Sowna you can probably fix it by iterating over the transactions in the block and setting the missing genesis field(s) (I forget which ones but I think Fabrice linked to them). The TxId is a computed field, and when the node returns the transactions in the block, it "compresses" out the fields that belong to the block. Those then need to be re-added into the transaction to get the right id.

However, I should probably add a utility method in the SDK to be honest.

post by Sowna on May 4, 2023

Thank you @FrankS, It worked after setting the genesis fields.

post by Sowna on May 17, 2023

Hi @FrankS Signed transaction is not having Receiver Rewards, it is null here but explorer is having value. Can you please help me with this

post by FrankS on May 17, 2023

Hey there. Don’t you wanna join the Discord? I am on the NET SDK channel there, but people will be able to help you out too if I am not around.

post by Sowna on May 17, 2023

sure, I will join but do you have solution for above issue

post by FrankS on May 17, 2023

Yeah I don’t understand the issue. I don’t know what “receiver rewards” is in this context.

post by Sowna on May 17, 2023

Hi @FrankS,

Using Algorand2 SDK able to get the block data which contains all the signed transactions

example for block no. 17497913

Transaction “M2JNAHUX2D4M3ZRYGCR5OJOW2OMAQNIXMVDJOAXWRIDFWVX6LTIQ” below the result where SenderRewards is null which supposed to be 0.000003

Please help me with this

Hi @fabrice, do you have any idea regarding this issue?

post by FrankS on May 17, 2023

Sorry I don’t know anything about the rewards mechanisms. You’ll get more help on Discord.

post by Sowna on May 17, 2023

No problem @FrankS, I have posted the question in Discord channel.