Lin*_*ear 1 hyperledger-fabric
我一直在研究 Hyperledger Fabric 大约 1 年。
但是我仍然无法说出链码是如何工作的以及如何准确处理的,尤其是在其实现和流程方面。
这就是我理解下面链码的方式。
链码正在运行并与对等点隔离,作为 docker 容器之一,因为它在网络中具有完整性。链码是一个程序,它定义了交易中的函数(例如,AddTwoIntegerValues())应该如何更新账本
此外,背书节点访问链码以执行来自客户端或其他节点的交易提案中的功能,以响应背书。(此过程不清楚)
在这种情况下,我想问你这些背书节点如何并行执行或访问链码容器?我听说“链码执行”是指链码逻辑计算的模拟。但我无法理解。
换句话说,我的问题是他们如何同时执行或访问它?他们有那个链码的副本吗?peers 如何知道链码逻辑?如果我错了,你能纠正我或解释链码过程吗?
如果您对我的问题有任何想法,请告诉我。我期待你的回答!
对于给定链码代码的每个版本,每个对等点都有自己的链码容器。当链码安装在对等点上时,链码代码的代码包被写入文件系统。
稍后,当 peer 收到调用链码上的函数的请求(Init() 或 Invoke(),当 Init() 在实例化时运行),peer 检查链码是否已经在运行,如果没有,它:
链码垫片二进制文件:
每当对等方收到来自客户端的提议时,它:
然后,在容器内运行的链码垫片 - 从提案中提取参数并开始运行链码逻辑(其二进制文件的一部分)。
如果链码逻辑包含 GetState 或 PutState 等数据访问操作,则它会沿着与对等方连接的相同 gRPC 流向对等方发送请求,然后对等方执行以下操作:
(*) 我个人认为这一步不是必须的……它只是延长了执行时间
在链码 shim 完成交易计算后,它将结果(即“OK”)连同表示交易完成执行的标记一起发送回对等方。
由于写入的值并未真正写入数据库,而只是添加到内存映射中,因此这称为“事务模拟”。然后,对等方继续签署交易模拟的结果(读写集映射和来自链码垫片的结果),然后将签署的交易模拟(也称为“背书”)作为响应返回给客户端。
In that case, I'd like to ask you how those endorsing peers can execute or access the chaincode container in parallel?
Run Code Online (Sandbox Code Playgroud)
您可以并行执行此操作,因为当链代码 shim 调用事务时,它会在单独的 goroutine上执行此操作。
| 归档时间: |
|
| 查看次数: |
554 次 |
| 最近记录: |