Как скоро хеш блока станет недействительным?

В документации говорится: "Хеш блока - это хэш блока из текущей цепочки блоков, поверх которого может быть применена эта транзакция. Он используется для защиты от разветвлений и откатов цепочки блоков".

Если я попытаюсь подписать и отправить транзакцию с хешем блока, который "немного устарел", я получаю сообщение об ошибке InvalidTxError::Expired

Есть ли какое-то конкретное определение этого тайм-аута истечения срока, которое я могу использовать, чтобы предсказать, произойдет ли это, и, следовательно, мне нужно обновить хэш блока, который я планирую использовать?

Происходит ли это по прошествии некоторого времени, или если хэш блока равен N-му от вершины цепочки или что-то в этом роде?

2 ответа

Решение

Есть общесистемный параметр transaction_validity_period который определяет, как долго (для количества блоков) транзакция может считаться действительной с момента хэша блока, на котором она основана.

После еще немного покопания на основе принятого ответа @berryguy выше, похоже transaction_validity_period входящий параметр для ChainGenesis (я думаю, нажав кнопку запуска блокчейна), где срок действия измеряется как BlockIndex ("сверху вниз" или "назад от кончика" цепочки в зависимости от анимации, воспроизводящейся в вашей голове)

вырезать из ближнего источника

pub struct ChainGenesis {
    pub time: DateTime<Utc>,
    pub gas_limit: Gas,
    pub gas_price: Balance,
    pub total_supply: Balance,
    pub max_inflation_rate: u8,
    pub gas_price_adjustment_rate: u8,
    pub transaction_validity_period: BlockIndex, /// <- here
    pub epoch_length: BlockIndex,
}

и заполняется конфигурационным файлом Genesis genesis.json это загружено из ~/.near/genesis.json (на моем локальном компьютере), возможно, позвонив в start_with_config

Другие вопросы по тегам