#### Summary of Changes
This PR introduces HotAccountMeta, the storage and in-memory struct of
the metadata struct for a hot account.
#### Test Plan
Unit tests are included in this PR.
Tested in mnb w/ the prototype implementation of the tiered account storage (#30626)
#### Summary of Changes
This PR adds AccountMetaOptionalFields::size_from_flags that takes
`&AccountMegaFlags` and returns the size of the AccountMetaOptionalFields
based on the input AccountMegaFlags.
This function is needed because the reader of the TieredAccountMeta
directly extract all the Some fields of AccountMetaOptionalFields
from its account block without constructing the AccountMetaOptionalFields
instance.
#### Test plan
Improve existing unit tests that further verify the correctness of the function.
#### Summary of Changes
This PR introduces TieredAccountMeta, a trait that allows different implementations
of the account meta for different tiers of the accounts storage.
This PR includes the mutator and getter methods for the common TieredAccountMeta
fields. Functions that also work with the account data block will be in separate PRs.
* make `ElGamalKeypair` fields private
* update the rest of `zk-token-sdk` for the visibility update
* update `zk-token-proof-tests` for the visibility update
* update `zk-keygen` for the visibility update
* update `zk-token-proof` benches for the updated visibility
* cargo fmt
* rename `ElGamalKeypair::new` to `ElGamalKeypair::new_for_tests`
* add docs for the proof program instructions
* add docs for the zk token proof program
* add docs for the instruction data types
* add brief description of the proofs for each of the proof instructions
* Apply suggestions from code review
Co-authored-by: Tyera <teulberg@gmail.com>
* change `pubkey` or `public-key` in the docs to `public key`
---------
Co-authored-by: Tyera <teulberg@gmail.com>
* Restrict access to Bank's HardForks
Callers could previously obtain a a lock to read/write HardForks from
any Bank. This would allow any caller to modify, and creates the
opportunity for inconsistent handling of what is considered a valid hard
fork (ie too old).
This PR adds a function to Bank so consistent sanity checks can be
applied; the caller will already have a Bank as that is where they would
have obtained the HardForks from in the first place. Additionally,
change the getter to return a copy of HardForks (simple Vec).
* Allow hard fork at bank slot if bank is not yet frozen
* remove decoded `TransferWithFeePubkeys`
* remove decoded `TransferPubkey`
* rename `TransferPubkeys` and `TransferWithFeePubkeys` fields
* relocate `TransferPubkeys` and `TransferWithFeePubkeys`
* reorder proof verify parameters for transfer and transfer with fee
* clippy
Before this change the program was writing into the realloc region.
Direct mapping is going to enforce permissions on the realloc region,
and the program doesn't have permissions to write, so move to working on
the stack to avoid access violation errors.
* add bench test for `VerifyPubkeyValidity`
* add bench test for `VerifyRangeProofU64`
* add bench test for `VerifyWithdraw`
* add bench test for `VerifyZeroBalance`
* add bench test for `VerifyGroupedCiphertextValidity`
* add bench test for `VerifyCiphertextCommitmentEquality`
* add bench test for `VerifyCiphertextCiphertextEquality`
* add bench test for `VerifyBatchedGroupedCiphertextValidity`
* add bench test for `VerifyBatchedRangeProofu64`, `VerifyBatchedRangeProofU128`, `VerifyBatchedRangeProofU256`
* add bench test for `VerifyTransfer` and `VerifyTransferWithFee`
* use add `criterion` to workspace cargo
* add bench to ci
* replace `decoded::TransferAmountCiphertext` to `DecodedTransferAmountCiphertext`
* refactor pod convert logic for fee parameters
* remove manual byte conversions for `FeeParameters`
* fix error from rebase
* add sysvar and logic for last restart slot
* cleanup
* add test for getting last restart slot from account
* format code
* add some basic rustdoc
* copy+paste error
* feature flag for last_restart_slot
* add to sysvars.md
* updated wording in sysvars.md
* rename sol_get_last_restart_slot_sysvar > sol_get_last_restart_slot
* create sbf C header for sol_get_last_restart_slot
* cleanup imports
* reverted hardened_unpack workaround
* cleanup imports
* cleanup logs + blank lines
* Implementing ui changes for last restart slot, nit
* Some more nit change and implementing the UI for sysvar
* fixing the CI
* Minor clippy fix
* format changes
* changes suggested by mvines and lichtso
* increase timeout in local_cluster test
* fix code format
* use keypair for feature flag from mvines
* delete test.json file
* Revert "increase timeout in local_cluster test"
This reverts commit a67465ae22.
* last restart slot should be always less than or equal to current slot
* fixing bug
* changes after steviez comments
* format issue fixed
* fixing the comment on premature application of future hardfork
* nit change in test
Co-authored-by: steviez <steven@solana.com>
* reverting sysvar_cache.rs because change was not necessary
---------
Co-authored-by: steve-gg <grooviegermanikus@gmail.com>
Co-authored-by: steviez <steven@solana.com>