Objects whose struct type has key ability represent Sui objects.
They have unique IDs that should never be reused. This verifier makes
sure that the id field of Sui objects never get leaked.
Unpack is the only bytecode that could extract the id field out of
a Sui object. From there, we track the flow of the value and make
sure it can never get leaked outside of the function. There are four
ways it can happen:
A module can define a one-time witness type, that is a type that is instantiated only once, and
this property is enforced by the system. We define a one-time witness type as a struct type that
has the same name as the module that defines it but with all the letters capitalized, and
possessing certain special properties specified below (please note that by convention, “regular”
struct type names are expressed in camel case). In other words, if a module defines a struct
type whose name is the same as the module name, this type MUST possess these special properties,
otherwise the module definition will be considered invalid and will be rejected by the
validator:
Runs the Move verifier and checks if the error counts as a Move verifier timeout
NOTE: this function only check if the verifier error is a timeout
All other errors are ignored