区块链应用

生命之花(FOLI)基于生命数据的大健康公链

字号+ FOLI 来源:区块网 2018-11-09 09:27 收藏成功收藏本文

 生命之花(Flower of Life)是基于生命数据的大健康公链,利用一主链三侧链(永久存储链、临时存储链、计算链)的四链结构解决生命数据的存储、分析、预警、交易问题。FOLI 核心功能有健康数据存储、疾病分析、基于大数据的预警和健康数据的查询、搜索和交易。

由于生命数据的珍贵、隐秘和多样性特点,FOLI 采用去中心化设计,集成优化 P2P 网络和 IPFS 的优点,保证了文件存储的有效性。同时采用多级访问权限证明,保证了整个区块链的健壮和稳定性。

生命数据种类多样、数量庞大,其数据的挖掘需要巨大的计算能力来支撑,因此我们将使用 Dadoop(Distributed Hadoop) 来提供计算服务。挖掘算法,可以从永久数据链读取生命数据,发送计算任务到分布式计算链,中间结果存储到临时数据链,结果回存到永久数据链,有效的经验将被系统应用为 EAAS(Experince As A Service),并开放给用户使用。

FOLI 提供了一个隐私分类的数据分享和交易协议,把用户的生命数据分为普通级、秘密级和隐私级,分别提供不同的访问权限,支持灵活的数据交换。

同时,FOLI 是一个开放的泛健康公链,基于生命数据的隐私分级,结合智能合约和开放接口,可以实现主体、数据、价值、适配、信任、场景六维基础的连接。

本文介绍了 FOLI, 它是一个是以计算和存储为中心的去中心化生命数据区块链网络,基于健康行业数据隐私性强、计算量大的特点,提出以下创新:

1. 隐私分级和同态加密;
2. 永久数据链、临时数据链、计算链和主链,四链合一;
3. 引入 Dahoop(Distributed Hadoop) 来协同大数据计算,满足生命数据分析需求;
4. 基于 FOLI 的存储和计算架构,为健康数据提供独特支持 , 既能满足 B 端用户需求,又能满足 C 端用户需求。

FOLI 技术架构

FOLI 整个系统被设计成一个健康数据生态平台,通过数据标准化采集,在去中心化的健康数据存储的基础上,提供基于生命数据的大数据查询、分析和计算服务。数据查询和分析任务可以在授权的范围内使用,这些数据也可以在 FOLI 中进行交易和存储。FOLI 将连接智能硬件、个人计算机、专用的矿机来促成低成本、去中心化的健康数据收集、存储和计算。

FOLI 提供四个主要的功能:健康数据采集、数据存储、数据计算和数据交易。通过标准化数据采集和激励机制的引入,获取巨量的数据,通过去中心化存储来保证存储的容错性要求,通过分级的隐私数据管理,各种分析算法将直接作用于海量的数据而生成有用的结果,数据的产生者也可以通过交易的形式获取相应的回报。

1、FOLI 设计理念

FOLI 整个系统设计的理念在于使用激励的机制为健康产业提供廉价的存储和计算功能,并利用存储和计算为泛健康生态服务基础,把医生的经验直接以 Experience As A Service(经验即服务)的形式呈现。

FOLI将使用Hadoop作为计算引擎,IPFS作为存储引擎,FoundationDB作为索引数据引擎。计算链负责数据计算,临时存储链负责存储非持久性临时数据,永久数据链存储用户健康数据,主链负责侧链之间的协调和记账功能。

2. 多链结构

2.1 FOLI 设计为四链结构

其满足三个主要属性:

1. 主链和侧链结构;
2. 主链和永久存储侧链不可更改,计算侧链和临时存储侧链可以更改;
3. 存储数据结构化。

第一个属性确定了整个网络的主从结构,第二个属性可以解决系统的拓展性、容量和延迟问题,第三个属性确定数据的统一接口和应用标准。在 FOLI 链中,主链负责交易,侧链负责计算和存储,根据数据存储的性质,又细分为了永久存储侧链和临时存储侧链。 

2.2 永久存储侧链
IPFS、Storj 是流行的分布式存储协议,我们在 IPFS 的基础上,针对高频文件和长尾文件区别对待,以最大化的优化存储的效率,实现线上数据和线下存储的辩证统一。

2.3 临时存储侧链
在 FOLI 框架下,将产生大量的中间结果和状态,这些数据并不需要保证长期的一致性,针对这种特殊的需求,我们将把可改变数据,可交换数据存储在临时存储侧链上。

2.4 计算侧链
大多数常见的区块链用于记账,其计算都是非常简单的,包括以太坊在内的图灵机完备语言 Solidity 也仅限于简单的应用,这些计算对资源的要求很低。但在健康领域内的数据挖掘和数据查询,人工智能都需要非常多的计算机资源,因此对于 FOLI 我们设计更通用的数据查询SQL 和 Pig/Hive 任务。要存储所有的计算状态显然是不可能的,所以计算侧链的共识我们将通过随机验证和验证博弈算法来实现。

2.5 数据查询
数据的查询是非常重要的一个功能,我们将提供多语言的 API 和Driver 给上层应用服务。 

3、FOLI 架构设计

Bitcoin 作为第一代区块链的代表,Ethererum 作为第二代区块链的代表,都使用的单链结构,其应用场景相对比较简单,比特币主要是货币属性,以太坊可以执行简单的代码,但由于其单链结构的设计,其性能受到了很大的制约。FOLI 在比特币、以太坊和 EOS 基础上,提出了主链和侧链相结合的模式,主链负责记账和协调,侧链负责执行。 

3.1 FOLI 系统架构

最 早 的 共 识 机 制 是 工 作 量 证 明 (POW),Cynthia Dwork 和 MoniNaor 于 1993 年提出,中本聪在 2009 年首次应用到比特币中。POW 的特点是安全性高、去中心化程度高,最大的缺点是性能差,而且消耗大量的资源用于保证安全性。

为解决 POW 的问题,Sunny King 提出了另一类共识机制——权益证明 (POS)。POS 需要每个矿工抵押虚拟代币以保证其不作弊,挖矿的难度和其拥有的货币数量成反比。通过这样的设计,系统的速度可以得到提升,不过这种提升是通过牺牲安全性得到的,因为下一个出矿节点被预测的概率大大增加。

2013 年 ,BM(Daniel Larimer) 提 出 了 代 理 权 益 证 明 的 共 识 机 制(DPOS)。DPOS 大大减弱了去中心化机制,通过代理来验证交易。这些代理节点是通过一币一选票的形式产生。EOS 是典型的基于 DPOS 的区块链网络。DPOS 的优点是速度快,缺点是中心化,这是由其代理节点的生成机制和验证机制决定的。21 节点架构的 EOS 很容易被操控,滋生腐败。

FOLI的主链设计基于Verifiable Random Function (VRF) 的DPOS机制,类似于Algorand(https://people.csail.mit.edu/nickolai/papers/gilad-algorand.pdf ),在保证安全性的同时又解决了性能问题。

永久数据侧链 (PDSC Permanent Data Side Chain) 是建立在 P2P存储网络上,用以存储永不删除的生命数据。

临时数据侧链 (TDSC Temporary Data Side Chain) 也是建立在P2P 网络上,用于存储中间计算状态、结果以及临时高频访问数据。

计算侧链 (TSC Task Side Chain) 是用于解决实际问题的计算任务( 例如智能医生诊断,计算基因缺陷,分析对比血液元素等),这些实际任务将在 FOLI 虚拟机上运行(FVM)。

生命数据存储在永久数据链上,计算侧链读取生命数据并运行算法,临时结果存储在临时数据侧链,当数据被确认后,存入永久数据链,运行的过程中,侧链负责把 Cost 和交易相关数据发到主链,主链负责Token 的最后确认。

如图 2 所示,在生命之花网络中,主链负责管理所有的交易和协调其他三条侧链。主链通过智能合约驱动计算和存储,侧链的引入可以提高整个系统数据存储和计算的效率。每条侧链拥有其单独的共识机制,计算侧链是用可验证数据计算共识,临时存储侧链是用 PoST(时空证明),永久存储侧链则是使用 rPoST( 更新版的 PoST)。主链的操作不受侧链的影响,而在其上运行的智能合约也可以分为四类:

1. 不需要访问存储和计算侧链的合约(例如转账,钱包操作,创建自己的虚拟货币等);
2. 只需要访问存储的智能合约(例如访问病人的病历信息);
3. 只需要访问临时存储和计算的智能合约(例如对自有的数据进行医学模型验证);
4. 需要临时存储、永久存储和计算的智能合约(病情分析,病情预警等)。

图 3 就是一个时序图,简单的叙述了合约的执行过程。

 

3.2 主链

FOLI 主链区块生产的流程如图 4 中描述的过程。首先在每一轮中 会 由 一 个 随 机 泉(Random Spring) 产 生 一 个 随 机 数(Random value)。这个随机数有两个作用,一个是选出这一轮的区块生产人(Block Makers),二是选出这一轮的区块公证人(Notary)(图中的 1 过程)。在区块生产人被选出以后,提议这一轮的新区块然后提交给区块公证人(图中 2 过程)。区块公正人接收提议区块后将其公证(只有最终被公正的区块才能作为新区块加入区块链),然后将公证的区块向全网广播(图中 3 过程),一个新的区块正式生成。在随机灯塔收到经过公证的区块后,产生下一轮的随机数,然后重复上一过程。

 

通过引入 VRF 的 DPOS 机制,在保证安全性的基础上,大大的提高了交易的确认速度和性能。侧链使用和主链一样的 Token, 也可以使用单独的 Token,按照一定比率进行兑换。

 

3.3 数据侧链

数据侧链是基于 P2P 存储网络 IPFS。链本身只作为激励层,不负责数据存储本身,FOLI 使用时空证明 PoST 作为数据的共识机制。PoST 是去中心化分布式存储的基础,其优势包括闪电交易速度、高隐私、低交易费等优点。

根据数据的持久状态,FOLI 数据链分为两类:一个是持久数据侧链,此侧链的数据是长期保存的数据,具有持久性、长尾性,但对稳定性有很高的要求。另一个是临时数据侧链,合约执行的临时数据或者具有时效性的数据,将存储在临时数据侧链,此侧链上的数据要求访问速度快,访问频繁。

临时数据侧链对应于传统的 Cache 缓冲层,持久数据侧链对应于数据库 Persistent 层。

 

3.4 计算侧链

计算侧链结构和数据侧链类似,当客户端通过 SDK 发送到网络,请求存储在链上,链充当一个任务分发池的功能,每一个矿工都可以从任务池中获取任务,当任务完成以后,任务的状态信息将发送到计算链来更新状态和获取激励。

 

计算侧链不仅具有 MapReduce Miner,通过构建无状态点对点数据库,它同样可以实现数据查询的任务。FOLI DB 基于 Orbit DB,使用 IPFS 作为数据存储层,IPFS PubSub 来自动同步数据库。这里MapReduce 和 DB Miner 在同一个容器中,可以分开调度和管理,也可以联合调度和管理。

3.5 跨链通信

在 FOLI 链,有几种不同类型的跨链通信:

1. 主链,计算链(纯计算任务,无中间存储,适用于自包含数据任务);
2. 主链,永久存储链(纯存储任务,医疗数据,健康数据上传,下载);
3. 主链,计算链,永久存储链 ( 无中间存储,结果直接作用于永久存储链);
4. 主链,计算链,永久存储链和临时存储链。

图 8 展示了 FOLI 跨链协议在最复杂的四链的情况下的交互,其他类型的跨链通信只是四链通信的子集。

跨链通讯流程:

⑴ . 任务或者查询发起人,通过任务和查询接口,提交查询 / 任务到主链。主链负责:
①验证区块状态;
②验证跨链合约正确性;