Receipt

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.

Transaction statement

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.

Resolution statement

When a transaction includes an alias, a so called Resolution Statement reflects the resolved value for that 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.

Recorded receipts

Symbol records invisible state changes for the following entities.

Id

Receipt

Basic type

Core

0x2143

Harvest_Fee

BalanceChangeReceipt

The recipient, account and amount of fees received for harvesting a block. It is recorded when a block is harvested.

0x5143

Inflation

InflationReceipt

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.

0xE143

Transaction_Group

A collection of state changes for a given source. It is recorded when a state change receipt is issued.

0xF143

Address_Alias_Resolution

AddressResolutionStatement

The unresolved and resolved alias. It is recorded when a transaction indicates a valid address alias instead of an address.

0xF243

Mosaic_Alias_Resolution

MosaicResolutionStatement

The unresolved and resolved alias. It is recorded when a transaction indicates a valid mosaic alias instead of a mosaic id.

Mosaic

0x414D

Mosaic_Expired

MosaicExpiryReceipt

The identifier of the mosaic expiring in this block. It is recorded when a mosaic lifetime elapses.

0x124D

Mosaic_Rental_Fee

BalanceTransferReceipt

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

0x414E

Namespace_Expired

NamespaceExpiryReceipt

The identifier of the namespace expiring in this block. It is recorded when the namespace lifetime elapses.

0x424E

Namespace_Deleted

NamespaceExpiryReceipt

The identifier of the namespace deleted in this block. It is recorded when the namespace grace period elapses.

0x134E

Namespace_Rental_Fee

BalanceTransferReceipt

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

0x3148

LockHash_Created

BalanceChangeReceipt

The lockhash sender, mosaic id and amount locked. It is recorded when a valid HashLockTransaction is announced.

0x2248

LockHash_Completed

BalanceChangeReceipt

The hashlock sender, mosaic id and amount locked that is returned. It is recorded when an AggregateBondedTransaction linked to the hash completes.

0x2348

LockHash_Expired

BalanceChangeReceipt

The account receiving the locked mosaic, the mosaic id and the amount. It is recorded when a lock hash expires.

SecretLock

0x3152

LockSecret_Created

BalanceChangeReceipt

The secretlock sender, mosaic id and amount locked. It is recorded when a valid SecretLockTransaction is announced.

0x2252

LockSecret_Completed

BalanceChangeReceipt

The secretlock recipient, mosaic id and amount locked. It is recorded when a secretlock is proved.

0x2352

LockSecret_Expired

BalanceChangeReceipt

The account receiving the locked mosaic, the mosaic id and the amount. It is recorded when a secretlock expires.