6

We found that this transaction 0xf35238b1ef440e2a04576c8264ca8288100091a3d4c71069f0336c72078f366b was included into the following three different blocks :

Could you explain the reason why this happened ?

2 Answers 2

6

In substrate what uniquely identifies an extrinsic is the block# + its index in that block, not the call hash.

So in this case, the call you are referring to would be identified by

  • 10219793-2, for block #10219793
  • 10219254-2, for block #10219254
  • 10218427-2, for block #10218427

(note that the index here are the same just by chance)

The hash is the same in all those blocks because is the same extrinsic with the very same arguments in all of them.

2
  • 5
    The wiki also has an entry on this - wiki.polkadot.network/docs/…
    – Jaco
    Commented May 11, 2022 at 13:14
  • So if the extrinsic hash is the same for the same method/section/parameters, how can you distinguish between two events in the same block?
    – georgiosd
    Commented Jul 21, 2022 at 15:23
5

These are 3 different transactions. The hash that you shared does not uniquely identify a transaction.

As Alejandro mentioned, the unique identifier of a transaction is what you see in the column Extrinsic ID which includes the Block number and the Extrinsic Index. If you check the blocks that you shared you will see that the extrinsic IDs are different (10218427-2, 10219254-2, 10219793-2) even though the hash (0xf352....8f366b) is the same.

You can also check that there were 3 different transactions by looking at the transfers of the destination address and confirm that there were 3 different transfers of 10 DOT to this account.

So, in general to retrieve details of an extrinsic you need the extrinsic hash but also the block number in which it was included.

This is a common misunderstanding so that is why we have a dedicated section (Jaco already mentioned it in the comment) that clarifies it in our wiki page Unique Identifiers for Extrinsics

Adding here some extra resources that can be helpful

  • How do I view extrinsic information? : example that first gets the block number and iterates through the indices to retrieve the info of an extrinsic
  • Another example (very similar) can be found in this SE answer
  • Issue that describes the same

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.