When an extrinsic has an input of for example:

some_call(origin: OriginFor<T>, input: BoundedVec<u8, ConstU32<6>>)

And calling this with input exceeding lenght 6 (ex: "1234567")

The runtime panics on validating the transaction and recovers after.

I'm not quite certain if this is actually the behaviour that is expected. Maybe the better thing to do is to make the input just a Vec<u8> and try to construct the boundedVector in the call itself and throw and error if it exceeds the size.

related stacktrace: https://gist.github.com/DylanVerstraete/5f47a3b0a86620fafe9a05395e519ab4

1 Answer 1


The node will just not gossip that transaction. No harm being done if you run your own node.

Sure you can also construct the bounded-vec inside the call, but then the caller has to pay fees in case the construction fails. Its a different design choice.

  • Indeed the transaction is not gossiped, thanks for pointing this out. Feb 23, 2023 at 12:21

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.