Feature: Cron
This feature allows Hooks to schedule a series of future self-invocations (akin to a cronjob in Linux systems) which can assist Hook developers in writing complex governance structures, games and more.
Once enabled, an account can setup a Cron using the CronSet transaction type as follows:
{
"TransactionType": "CronSet",
"Account": <the hook account>,
"StartAfter": <some Ripple Epoc timestamp, or 0>,
"RepeatCount": 3,
"DelaySeconds", 500
}
The RepeatCount field and DelaySeconds field may be absent for a one-off-cron. StartTime may be 0 for "as soon as possible".
To delete an existing Cron, omit all of StartAfter, RepeatCount and DelaySeconds and add Flags: 1 (tfCronUnset).
Once a Cron is ready to be executed, the Cron engine will insert a Cron transaction type into the end of the ledger. This transaction is a pseudo transaction and contains a Owner field which points at the Hook account that requested the Cron. To activate your hook on this transaction you must have collect calls enabled, as the Owner is a weak transactional stakeholder.
The maximum number of repeats is 256, however issuing a further CronSet transaction can extend this once the number of repeats crosses a desired minimum threshold.
At present CronSet cannot be delegated to another account, therefore in most circumstances a Hook will need to know how to emit its own CronSet, or be jointly managed by the hook and keys.
Feature: ExtendedHookState
This feature expands the amount of data Hooks can store in their Hook State (key-value system for Hooks) to allow Hooks richer data storage when they need it.
Once enabled, an account may specify a HookStateScale up to 16 using an AccountSet transaction.
The effect of the scale is to scale up both the maximum size of the value you may store in a single hook state, along with the number of reserve units that k-v pair consumes.
A scale of 1 (default) means you pay 1 reserve for up-to 256 bytes stored per Hook State. A scale of 4 means you pay 4 reserve units for up-to 1024 bytes per Hook State. It's important to note that you pay this rate (the scale rate) even if all of your Hook States contain only a single byte, so choosing the scale carefully ahead of time based on the actual number of bytes you need to store is wise.
It is possible to increase the scale after your Hook already has stored state, but not to decrease it. Decreasing the scale requires all HookState to be first deleted.
Fix: InvalidTxFlags
This fixes a bug that currently allows invalid flags to be provided to some transactions. While these invalid flags currently do nothing, they should actually produce a malformed error, and after this fix is applied, they will.
Other
OpenSSL has been upgraded to 3.6.0 which should affect the processing speed of SHA512, which should improve the overall performance of Xahaud.