Transactions are based on the UTXO model. The main feature of the transaction in the platform is witnessGroupId, defining a group of validators (Consilium) and an authorized user (sender transaction).
An example of a transaction is shown below:
message input { bytes txHash = 1; uint 32 nTxOutput = 2;} message output { possibly here should be uint64 or bytes (BN) fixed64 amount = 1; payment receiver bytes receiverAddr = 2; 3 if receiverAddr is AddrContractCreation bytes contractCode = 3;} message TransactionPayload { uint32 version = 3; uint32 witnessGroupId = 4; place it fields repeated input ins = 1; repeated output outs = 2;} message Transaction { place here non hashed fields TransactionPayload payload = 1; repeated bytes claimProofs = 2;}
The general structure of the transaction is shown in the diagram below:
The value of the hash function from Payload is a TransactionHash which is also transaction ID in the Network.