CSAC信用链技术架构及区块算法

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

CSAC信用链技术架构及区块算法一、技术架构CSAC的整体架构分成三个层次:核心基础层通过API的接口为上层提供区块链基础服务;平台服务器层在底层之上,构建一系列符合行业标准的应用接口;应用在标准化的接口上创建高可用性、可扩展性的区块链应用。整体结构如下:CSAC的核心功能又被纵向划分为三大主题功能板块:账户中心、分布式账本服务、平台管理。其中,多数部分将会通过执行研发实现,有些部分采用某些标准的开源组件,还有一些部分是在成熟框架上进行优化和改进。二、数据存储CSAC的区块数据采取我们自主设计的数据管理方式进行存储,主要由三部分构成,如下图所示:三部分数据分别为用于提供快速查询交易数据的轻量化本地索引数据、用于存储对象化的交易信息的分布式账本以及利用分布式哈希表技术用于存储文件的分布式文件系统。1、轻量化的本地索引数据:通过特有的安全协议对分布式账本上的交易记录进行监听,读取并存储账本上带有特殊标记的数据相关的交易记录的索引信息、解析读取相应的摘要信息,以便上层应用可根据摘要信息,对相应的交易记录进行检索。2、分布式账本:通过改进的交易的数据结构以及交易的确认过程,实现链上记录有关联交易的数据的关系,保障了数据内容的可追溯性。通过改进的共识机制提高了交易的确认时间,增强了数据安全性。3、分布式文件系统:利用DistributedHashTable技术实现的分布式存储协议。通过文件内容(Hash)而非文件路径(URI)来对数据进行索引。大文件将被分割为固定大小的数据块分布式地存储在众多节点中。由众多节点共同来维护数据,但采用分布式文件系统存在一定的缺陷,需要一定的冗余来保障数据的可靠性。我们考虑提供多种策略由用户自行选择文件的可靠性等级,高等级的安全策略将使用骨干节点进行维护。三、账户设计CSAC的账户设计是将账户信息存储在树形结构中,账户树可以加快账户信息的检索速度及提高资产余额计算的效率。账户信息主要由交易地址、资产、权限、综合指数等构成。通过我们的研究发现ED25519椭圆曲线算法具备完全开放的设计、高安全性、计算速度快等特点,因此我们的账号将基于ED25519算法进行生成。账户地址生成流程如下:四、共识算法CSAC采用的共识机制有别于其他主链,是以DPOS选举为基础,选举出的节点以PBFT打包和验证区块的混合共识机制。这个新的混合共识机制叫PSEC(自荐信用证明共识机制,ProofofSelf-EstimateCredit)。这个混合共识可以在tn/3时,以O(n^2)消息复杂度,O(1)的时间复杂度使忠诚的节点达成一致,不会分叉,其中t表示拜占庭节点(即可能发生任意行为的节点,比如网络延迟、停机、恶意攻击等等)的个数,n表示所有节点的个数。1.PSEC区块产生PSEC共识算法的区块产生过程,如下图所示:每个共识周期都会选举出21主节点和63个备用节点来完成共识过程,任何人都可以参与到主节点及备用节点的竞选。被选中的节点承担责任的同时,相应地将会享有经济收益和管制权力。在CSAC公链运行过程中,共识过程状态一直保持着不间断的持续运行。再某一时刻CSAC的共识将保持在某个特定的共识周期中,每个周期将由选出的主节点轮流进行出块。选出的21个主节点轮流出完一个块后,我们定义这次过程为出块的一个轮次。每个共识周期将保持21*21*N的出块个数。在特定出某一个区块的时候,被选出的21主节中的一个节点的身份将发生变化,我们定义这个节点为新区块的提议人(Proposer)。其它20个主节点(Witness)将扮演见证人角色,见证人与提议人一同完成对新区块的共识。在此过程中,63个备用节点(Candidate)时刻保持着工作状态,协助21个主节点完成共识过程。每个块的产生都会携带有一定的奖励,包括:固定收益、手续费收益、其他收益。这些收益都会根据在这个块的生成过程中,共识节点的贡献情况奖励。每一周期主节点会工作21轮,结束后重新选择共识节点。新一轮共识节点会保留上一轮表现最好的1/3共识节点进入新一轮的共识节点集合,剩下的节点将在全网中根据每个节点的综合指数进行排序算法,其中TOPN的将被选出开始新的周期。综合指数越高节点被选中的概率约高,综合指数的计算公式如下:五、虚拟机CVMCSAC虚拟机CVM依托LLVM来实现。核心协议和智能合约代码将会编译成CVM字节码,通过LLVM即时编译(Just-in-timecompilation)功能,实现其动态编译和优化,最终在沙箱环境中执行。同时借助于LLVM的模块化架构,开发者可以用熟悉的编程语言(如JavaScript,JAVA,Go,C/C++等)实现更高性能和更安全的智能合约,给用户带来丰富的去中心化应用。借助于LLVM,CVM支持开发者用其熟悉的编程语言开发智能合约和应用。无形中降低了开发者进入参与CSAC建设的门槛,可吸纳更多的开发者参与到CSAC的建设中。六、智能合约CSAC中的智能合约编程语言,将基于CVM推出对各种编程语言的支持,使得开发者可以用自己喜欢的高级语言编程,例如Java、Python、Go、JavaScript、Scala等语言进行智能合约的开发。1.合约升级由于智能合约具有不可修改的特性,只要代码逻辑确定之后,便没有人可以修改它,而且永远也不再具有升级的能力。如果代码逻辑的实现存在安全性问题或者有漏洞,可能会造成资产损失等情况,这时就需要我们去修复漏洞,想要修复这个漏洞的话,只能重新部署修复后的合约,如果原来的合约已经有很多人在使用,那么部署新的合约,老合约的数据将会丢失。为此我们设计了一种简洁的合约升级方案:在语言层面上,我们支持一个合约的状态变量供另外一个合约直接读写(符合安全约束)。在部署的合约中使用特殊的标记对需要进行状态共享的变量进行标注,如需要使用新的合约去升级老合约修正合约的一些漏洞或添加新的功能。在新合约的头部标注需要升级的合约地址,将新合约发布到链上后,我们的智能底层将检查合约发布者能否使用新合约升级老合约。如果新合约符合升级规则,那么新的合约将共享老合约允许访问的状态数据,在新合约生效后,老合约将终止。下图演示了合约的升级过程:2.合约定义CSAC的智能合约在设计上,被划分为不同的种类分别包括:系统合约、模板合约、自定义合约,每种类型的合约在CSAC中都将有不同的处理方式和合约特性。⚫系统合约:主要是用于验证合约创建的合法性、对主链和侧链进行管理、完成区块链核心参数管理、权限管理等系统核心服⚫模板合约:从自定义合约升级而来,具有特定应用场景业务逻辑的通用特点,CSAC合约开发者可以通过贡献模板合约来获取奖励⚫自定义合约:符合CSAC合约开发规范的开发者自建合约我们统称为自定义合约七、数据搜索引擎区块链的特性在于所有存储的数据都是被加密处理过的无法被人眼所识别,因此用户想在链上查询信息十分困难。为此我们需要一种技术来解决用户检索数据的问题,而搜索引擎技术恰巧符合这样的要求,然而受限于区块链数据的特性传统的搜索引擎服务在区块链领域将无法发挥其作用。我们结合CSAC结构的特点设计一套兼容CSAC的数据搜索引擎。主要分为以下几个模块:我们的数据搜索引擎整体架构分为三层,分别是API、执行层、服务层。⚫API层:对外提供统一的API服务,用户可以通过统一的API服务完成各类复杂的查询。⚫执行层:响应来自API层,用户提交的访问请求,核心功能包括分词器、数据过滤器、查询解析器和数据索引构造器。⚫服务层:负责读取链上数据。通过分析器的处理后,存入到数据索引存储引擎中,为上层的数据的检索服务做准备;主要的功能包括:数据提取器、文本分区器、交易分析器、合约分析器、数据访问管理器。

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功