Sysvar Cluster Data

Solana предоставляет различные данные о состоянии кластера программам через учетные записи sysvar. Эти учетные записи заполняются по известным адресам, опубликованным вместе с макетами учетных записей в solana-program crate, и описаны ниже. .

Программа может получить доступ к системной переменной двумя способами.

Первый — запросить sysvar во время выполнения с помощью функции sysvar get():

let clock = Clock::get()

Следующие системные переменные поддерживают get:

Второй проход sysvar программе в качестве учетной записи, включив ее адрес в качестве одной из учетных записей в «Инструкцию», а затем десериализовав данные во время выполнения. Доступ к учетным записям sysvars всегда только для чтения.

let clock_sysvar_info = next_account_info(account_info_iter)?;
let clock = Clock::from_account_info(&clock_sysvar_info)?;

Первый метод более эффективен и не требует, чтобы учетная запись sysvar была передана программе или указана в «Инструкции», которую обрабатывает программа.

Часы

Системная переменная Clock содержит данные о времени кластера, включая текущий слот, эпоху и предполагаемую временную метку Unix настенных часов. Он обновляется каждый слот.

Расписание эпох

Системная переменная EpochSchedule содержит константы планирования эпохи, которые устанавливаются в генезисе, и позволяет вычислять количество слотов в данной эпохе, эпоху для данного слота и т. д. (Примечание: расписание эпохи отличается от лидерного расписания)

Сборы

Системная переменная Fees содержит калькулятор комиссий для текущего слота. Он обновляется каждый слот в зависимости от регулятора ставки.

Инструкции

Системная переменная «Instructions» содержит сериализованные инструкции в сообщении, пока это сообщение обрабатывается. Это позволяет инструкциям программы ссылаться на другие инструкции в той же транзакции. Подробнее читайте на инструкции самоанализа.

Недавние блок-хэши

Системная переменная RecentBlockhashes содержит активные недавние хэши блоков, а также связанные с ними калькуляторы комиссий. Он обновляется каждый слот. Записи упорядочены по убыванию высоты блока, поэтому первая запись содержит хэш самого последнего блока, а последняя запись содержит хеш старого блока.

Аренда

Системная переменная Rent содержит арендную ставку. В настоящее время ставка статична и задана в генезисе. Процент сжигания арендной платы изменяется при ручной активации функции.

Слотовые хэши

Системная переменная SlotHashes содержит самые последние хэши родительских банков слота. Он обновляется каждый слот.

История слотов

Системная переменная SlotHistory содержит битовый вектор слотов за последнюю эпоху. Он обновляется каждый слот.

История ставок

Системная переменная StakeHistory содержит историю активаций и деактиваций ставок на уровне кластера за эпоху. Он обновляется в начале каждой эпохи.