mt logoMyToken
总市值:
0%
恐慌指数:
0%
币种:--
平台 --
ETH Gas:--
EN
USD
APP
Ap Store QR Code

Scan Download

CPChain物信链主网Alpha版正式上线

收藏
分享

重大发布

转眼间,2018年即将结束。相信2018年对于很多项目方而言,交杂了太多的惊喜、期待、失落或无奈。无论大环境如何变化,CPChain始终保持着初心,坚定且稳定地向前走着。

历经无数个夜以继日的设计研发,很高兴地向大家宣布:CPChain主网Alpha版本于12月23日正式上线(网址:https://cpchain.io/)!CPChain研发团队已经顺利地完成私有交易、共识协议、以及激励机制的核心设计,一条连接整个物联网数据共享生态的公链系统将徐徐展现给大家。

本次主网Alpha版本有几大技术亮点,具体如下:

Part.1

私有交易

以太坊中,所有交易都是公开透明的。因此,以太坊难以支持涉及隐私的线上交易。而CPChain允许用户在链上部署和调用私有合约,更加安全地完成私有交易。 除代理(代理:充当验证者和中间人的角色,负责对交易进行检验)和用户自身的交易帐户外,任何第三方均无法查看这一私有交易过程。交易过程中某些关键性数据在区块中被记录和维护,用于私有交易过程中的试用和校验。私有数据交易中私有合同由代理部署,且代理部署公共合同作为交易托管。

整个私有交易流程如下:

1.A通过私有合同登记要出售的数据(登记内容包括数据名称,IPFS_cid,价格,描述等);

2.B检查私有合同上的内容并选择其要购买的数据;

3.B向托管合同支付购买金;

4.B向私有合同发送关于要购买的数据商品及其公钥的订单,该公钥对交易中的对称密钥加密;

5.A注意到来自私有合同的订单,并检验托管合同中B的资金是否充足;

6.检验完成后,A向私有合同发送附有由B公钥加密的对称密钥的确认消息;

7.B收到加密后的对称密钥,解密后得到对称密钥,用其解密IPFS中的数据,确认是否是其所需要的数据;

8.B确认数据后,通知C,再确认将钱转给A。

很多数据交易的场景都需要保护交易双方的隐私,包括交易双方的身份、交易信息等,同时能够利用区块链技术的不可篡改特性,保证交易的可追溯性及可验证性。这要求我们构建一个 内生的、可靠的、且不可篡改的私有交易机制

Private Transaction 就是这样的一套实现在CPChain区块链上的私有交易机制。Private Transaction实现了交易双方A,B,在代理C的见证下完成交易,保证了交易不被外界所侦测,且能够在区块链上留下痕迹数据,以供未来追溯和验证使用。

CPChain开创性地将私有交易和内容寻址的分布式文件系统结合在一起, 例如IPFS,通过将加密后的私有交易分发在IPFS上,一方面极大地减小了链上的存储压力,使海量数据的隐私交易成为可能;另一方面则利用了IPFS分布式的特性,保障了交易信息的网络访问。

Part.2

共识算法

委员会内部LBFT算法

DPoR通过设计 轻量级拜占庭容错算法 LBFT, Lightweight Byzantine Fault Tolerance )实现委员会内部的快速共识。算法包括两个阶段,分别为区块发布、验签(委员会节点收到新区块后,会对区块进行验证以及签名)收集阶段。目前可实现委员会内部最多1/3节点恶意行为或宕机的容错,主网上线后可实现优化的监督和备选机制。此外,LBFT设计了针对极端情况下的容错机制,即大部分委员会成员宕机或者勾结,加强了系统的稳定性和鲁棒性。

LBFT算法2.0版本

在LBFT算法1.0的基础上,我们提出了LBFT算法2.0,在算法更稳定的前提下,实现委员会内部的快速共识。

首先与1.0版本不同,委员会被分成了proposer委员会( 负责出块 )与validator委员会( 负责对出块进行验证 )。每一届proposer委员会的成员通过竞选产生,他们将可以轮流出块。对于一个特定的时刻,只有一个合法的proposer拥有可以出块的权力。与此对应的validator委员会的成员通过共识协议来判断proposer新出的块是否合法。LBFT算法2.0可容忍proposer以及不超过三分之一的validator委员会成员作恶及超时。

传统PBFT(Practical Byzantine Fault Tolerance) 不同,我们不依赖于一个特殊的主节点来接受一个请求。Proposer出块后对validator委员会所有成员广播自己的块,但其自身不参与出块的验证;validator委员会成员则没有出块权限。这样保证了出块与验证两个权力的独立性,减少了委员会成员作恶的动机与可能性。

对于作恶或者超时的proposer,我们独创了 弹劾机制 (impeachment)。只要validator委员会成员中有三分之二的会员弹劾该proposer并没有正常工作,validator委员会将会替proposer出一个弹劾块,并对该proposer的给予一定的惩罚(扣除proposer参与委员会竞选时缴纳的押金)。这样保证了LBFT算法2.0的活性(liveness)与安全性(safety)。

通过LBFT2.0实现快速共识的具体过程如下:

Pre-prepare阶段

当proposer构造一个新块后,向validator委员会所有成员广播这个块。每个收到块的validator,首先会对该块的结构,时间戳,以及是否轮到该proposer出块等内容进行判断是。如果判断合法,以块的数据头(header)为主题,validator签名后生成一条prepare message,并将其广播给所有的validator,进入prepare阶段;否则将进入弹劾阶段。弹劾会在下文详细介绍。

Prepare阶段

validator在prepare阶段一直等待收集其他validator签名的prepare message。对于一个相同的数据头,一旦某个validator收集超过2/3委员会成员的prepare message签名,该节点将生成一个commit message,签名并广播给所有validator。我们称该validator为一个prepared validator,收集超过2/3成员的签名这一事件为一个prepared certificate。这条commit message表示该validator已经获得了一个prepared certificate。

Commit阶段

validator收集到prepared certificate进入commit阶段。在广播了自己的commit message后,会陆续收到来自其它节点的commit message,如果它收到了超过2/3委员会成员的commit message之后,该节点即可另一个证书:committed certificate,表示请求在这个节点上达到了committed 状态。此时只通过这一个节点,我们就能断定该请求已经在一个有效团体(quorum)中到达 prepared 状态,即一个有效团体的节点们都同意了这个块是合法的。

取得了committed certificate的结点将会对所有结点广播一条validate message,该信息包括了该块的完整信息,及quorum中所有人签名。收到validate message的结点,便可将该块加入本地区块链上。广播以及所有收到validate message的validator也将重新进入pre-prepare阶段,等待下一个proposer出块。

弹劾(Impeachment)

弹劾机制是validator委员会在proposer不正常出块时的应急方案。它保证了LBFT算法2.0的安全性跟活性。弹劾的核心在于:validator委员会将会替proposer出一个弹劾块,并对该proposer给予一定惩罚。Impeachment包含有impeach prepare、impeach commit两个阶段。

Impeach prepare阶段

当一个validator认为proposer不正常(出块超时或者出块不合法)时,就进入了impeach prepare阶段,并制造一个弹劾块(impeach block)。所有非作恶的validator生成的弹劾块相同,其中的交易为对不正常的proposer的惩罚。这个弹劾块的数据头作为impeach prepare message,广播给所有validator。此时它将继续等待其他impeach prepare message,直到收集到超过2/3的validator发出的impeach prepare message,即收集齐一个impeach prepared certificate,它将进入impeach commit阶段。

Impeach commit阶段

类似于正常流程的commit 阶段,刚进入impeach commit阶段的validator将会先发出一个impeach commit message,然后等待其他validator的impeach commit message。一旦凑齐impeach committed certificate (2/3的validator的impeach prepare message),该validator将会对所有节点广播一个impeach validate message,内容为弹劾块以及同意该块的quorum的成员签名。

收到这个消息的结点以及发布这个消息的validator本身将弹劾块插入到本地链上,validator将会重新进入到pre-prepare阶段,等待下一个proposer出块。

Part.3

网站改版

随着主网Alpha版本的更新,原有的网站也需要更新和调整。我们新增了 区块链浏览器、开发者、社区 等板块内容;在开发者栏目中,加入了 CPChain技术文档 ,开发者们可以浏览技术文档,创建专用网络或访问我们的 Testnet (技术文档网址:http://docs.cpchain.io/index.html)。在区块链浏览器板块中,用户可以查看区块高度、交易量、RNode、Current Proposer等关键数据。

此次主网Alpha版本的上线,标志着CPChain朝目标又前进了一大步。我们希望邀请大家参与到主链的测试与体验中,为我们的公链、浏览器等各方面提供宝贵的建议,从而打造一条 开放、高效和安全的主网 ,以及 共同建立一个安全、稳定且高效的物联网数据共享生态

目前,主网的设计日渐完善,在统一落实社区所贡献的建议,并解决可能的漏洞后, CPChain主网将于2019年3月底正式全球发布 。在主网正式发布前的这段日子里,我们将继续以战斗的状态,不舍昼夜地做好主网最后的完善。

未来我们将陆续推出有关CPChain主网Alpha的社区活动,以及宣传片等一系列内容,敬请期待。感谢大家一直以来对CPChain的关注和支持!

免责声明:本文版权归原作者所有,不代表MyToken(www.mytokencap.com)观点和立场;如有关于内容、版权等问题,请与我们联系。