欢迎来到环境100文库! | 帮助中心 分享价值,成长自我!

环境100文库

换一换
首页 环境100文库 > 资源分类 > PDF文档下载
 

EKT币(EduCare)教育公链项目白皮书.pdf

  • 资源ID:4189       资源大小:194.13KB        全文页数:11页
  • 资源格式: PDF        下载权限:游客/注册会员/VIP会员    下载费用:10碳币 【人民币10元】
快捷注册下载 游客一键下载
会员登录下载
三方登录下载: 微信开放平台登录 QQ登录   微博登录  
下载资源需要10碳币 【人民币10元】
邮箱/手机:
温馨提示:
支付成功后,系统会自动生成账号(用户名和密码都是您填写的邮箱或者手机号),方便下次登录下载和查询订单;
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,既可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰   

EKT币(EduCare)教育公链项目白皮书.pdf

p一、引言比特币作为第一代加密数字货币,实现了完整的去中心化记账的功能。但由于比特币只提供了非图灵完备的语言以及有限的交易结构,使得比特币只能用于用户价值的存储与交换,无法运行复杂的应用。基于比特币发展出来的区块链技术在最近几年得到了长足的发展。以太坊作为一个智能合约开发平台,不仅引入了图灵完备的开发语言,也把智能合约的应用场景进行了丰富的扩展,ERC20协议(代币发行)以及ERC721协议(加密猫等不可替代性的数字资产)的广泛应用就是一个典型的案例。以太坊虽然加速推进了区块链的发展,但是由于以太坊早期设计的单一主链架构,在跨链通信、并发能力以及DApp的运行环境支持上都有着很大的局限性。为了解决区块链应用的性能,为DApp的开发和运行提供更好的支持,我们提出并设计了一套全新的区块链公链架构EKT,志在打造一个世界级的区块链基础设施,开创一个全新的区块链生态。二、概述EKT是一套全新的区块链架构,定位为一个高性能的DApp开发平台。EKT提供了一套全新的智能合约开发语言AWM,使得开发者可以很方便的根据自己的业务需求定制自己的智能合约。智能合约的运行环境为AWMVM,开发者可以方便的利用该虚拟机进行本地调试,极大的提高开发效率。EKT的多链架构提供了发行资产的支持。不同主链的资产通过EKT提供的钱包可以自由在整个EKT网络里流通。基于EKT的跨链协议,其他公链的资产也可以接入到EKT主链并流通。跨链协议打破了目前各个区块链项目之间的隔离,成为了连接各个区块链桥梁。EKT主链维护一套统一的用户系统。基于这套用户系统,无论是主链、多链还是DApp应用,都可以快速的利用主链已有的用户体系进行开发并获取用户。也极大的降低了用户在不同DApp间的切换成本。另外用户可以修改公私钥对以及使用的加密算法,这使得EKT的用户体系的安全度会一直跟随时代的发展。即使量子计算机普及,用户也可以相应的把算法更换为抗量子攻击的新算法。三、共识机制EKT采用的共识机制为DPoS,在EKT主链上共有21个节点维护网络的运转。DPoS机制的伪代码如下forroundidlist_igetNdelegatessortbyvotesdlist_ishuffledlist_iloopslotglobal_time_offset/block_intervalposslotNifdelegates[pos]existsinthisnodegenerateBlockkeypairofdelegates[pos]elseskipDPoS共识算法主要分为两个过程1 .选举委托人委托人是可信赖的社区成员,由社区成员通过投票选出。得票率最高的21个委托人成为主链正式委托人,其提供的服务器用户维护EKT网络的正常运转。而21名以后的委托人则称为候选委托人,一旦正式委托人发出故障或者作恶,候选委托人可以迅速替换。每个社区的持币用户都可以投票或参与委托人的竞选,投票的票权和持币量成正比。2 .3 .委托人节点进行区块锻造在DPoS机制里,区块生产的过程称为“锻造”。每一轮选举过程结束后,委托人的服务器节点便会进行区块的锻造。当前网络里未确认的交易会被打包到区块,新锻造的区块会广播给其他节点。每当有一个新的区块添加到主链上,那交易的确认数会增加1。EKT的区块间隔时间为3s,等到6个确认(18s)以后,便可以认为交易是安全的。4 .在正常情况下,DPoS共识机制不会经历任何分叉。区块的生产者之间是合作关系而不是竞争关系。一旦发生区块分叉的情况,主链也会切换到更长的区块链上。如果有节点故意作恶,那该节点也会在下一轮区块生产中被投票出局,不再有锻造区块的权利。容错在EKT中,使用公私钥加密和一些路由策略进行容错,每个DPoS节点的公钥都是公开的,具体策略如下1 .区块的广播当一个节点完成打包之后,会对区块进行签名,然后把区块和签名广播给其他的节点。当一个节点收到区块和签名之后会对签名进行校验,确认是从打包节点广播出去的,在确认是打包节点广播出来的区块之后,会判断自己与打包节点在当前轮的距离,如果满足条件currentIndex-miningIndexlenDPoSNodeslenDPoSNodes2*currentIndex-LastIndex1*interval/2,一旦满足当前条件,则当前节点开始打包。如果是最后n个区块连续宕机,则按照当前轮的最后一个区块的hash值判断下一轮的顺序,按照递增每个区块加一个出块interval的算法进行计算,判断当前打包的节点并进行打包。当超过n/2的节点宕机的时候,所有节点会自动停止出块,直到超过1/2的节点存活。上面的容错算法可以保障在少于n/2的节点宕机或者叛变的情况下,系统不会出现分叉,是一种用计算资源换容错性的方案。最好情况下消息复杂度On2,时间复杂度O1最差情况下消息复杂度On2,时间复杂度OnEKT的主链共识机制为DPoS,但是其他主链可以通过EKT提供的“多链多共识”机制,自由的定制其他共识机制,比如POW、POS等。四、多链架构EKT设计了一套独特的多链架构。在这套多链架构中,除了EKT的主链外还支持多条并行的主链。每条主链中都会有一个主币。不同的主链可以采用不同的共识机制,默认的共识机制为DPoS。开发者可以通过主链提供的Consensus接口创建并完成自己节点的部署。1.设计思想在去中心化的网络里,为了提升安全性必然会牺牲系统的整体效率。CAP理论是分布式系统被讨论的最多的理论。其中C代表一致性Consistency,A代表可用性Availability,P代表分区容错性Partitiontolerance。CAP理论告诉我们C、A、P三者不能同时满足,最多只能满足其中两个。以数据库系统为例,关系型数据库选择了C和A,NoSQL选择了A和P。对区块链来说,由于区块链建立在一个不可信的网络节点上,导致在同一时间节点,各个服务器上的数据很难保证完全一致,所以区块链首先放弃了Consistency。区块链上的数据最终是一致的,比特币通过引入了最长链算法,即所有网络里的节点都只认可最长的那条链。再来看CAP理论中的另外两个Availability和Partitiontolerance。首先,区块链中的节点通过P2P来进行通信,所有的节点地位一致,都可以对外提供服务,所以Availability是有保证的。其次,由于引进了共识算法以及最长链算法,最终Partitiontolerance的问题也得到了解决。所以区块链实现了AP优先和数据的最终一致性。在目前成熟的区块链项目里,比特币系统的TPS平均为7.以太坊的TPS平均为1020。为什么区块链的TPS无法达到同样选择AP的NoSQL一样高的TPS呢对区块链来说,TPS每个区块包含的交易的数量/区块生产间隔时间。如果想要提高系统的TPS,就需要提高区块的大小或者缩短区块生产的间隔时间。以比特币来说,由于比特币采用的是UTXO模型,使用Merkle树把交易信息打包到区块,树的深度是logn。如果增加区块大小,会给节点的磁盘带来很大的负担。而如果缩短区块生产间隔时间,在节点数量非常多的情况下,POW的共识算法也会影响不同节点区块链数据的最终一致性。EKT的解决方案是多链多共识机制。对实时性要求比较高的区块链应用,可以采用DPoS共识机制。对去中心化要求比较高的区块链应用可以采用POW算法。不同的链之间数据是隔离的,互不影响。既增加了安全性,又提高了应用的性能。2.账户体系EKT主链会提供不同的加密算法供用户使用。在EKT主链中,每个用户可以提交公钥以及主链支持的加密算法申请个性化的地址。由于EKT公链中的用户地址不是通过公钥计算出来的,而是通过申请得到的。用户可以更换地址背后所对应的公私钥对。如果用户更换了自己的公私钥对,那主链以外的其他主链该如何校验用户的签名信息呢有两种方法可以实现第一种是如果对安全性要求不是太高,那可以同步主链区块,使用最新的区块来校验用户的公钥,即使同步主链区块略微延时几个区块也不影响。如果用户更新了私钥以后,使用新的私钥对消息进行签名时,其他主链校验不通过时该怎么办这时可以使用第二种方法其他主链通过RPC调用EKT主链的校验方法。将地址、消息和签名发送到主链的节点,节点验证后返回处理结果。一般情况下,如果有1n/2个节点校验通过则可以视为整体验证通过。3.资产转移在EKT系统中,不同主链资产的交易和转移是非常简单的。假设用户A和用户B分别拥有TokenT1和TokenT2,其中T1和T2分别是不同主链的资产。我们将操作用户A转账一定数量的T1给用户B定义为Tx1,将操作用户B转账一定数量的T2给用户A定义为Tx2,这个时候Tx1是在TokenT1所在的主链上进行的,Tx2是在TokenT2所在的主链上进行的,手续费分别为两个链上的主币。由于所有的链共享了同一套用户系统,所以EKT天然支持资产的跨链转移。一个Token只能在一条链上进行打包,资产转移更改的是当前Token打包的链。一般来说,在EKT上进行跨链资产转移主要出于以下几个原因当前主链网络比较拥堵、想更换其他主链的共识协议、当前区块的交易费用过高、想自己创建一条链成为主币等等。资产转移时需要指定转移的高度和目标链,资产转移之后也就遵循新的主链的共识机制。五、跨链1.跨链共识用户共识两条独立的公链如果想要进行跨链的资产交易,首先需要对用户达成共识,即在一个公链上的地址转移到另外一条公链时需要双方都对对方的公链先进行注册。EKT提出了一种名为“长地址”的解决方案。在EKT系统中存在两种地址“内部地址”和“外部地址”。内部地址就是在EKT系统中使用的地址,用于在EKT主链和其他主链之间转账和其他DAPP的开发使用;外部地址的长度为68字节,前4个字节存储外部地址的公链ID的长度和在其公链上内部地址的长度,后n位存储的是公链id和内部地址,中间用0 x00填充。Token共识和用户共识类似,Token的地址也分为“内部地址”和“外部地址”。内部地址和外部地址的含义参考上一部分。交易共识跨公链的交易共识是这样运作的将EKT主链定义为PC1,ETH定义为PC2。在PC1上有一个用户user1,地址位address1,在PC2上拥有一个用户user2。在PC1上有一个Token定义为T1。如果user1要将自己在PC1上拥有的T1转移给PC2上的user2,那么在PC2上必须已经对PC1这条公链和T1进行了注册,这时就有了第一个报文跨链握手报文。当PC2对上述报文回复正确之后,user1才可以将自己的T1转移到PC2。在此跨公链转账打包成功之后,PC1需要将交易信息和区块头信息发送给PC2进行校验,这就是第二个报文跨链交易报文。PC2校验之后存入自己的区块链中之后需要给PC1回复第三个报文跨链确认报文,否则PC1会继续给PC2发送跨链交易报文,直到自己收到PC2的第三个报文跨链确认报文。给user1将自己的T1转移到了PC2上之后,这些Token在PC2上怎么转移对于PC1来说是无关紧要的,因为在PC1上记录的是将T1转移到了PC2,而在PC2向PC1发送跨链交易报文的时候,PC1也是不会校验在PC2上每个地址持有T1的数量,而是校验在PC1链中当前的PC2公链id拥有的T1的数量。通过这种方式完成了跨公链的资产转移。2.报文协议为了兼容大多数公链,EKT定义的报文协议以HTTP协议为基础,请求和响应的Content-Type必须为application/json,请求参数和响应参数必须与协议中的规定相同。关于跨链协议的具体内容,详见跨链报文协议。六、智能合约语言AWM为了方便开发者基于EKT开发符合自己实际需求的智能合约。我们设计了一门新的智能合约开发语言AWM。AWM是一个事件驱动的语言。事件分为两种类型用户事件和系统事件。用户事件是指DApp客户端的调用。经过DApp的共识之后,DApp客户端会发送一个事件到智能合约。系统事件是指区块完成打包、某个交易处理完成或者智能合约订阅的一些其他事件。另外AWM也支持面向对象的编程,开发者可以使用面向对象的思想来进行开发。另外,我们后期还会增加对主流编程语言如Java、nodejs,Python等的支持,方便开发者快速开发自己的DAPP。1.AWM的特点事件驱动。AWM是一个事件驱动的语言。它与一般语言比如C/C、Java、Golang等不同,AWM没有main函数,所有的代码都是围绕事件去执行。面向对象。AWM支持面向对象的编程范式。它是一个天然支持模块化设计的语言。开发者可以把一些常用的结构体封装成一个对象,然后在对象里封装一些方法。在事件驱动的函数里可以对对象的属性和方法进行调用。模块化设计。在AWM中,我们鼓励开发者把不同模块的代码放到不同的包中,方便上层调用。2.AWM VM我们为AWM语言设计了一个执行环境。这个环境就是AWMVM。和以太坊的开发语言Solidity难以调试不同,AWMVM可以让开发者方便的在本地运行和调试AWM。另外AWMVM还会提供API来让开发者模拟事件。用户可以很容易的使用Python、Java或者JavaScript等语言编写测试用例,用来测试智能合约是否可以满足需求。3.原生函数在AWM的底层中,有许多基础库可以调用。这些基础库也会不断完善。以AWM支持的原生数据库操作函数为例,在EKT系统中,智能合约封装在底层的磁盘操作之上,可以直接操作数据库。AWM为开发者提供了三种方式的数据库操作SQL、文档型(类似MongoDB)和KV型。开发者只需要导入响应的包即可完成响应的操作。这些方式可以极大的提高开发者的开发效率,降低开发难度。七、DApp开发基于EKT开发的DApp分为DApp服务端和DApp客户端两个部分。DApp服务器就是智能合约,利用AWM语言编写完成,后期也会对主流语言如Java、nodejs、Python等进行支持。DApp客户端是基于JavaScript的一个框架,用户可以根据自己的需求利用这个框架实现客户端的功能。EKT在设计智能合约之处就考虑到了现有智能合约的缺陷,比如上手难度大、与业务无关操作较多等。目前大部分公链提供的智能合约都是基于KV进行数据的存储,没有对上层的智能合约提供可靠易用的SDK,门槛很高,上手难度大。通过EKT提供的AWM智能合约开发语言和AWMVM虚拟机,开发者可以只关心业务逻辑,进行基本的学习就可以快速上手。八、应用场景1.电子商务平台在EKT中,开发者使用AWM可以很方便的开发出一个电子商务平台,如京东、淘宝。与传统电子商务平台不同的是,在EKT公链上开发的DAPP是运行在不同的节点间,而且代码是开源的,任何人都无法篡改数据,所有的数据都是公开透明的,相比较于目前的电商平台对于订单的恶意篡改,相信去中心化的电子商务平台对消费者和一个诚实的商家是一个非常不错的选择。2.延迟不敏感的游戏对于一些延迟不敏感的游戏,EKT可以很方便的提供道具系统和金币系统的支持。DPOSPaxos的高效可以达到秒级确认,对于一些积分类的游戏相信也会是一个不错的选择。3.社交类的软件相信很多人都想过聊天信息的网络安全问题,这个问题在区块链中是非常容易解决的,因为区块链中本来就是以公私钥加密为基础的一个P2P应用,开发者可以很轻易的对用户的聊天信息进行加密,只有用户本人根据自己的私钥才可以对自己的信息进行解密,得到正确的文本,保证自己的信息安全。4.传统的Web应用EKT的共识机制的秒级确认可以让开发者轻易的开发出一个能支撑很高TPS和DAU的应用,而且相比较于传统的C/S结构,开发者还省去了购买服务器的费用,对于开发者来说,应用上链会是一个潮流,而EKT会是最好的选择。/p

注意事项

本文(EKT币(EduCare)教育公链项目白皮书.pdf)为本站会员(江山易美)主动上传,环境100文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知环境100文库(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2017 环境100文库版权所有
国家工信部备案号:京ICP备16041442号-6

收起
展开