In Substrate code, there is logic to determine the way in which extrinsics should be submitted to the runtime (ref: https://github.com/paritytech/substrate/blob/v3.0.0/client/transaction-pool/src/api.rs#L174). This logic is based on the version of Substrate's TaggedTransactionQueue. Does the version of the transaction queue line up with any of the versions that Substrate runtimes advertise via their metadata (e.g. extrinsic version, metadata version)? What versions of Polkadot use which transaction versions?

It seems like maybe this should be advertised by way of the apis attribute on the RuntimeVersion type, but I'm not sure how to decode the API ID.

  • 1
    The code you have linked in the transaction pool is not related in any way to the format of the extrinsic. This particular line is about backwards compatibility for the TaggedTransactionQueue, because there was added a new parameter for the validate_transaction function. For your other questions, I don't really get what you speak about? What version do you speak about or what format? Would be better if you could be more specific.
    – bkchr
    Commented Apr 20, 2022 at 17:25

1 Answer 1


This is communicated via the apis attribute on the RuntimeVersion type. The interface version I am looking for is that of the TaggedTransactionQueue, which has an API ID of 0xd2bc9897eed08f15 per the documentation for how to calculate these IDs.

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.