* attester: Add an on-chain last attestation timestamp and rate limit
In consequence, attester clients are able to rate-limit attestations
among _all_ active attesters - because the new last attestation timestamp is kept up
to date on chain. Ultimately, this value being shared by concurrent clients,
this feature limits our tx expenses while fulfilling our preferred attestation rates.
* attester: Use custom error code instead of log for rate limit
* attester: Add defaults for default attestation conditions
* attester: Use a dedicated function for rate limit default
* attester: Option<u32> -> u32 rate limit interval
This lets users pass 0 to disable the feature (0-rate limiting means
no rate limiting at all), which was not possible with the Option type.
This change upgrades our wormhole dependency to the current latest
release. It introduces a fix in rent calculation logic, making Solitaire compatible with
PythNet. This lets us get rid of dedicated rent adjustment logic,
which we also remove in this change.
* wormhole-attester: Add a last trading publish timestamp field
This change bumps price batch format to v3.1 with a new backwards
compatible field - last attested trading publish time. This is the last time we've
successfully attested a trading price. If no prior record exists, the
current publish time is used.
The new field is backed by a new PDA kind for the attester contract, called
'attestation state'. In these PDAs, we store metadata for every price, seeded by its pubkey. Currently, the metadata stores just the
last tradind timestamp for use with the new field.
* wormhole-attester: Use publish_time instead of attestation_time
* wormhole_attester: use prev_publish_time for non-trading prices
* wormhole_attester: per-symbol state PDAs, stop using prod accounts
* attester: Use Option to detect if previous state exists
Using Option<> for this makes fallback to latest value more convenient
* wormhole_attester: client AccountMeta typo
* wormhole_attester: fix mutability error
* wormhole_attester: stop using Option<> for on-chain state
* wormhole_attester: remove unused realloc logic for attestation state