Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
sysvar_lint README:
sysvar_get
What it does:
Lint warns uses of
Sysvar::from_account_info
and suggests to useSysvar::get
instead forthe sysvars implementing
Sysvar::get
function. The following sysvars implementSysvar::get
:Why is this bad?
The
Sysvar::from_account_info
is less efficient thanSysvar::get
because:from_account_info
requires that Sysvar account is passed to the program wasting the limited spaceavailable to the transactions.
from_account_info
deserializes the Sysvar account data wasting the computation budget.The
Sysvar::from_account_info
should be used if and only if the program interacts with an old program thatrequires the sysvar account to be passed in CPI call. The program could avoid deserialization overhead by using
the passed Sysvar account in CPI (after verifying the ID) and using the
Sysvar::get
.References:
solana_program/sysvar
docs,Anchor docs
Known problems:
None
Example:
Use instead:
How the lint is implemented:
#[derive(Accounts)]
macroClock
,EpochRewards
,EpochSchedule
,Fees
,LastRestartSlot
,Rent
solana_program::Sysvar::from_account_info
andT is one of sysvars that implements
Sysvar::get()
method.