Heartbeat Transaction
The heartbeat is a special transaction used to challenge the liveness of an online account.
Fields
A heartbeat transaction additionally has the following fields:
| FIELD | CODEC | TYPE | REQUIRED |
|---|---|---|---|
| Heartbeat Address | a | address | Yes |
| Heartbeat Seed | sd | [32]bytes | Yes |
| Heartbeat Vote ID | vid | [32]bytes | Yes |
| Heartbeat Key Dilution | kd | uint64 | Yes |
| Heartbeat Proof | prf | struct | Yes |
| Heartbeat Challenge Discount | c | bool | No |
Heartbeat Address
The heartbeat address is an account address that this heartbeat transaction proves liveness for.
Heartbeat Seed
The heartbeat seed is a block seed.
- It MUST be the block seed found in the first valid round of the transaction.
Heartbeat Vote ID
The heartbeat vote id is a public key.
- It MUST be the current public key of the root voting key of the heartbeat address’s account state.
Heartbeat Key Dilution
The heartbeat key dilution is a key dilution parameter (see Algorand Participation Keys specification).
- It MUST be the current key dilution of the heartbeat address’s account state.
Heartbeat Proof
The heartbeat proof MUST contain a valid signing of the heartbeat seed using the heartbeat vote id and the heartbeat key dilution using the voting signature scheme defined in the Algorand Participation Keys specification.
Heartbeat Challenge Discount
The heartbeat challenge discount (OPTIONAL) is a flag requesting the reduced fee that a challenged account owes when responding to a challenge (see the Heartbeat Transaction Semantics). When set, the required fee is reduced by one minimum transaction fee, but the transaction FAILS unless the heartbeat address satisfies the challenge conditions. An account willing to pay the ordinary fee MAY leave the flag unset even while challenged.
- When set, the transaction’s note, lease, and rekey to address MUST be empty.
Validation
TODO
Semantic
TODO