 FISCO BCOS 2.2.0 中文文档升级后节点包含v2.2.0新特性 • v2.2.0 Release Note 3.1.1 变 变 变更 更 更描 描 描述 述 述 新 新 新特 特 特性 性 性 • 构建交易和回执的默克尔树,提供一种基于SPV的证明方式 • 插件化缓存机制并提供缓存开关 更 更 更新 新 新 从流程、存储、协议三方面进行优化,提升性能。 1. 流 流 流程 程 程 • 异步提交RPC交易到交易池 FISCO BCOS Documentation, 发 发 发布 布 布 v2.2.0 另一方面,维护状态数据需要付出不少存储成本,随着链的持续运行,状态数据会持续膨胀,如采用复 杂的数据结构如帕特里夏树(Patricia Tree),状态数据的的容量会进一步扩大,根据不同的场景需要, 可对状态数据进行裁剪优化,或采用分布式数据仓库等方案存储,以支持更海量的状态数据容量。 共 共 共识 识 识机 机 state和MPT state,默 默 默认 认 认为 为 为storage state,storage state将交易执行 结果存储在系统表中,效率较高,MPT state将交易执行结果存储在MPT树中,效率较低,但包含 完整的历史信息。 重 重 重要 要 要: 推荐使用 storage state [state] type=storage 6.6. 配 配 配置 置 置文 文 文件 件 件与0 码力 | 418 页 | 6.51 MB | 1 年前3 FISCO BCOS 2.2.0 中文文档升级后节点包含v2.2.0新特性 • v2.2.0 Release Note 3.1.1 变 变 变更 更 更描 描 描述 述 述 新 新 新特 特 特性 性 性 • 构建交易和回执的默克尔树,提供一种基于SPV的证明方式 • 插件化缓存机制并提供缓存开关 更 更 更新 新 新 从流程、存储、协议三方面进行优化,提升性能。 1. 流 流 流程 程 程 • 异步提交RPC交易到交易池 FISCO BCOS Documentation, 发 发 发布 布 布 v2.2.0 另一方面,维护状态数据需要付出不少存储成本,随着链的持续运行,状态数据会持续膨胀,如采用复 杂的数据结构如帕特里夏树(Patricia Tree),状态数据的的容量会进一步扩大,根据不同的场景需要, 可对状态数据进行裁剪优化,或采用分布式数据仓库等方案存储,以支持更海量的状态数据容量。 共 共 共识 识 识机 机 state和MPT state,默 默 默认 认 认为 为 为storage state,storage state将交易执行 结果存储在系统表中,效率较高,MPT state将交易执行结果存储在MPT树中,效率较低,但包含 完整的历史信息。 重 重 重要 要 要: 推荐使用 storage state [state] type=storage 6.6. 配 配 配置 置 置文 文 文件 件 件与0 码力 | 418 页 | 6.51 MB | 1 年前3
 百度超级链 XuperChain 3.7 中文文档= 6; // The pk of the miner // 矿工公钥 bytes pubkey = 7; // The Merkle Tree root // 默克尔树树根 bytes merkle_root = 8; // The height of the blockchain // 区块所在高度 int64 height = 9; 在超级链中,区块头保存了块中所有交易的txid构造出的梅克尔树的树根。下 图是一颗区块中的梅克尔树举例,区块中的8个交易是梅克尔树的叶子节点, 按照交易顺序,每两个相邻的交易的txid通过SHA256计算出梅克尔树的父节点 id,依次向上直到计算出了梅克尔树根。在这个树形结构中,任何一个节点的 id都直接和自己的父子节点相关,因此树中任何一个节点数据的修改,都会导 致整个梅克尔树的树根变化。 交易的验证方只需要知道待 交易的验证方只需要知道待验证交易tx1的txid,tx1所在块的block1,并知道从 tx1所在梅克尔树的叶子节点开始到梅克尔树根的路径上所有兄弟节点的hash 值,就可以计算出梅克尔树根。例如我们要验证梅克尔树中绿色节点9Dog的 存在性,那么我们同时给出从9Dog到梅克尔树根的路径上的所有兄弟节点数 组[1FXq, ec20, 8f74],则从下而上: 1 2 3 Hash(1FXq+9Dog) ⇒ 781a0 码力 | 270 页 | 24.86 MB | 1 年前3 百度超级链 XuperChain 3.7 中文文档= 6; // The pk of the miner // 矿工公钥 bytes pubkey = 7; // The Merkle Tree root // 默克尔树树根 bytes merkle_root = 8; // The height of the blockchain // 区块所在高度 int64 height = 9; 在超级链中,区块头保存了块中所有交易的txid构造出的梅克尔树的树根。下 图是一颗区块中的梅克尔树举例,区块中的8个交易是梅克尔树的叶子节点, 按照交易顺序,每两个相邻的交易的txid通过SHA256计算出梅克尔树的父节点 id,依次向上直到计算出了梅克尔树根。在这个树形结构中,任何一个节点的 id都直接和自己的父子节点相关,因此树中任何一个节点数据的修改,都会导 致整个梅克尔树的树根变化。 交易的验证方只需要知道待 交易的验证方只需要知道待验证交易tx1的txid,tx1所在块的block1,并知道从 tx1所在梅克尔树的叶子节点开始到梅克尔树根的路径上所有兄弟节点的hash 值,就可以计算出梅克尔树根。例如我们要验证梅克尔树中绿色节点9Dog的 存在性,那么我们同时给出从9Dog到梅克尔树根的路径上的所有兄弟节点数 组[1FXq, ec20, 8f74],则从下而上: 1 2 3 Hash(1FXq+9Dog) ⇒ 781a0 码力 | 270 页 | 24.86 MB | 1 年前3
 FISCO BCOS 2.3.0 中文文档升级后节点包含v2.2.0新特性 • v2.2.0 Release Note 3.2.1 变 变 变更 更 更描 描 描述 述 述 新 新 新特 特 特性 性 性 • 构建交易和回执的默克尔树,提供一种基于SPV的证明方式 • 插件化缓存机制并提供缓存开关 更 更 更新 新 新 从流程、存储、协议三方面进行优化,提升性能。 1. 流 流 流程 程 程 • 异步提交RPC交易到交易池 FISCO BCOS Documentation, 发 发 发布 布 布 v2.3.0 另一方面,维护状态数据需要付出不少存储成本,随着链的持续运行,状态数据会持续膨胀,如采用复 杂的数据结构如帕特里夏树(Patricia Tree),状态数据的的容量会进一步扩大,根据不同的场景需要, 可对状态数据进行裁剪优化,或采用分布式数据仓库等方案存储,以支持更海量的状态数据容量。 共 共 共识 识 识机 机 state和MPT state,默 默 默认 认 认为 为 为storage state,storage state将交易执行 结果存储在系统表中,效率较高,MPT state将交易执行结果存储在MPT树中,效率较低,但包含 完整的历史信息。 重 重 重要 要 要: 推荐使用 storage state [state] type=storage 60 Chapter 6. 使 使 使用 用 用手0 码力 | 442 页 | 7.23 MB | 1 年前3 FISCO BCOS 2.3.0 中文文档升级后节点包含v2.2.0新特性 • v2.2.0 Release Note 3.2.1 变 变 变更 更 更描 描 描述 述 述 新 新 新特 特 特性 性 性 • 构建交易和回执的默克尔树,提供一种基于SPV的证明方式 • 插件化缓存机制并提供缓存开关 更 更 更新 新 新 从流程、存储、协议三方面进行优化,提升性能。 1. 流 流 流程 程 程 • 异步提交RPC交易到交易池 FISCO BCOS Documentation, 发 发 发布 布 布 v2.3.0 另一方面,维护状态数据需要付出不少存储成本,随着链的持续运行,状态数据会持续膨胀,如采用复 杂的数据结构如帕特里夏树(Patricia Tree),状态数据的的容量会进一步扩大,根据不同的场景需要, 可对状态数据进行裁剪优化,或采用分布式数据仓库等方案存储,以支持更海量的状态数据容量。 共 共 共识 识 识机 机 state和MPT state,默 默 默认 认 认为 为 为storage state,storage state将交易执行 结果存储在系统表中,效率较高,MPT state将交易执行结果存储在MPT树中,效率较低,但包含 完整的历史信息。 重 重 重要 要 要: 推荐使用 storage state [state] type=storage 60 Chapter 6. 使 使 使用 用 用手0 码力 | 442 页 | 7.23 MB | 1 年前3
 百度超级链 XuperChain stable 中文文档pk of the miner 21 // 矿工公钥 22 bytes pubkey = 7; 23 // The Merkle Tree root 24 // 默克尔树树根 25 bytes merkle_root = 8; 26 // The height of the blockchain 27 // 区块所在高度 28 int64 中,区块头保存了块中所有交易的txid构造出的梅克尔树的树 根。下图是一颗区块中的梅克尔树举例,区块中的8个交易是梅克尔树的叶子 节点,按照交易顺序,每两个相邻的交易的txid通过SHA256计算出梅克尔树的 父节点id,依次向上直到计算出了梅克尔树根。在这个树形结构中,任何一个 节点的id都直接和自己的父子节点相关,因此树中任何一个节点数据的修改, 都会导致整个梅克尔树的树根变化。 交易的验证方只需要知道待 交易的验证方只需要知道待验证交易tx1的txid,tx1所在块的block1,并知道从 tx1所在梅克尔树的叶子节点开始到梅克尔树根的路径上所有兄弟节点的hash 值,就可以计算出梅克尔树根。例如我们要验证梅克尔树中绿色节点9Dog的 存在性,那么我们同时给出从9Dog到梅克尔树根的路径上的所有兄弟节点数 组[1FXq, ec20, 8f74],则从下而上: 1 Hash(1FXq+9Dog) ⇒ 781a 20 码力 | 325 页 | 26.31 MB | 1 年前3 百度超级链 XuperChain stable 中文文档pk of the miner 21 // 矿工公钥 22 bytes pubkey = 7; 23 // The Merkle Tree root 24 // 默克尔树树根 25 bytes merkle_root = 8; 26 // The height of the blockchain 27 // 区块所在高度 28 int64 中,区块头保存了块中所有交易的txid构造出的梅克尔树的树 根。下图是一颗区块中的梅克尔树举例,区块中的8个交易是梅克尔树的叶子 节点,按照交易顺序,每两个相邻的交易的txid通过SHA256计算出梅克尔树的 父节点id,依次向上直到计算出了梅克尔树根。在这个树形结构中,任何一个 节点的id都直接和自己的父子节点相关,因此树中任何一个节点数据的修改, 都会导致整个梅克尔树的树根变化。 交易的验证方只需要知道待 交易的验证方只需要知道待验证交易tx1的txid,tx1所在块的block1,并知道从 tx1所在梅克尔树的叶子节点开始到梅克尔树根的路径上所有兄弟节点的hash 值,就可以计算出梅克尔树根。例如我们要验证梅克尔树中绿色节点9Dog的 存在性,那么我们同时给出从9Dog到梅克尔树根的路径上的所有兄弟节点数 组[1FXq, ec20, 8f74],则从下而上: 1 Hash(1FXq+9Dog) ⇒ 781a 20 码力 | 325 页 | 26.31 MB | 1 年前3
 FISCO BCOS 2.4.0 中文文档FISCO BCOS Documentation, 发 发 发布 布 布 v2.4.0 2.3.1 变 变 变更 更 更描 描 描述 述 述 新 新 新特 特 特性 性 性 • 构建交易和回执的默克尔树,提供一种基于SPV的证明方式 • 插件化缓存机制并提供缓存开关 更 更 更新 新 新 从流程、存储、协议三方面进行优化,提升性能。 1. 流 流 流程 程 程 • 异步提交RPC交易到交易池 FISCO BCOS Documentation, 发 发 发布 布 布 v2.4.0 另一方面,维护状态数据需要付出不少存储成本,随着链的持续运行,状态数据会持续膨胀,如采用复 杂的数据结构如帕特里夏树(Patricia Tree),状态数据的的容量会进一步扩大,根据不同的场景需要, 可对状态数据进行裁剪优化,或采用分布式数据仓库等方案存储,以支持更海量的状态数据容量。 共 共 共识 识 识机 机 state和MPT state,默 默 默认 认 认为 为 为storage state,storage state将交易执行 结果存储在系统表中,效率较高,MPT state将交易执行结果存储在MPT树中,效率较低,但包含 完整的历史信息。 重 重 重要 要 要: 推荐使用 storage state [state] type=storage 58 Chapter 5. 使 使 使用 用 用手0 码力 | 470 页 | 7.45 MB | 1 年前3 FISCO BCOS 2.4.0 中文文档FISCO BCOS Documentation, 发 发 发布 布 布 v2.4.0 2.3.1 变 变 变更 更 更描 描 描述 述 述 新 新 新特 特 特性 性 性 • 构建交易和回执的默克尔树,提供一种基于SPV的证明方式 • 插件化缓存机制并提供缓存开关 更 更 更新 新 新 从流程、存储、协议三方面进行优化,提升性能。 1. 流 流 流程 程 程 • 异步提交RPC交易到交易池 FISCO BCOS Documentation, 发 发 发布 布 布 v2.4.0 另一方面,维护状态数据需要付出不少存储成本,随着链的持续运行,状态数据会持续膨胀,如采用复 杂的数据结构如帕特里夏树(Patricia Tree),状态数据的的容量会进一步扩大,根据不同的场景需要, 可对状态数据进行裁剪优化,或采用分布式数据仓库等方案存储,以支持更海量的状态数据容量。 共 共 共识 识 识机 机 state和MPT state,默 默 默认 认 认为 为 为storage state,storage state将交易执行 结果存储在系统表中,效率较高,MPT state将交易执行结果存储在MPT树中,效率较低,但包含 完整的历史信息。 重 重 重要 要 要: 推荐使用 storage state [state] type=storage 58 Chapter 5. 使 使 使用 用 用手0 码力 | 470 页 | 7.45 MB | 1 年前3
 百度超级链 XuperChain 3.12-a中文文档在超级链中,区块头保存了块中所有交易的txid构造出的梅克尔树的树根。下 图是一颗区块中的梅克尔树举例,区块中的8个交易是梅克尔树的叶子节点, 按照交易顺序,每两个相邻的交易的txid通过SHA256计算出梅克尔树的父节 点id,依次向上直到计算出了梅克尔树根。在这个树形结构中,任何一个节 点的id都直接和自己的父子节点相关,因此树中任何一个节点数据的修改, 都会导致整个梅克尔树的树根变化。 交易的验证方只需要知道待 交易的验证方只需要知道待验证交易tx1的txid,tx1所在块的block1,并知道 从tx1所在梅克尔树的叶子节点开始到梅克尔树根的路径上所有兄弟节点的 hash值,就可以计算出梅克尔树根。例如我们要验证梅克尔树中绿色节点 9Dog的存在性,那么我们同时给出从9Dog到梅克尔树根的路径上的所有兄弟 节点数组[1FXq, ec20, 8f74],则从下而上: Hash(1FXq+9Dog) ⇒ 781a Hash(ec20+781a) need_content 需要置为true。 对于查询交易的方法,除了所在区块id外,还需要传入一个“梅克尔路径”。 对于梅克尔树的定义,这里不再赘述,可参考 Merkle_tree [https://en.wikipedia.org/wiki/Merkle_tree] ,在梅克尔树中,待验证交易的txid是存在于 某个叶子结点中的,我们需要给出此叶子结点合并计算hash至根节点的路 径,以下图为例0 码力 | 336 页 | 12.62 MB | 1 年前3 百度超级链 XuperChain 3.12-a中文文档在超级链中,区块头保存了块中所有交易的txid构造出的梅克尔树的树根。下 图是一颗区块中的梅克尔树举例,区块中的8个交易是梅克尔树的叶子节点, 按照交易顺序,每两个相邻的交易的txid通过SHA256计算出梅克尔树的父节 点id,依次向上直到计算出了梅克尔树根。在这个树形结构中,任何一个节 点的id都直接和自己的父子节点相关,因此树中任何一个节点数据的修改, 都会导致整个梅克尔树的树根变化。 交易的验证方只需要知道待 交易的验证方只需要知道待验证交易tx1的txid,tx1所在块的block1,并知道 从tx1所在梅克尔树的叶子节点开始到梅克尔树根的路径上所有兄弟节点的 hash值,就可以计算出梅克尔树根。例如我们要验证梅克尔树中绿色节点 9Dog的存在性,那么我们同时给出从9Dog到梅克尔树根的路径上的所有兄弟 节点数组[1FXq, ec20, 8f74],则从下而上: Hash(1FXq+9Dog) ⇒ 781a Hash(ec20+781a) need_content 需要置为true。 对于查询交易的方法,除了所在区块id外,还需要传入一个“梅克尔路径”。 对于梅克尔树的定义,这里不再赘述,可参考 Merkle_tree [https://en.wikipedia.org/wiki/Merkle_tree] ,在梅克尔树中,待验证交易的txid是存在于 某个叶子结点中的,我们需要给出此叶子结点合并计算hash至根节点的路 径,以下图为例0 码力 | 336 页 | 12.62 MB | 1 年前3
 百度超级链 XuperChain 3.12-c 中文文档在超级链中,区块头保存了块中所有交易的txid构造出的梅克尔树的树根。下 图是一颗区块中的梅克尔树举例,区块中的8个交易是梅克尔树的叶子节点, 按照交易顺序,每两个相邻的交易的txid通过SHA256计算出梅克尔树的父节 点id,依次向上直到计算出了梅克尔树根。在这个树形结构中,任何一个节 点的id都直接和自己的父子节点相关,因此树中任何一个节点数据的修改, 都会导致整个梅克尔树的树根变化。 交易的验证方只需要知道待 交易的验证方只需要知道待验证交易tx1的txid,tx1所在块的block1,并知道 从tx1所在梅克尔树的叶子节点开始到梅克尔树根的路径上所有兄弟节点的 hash值,就可以计算出梅克尔树根。例如我们要验证梅克尔树中绿色节点 9Dog的存在性,那么我们同时给出从9Dog到梅克尔树根的路径上的所有兄弟 节点数组[1FXq, ec20, 8f74],则从下而上: Hash(1FXq+9Dog) ⇒ 781a Hash(ec20+781a) need_content 需要置为true。 对于查询交易的方法,除了所在区块id外,还需要传入一个“梅克尔路径”。 对于梅克尔树的定义,这里不再赘述,可参考 Merkle_tree [https://en.wikipedia.org/wiki/Merkle_tree] ,在梅克尔树中,待验证交易的txid是存在于 某个叶子结点中的,我们需要给出此叶子结点合并计算hash至根节点的路 径,以下图为例0 码力 | 336 页 | 12.62 MB | 1 年前3 百度超级链 XuperChain 3.12-c 中文文档在超级链中,区块头保存了块中所有交易的txid构造出的梅克尔树的树根。下 图是一颗区块中的梅克尔树举例,区块中的8个交易是梅克尔树的叶子节点, 按照交易顺序,每两个相邻的交易的txid通过SHA256计算出梅克尔树的父节 点id,依次向上直到计算出了梅克尔树根。在这个树形结构中,任何一个节 点的id都直接和自己的父子节点相关,因此树中任何一个节点数据的修改, 都会导致整个梅克尔树的树根变化。 交易的验证方只需要知道待 交易的验证方只需要知道待验证交易tx1的txid,tx1所在块的block1,并知道 从tx1所在梅克尔树的叶子节点开始到梅克尔树根的路径上所有兄弟节点的 hash值,就可以计算出梅克尔树根。例如我们要验证梅克尔树中绿色节点 9Dog的存在性,那么我们同时给出从9Dog到梅克尔树根的路径上的所有兄弟 节点数组[1FXq, ec20, 8f74],则从下而上: Hash(1FXq+9Dog) ⇒ 781a Hash(ec20+781a) need_content 需要置为true。 对于查询交易的方法,除了所在区块id外,还需要传入一个“梅克尔路径”。 对于梅克尔树的定义,这里不再赘述,可参考 Merkle_tree [https://en.wikipedia.org/wiki/Merkle_tree] ,在梅克尔树中,待验证交易的txid是存在于 某个叶子结点中的,我们需要给出此叶子结点合并计算hash至根节点的路 径,以下图为例0 码力 | 336 页 | 12.62 MB | 1 年前3
 百度超级链 XuperChain 3.12 中文文档在超级链中,区块头保存了块中所有交易的txid构造出的梅克尔树的树根。下 图是一颗区块中的梅克尔树举例,区块中的8个交易是梅克尔树的叶子节点, 按照交易顺序,每两个相邻的交易的txid通过SHA256计算出梅克尔树的父节 点id,依次向上直到计算出了梅克尔树根。在这个树形结构中,任何一个节 点的id都直接和自己的父子节点相关,因此树中任何一个节点数据的修改, 都会导致整个梅克尔树的树根变化。 交易的验证方只需要知道待 交易的验证方只需要知道待验证交易tx1的txid,tx1所在块的block1,并知道 从tx1所在梅克尔树的叶子节点开始到梅克尔树根的路径上所有兄弟节点的 hash值,就可以计算出梅克尔树根。例如我们要验证梅克尔树中绿色节点 9Dog的存在性,那么我们同时给出从9Dog到梅克尔树根的路径上的所有兄弟 节点数组[1FXq, ec20, 8f74],则从下而上: Hash(1FXq+9Dog) ⇒ 781a Hash(ec20+781a) need_content 需要置为true。 对于查询交易的方法,除了所在区块id外,还需要传入一个“梅克尔路径”。 对于梅克尔树的定义,这里不再赘述,可参考 Merkle_tree [https://en.wikipedia.org/wiki/Merkle_tree] ,在梅克尔树中,待验证交易的txid是存在于 某个叶子结点中的,我们需要给出此叶子结点合并计算hash至根节点的路 径,以下图为例0 码力 | 336 页 | 12.62 MB | 1 年前3 百度超级链 XuperChain 3.12 中文文档在超级链中,区块头保存了块中所有交易的txid构造出的梅克尔树的树根。下 图是一颗区块中的梅克尔树举例,区块中的8个交易是梅克尔树的叶子节点, 按照交易顺序,每两个相邻的交易的txid通过SHA256计算出梅克尔树的父节 点id,依次向上直到计算出了梅克尔树根。在这个树形结构中,任何一个节 点的id都直接和自己的父子节点相关,因此树中任何一个节点数据的修改, 都会导致整个梅克尔树的树根变化。 交易的验证方只需要知道待 交易的验证方只需要知道待验证交易tx1的txid,tx1所在块的block1,并知道 从tx1所在梅克尔树的叶子节点开始到梅克尔树根的路径上所有兄弟节点的 hash值,就可以计算出梅克尔树根。例如我们要验证梅克尔树中绿色节点 9Dog的存在性,那么我们同时给出从9Dog到梅克尔树根的路径上的所有兄弟 节点数组[1FXq, ec20, 8f74],则从下而上: Hash(1FXq+9Dog) ⇒ 781a Hash(ec20+781a) need_content 需要置为true。 对于查询交易的方法,除了所在区块id外,还需要传入一个“梅克尔路径”。 对于梅克尔树的定义,这里不再赘述,可参考 Merkle_tree [https://en.wikipedia.org/wiki/Merkle_tree] ,在梅克尔树中,待验证交易的txid是存在于 某个叶子结点中的,我们需要给出此叶子结点合并计算hash至根节点的路 径,以下图为例0 码力 | 336 页 | 12.62 MB | 1 年前3
 百度超级链 XuperChain 3.12-b 中文文档在超级链中,区块头保存了块中所有交易的txid构造出的梅克尔树的树根。下 图是一颗区块中的梅克尔树举例,区块中的8个交易是梅克尔树的叶子节点, 按照交易顺序,每两个相邻的交易的txid通过SHA256计算出梅克尔树的父节 点id,依次向上直到计算出了梅克尔树根。在这个树形结构中,任何一个节 点的id都直接和自己的父子节点相关,因此树中任何一个节点数据的修改, 都会导致整个梅克尔树的树根变化。 交易的验证方只需要知道待 交易的验证方只需要知道待验证交易tx1的txid,tx1所在块的block1,并知道 从tx1所在梅克尔树的叶子节点开始到梅克尔树根的路径上所有兄弟节点的 hash值,就可以计算出梅克尔树根。例如我们要验证梅克尔树中绿色节点 9Dog的存在性,那么我们同时给出从9Dog到梅克尔树根的路径上的所有兄弟 节点数组[1FXq, ec20, 8f74],则从下而上: Hash(1FXq+9Dog) ⇒ 781a Hash(ec20+781a) need_content 需要置为true。 对于查询交易的方法,除了所在区块id外,还需要传入一个“梅克尔路径”。 对于梅克尔树的定义,这里不再赘述,可参考 Merkle_tree [https://en.wikipedia.org/wiki/Merkle_tree] ,在梅克尔树中,待验证交易的txid是存在于 某个叶子结点中的,我们需要给出此叶子结点合并计算hash至根节点的路 径,以下图为例0 码力 | 336 页 | 12.62 MB | 1 年前3 百度超级链 XuperChain 3.12-b 中文文档在超级链中,区块头保存了块中所有交易的txid构造出的梅克尔树的树根。下 图是一颗区块中的梅克尔树举例,区块中的8个交易是梅克尔树的叶子节点, 按照交易顺序,每两个相邻的交易的txid通过SHA256计算出梅克尔树的父节 点id,依次向上直到计算出了梅克尔树根。在这个树形结构中,任何一个节 点的id都直接和自己的父子节点相关,因此树中任何一个节点数据的修改, 都会导致整个梅克尔树的树根变化。 交易的验证方只需要知道待 交易的验证方只需要知道待验证交易tx1的txid,tx1所在块的block1,并知道 从tx1所在梅克尔树的叶子节点开始到梅克尔树根的路径上所有兄弟节点的 hash值,就可以计算出梅克尔树根。例如我们要验证梅克尔树中绿色节点 9Dog的存在性,那么我们同时给出从9Dog到梅克尔树根的路径上的所有兄弟 节点数组[1FXq, ec20, 8f74],则从下而上: Hash(1FXq+9Dog) ⇒ 781a Hash(ec20+781a) need_content 需要置为true。 对于查询交易的方法,除了所在区块id外,还需要传入一个“梅克尔路径”。 对于梅克尔树的定义,这里不再赘述,可参考 Merkle_tree [https://en.wikipedia.org/wiki/Merkle_tree] ,在梅克尔树中,待验证交易的txid是存在于 某个叶子结点中的,我们需要给出此叶子结点合并计算hash至根节点的路 径,以下图为例0 码力 | 336 页 | 12.62 MB | 1 年前3
 百度超级链 XuperChain latest 中文文档= 6; // The pk of the miner // 矿工公钥 bytes pubkey = 7; // The Merkle Tree root // 默克尔树树根 bytes merkle_root = 8; // The height of the blockchain // 区块所在高度 int64 height = 9; 在超级链中,区块头保存了块中所有交易的txid构造出的梅克尔树的树根。下 图是一颗区块中的梅克尔树举例,区块中的8个交易是梅克尔树的叶子节点, 按照交易顺序,每两个相邻的交易的txid通过SHA256计算出梅克尔树的父节点 id,依次向上直到计算出了梅克尔树根。在这个树形结构中,任何一个节点的 id都直接和自己的父子节点相关,因此树中任何一个节点数据的修改,都会导 致整个梅克尔树的树根变化。 交易的验证方只需要知道待 交易的验证方只需要知道待验证交易tx1的txid,tx1所在块的block1,并知道从 tx1所在梅克尔树的叶子节点开始到梅克尔树根的路径上所有兄弟节点的hash 值,就可以计算出梅克尔树根。例如我们要验证梅克尔树中绿色节点9Dog的 存在性,那么我们同时给出从9Dog到梅克尔树根的路径上的所有兄弟节点数 组[1FXq, ec20, 8f74],则从下而上: 1 2 3 Hash(1FXq+9Dog) ⇒ 781a0 码力 | 316 页 | 24.51 MB | 1 年前3 百度超级链 XuperChain latest 中文文档= 6; // The pk of the miner // 矿工公钥 bytes pubkey = 7; // The Merkle Tree root // 默克尔树树根 bytes merkle_root = 8; // The height of the blockchain // 区块所在高度 int64 height = 9; 在超级链中,区块头保存了块中所有交易的txid构造出的梅克尔树的树根。下 图是一颗区块中的梅克尔树举例,区块中的8个交易是梅克尔树的叶子节点, 按照交易顺序,每两个相邻的交易的txid通过SHA256计算出梅克尔树的父节点 id,依次向上直到计算出了梅克尔树根。在这个树形结构中,任何一个节点的 id都直接和自己的父子节点相关,因此树中任何一个节点数据的修改,都会导 致整个梅克尔树的树根变化。 交易的验证方只需要知道待 交易的验证方只需要知道待验证交易tx1的txid,tx1所在块的block1,并知道从 tx1所在梅克尔树的叶子节点开始到梅克尔树根的路径上所有兄弟节点的hash 值,就可以计算出梅克尔树根。例如我们要验证梅克尔树中绿色节点9Dog的 存在性,那么我们同时给出从9Dog到梅克尔树根的路径上的所有兄弟节点数 组[1FXq, ec20, 8f74],则从下而上: 1 2 3 Hash(1FXq+9Dog) ⇒ 781a0 码力 | 316 页 | 24.51 MB | 1 年前3
共 46 条
- 1
- 2
- 3
- 4
- 5














