Breaking Changes in Testnet

The binary format that we use in Move (bytecodes and binary tables; as defined in libra/language/vm/src/ ) is going through some changes in the next Testnet release (week of 1/13/2020) and in the coming weeks.
We are updating the format by adding/modifying instructions and correcting/updating some of the binary tables.
We will communicate the exact changes in the release notes, but we wanted to give you a heads up to ensure people can get ready if they need to apply changes.

Who is affected by those changes?

If you are developing within the Libra code base you should not see any problems and everything should update as you recompile.
If you are developing and deploying a client and you have compiled whitelisted transactions, those changes will affect you. The transactions will have to be recompiled or regenerated given that their hashes will change.
Testnet will only accept a set of whitelisted transactions, those transactions are hashed and the hash is used to verify whether a transaction is known. By changing the binary format we are changing the content of those transaction and thus the hashes. So, if one has an old transaction and submits it, that will be rejected. Again, the transaction changes hash because the script in the transaction will change and so the content of the transaction is different.
If you are using the Libra codebase to generate the script/transaction you should be able to continue to do so and get the proper updated transactions.
If not, you need to regenerate the script according to the new binary format, which is defined in libra/language/vm/src/ .

Please let us know how we can help if you are having difficulties or issues in getting Testnet to accept your transactions.