【发布时间】:2020-03-15 09:24:07
【问题描述】:
文档说“区块哈希是当前区块链中可以应用此交易的区块的哈希。它用于防止区块链分叉和回滚。”
如果我尝试使用“有点过时”的块哈希来签署和发送交易,那么我会收到错误 InvalidTxError::Expired
这个过期超时是否有一些特定的定义,我可以用来预测它是否会发生,因此需要刷新我计划使用的块哈希?
它是在一段时间后发生还是如果块哈希是从链顶部开始的第 N 个或什么?
【问题讨论】:
标签: nearprotocol
文档说“区块哈希是当前区块链中可以应用此交易的区块的哈希。它用于防止区块链分叉和回滚。”
如果我尝试使用“有点过时”的块哈希来签署和发送交易,那么我会收到错误 InvalidTxError::Expired
这个过期超时是否有一些特定的定义,我可以用来预测它是否会发生,因此需要刷新我计划使用的块哈希?
它是在一段时间后发生还是如果块哈希是从链顶部开始的第 N 个或什么?
【问题讨论】:
标签: nearprotocol
有一个系统范围的参数transaction_validity_period 定义了一个交易在多长时间(多少个块)可以被认为是有效的,因为它基于它所基于的块哈希。
【讨论】:
tx_validity_period似乎很少使用,但transaction_validity_period经常出现
根据上面@berryguy 接受的答案进行更多挖掘后,看起来transaction_validity_period 是ChainGenesis 的传入参数(我猜是按下区块链开始按钮),其中有效期测量为@987654325 @(“从顶部向下”或“从尖端向后”取决于您脑海中播放的动画)
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,
}
并由从~/.near/genesis.json(在我的本地机器上)加载的创世配置文件genesis.json 填充,可能通过调用start_with_config
【讨论】: