手机端自组网区块链平台设计方案

基于移动终端自组网的区块链实现方案

一、方案概述

参考超级账本fabric的设计原理,应因移动终端自组区块链网络的需求,开发本系统。系统主要包含两部分:p2p通信服务器和区块链终端设备。

首先需要搭建组网的信令服务器,实现移动终端节点p2p网络通信。其次移动终端申请安装组网apk,同时获取到授权证书,即可成为区块网络中的受信节点。通过在应用终端配置,选择作为共识节点或背书节点。

移动终端自组网的区块链核心功能,包含6个部分:1、身份认证 ;2、p2p通信; 3、账本实现 ;4、共识机制实现;5、背书机制实现;6、智能合约设计。

二、核心功能点实现

1. 用户身份认证

移动设备加入区块网络,需要通过授权证书的方式,安装相应的区块链APK。区块网络对加入的设备,进行身份认证。当用户操作区块网络时,使用系统颁发的证书,对交易数据进行签名。区块链节点收到请求后,根据内置的算法,对请求进行签名验证,如果认证通过,则接受该设备的请求, 否则拒绝。

2. p2p通信

使用webrtc技术中的数据通道( DataChannel)建立一个在两个节点之间的双向的数据通道,达到点对点通信的目的。流程如下:

  1. 连接双方(Peer)通过第三方服务器来交换(Signalling)各自的SessionDescription数据。

  2. 连接双方(Peer)通过STUN协议从STUN Server那里获取到自己的NAT结构,子网IP和公网IP,端口,这里的IP和端口对我们称之为ICE Candidate。

  3. 连接双方(Peer)通过第三方服务器来交换(Signalling)各自ICE Candidates,如果连接双方在同一个NAT下那他们仅通过内网Candidate就能建立起连接,反之如果他们处于非对称型NAT下,就需要STUN Server识别出的公网Candidate进行通讯。

  4. 如果仅通过STUN Server发现的公网Candidate仍然无法建立连接,换句话说就是连接双方(Peer)中至少有一方处于对称NAT下,这就需要处于对称NAT下的客户端(Peer)去寻求TURN Server提供的转发服务,然后将转发形式的Candidate共享(Signalling)给对方(Peer)。

  5. 连接双方(Peer)向目标IP端口发送报文,通过SessionDescription中涉及的密钥以及期望传输的内容,建立起加密长连接

并且由于信令服务器的存在,节点可以知道网络中其它所有节点的地址,从而很容易进行节点发现等操作。

3. 账本设计

使用手机嵌入式数据库,作为账本记录工具。以行数据和上个区块的hash作为当前交易记录hash值,这样就将交易区块以hash相链接的方式记录在表中。详细见区块链账本表结构设计。

4.共识设计

共识机制采用ETCD共识,每个移动设备都维护一张共识节点表,根据随机种子,选取其中一个节点进行打包区块操作,新的区块生成后,有打包节点广播消息给区块网络中的记账节点,记账节点收到广播后,同步账本到本地数据库。当新加入的共识设备,通过广播的方式向区块中的其他节点发送心跳,其他节点接收到心跳后,更新本地路由表。

5. 背书设计

背书算法采用背书率>50%的背书机制。当请求端发起背书请求时,通过广播的方式向区块网络中的背书节点请求背书,当请求端收到的节点模拟执行结果>50%后,order节点即可完成打包追加区块操作,同时广播消息给记账节点。记账节点将背书的结果记录在区块表中,并更新交易记录表。

6.智能合约

自组网的合约程序运行在记账节点的数据库中。部署智能合约,通过向数据库插入一行合约数据完成。当用户调用合约时,根据合约名称,查找对应的合约数据即可。每次对合约的操作,都需要将操作记录保存在交易记录表中。

区块链账本存储表结构

  • 区块表,储存区块信息

表字段

可否空值

备注

区块高度

区块hash

前一区块hash

区块打包时间

  • 交易记录表,储存交易信息

表字段

可否空值

备注

区块号

交易hash

上一交易hash

交易时间戳

调用合约

调用方法

存储值key

存储值value

世界状态(0,1)

  • 智能合约表,储存合约信息

表字段

可否空值

备注

合约名称

账本读方法

账本写方法

合约部署时间

  • 路由表,储存节点信息

表字段

可否空值

备注

节点IP

节点类型

是否激活

加入时间

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>