Как скоро хеш блока станет недействительным?
В документации говорится: "Хеш блока - это хэш блока из текущей цепочки блоков, поверх которого может быть применена эта транзакция. Он используется для защиты от разветвлений и откатов цепочки блоков".
Если я попытаюсь подписать и отправить транзакцию с хешем блока, который "немного устарел", я получаю сообщение об ошибке 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