 Pro Git 中文版 第2版 2.1.66搜索 Git Grep Git 日志搜索 重写历史 修改最后一次提交 修改多个提交信息 重新排序提交 压缩提交 拆分提交 核武器级选项:filter-branch 重置揭密 三棵树 工作流程 重置的作用 通过路径来重置 压缩 检出 总结 高级合并 合并冲突 撤消合并 其他类型的合并 Rerere 使用 Git 调试 文件标注 二分查找 子模块 开始使用子模块 Git 与 Perforce 迁移到 Git Subversion Mercurial Perforce 一个自定义的导入器 总结 Git 内部原理 底层命令与上层命令 Git 对象 树对象 提交对象 对象存储 Git 引用 HEAD 引用 标签引用 远程引用 包文件 引用规范 引用规范推送 删除引用 传输协议 哑协议 智能协议 协议总结 维护与数据恢复 接受的常用格式占位符 的写法及其代表的意义。 表格 2. git log --pretty=format 常用的选项 选项 说明 %H 提交的完整哈希值 %h 提交的简写哈希值 %T 树的完整哈希值 %t 树的简写哈希值 %P 父提交的完整哈希值 %p 父提交的简写哈希值 %an 作者名字 %ae 作者的电子邮件地址 选项 说明 %ad 作者修订日期(可以用 --date=选项 来定制格式)0 码力 | 670 页 | 13.59 MB | 1 年前3 Pro Git 中文版 第2版 2.1.66搜索 Git Grep Git 日志搜索 重写历史 修改最后一次提交 修改多个提交信息 重新排序提交 压缩提交 拆分提交 核武器级选项:filter-branch 重置揭密 三棵树 工作流程 重置的作用 通过路径来重置 压缩 检出 总结 高级合并 合并冲突 撤消合并 其他类型的合并 Rerere 使用 Git 调试 文件标注 二分查找 子模块 开始使用子模块 Git 与 Perforce 迁移到 Git Subversion Mercurial Perforce 一个自定义的导入器 总结 Git 内部原理 底层命令与上层命令 Git 对象 树对象 提交对象 对象存储 Git 引用 HEAD 引用 标签引用 远程引用 包文件 引用规范 引用规范推送 删除引用 传输协议 哑协议 智能协议 协议总结 维护与数据恢复 接受的常用格式占位符 的写法及其代表的意义。 表格 2. git log --pretty=format 常用的选项 选项 说明 %H 提交的完整哈希值 %h 提交的简写哈希值 %T 树的完整哈希值 %t 树的简写哈希值 %P 父提交的完整哈希值 %p 父提交的简写哈希值 %an 作者名字 %ae 作者的电子邮件地址 选项 说明 %ad 作者修订日期(可以用 --date=选项 来定制格式)0 码力 | 670 页 | 13.59 MB | 1 年前3
 Kicad 5.1 插件KiCad 插件系统简介 KiCad 插件系统是一个使用共享库扩展 KiCad 功能的框架。 使用插件的一个 主要优点是在开发插件时没有必要重建 KiCad 套件; 事实上,可以借助 KiCad 源代码树中的一小组标题构建插件。 通过确保开发人员仅编译与正在开发的 插件直接相关的代码,从而减少每个构建和测试周期所需的时间,在插件开发 期间删除构建 KiCad 的要求极大地提高了工作效率。 插件最初是为 数据并导出为其他电 气或机械数据格式,或将外部格式转换为 KiCad PCB。 目前只开发了 3D 插件 类,它将成为本文档的重点。 实现插件类需要在 KiCad 源代码树中创建代码来管理插件代码的加载。在 KiCad 源代码树中,文件 ‘plugins/ldr/pluginldr.h’ 声明了所有插件加载器的基 类。这个类声明了我们期望在任何 KiCad 插件(样板代码)中找到的最基本的 函数, 插件通过应用程序编程接口(API)实现实现。 每个插件类都有其特定的 API,在 3D 插件教程中,我们已经看到了由标题 “3d_plugin.h” 声明的 3D 插 件 API 实现的示例。 插件也可能依赖于 KiCad 源代码树中定义的其他 API; 在 3D 插件的情况下,支持模型可视化的所有插件必须与标题 ‘ifsg_all.h’ 及其包 含的标题中声明的 Scene Graph API 交互。 本节描述了插件类实现可能需要的插件类0 码力 | 56 页 | 49.46 KB | 1 年前3 Kicad 5.1 插件KiCad 插件系统简介 KiCad 插件系统是一个使用共享库扩展 KiCad 功能的框架。 使用插件的一个 主要优点是在开发插件时没有必要重建 KiCad 套件; 事实上,可以借助 KiCad 源代码树中的一小组标题构建插件。 通过确保开发人员仅编译与正在开发的 插件直接相关的代码,从而减少每个构建和测试周期所需的时间,在插件开发 期间删除构建 KiCad 的要求极大地提高了工作效率。 插件最初是为 数据并导出为其他电 气或机械数据格式,或将外部格式转换为 KiCad PCB。 目前只开发了 3D 插件 类,它将成为本文档的重点。 实现插件类需要在 KiCad 源代码树中创建代码来管理插件代码的加载。在 KiCad 源代码树中,文件 ‘plugins/ldr/pluginldr.h’ 声明了所有插件加载器的基 类。这个类声明了我们期望在任何 KiCad 插件(样板代码)中找到的最基本的 函数, 插件通过应用程序编程接口(API)实现实现。 每个插件类都有其特定的 API,在 3D 插件教程中,我们已经看到了由标题 “3d_plugin.h” 声明的 3D 插 件 API 实现的示例。 插件也可能依赖于 KiCad 源代码树中定义的其他 API; 在 3D 插件的情况下,支持模型可视化的所有插件必须与标题 ‘ifsg_all.h’ 及其包 含的标题中声明的 Scene Graph API 交互。 本节描述了插件类实现可能需要的插件类0 码力 | 56 页 | 49.46 KB | 1 年前3
 KiCad 5.1 参考手册但是,您只能编辑当前工程文件。 当这些工具在 独立 模式下运行时,您可以 在任何工程中打开任何文件,但在工具之间交叉探测会产生奇怪的结果。 3.1. 工程管理器窗口 主 KiCad 窗口由工程树视图,包含用于运行各种软件工具的按钮的启动窗格和 消息窗口组成。 菜单和工具栏可用于创建,读取和保存工程文件。 3.2. 实用程序启动窗格 KiCad 允许您运行随附的所有独立软件工具。 启动窗 的东西。 8Pl 编辑器 图框编辑器,用于创建/自定义框架 引用。 3.3. 工程树视图 双击原理图文件运行原理图编辑器,在这种情况下打开文件 pic_programmer.sch。 双击电路板文件运行布局编辑器,在这种情况下打开文件 pic_programmer.kicad_pcb。 右键单击工程树中的任何文件都可以进行通用文件操作。 3.4. 顶部工具栏 KiCad 顶部工具栏允许一些基本的文件操作: 如果找到默认模板文件(kicad.pro) kicad/template , 将其复制到工作目录中。 从现有模板创建新工程。 打开现有工程。 更新并保存当前工程树。 创建整个工程的 zip 压缩。 这包括原理图 文件,库,PCB 等 刷新树视图,有时在树更改后需要。 第 4 章 工程模板 使用工程模板有助于使用预定义设置设置新工程。 模板可能包含预定义的电 路板边框,连接器位置,原理图元素,设计规则等。甚至可以包括用作新工程0 码力 | 39 页 | 224.13 KB | 1 年前3 KiCad 5.1 参考手册但是,您只能编辑当前工程文件。 当这些工具在 独立 模式下运行时,您可以 在任何工程中打开任何文件,但在工具之间交叉探测会产生奇怪的结果。 3.1. 工程管理器窗口 主 KiCad 窗口由工程树视图,包含用于运行各种软件工具的按钮的启动窗格和 消息窗口组成。 菜单和工具栏可用于创建,读取和保存工程文件。 3.2. 实用程序启动窗格 KiCad 允许您运行随附的所有独立软件工具。 启动窗 的东西。 8Pl 编辑器 图框编辑器,用于创建/自定义框架 引用。 3.3. 工程树视图 双击原理图文件运行原理图编辑器,在这种情况下打开文件 pic_programmer.sch。 双击电路板文件运行布局编辑器,在这种情况下打开文件 pic_programmer.kicad_pcb。 右键单击工程树中的任何文件都可以进行通用文件操作。 3.4. 顶部工具栏 KiCad 顶部工具栏允许一些基本的文件操作: 如果找到默认模板文件(kicad.pro) kicad/template , 将其复制到工作目录中。 从现有模板创建新工程。 打开现有工程。 更新并保存当前工程树。 创建整个工程的 zip 压缩。 这包括原理图 文件,库,PCB 等 刷新树视图,有时在树更改后需要。 第 4 章 工程模板 使用工程模板有助于使用预定义设置设置新工程。 模板可能包含预定义的电 路板边框,连接器位置,原理图元素,设计规则等。甚至可以包括用作新工程0 码力 | 39 页 | 224.13 KB | 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
 百度超级链 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
 百度超级链 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
共 87 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9














