LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资讯 > BigBang轻钱包服务LWS与亚马逊awsIoTCore的交互

BigBang轻钱包服务LWS与亚马逊awsIoTCore的交互

2020-07-21 谭币 来源:区块链网络

Lws是light wallet service的缩写,是架设在BigBang公有区块链主干网络和终端数据采集遥感设备之间的一座桥梁。通过它,BigBang核心钱包的区块和交易数据及时地更新和缓存在lws自有的高速内存数据库及本地数据库中,根据这些数据,它会计算出不同终端设备持有密钥所对应的公钥地址的最新utxo集合,并通过与aws的IoT Core的mqtt连接,将这些信息发布(publish)到亚马逊云端设施上,由其message broker向对应的订阅(subscribe)了这些信息的终端设备转发。相应地,终端设备会根据这些与自己相关的utxo列表,在获取了监控监测采集的数据后打包这些数据到交易中,通过mqtt发布到亚马逊 IoT Core,经由后者的message broker向订阅了这些设备的发送交易主题的lws推送,lws会校验这些交易,如果验证成功,则会通过socket api向BigBang核心钱包转发这部分交易,后者收到之后通过p2p网络接口向BigBang全网广播这些交易,出块节点收集这些交易,最终完成其打包区块上链的操作。

lws与device之间的数据交互安全性分两个方面:

一方面是lws与aws iot core之间的传输安全,aws提供的默认安全是通过X509证书和TLS1.2客户端双向身份验证和加密进行安全连接。lws通过亚马逊AWS IoT Device SDK与后者高度可扩展的设备网关建立连接必须提供自身客户端的设备证书和在亚马逊云上注册的密钥以及iot的根证书,完成身份验证和鉴权的认证,才能与其后面的消息网关进行通信。

另一方面是与device通过mqtt建立的业务数据传输安全。每一次device端服务请求时与lws创建的会话session,lws都要从其ApiKeySeed池中随机选取一对密钥对,与设备终端请求时附带上来的公钥通过椭圆曲线乘法运算计算出ApiKey作为当前session生命期内唯一的会话密钥,保证了会话安全。此外,对于异常的device端请求,lws会作出相应的判断,根据非法ServiceReq参数提交次数和无效消息频次,记录异常设备的{$DEVICE}以确定将其加入到黑名单列表中。

以下是ApiKey相关定义和计算

1.?Pubkey Address结构

Byte0

Byte1~Byte32

1

Pubkey (ED25519)

2. 创建ApiKeySeed

利用ED25519生成keypair(Privkeylws,Pubkeylws)

ApiKeySeed = Pubkeylws

3. 生成ApiKey

DeviceClient address 对应的keypair为(Privkeycli,Pubkeycli)

Pubkeycli对应ED22519曲线上的点Pcli = ( Privkeycli) x G

LWS 为创建ApiKeySeed生成的keypair为(Privkeylws,Pubkeylws)

Pubkeylws对应ED22519曲线上的点Plws = ( Privkeylws) x G

LWS计算:

ApiKey = PACK(( Privkeylws) xPcli)

DeviceClient计算:

ApiKey = PACK(( Privkeycli) x Plws )

lws使用aws提供的基于长连接、双向的消息pub/sub消息代理解除与巨量连接的device端数据交互的耦合关系,解决了设备的高并发性和高扩展性。

对于区块及交易数据的存储查询及UTXO数据的更新,lws使用aws的Amazon DynamoDB服务存储它们KV键值对数据。

考虑到BigBang公链网络多支链上高并发TPS产生的海量交易数据及打包区块数据,以及海量的UTXO数据,利用aws的ms级响应延迟的数据存储服务Amazon DynamoDB,可以为每个业务分支链创建一个区块数据库和交易数据库,加速数据的检索能力。

lws同步主干网络下行的区块链数据的同时,配合高吞吐量、弹性扩展的Amazon Kinesis服务,使用Amazon S3高度扩展(Scalability)、高持久性(Durability)和高可用(Availability)的分布式数据存储服务缓存巨量的区块文件到亚马逊云端,完成区块实时数据收集和处理,可以为本地物理地址近邻的其它lws使用,甚至向世界范围的lws提供检索服务,另一方面,lws在与核心钱包失步或数据错误时,可以使用S3中的数据快速恢复。

此外,lws使用aws的规则引擎rules engine将消息转换并路由到aws服务,后端使用Kinesis服务分流数据到不同的aws服务,或者接驳Lambda服务分流数据。

在区域网络传输不均衡的环境中,也可以使用aws的CloudFront服务提供CDN类似的功能。

使用PB级的Amazon Redshift关系型数据仓库,可以存储结构化区块链数据,便于BigBang区块链web浏览器、智能设备钱包app、BigBang区块链开发测试人员调试跟踪程序运行时的数据视图。

lws使用高并发语言golang开发,程序采用goroutine及channel设施保证了数量庞大的device端同时发送的发送交易到核心钱包主干网络的请求能够及时有效地处理,从而实现了海量交易的高速上链。

BigBang Core官网:https://www.bigbangcore.com/

BigBang Core技术白皮书:https://www.bigbangcore.com/whitepaper/BigBang_Technical_WhitePaper.pdf

—-

编译者/作者:谭币

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...