Conditional state changes in the background enable complex transactions. For example, a HashLockTransaction concludes as soon as the AggregateBondedTransaction is confirmed. When the locked funds are automatically returned to the account, there is no additional transaction recorded. This might appear as a hidden change that increases the account balance.
Receipts provide proof for every hidden change. The collection of receipts are hashed into a merkle tree and linked to a block. The block header stores the root hash, which is different from zero when the block has receipts.
A transaction statement is a collection of receipts linked to a transaction in a particular block. Statements can include receipts with the following basic types:
Balance Transfer: An invisible state change triggered a mosaic transfer.
Balance Change: An invisible state change altered an account’s balance.
Mosaic Expiry: A mosaic expired.
Namespace Expiry: A namespace expired.
Inflation: Network currency mosaics were created due to inflation.
When a transaction includes an alias, a so called Resolution Statement reflects the resolved value for that block:
AddressResolutionStatement: An account alias was used in the block.
MosaicResolutionStatement: A mosaic alias was used in the block.
The alias receipts record the first occurrence of an (unresolved, resolved) alias pair used in a block.
It is technically possible to get more than one resolution for the same namespace id and block. This situation is common when a namespace creator changes the alias link to another asset, leading to two different resolutions in the same block.
The receipt source primaryId
references the transaction where the alias first appears within the block.
The secondaryId
is not 0 when the transaction is part of an AggregateTransaction, and it will indicate the index position within the aggregate.
Symbol records invisible state changes for the following entities.
Id |
Receipt |
Basic type |
---|---|---|
Core |
||
|
|
|
The recipient, account and amount of fees received for harvesting a block. It is recorded when a block is harvested. |
||
|
|
|
The amount of native currency mosaics created. The receipt is recorded when the network has inflation configured, and a new block triggers the creation of currency mosaics. |
||
|
|
|
A collection of state changes for a given source. It is recorded when a state change receipt is issued. |
||
|
|
|
The unresolved and resolved alias. It is recorded when a transaction indicates a valid address alias instead of an address. |
||
|
|
|
The unresolved and resolved alias. It is recorded when a transaction indicates a valid mosaic alias instead of a mosaic id. |
||
Mosaic |
||
|
|
|
The identifier of the mosaic expiring in this block. It is recorded when a mosaic lifetime elapses. |
||
|
|
|
The sender and recipient of the mosaic id and amount representing the cost of registering the mosaic. It is recorded when a mosaic is registered. |
||
Namespace |
||
|
|
|
The identifier of the namespace expiring in this block. It is recorded when the namespace lifetime elapses. |
||
|
|
|
The identifier of the namespace deleted in this block. It is recorded when the namespace grace period elapses. |
||
|
|
|
The sender and recipient of the mosaic id and amount representing the cost of extending the namespace. It is recorded when a namespace is registered or its duration is extended. |
||
HashLock |
||
|
|
|
The lockhash sender, mosaic id and amount locked. It is recorded when a valid HashLockTransaction is announced. |
||
|
|
|
The hashlock sender, mosaic id and amount locked that is returned. It is recorded when an AggregateBondedTransaction linked to the hash completes. |
||
|
|
|
The account receiving the locked mosaic, the mosaic id and the amount. It is recorded when a lock hash expires. |
||
SecretLock |
||
|
|
|
The secretlock sender, mosaic id and amount locked. It is recorded when a valid SecretLockTransaction is announced. |
||
|
|
|
The secretlock recipient, mosaic id and amount locked. It is recorded when a secretlock is proved. |
||
|
|
|
The account receiving the locked mosaic, the mosaic id and the amount. It is recorded when a secretlock expires. |
||