In the source code where transaction mortality is defined, the comments say:
Create a new era based on a period (which should be a power of two between 4 and 65536 inclusive) and a block number on which it should start (or, for long periods, be shortly after the start).
However, the Polkadot Wiki states that:
The transaction payload includes a block number and block hash checkpoint from which a transaction is valid and a validity period...
...The
BlockHashCount
parameter store on-chain is set to 2400 blocks (about four hours) at genesis. If the validity period is larger than the number of blocks stored on-chain, then the transaction will only be valid as long as there is a block to check it against.
First, why is the period value mapped to a power of 2 for an era in a mortal transaction?
Secondly, can I set a value larger than 2400 for the period of my transaction mortality?