关于交易还原

当我查看代码时,存在关于save_transaction的问题,如果我正在保存事务,则尚未提交,并且机器已关闭,我该如何恢复或重播这些事务? 在代码中,在保存交易之前更新帐户状态

pub fn put_account_state_sets(
    &self,account_state_sets: Vec<HashMap<accountAddress,accountStateBlob>>,first_version: Version,cs: &mut ChangeSet,) -> Result<Vec<HashValue>> {
    let blob_sets = account_state_sets
        .into_iter()
        .map(|account_states| {
            account_states
                .into_iter()
                .map(|(addr,blob)| (addr.hash(),blob))
                .collect::<Vec<_>>()
        })
        .collect::<Vec<_>>();

    let (new_root_hash_vec,tree_update_batch) =
        JellyfishMerkleTree::new(self).put_blob_sets(blob_sets,first_version)?;

    cs.counter_bumps.bump(
        LedgerCounter::NewStateNodes,tree_update_batch.node_batch.len(),);
    cs.counter_bumps.bump(
        LedgerCounter::NewStateLeaves,tree_update_batch.num_new_leaves,);
    tree_update_batch
        .node_batch
        .iter()
        .map(|(node_key,node)| cs.batch.put::<JellyfishMerkleNodeSchema>(node_key,node))
        .collect::<Result<Vec<()>>>()?;

    cs.counter_bumps.bump(
        LedgerCounter::StaleStateNodes,tree_update_batch.stale_node_index_batch.len(),);
    cs.counter_bumps.bump(
        LedgerCounter::StaleStateLeaves,tree_update_batch.num_stale_leaves,);
    tree_update_batch
        .stale_node_index_batch
        .iter()
        .map(|row| cs.batch.put::<StaleNodeIndexSchema>(row,&()))
        .collect::<Result<Vec<()>>>()?;

    Ok(new_root_hash_vec)
}
weiyanyu520 回答:关于交易还原

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2964354.html

大家都在问