Skip to content

Commit

Permalink
clarifying changes
Browse files Browse the repository at this point in the history
  • Loading branch information
buffalojoec committed Mar 27, 2024
1 parent 305babc commit d6372ab
Showing 1 changed file with 19 additions and 21 deletions.
40 changes: 19 additions & 21 deletions proposals/0133-syscall-get-epoch-stake.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ A syscall to retrieve a vote account's delegated stake for the current epoch.
## Motivation

Currently, on-chain programs have no knowledge of the current epoch's stake and
how much active stake is delegated to a certain vote account.
how much active stake is delegated to any vote account.

If this data was available for querying by on-chain programs, it would unblock
If this data were available for querying by on-chain programs, it would unblock
many use cases, such as validator governance and secondary consensus mechanisms,
that were previously not possible on Solana.

Expand All @@ -29,21 +29,20 @@ support for a pending feature gate.

## Alternatives Considered

An alternative design has been proposed in the past for using an on-chain sysvar
account to store all of the current epoch's stake. It was proposed in
[SIMD 0056](https://github.com/solana-foundation/solana-improvement-documents/pull/56).
[SIMD 0056](https://github.com/solana-foundation/solana-improvement-documents/pull/56)
proposes using an on-chain sysvar account to store all of the current epoch's
stake.

Using a sysvar account to store even just the current epoch's stake introduces a
size limitation on the number of entries that can be stored, which the number of
validators on Solana could surpass in the future.
Because account data is finite, using a sysvar account to store even just the
current epoch's stake limits the number of entries that can be stored. The
amount of validators in one Solana cluster could surpass this number in the
future.

By offering access to this information through only a syscall, we can avoid this
account maximum size constraint. However, the syscall approach also makes the
data more cumbersome to retrieve off-chain than the sysvar approach.

While retrieving this data off-chain may not be straightforward, it remains
entirely feasible. Conversely, on-chain programs currently do not have this
capability at all.
Exposing epoch-stake information through a syscall avoids this account maximum
size constraint. While the syscall approach does not offer the easy off-chain
retrieval of a sysvar, there are existing ways to get epoch-stake data off
chain. The priority of a new design should be making the data available to
on-chain programs.

## New Terminology

Expand Down Expand Up @@ -73,18 +72,17 @@ uint64_t sol_get_epoch_stake(
);
```

`var_addr` must be the starting address of at least 8 bytes of writable VM
memory to store the `u64` response. If not, the syscall will abort the VM with
an access violation.
`var_addr` must be the starting address of 8 bytes of writable VM memory to
store the `u64` response. If not, the syscall will abort the VM with an access
violation.

If the provided vote address corresponds to an account that is not a vote
account or does not exist, the syscall will write `0` for active stake.

## Impact

This new syscall directly unlocks highly relevant network data for a wide range
of protocols. Developers seeking to access vote account stake will be positively
impacted.
Dapp developers will be able to query vote account stake for the current epoch
from within on-chain programs.

## Security Considerations

Expand Down

0 comments on commit d6372ab

Please sign in to comment.