The message nonce is maintained on the StarkNet Core contract on L1 and is bumped whenever a message is sent to L2. It is used to avoid hash collisions between different L1 handler transactions that are induced by the same message being sent on L1 multiple times