msg.data is usually ABI encoded information that indicates to the contract the function and parameters to invoke.
Using standard tools, msg.data will be the same if the contract is called with the same parameters. However, hashing it with the block.number as in sha3(msg.data, block.number) will produce a completely different result, for each block.
Note: msg.data is malleable. For example, extra trailing zeroes can be appended to msg.data without changing the function that will be invoked in a contract. Using standard tools (like web3.js) will not create extra trailing zeroes, but you should examine your use case when using msg.data as an identifier, to ensure that malleability will not cause an issue or vulnerability.
(In the specific wallet case in the question, malleability of msg.data by an owner only seems to cause confusion for themselves or other owners.)
msg.dataalso contains the account nonce or that this nonce is being used to make the identifier? The only parameters used by the identifier seem to bemsg.dataandblock.number. – plsnoban Aug 17 '16 at 09:01msg.data. I think @Matthieu interpreted identifier as "the transaction hash", instead of the multisig wallet's "operation hash" identifier. – eth Aug 17 '16 at 11:38msg.datawithout changing the actual values of the parameters. – Tjaden Hess Apr 10 '17 at 21:20