Transaction field analysis is a general framework useful to find possible values of transaction fields.
Given a contract, the analysis gives information on the transaction calling the contract. For a given field F, it gives a list of possible values for F so that the contract execution will not fail. If field F has a value not present in the possible value, the execution will fail.
Assume T is the transaction responsible for the execution of contract C.
Kinds of information available:
Possible values of transaction T's field F irrespective of its position in the group. it does not matter if T is at index 0, 1, or .. F can only have one of the possible values.
Possible values of T's field F if it is at a given position in the group. If T is at index 0, what values can F have? If T is at index 1, what values can F have? This information is available for all possible indices.
Possible values of field F of other transactions in the group. In a group transaction containing T, what values can field F of the transaction at 0 have? what values can field F of the transaction at 1 have? This information is available for all possible indices.
Supported fields as of now:
GroupIndex: possible positions/indices of T in the group
GroupSize: possible sizes of groups containing T.
Transaction type: Possible transaction types T can have: (pay, axfer, ..., appl)? if application call (NoOp, OptIn, CloseOut, UpdateApplication)?
Fee field: Maximum fee T can have.
All address field types (RekeyTo, CloseRemainderTo, AssetCloseTo, Sender, ...): Taking RekeyTo as an example, possible values of T's RekeyTo? RekeyTo can be any address or RekeyTo must be ZeroAddress or RekeyTo has to be some known address or some unknown address?
Transaction field analysis is a general framework useful to find possible values of transaction fields. Given a contract, the analysis gives information on the transaction calling the contract. For a given field F, it gives a list of possible values for F so that the contract execution will not fail. If field F has a value not present in the possible value, the execution will fail.
Assume T is the transaction responsible for the execution of contract C.
Kinds of information available:
Supported fields as of now: