In the ImFACT Network, a transaction is referred to as an operation.
When you call an operation-construction method such as transfer(), the SDK does not immediately submit a transaction to the network. Instead, it returns an Operation instance.
This allows you to sign the JSON-formatted operation directly if needed.
General Structure of an Operation
Every operation in the ImFACT Network has the following core structure:
It always contains a fact
It always contains a top-level _hint
It may contain items, depending on the operation type
It contains signs after being signed
Example (simplified):
Key Structural Concepts
1. fact
The fact represents the core intent of the transaction.
It contains the actual data that defines what the operation does (e.g., sender, receiver, amounts).
Some operation types include items, while others may not. The presence of items depends on the specific operation type.
2. _hint
Every operation and fact contains a _hint value.
The _hint uniquely identifies the operation type and version.
It is used internally by the ImFACT Network to determine how the operation should be interpreted and validated.
3. Operation Hash vs Fact Hash (Important)
Unlike many blockchains that use a transaction hash as the primary lookup key, the ImFACT Network uses the fact hash for querying operations.
This means:
The operation contains a top-level hash
The fact also contains its own hash
When retrieving an operation from the network, the fact hash is used as the query key
This distinction is important when tracking transaction status or querying operation results.