文档说“区块哈希是当前区块链中可以应用此交易的区块的哈希。它用于防止区块链分叉和回滚。”
如果我尝试使用“有点过时”的块哈希来签署和发送交易,那么我会收到错误消息InvalidTxError::Expired
这个过期超时是否有一些特定的定义,我可以用来预测它是否会发生,因此需要刷新我计划使用的块哈希?
它是在一段时间后发生还是如果块哈希是链顶部的第 N 个或其他什么?
文档说“区块哈希是当前区块链中可以应用此交易的区块的哈希。它用于防止区块链分叉和回滚。”
如果我尝试使用“有点过时”的块哈希来签署和发送交易,那么我会收到错误消息InvalidTxError::Expired
这个过期超时是否有一些特定的定义,我可以用来预测它是否会发生,因此需要刷新我计划使用的块哈希?
它是在一段时间后发生还是如果块哈希是链顶部的第 N 个或其他什么?
有一个系统范围的参数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.json并由从(在我的本地机器上)加载的创世配置文件填充,~/.near/genesis.json可能通过调用start_with_config