 百度超级链 XuperChain 3.12-a中文文档射到固定大小的二进制串(称之为“散列值”,“散列”或“消息摘要”),并且 是单向的功能,即一种实际上不可逆转的功能。理想情况下,查找生成给定 哈希的消息的唯一方法是尝试对可能的输入进行暴力搜索,以查看它们是否 产生匹配,或使用匹配哈希的彩虹表。 MD5 : 摘要长度为128bit,由于容易受到碰撞攻击,目前使用越来越少。 SHA256 : SHA系列哈希算法由美国国家安全局制定,具有多个hash算法标 准,可以产生 MultiSig } 整个CryptoClient由四部分功能接口组成: CryptoCore : 主要提供包括加解密、签名等密码学核心功能; KeyUtils : 主要提供公私钥相关工具,例如密钥对象和JSON、文件格式 之间的转换等; AccountUtils : 主要提供账户相关的功能接口,例如创建账户、助记词导 出私钥等; MultiSig : 主要提供多重签名、环签名相关功能接口。 ECDSA/Schnorr*和*国密 算法实 现,并分别提供了密码学插件。 为了方便框架使用密码学插件,超级链在 crypto/client 包中封装了一层密码 学插件管理器,支持创建指定类型的密码学对象,或者通过公私钥自动识别 需要加载的插件类型。通过密码学插件管理器,可以支持隔绝框架对密码学 插件的感知,对上层框架提供一种无缝的使用体验。 超级链中默认密码学插件使用的是Nist P256 + ECDSA,在不额外指定的情况0 码力 | 336 页 | 12.62 MB | 1 年前3 百度超级链 XuperChain 3.12-a中文文档射到固定大小的二进制串(称之为“散列值”,“散列”或“消息摘要”),并且 是单向的功能,即一种实际上不可逆转的功能。理想情况下,查找生成给定 哈希的消息的唯一方法是尝试对可能的输入进行暴力搜索,以查看它们是否 产生匹配,或使用匹配哈希的彩虹表。 MD5 : 摘要长度为128bit,由于容易受到碰撞攻击,目前使用越来越少。 SHA256 : SHA系列哈希算法由美国国家安全局制定,具有多个hash算法标 准,可以产生 MultiSig } 整个CryptoClient由四部分功能接口组成: CryptoCore : 主要提供包括加解密、签名等密码学核心功能; KeyUtils : 主要提供公私钥相关工具,例如密钥对象和JSON、文件格式 之间的转换等; AccountUtils : 主要提供账户相关的功能接口,例如创建账户、助记词导 出私钥等; MultiSig : 主要提供多重签名、环签名相关功能接口。 ECDSA/Schnorr*和*国密 算法实 现,并分别提供了密码学插件。 为了方便框架使用密码学插件,超级链在 crypto/client 包中封装了一层密码 学插件管理器,支持创建指定类型的密码学对象,或者通过公私钥自动识别 需要加载的插件类型。通过密码学插件管理器,可以支持隔绝框架对密码学 插件的感知,对上层框架提供一种无缝的使用体验。 超级链中默认密码学插件使用的是Nist P256 + ECDSA,在不额外指定的情况0 码力 | 336 页 | 12.62 MB | 1 年前3
 百度超级链 XuperChain 3.12-c 中文文档射到固定大小的二进制串(称之为“散列值”,“散列”或“消息摘要”),并且 是单向的功能,即一种实际上不可逆转的功能。理想情况下,查找生成给定 哈希的消息的唯一方法是尝试对可能的输入进行暴力搜索,以查看它们是否 产生匹配,或使用匹配哈希的彩虹表。 MD5 : 摘要长度为128bit,由于容易受到碰撞攻击,目前使用越来越少。 SHA256 : SHA系列哈希算法由美国国家安全局制定,具有多个hash算法标 准,可以产生 MultiSig } 整个CryptoClient由四部分功能接口组成: CryptoCore : 主要提供包括加解密、签名等密码学核心功能; KeyUtils : 主要提供公私钥相关工具,例如密钥对象和JSON、文件格式 之间的转换等; AccountUtils : 主要提供账户相关的功能接口,例如创建账户、助记词导 出私钥等; MultiSig : 主要提供多重签名、环签名相关功能接口。 ECDSA/Schnorr*和*国密 算法实 现,并分别提供了密码学插件。 为了方便框架使用密码学插件,超级链在 crypto/client 包中封装了一层密码 学插件管理器,支持创建指定类型的密码学对象,或者通过公私钥自动识别 需要加载的插件类型。通过密码学插件管理器,可以支持隔绝框架对密码学 插件的感知,对上层框架提供一种无缝的使用体验。 超级链中默认密码学插件使用的是Nist P256 + ECDSA,在不额外指定的情况0 码力 | 336 页 | 12.62 MB | 1 年前3 百度超级链 XuperChain 3.12-c 中文文档射到固定大小的二进制串(称之为“散列值”,“散列”或“消息摘要”),并且 是单向的功能,即一种实际上不可逆转的功能。理想情况下,查找生成给定 哈希的消息的唯一方法是尝试对可能的输入进行暴力搜索,以查看它们是否 产生匹配,或使用匹配哈希的彩虹表。 MD5 : 摘要长度为128bit,由于容易受到碰撞攻击,目前使用越来越少。 SHA256 : SHA系列哈希算法由美国国家安全局制定,具有多个hash算法标 准,可以产生 MultiSig } 整个CryptoClient由四部分功能接口组成: CryptoCore : 主要提供包括加解密、签名等密码学核心功能; KeyUtils : 主要提供公私钥相关工具,例如密钥对象和JSON、文件格式 之间的转换等; AccountUtils : 主要提供账户相关的功能接口,例如创建账户、助记词导 出私钥等; MultiSig : 主要提供多重签名、环签名相关功能接口。 ECDSA/Schnorr*和*国密 算法实 现,并分别提供了密码学插件。 为了方便框架使用密码学插件,超级链在 crypto/client 包中封装了一层密码 学插件管理器,支持创建指定类型的密码学对象,或者通过公私钥自动识别 需要加载的插件类型。通过密码学插件管理器,可以支持隔绝框架对密码学 插件的感知,对上层框架提供一种无缝的使用体验。 超级链中默认密码学插件使用的是Nist P256 + ECDSA,在不额外指定的情况0 码力 | 336 页 | 12.62 MB | 1 年前3
 百度超级链 XuperChain 3.12 中文文档射到固定大小的二进制串(称之为“散列值”,“散列”或“消息摘要”),并且 是单向的功能,即一种实际上不可逆转的功能。理想情况下,查找生成给定 哈希的消息的唯一方法是尝试对可能的输入进行暴力搜索,以查看它们是否 产生匹配,或使用匹配哈希的彩虹表。 MD5 : 摘要长度为128bit,由于容易受到碰撞攻击,目前使用越来越少。 SHA256 : SHA系列哈希算法由美国国家安全局制定,具有多个hash算法标 准,可以产生 MultiSig } 整个CryptoClient由四部分功能接口组成: CryptoCore : 主要提供包括加解密、签名等密码学核心功能; KeyUtils : 主要提供公私钥相关工具,例如密钥对象和JSON、文件格式 之间的转换等; AccountUtils : 主要提供账户相关的功能接口,例如创建账户、助记词导 出私钥等; MultiSig : 主要提供多重签名、环签名相关功能接口。 ECDSA/Schnorr*和*国密 算法实 现,并分别提供了密码学插件。 为了方便框架使用密码学插件,超级链在 crypto/client 包中封装了一层密码 学插件管理器,支持创建指定类型的密码学对象,或者通过公私钥自动识别 需要加载的插件类型。通过密码学插件管理器,可以支持隔绝框架对密码学 插件的感知,对上层框架提供一种无缝的使用体验。 超级链中默认密码学插件使用的是Nist P256 + ECDSA,在不额外指定的情况0 码力 | 336 页 | 12.62 MB | 1 年前3 百度超级链 XuperChain 3.12 中文文档射到固定大小的二进制串(称之为“散列值”,“散列”或“消息摘要”),并且 是单向的功能,即一种实际上不可逆转的功能。理想情况下,查找生成给定 哈希的消息的唯一方法是尝试对可能的输入进行暴力搜索,以查看它们是否 产生匹配,或使用匹配哈希的彩虹表。 MD5 : 摘要长度为128bit,由于容易受到碰撞攻击,目前使用越来越少。 SHA256 : SHA系列哈希算法由美国国家安全局制定,具有多个hash算法标 准,可以产生 MultiSig } 整个CryptoClient由四部分功能接口组成: CryptoCore : 主要提供包括加解密、签名等密码学核心功能; KeyUtils : 主要提供公私钥相关工具,例如密钥对象和JSON、文件格式 之间的转换等; AccountUtils : 主要提供账户相关的功能接口,例如创建账户、助记词导 出私钥等; MultiSig : 主要提供多重签名、环签名相关功能接口。 ECDSA/Schnorr*和*国密 算法实 现,并分别提供了密码学插件。 为了方便框架使用密码学插件,超级链在 crypto/client 包中封装了一层密码 学插件管理器,支持创建指定类型的密码学对象,或者通过公私钥自动识别 需要加载的插件类型。通过密码学插件管理器,可以支持隔绝框架对密码学 插件的感知,对上层框架提供一种无缝的使用体验。 超级链中默认密码学插件使用的是Nist P256 + ECDSA,在不额外指定的情况0 码力 | 336 页 | 12.62 MB | 1 年前3
 百度超级链 XuperChain 3.12-b 中文文档射到固定大小的二进制串(称之为“散列值”,“散列”或“消息摘要”),并且 是单向的功能,即一种实际上不可逆转的功能。理想情况下,查找生成给定 哈希的消息的唯一方法是尝试对可能的输入进行暴力搜索,以查看它们是否 产生匹配,或使用匹配哈希的彩虹表。 MD5 : 摘要长度为128bit,由于容易受到碰撞攻击,目前使用越来越少。 SHA256 : SHA系列哈希算法由美国国家安全局制定,具有多个hash算法标 准,可以产生 MultiSig } 整个CryptoClient由四部分功能接口组成: CryptoCore : 主要提供包括加解密、签名等密码学核心功能; KeyUtils : 主要提供公私钥相关工具,例如密钥对象和JSON、文件格式 之间的转换等; AccountUtils : 主要提供账户相关的功能接口,例如创建账户、助记词导 出私钥等; MultiSig : 主要提供多重签名、环签名相关功能接口。 ECDSA/Schnorr*和*国密 算法实 现,并分别提供了密码学插件。 为了方便框架使用密码学插件,超级链在 crypto/client 包中封装了一层密码 学插件管理器,支持创建指定类型的密码学对象,或者通过公私钥自动识别 需要加载的插件类型。通过密码学插件管理器,可以支持隔绝框架对密码学 插件的感知,对上层框架提供一种无缝的使用体验。 超级链中默认密码学插件使用的是Nist P256 + ECDSA,在不额外指定的情况0 码力 | 336 页 | 12.62 MB | 1 年前3 百度超级链 XuperChain 3.12-b 中文文档射到固定大小的二进制串(称之为“散列值”,“散列”或“消息摘要”),并且 是单向的功能,即一种实际上不可逆转的功能。理想情况下,查找生成给定 哈希的消息的唯一方法是尝试对可能的输入进行暴力搜索,以查看它们是否 产生匹配,或使用匹配哈希的彩虹表。 MD5 : 摘要长度为128bit,由于容易受到碰撞攻击,目前使用越来越少。 SHA256 : SHA系列哈希算法由美国国家安全局制定,具有多个hash算法标 准,可以产生 MultiSig } 整个CryptoClient由四部分功能接口组成: CryptoCore : 主要提供包括加解密、签名等密码学核心功能; KeyUtils : 主要提供公私钥相关工具,例如密钥对象和JSON、文件格式 之间的转换等; AccountUtils : 主要提供账户相关的功能接口,例如创建账户、助记词导 出私钥等; MultiSig : 主要提供多重签名、环签名相关功能接口。 ECDSA/Schnorr*和*国密 算法实 现,并分别提供了密码学插件。 为了方便框架使用密码学插件,超级链在 crypto/client 包中封装了一层密码 学插件管理器,支持创建指定类型的密码学对象,或者通过公私钥自动识别 需要加载的插件类型。通过密码学插件管理器,可以支持隔绝框架对密码学 插件的感知,对上层框架提供一种无缝的使用体验。 超级链中默认密码学插件使用的是Nist P256 + ECDSA,在不额外指定的情况0 码力 | 336 页 | 12.62 MB | 1 年前3
 百度超级链 XuperChain latest 中文文档text)对象,context里面保 存了合约的kv cache对象,运行参数,输出结果等,context用于隔离多个合约 的执行,也便于合约的并发执行。 2.3.1. Context的创建和销毁 context在合约虚拟机每次执行合约的时候创建。 每个context都有一个context id,这个id由合约虚拟机维护,在xchain启动的时候置0,每次创建一个context 对象加1,合约虚拟机保存了context 对象加1,合约虚拟机保存了context id到context对象的映射。 context id会传递 给合约虚拟机,在Docker里面即是合约进程,在之后的合约发起KV调用过程 中需要带上这个context id来标识本次合约调用以找到对应的context对象。 context的销毁时机比较重要,因为我们还需要从context对象里面获取合约执行 过程中的Response以及读写集,因此有两种解决方案,一种是由调用合约的地 是由调用合约的地 方管理,这个是xuper3里面做的,一种是统一销毁,这个是目前的做法,在打 包成块结束调用Finalize的时候统一销毁所有在这个块里面的合约context对象。 2.3.2. 合约上下文的操作 NewContext,创建一个context,需要合约的参数等信息。 Invoke,运行一个context,这一步是执行合约的过程,合约执行的结果会 存储在context里面。 Re0 码力 | 316 页 | 24.51 MB | 1 年前3 百度超级链 XuperChain latest 中文文档text)对象,context里面保 存了合约的kv cache对象,运行参数,输出结果等,context用于隔离多个合约 的执行,也便于合约的并发执行。 2.3.1. Context的创建和销毁 context在合约虚拟机每次执行合约的时候创建。 每个context都有一个context id,这个id由合约虚拟机维护,在xchain启动的时候置0,每次创建一个context 对象加1,合约虚拟机保存了context 对象加1,合约虚拟机保存了context id到context对象的映射。 context id会传递 给合约虚拟机,在Docker里面即是合约进程,在之后的合约发起KV调用过程 中需要带上这个context id来标识本次合约调用以找到对应的context对象。 context的销毁时机比较重要,因为我们还需要从context对象里面获取合约执行 过程中的Response以及读写集,因此有两种解决方案,一种是由调用合约的地 是由调用合约的地 方管理,这个是xuper3里面做的,一种是统一销毁,这个是目前的做法,在打 包成块结束调用Finalize的时候统一销毁所有在这个块里面的合约context对象。 2.3.2. 合约上下文的操作 NewContext,创建一个context,需要合约的参数等信息。 Invoke,运行一个context,这一步是执行合约的过程,合约执行的结果会 存储在context里面。 Re0 码力 | 316 页 | 24.51 MB | 1 年前3
 百度超级链 XuperChain 3.9-e 中文文档text)对象,context里面保 存了合约的kv cache对象,运行参数,输出结果等,context用于隔离多个合约 的执行,也便于合约的并发执行。 2.3.1. Context的创建和销毁 context在合约虚拟机每次执行合约的时候创建。 每个context都有一个context id,这个id由合约虚拟机维护,在xchain启动的时候置0,每次创建一个context 对象加1,合约虚拟机保存了context 对象加1,合约虚拟机保存了context id到context对象的映射。 context id会传递 给合约虚拟机,在Docker里面即是合约进程,在之后的合约发起KV调用过程 中需要带上这个context id来标识本次合约调用以找到对应的context对象。 context的销毁时机比较重要,因为我们还需要从context对象里面获取合约执行 过程中的Response以及读写集,因此有两种解决方案,一种是由调用合约的地 是由调用合约的地 方管理,这个是xuper3里面做的,一种是统一销毁,这个是目前的做法,在打 包成块结束调用Finalize的时候统一销毁所有在这个块里面的合约context对象。 2.3.2. 合约上下文的操作 NewContext,创建一个context,需要合约的参数等信息。 Invoke,运行一个context,这一步是执行合约的过程,合约执行的结果会 存储在context里面。 Re0 码力 | 317 页 | 27.80 MB | 1 年前3 百度超级链 XuperChain 3.9-e 中文文档text)对象,context里面保 存了合约的kv cache对象,运行参数,输出结果等,context用于隔离多个合约 的执行,也便于合约的并发执行。 2.3.1. Context的创建和销毁 context在合约虚拟机每次执行合约的时候创建。 每个context都有一个context id,这个id由合约虚拟机维护,在xchain启动的时候置0,每次创建一个context 对象加1,合约虚拟机保存了context 对象加1,合约虚拟机保存了context id到context对象的映射。 context id会传递 给合约虚拟机,在Docker里面即是合约进程,在之后的合约发起KV调用过程 中需要带上这个context id来标识本次合约调用以找到对应的context对象。 context的销毁时机比较重要,因为我们还需要从context对象里面获取合约执行 过程中的Response以及读写集,因此有两种解决方案,一种是由调用合约的地 是由调用合约的地 方管理,这个是xuper3里面做的,一种是统一销毁,这个是目前的做法,在打 包成块结束调用Finalize的时候统一销毁所有在这个块里面的合约context对象。 2.3.2. 合约上下文的操作 NewContext,创建一个context,需要合约的参数等信息。 Invoke,运行一个context,这一步是执行合约的过程,合约执行的结果会 存储在context里面。 Re0 码力 | 317 页 | 27.80 MB | 1 年前3
 百度超级链 XuperChain master 中文文档text)对象,context里面保 存了合约的kv cache对象,运行参数,输出结果等,context用于隔离多个合约 的执行,也便于合约的并发执行。 2.3.1. Context的创建和销毁 context在合约虚拟机每次执行合约的时候创建。 每个context都有一个context id,这个id由合约虚拟机维护,在xchain启动的时候置0,每次创建一个context 对象加1,合约虚拟机保存了context 对象加1,合约虚拟机保存了context id到context对象的映射。 context id会传递 给合约虚拟机,在Docker里面即是合约进程,在之后的合约发起KV调用过程 中需要带上这个context id来标识本次合约调用以找到对应的context对象。 context的销毁时机比较重要,因为我们还需要从context对象里面获取合约执行 过程中的Response以及读写集,因此有两种解决方案,一种是由调用合约的地 是由调用合约的地 方管理,这个是xuper3里面做的,一种是统一销毁,这个是目前的做法,在打 包成块结束调用Finalize的时候统一销毁所有在这个块里面的合约context对象。 2.3.2. 合约上下文的操作 NewContext,创建一个context,需要合约的参数等信息。 Invoke,运行一个context,这一步是执行合约的过程,合约执行的结果会 存储在context里面。 Re0 码力 | 316 页 | 24.51 MB | 1 年前3 百度超级链 XuperChain master 中文文档text)对象,context里面保 存了合约的kv cache对象,运行参数,输出结果等,context用于隔离多个合约 的执行,也便于合约的并发执行。 2.3.1. Context的创建和销毁 context在合约虚拟机每次执行合约的时候创建。 每个context都有一个context id,这个id由合约虚拟机维护,在xchain启动的时候置0,每次创建一个context 对象加1,合约虚拟机保存了context 对象加1,合约虚拟机保存了context id到context对象的映射。 context id会传递 给合约虚拟机,在Docker里面即是合约进程,在之后的合约发起KV调用过程 中需要带上这个context id来标识本次合约调用以找到对应的context对象。 context的销毁时机比较重要,因为我们还需要从context对象里面获取合约执行 过程中的Response以及读写集,因此有两种解决方案,一种是由调用合约的地 是由调用合约的地 方管理,这个是xuper3里面做的,一种是统一销毁,这个是目前的做法,在打 包成块结束调用Finalize的时候统一销毁所有在这个块里面的合约context对象。 2.3.2. 合约上下文的操作 NewContext,创建一个context,需要合约的参数等信息。 Invoke,运行一个context,这一步是执行合约的过程,合约执行的结果会 存储在context里面。 Re0 码力 | 316 页 | 24.51 MB | 1 年前3
 百度超级链 XuperChain 3.8 中文文档text)对象,context里面保 存了合约的kv cache对象,运行参数,输出结果等,context用于隔离多个合约 的执行,也便于合约的并发执行。 2.3.1. Context的创建和销毁 context在合约虚拟机每次执行合约的时候创建。 每个context都有一个context id,这个id由合约虚拟机维护,在xchain启动的时候置0,每次创建一个context 对象加1,合约虚拟机保存了context 对象加1,合约虚拟机保存了context id到context对象的映射。 context id会传递 给合约虚拟机,在Docker里面即是合约进程,在之后的合约发起KV调用过程 中需要带上这个context id来标识本次合约调用以找到对应的context对象。 context的销毁时机比较重要,因为我们还需要从context对象里面获取合约执行 过程中的Response以及读写集,因此有两种解决方案,一种是由调用合约的地 是由调用合约的地 方管理,这个是xuper3里面做的,一种是统一销毁,这个是目前的做法,在打 包成块结束调用Finalize的时候统一销毁所有在这个块里面的合约context对象。 2.3.2. 合约上下文的操作 NewContext,创建一个context,需要合约的参数等信息。 Invoke,运行一个context,这一步是执行合约的过程,合约执行的结果会 存储在context里面。 Re0 码力 | 316 页 | 27.93 MB | 1 年前3 百度超级链 XuperChain 3.8 中文文档text)对象,context里面保 存了合约的kv cache对象,运行参数,输出结果等,context用于隔离多个合约 的执行,也便于合约的并发执行。 2.3.1. Context的创建和销毁 context在合约虚拟机每次执行合约的时候创建。 每个context都有一个context id,这个id由合约虚拟机维护,在xchain启动的时候置0,每次创建一个context 对象加1,合约虚拟机保存了context 对象加1,合约虚拟机保存了context id到context对象的映射。 context id会传递 给合约虚拟机,在Docker里面即是合约进程,在之后的合约发起KV调用过程 中需要带上这个context id来标识本次合约调用以找到对应的context对象。 context的销毁时机比较重要,因为我们还需要从context对象里面获取合约执行 过程中的Response以及读写集,因此有两种解决方案,一种是由调用合约的地 是由调用合约的地 方管理,这个是xuper3里面做的,一种是统一销毁,这个是目前的做法,在打 包成块结束调用Finalize的时候统一销毁所有在这个块里面的合约context对象。 2.3.2. 合约上下文的操作 NewContext,创建一个context,需要合约的参数等信息。 Invoke,运行一个context,这一步是执行合约的过程,合约执行的结果会 存储在context里面。 Re0 码力 | 316 页 | 27.93 MB | 1 年前3
 百度超级链 XuperChain stable 中文文档ext)对象,context里面保 存了合约的kv cache对象,运行参数,输出结果等,context用于隔离多个合约 的执行,也便于合约的并发执行。 2.3.1. Context的创建和销毁 context在合约虚拟机每次执行合约的时候创建。 每个context都有一个context id,这个id由合约虚拟机维护,在xchain启动的时候置0,每次创建一个context 对象加1,合约虚拟机保存了context 对象加1,合约虚拟机保存了context id到context对象的映射。 context id会传递 给合约虚拟机,在Docker里面即是合约进程,在之后的合约发起KV调用过程 中需要带上这个context id来标识本次合约调用以找到对应的context对象。 context的销毁时机比较重要,因为我们还需要从context对象里面获取合约执行 过程中的Response以及读写集,因此有两种解决方案,一种是由调用合约的地 是由调用合约的地 方管理,这个是xuper3里面做的,一种是统一销毁,这个是目前的做法,在打 包成块结束调用Finalize的时候统一销毁所有在这个块里面的合约context对象。 2.3.2. 合约上下文的操作 NewContext,创建一个context,需要合约的参数等信息。 Invoke,运行一个context,这一步是执行合约的过程,合约执行的结果会 存储在context里面。 Re0 码力 | 325 页 | 26.31 MB | 1 年前3 百度超级链 XuperChain stable 中文文档ext)对象,context里面保 存了合约的kv cache对象,运行参数,输出结果等,context用于隔离多个合约 的执行,也便于合约的并发执行。 2.3.1. Context的创建和销毁 context在合约虚拟机每次执行合约的时候创建。 每个context都有一个context id,这个id由合约虚拟机维护,在xchain启动的时候置0,每次创建一个context 对象加1,合约虚拟机保存了context 对象加1,合约虚拟机保存了context id到context对象的映射。 context id会传递 给合约虚拟机,在Docker里面即是合约进程,在之后的合约发起KV调用过程 中需要带上这个context id来标识本次合约调用以找到对应的context对象。 context的销毁时机比较重要,因为我们还需要从context对象里面获取合约执行 过程中的Response以及读写集,因此有两种解决方案,一种是由调用合约的地 是由调用合约的地 方管理,这个是xuper3里面做的,一种是统一销毁,这个是目前的做法,在打 包成块结束调用Finalize的时候统一销毁所有在这个块里面的合约context对象。 2.3.2. 合约上下文的操作 NewContext,创建一个context,需要合约的参数等信息。 Invoke,运行一个context,这一步是执行合约的过程,合约执行的结果会 存储在context里面。 Re0 码力 | 325 页 | 26.31 MB | 1 年前3
 百度超级链 XuperChain 3.9 中文文档text)对象,context里面保 存了合约的kv cache对象,运行参数,输出结果等,context用于隔离多个合约 的执行,也便于合约的并发执行。 2.3.1. Context的创建和销毁 context在合约虚拟机每次执行合约的时候创建。 每个context都有一个context id,这个id由合约虚拟机维护,在xchain启动的时候置0,每次创建一个context 对象加1,合约虚拟机保存了context 对象加1,合约虚拟机保存了context id到context对象的映射。 context id会传递 给合约虚拟机,在Docker里面即是合约进程,在之后的合约发起KV调用过程 中需要带上这个context id来标识本次合约调用以找到对应的context对象。 context的销毁时机比较重要,因为我们还需要从context对象里面获取合约执行 过程中的Response以及读写集,因此有两种解决方案,一种是由调用合约的地 是由调用合约的地 方管理,这个是xuper3里面做的,一种是统一销毁,这个是目前的做法,在打 包成块结束调用Finalize的时候统一销毁所有在这个块里面的合约context对象。 2.3.2. 合约上下文的操作 NewContext,创建一个context,需要合约的参数等信息。 Invoke,运行一个context,这一步是执行合约的过程,合约执行的结果会 存储在context里面。 Re0 码力 | 317 页 | 27.80 MB | 1 年前3 百度超级链 XuperChain 3.9 中文文档text)对象,context里面保 存了合约的kv cache对象,运行参数,输出结果等,context用于隔离多个合约 的执行,也便于合约的并发执行。 2.3.1. Context的创建和销毁 context在合约虚拟机每次执行合约的时候创建。 每个context都有一个context id,这个id由合约虚拟机维护,在xchain启动的时候置0,每次创建一个context 对象加1,合约虚拟机保存了context 对象加1,合约虚拟机保存了context id到context对象的映射。 context id会传递 给合约虚拟机,在Docker里面即是合约进程,在之后的合约发起KV调用过程 中需要带上这个context id来标识本次合约调用以找到对应的context对象。 context的销毁时机比较重要,因为我们还需要从context对象里面获取合约执行 过程中的Response以及读写集,因此有两种解决方案,一种是由调用合约的地 是由调用合约的地 方管理,这个是xuper3里面做的,一种是统一销毁,这个是目前的做法,在打 包成块结束调用Finalize的时候统一销毁所有在这个块里面的合约context对象。 2.3.2. 合约上下文的操作 NewContext,创建一个context,需要合约的参数等信息。 Invoke,运行一个context,这一步是执行合约的过程,合约执行的结果会 存储在context里面。 Re0 码力 | 317 页 | 27.80 MB | 1 年前3
共 44 条
- 1
- 2
- 3
- 4
- 5














 
 