JSPM

@solana/sysvars

4.0.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 249871
  • Score
    100M100P100Q183142F
  • License MIT

An abstraction layer over signing messages and transactions in Solana

Package Exports

  • @solana/sysvars

Readme

npm npm-downloads
code-style-prettier

@solana/sysvars

This package contains types and helpers for fetching and decoding Solana sysvars. It can be used standalone, but it is also exported as part of Kit @solana/kit.

More information about the available sysvars on Solana can be found in the docs at https://docs.solanalabs.com/runtime/sysvars.

All currently available sysvars can be retrieved and/or decoded using this library.

Sysvar API

This package offers a simple API for working with sysvars.

One can fetch an encoded sysvar account using an RPC client.

const maybeEncodedClock = await fetchEncodedSysvarAccount(rpc, SYSVAR_CLOCK_ADDRESS);
maybeEncodedClock satisfies MaybeEncodedAccount<'SysvarC1ock11111111111111111111111111111111'>;

One can also attempt to fetch a JSON-parsed sysvar account.

const maybeJsonParsedClock = await fetchJsonParsedSysvarAccount(rpc, SYSVAR_CLOCK_ADDRESS);
maybeJsonParsedClock satisfies
    | MaybeAccount<JsonParsedSysvarAccount, 'SysvarC1ock11111111111111111111111111111111'>
    | MaybeEncodedAccount<'SysvarC1ock11111111111111111111111111111111'>;

Each sysvar within the library ships with its own codec for deserializing the account data.

You can pair this codec with the helpers from @solana/accounts to assert and decode sysvar account data.

// Fetch.
const clock = await fetchEncodedSysvarAccount(rpc, SYSVAR_CLOCK_ADDRESS);
clock satisfies MaybeEncodedAccount<'SysvarC1ock11111111111111111111111111111111'>;

// Assert.
assertAccountExists(clock);
clock satisfies EncodedAccount<'SysvarC1ock11111111111111111111111111111111'>;

// Decode.
const decodedClock = decodeAccount(clock, getSysvarClockDecoder());
decodedClock satisfies Account<SysvarClock, 'SysvarC1ock11111111111111111111111111111111'>;

Each supported sysvar also ships with its own fetch-and-decode function to perform the steps above and return the decoded sysvar data.

const clock: SysvarClock = await fetchSysvarClock(rpc);

Supported Sysvars:

This package supports the following Solana sysvars:

The Instructions sysvar is also supported but does not exist on-chain, therefore has no corresponding module or codec.