Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.Sign up
State Change Receipt Capabilities #18
Certain state changes are invisible and/or time-delayed and not triggered by any immediately observable catalyst:
The primary goal of this feature is to make dependent state changes visible in the block where they take effect.
referenced this issue
Jan 30, 2019
BlockReceiptsHash is set to a non-zero value when a block triggers “invisible” state changes. An invisible state change is any change that is not observable directly from block header and/or transaction data, but, instead, is state-dependent. For example, the changes caused by any transaction referencing aliases is unknowable without knowing the current alias state at the time of execution.
Importantly, receipts allow a client to perform the following so that all state changes are fully explained in a cryptographically secure way:
Receipts are produced by observers in a deterministic order and hashed into a merkle tree. The merkle tree root hash is stored in the block header.
Catapult can generate three types of receipts:
Alias receipts record the first occurence of an (unresolved, resolved) alias pair used in a block.