9.5 背书节点和链码的有限状态机 - 数据结构 - 机器学习
数据结构 - 机器学习
深度学习

当前位置:首页 » 区块链精品文章 » 正文
9.5 背书节点和链码的有限状态机
1643 人参与 2018年10月11日 10:53 分类 : 区块链精品文章 评论
链码本身是不会存储任何数据的,业务逻辑处理过程中是通过建立好的gRPC连接实现和背书节点的交互,交互过程是通过有限状态机(Finite State Machine)来实现的。有限状态机有下面几个特点:
·状态是有限的,能够遍历完所有的状态;
·有一个初始状态和终止状态以及若干中间状态;
·任意时刻只会处于其中的一个状态;
·处于某个状态下能处理的事件是有限的;
·状态转移之间的转移条件是确定的。
背书节点端和链码端都通过有限状态机定义了各自生命周期内所处的所有状态,以及如何在各种状态下响应各种事件和转移到其他状态。具体实现采用第三方的库http://github.com/looplab/fsm,我们就用fsm来代表这个库。fsm的状态直接用字符串来表示,定义了状态转移映射表。
type EventDesc struct {
// 事件名称
Name string
// 状态转移的源状态列表
Src []string
// 状态转移的目的状态
Dst string
}
其中,状态转移的源状态列表Src是一个数组,是把状态转移合并了,多个状态都可以接收相同的事件转移到相同的目的状态。
回调函数映射表Callbacks定义了事件处理和状态转移的执行函数。
type Callbacks map[string]Callback
type Callback func(*Event)
type Event struct {
// 对当前FSM的引用
FSM *FSM
// 事件名称
Event string
// 交易前的状态
Src string
// 交易后的状态
Dst string
// 回调函数中返回的错误(可选)
Err error
// 回调函数传入的参数(可选)
Args []interface{}
// 数字标识位,当交易取消时设定
canceled bool
// 数字标识位,当异步交易时设定
async bool
}
回调函数映射表Callbacks定义了两种类型的函数。
·事件处理的执行函数:处理某个事件前后的操作,定义规则是before_EVENT和after_EVENT,其中EVENT是某个具体的事件名称。
·状态变化的执行函数:进入某个状态和离开某个状态的操作,定义规则是enter_STATE和leave_STATE,其中STATE是某个具体的状态名称。
同一个链码也可能同时和背书节点进行交互,链码侧也会存在背书节点侧消息的数据分发问题。链码维护了交易的Golang通道responseChannel映射表。
responseChannel map[string]chan pb.ChaincodeMessage
其中,键是交易号txid,值是不同交易号的Golang通道pb.ChaincodeMessage。链码有限 状态机接收到ChaincodeMessage_RESPONSE的消息后,通过给每个交易建立的Golang通道返回给调用接口。能够这么实现的原因 是,尽管可能同时在处理不同的交易,但是同一个交易是顺序执行的,返回的结果也是顺序的。
来源:我是码农,转载请保留出处和链接!
本文链接:http://www.54manong.com/?id=1054
微信号:qq444848023 QQ号:444848023
加入【我是码农】QQ群:864689844(加群验证:我是码农)
- 大数据时代区块链再造信任体系2018-09-25 16:16
- 永远的背影:中本聪的99种传说2018-09-27 16:49
- 3.4 是投资还是投机?2018-09-28 16:56
- 10.1 另类币的历史和诱因2018-09-12 11:10
网站分类
- 数据结构
- 数据结构视频教程
- 数据结构练习题
- 数据结构试卷
- 数据结构习题解析
- 数据结构电子书
- 数据结构精品文章
- 区块链
- 区块链精品文章
- 区块链电子书
- 大数据
- 大数据精品文章
- 大数据电子书
- 机器学习
- 机器学习精品文章
- 机器学习电子书
- 面试笔试
- 物联网/云计算
标签列表
- 数据结构 (39)
- 数据结构电子书 (20)
- 数据结构习题解析 (8)
- 数据结构试卷 (10)
- 区块链是什么 (261)
- 数据结构视频教程 (31)
- 大数据技术与应用 (12)
- 百面机器学习 (14)
- 机器学电子书 (29)
- 大数据电子书 (37)
- 程序员面试 (10)
- RFID (21)
最近发表
- 找出数组中有3个出现一次的数字
- 《百面机器学习》电子书下载
- 区块链精品电子书《深度探索区块链:Hyperledger技术与应用_区块链技术丛书》张增骏
- 区块链精品电子书《比特币:一个虚幻而真实的金融世界》
- 区块链精品电子书《图说区块链》-徐明星 & 田颖 & 李霁月
- 区块链精品电子书《是非区块链:技术、投机与泡沫》-英国《金融时报》
- 区块链精品电子书《商业区块链:开启加密经济新时代》-威廉·穆贾雅
- 区块链精品电子书《人工智能时代,一本书读懂区块链金融 (互联网_时代企业管理实战系列)》-马兆林
-
(function(){
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https'){
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
}
else{
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试
var cnzz_protocol = (("https:" == document.location.protocol) ? "https://" : "http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_1276413723'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s23.cnzz.com/z_stat.php%3Fid%3D1276413723%26show%3Dpic1' type='text/javascript'%3E%3C/script%3E"));本站资源大部分来自互联网,版权归原作者所有!
评论专区