写点什么

区块链创新之卡尔达诺(Cardano)

  • 2018-04-26
  • 本文字数:4681 字

    阅读完需:约 15 分钟

卡尔达诺对标比特币与以太坊,从本质上来说,针对的是数字货币和智能合约,也就是现在圈子里说的很多的区块链 1.0 及 2.0。未来的互联网是价值互联网,在其上流通的不是信息的拷贝,而是真实价值的转移。比特币的出现使我们能够将资产数字化以及点对点转让,以太坊在比特币的基础上更近一步,能够以合同的形式进行自动化资产转移等操作,可以说我们已经在向价值网络迈进了。但正如同计算机刚有了 UI,新奇但是简陋。比特币和以太坊在面临大规模使用的时候,就开始歇菜摆烂了,规模化程度很低。而且基于 PoW 共识算法的平台也会经常因为升级、意见不同而产生分叉,破坏社区团结。

这些都是比特币和以太坊面临的主要问题,卡尔达诺(Cardano)就是为解决诸如区块链规模化、可持续发展等问题而出现的区块链 3.0 解决方案。卡尔达诺(Cardano)的研发流程非常严谨,它没有如其他区块链平台使用白皮书定义技术路线,而是由一群科学家们带头发起,先有论文之后再同行审阅,在数理逻辑层次上趋近完美,之后由 IOHK 的工程师们编写代码,而且为了避免程序 Bug 引起的程序崩溃或者区块链分叉,软件开发人员使用函数式编程语言 Haskell 构建平台,可见团队对项目的用心程度。

卡尔达诺团队

现阶段,主要有三个组织支持卡尔达诺的发展,卡尔达诺基金会、Emurgo 以及 IOHK。基金会的主要工作是规范,保护和推广卡尔达诺协议,也就是制定生态法规和标准以及社区建设等。Emurgo 公司的主要工作是孵化基于卡尔达诺生态的初创企业以及协助商业企业接入卡尔达诺生态圈。最后的 IOHK 是由前以太坊核心开发人员 Charles Hoskinson 成立的区块链技术公司,主要负责卡尔达诺平台的搭建。

卡尔达诺技术

为了更精准的对标比特币和以太坊,卡尔达诺将项目进行拆分,主要分成了结算层(数字货币)和计算层(智能合约)。卡尔达诺结算层(Cardano SL)是由 IOHK 联合爱丁堡大学,雅典大学和康涅狄格大学共同设计开发的一种加密货币,代号 ADA。而卡尔达诺计算层(Cardano CL)还在研发中,因此这里我们着重介绍结算层的相关知识。

卡尔达诺结算层(ADA)

卡尔达诺结算层对飚的是比特币,虽同属于数字加密货币,但是二者之间有很多不同之处。最重要的区别就是 BTC 是基于工作量证明(PoW)的数字货币,而 ADA 使用权益证明(PoS)。BTC 采用的 PoW 共识以及竞争出块机制使得能源消耗越来越多,矿工挖矿难度越来越大,这也是为什么最近大家热衷于研究 BFT 类以及 PoS 类共识算法的原因。

ADA 采用的 PoS 共识算法被称为乌洛波洛斯(Ouroboros),是目前为止唯一一个基于科学证明的安全的区块链权益证明算法,它不需要浪费电力资源,而是随机选取任意节点作为区块生产者,被选中的概率跟该节点权益成正比。在 ADA 中,所谓权益是指节点持币的相对价值,可简单的认为是节点持币价值 / 全网总价值。如果某个节点的权益 >0,则被称为是权益所有人,而如果被选作为区块生产者,该节点也被称为 SLOT 领导者,也就相当于比特币的矿工。

乌洛波洛斯(Ouroboros)协议

乌洛波洛斯协议将时间分片,称为 epochs。每个 epoch 又划分为多个 slot,在一个 slot 时间段(20 秒)内,有且只有一个领导者,由他负责产生一个区块。如果领导者在他的 slot 期间因为一些原因未能产生区块,那么他就浪费了这次机会,除非再次被选做领导者。也就是说可以有一个或多个 slot 是空的(不产生区块),但是在一个 epoch 期间,必须由大部分的 slot(50%+1)都有区块产生,也就是需要大部分的节点都是诚实的。

那么 slot 领导者是怎么被选出来的呢?基本条件是权益所有人,但并不是所有的权益所有人都能被选举,有准入门槛,比如节点权益占比全网权益的 2%。如果按 2% 的准入门槛,那么整个 ADA 网络中,能够成为候选人的节点不会超过 50 个。随着权益分散,候选人会越来越少,权利会更加集中,而且权益所有人拥有的权益越多,它被选举为 slot 领导者的可能性也就越大,所以也可以说 PoS 是富人的游戏,但是 ADA 中又有一个权益委派的功能,简单的说可以将多个账户的权益集中起来使之成为候选人,每个账户可以按照比例获得分红。

在确立了候选人之后,如何选举出在下一个 epoch 阶段的 slot 领导者呢?选举的根本是随机性,在 ADA 中,采用多方计算(multiparty computation)方法来实现选举的随机性,每个候选人都独立的产生自己的随机结果,但经过多方协调后,他们最终得到相同的随机种子。在对应的 epoch 开始后,所有的候选人节点根据“追随中本聪(follow-the-satoshi)”算法,输入随机种子和 slot 的索引,就可以知道当前对应 slot 的领导者了。如果是节点自己,那么就将自己收到的交易打包成块,跟比特币类似;而如果当前 slot 的领导者不是自己,那就等待着区块广播,如果超过 slot 时间后还未收到区块,则认为该区块跳过。以上就是 ADA 的出块流程,这里描述的很浅显,感兴趣的朋友可以阅读参考列表中的资料,深入理解其精髓。

账户模型

因为结算层对标的是比特币,相对来说是比较单纯的数字货币(所谓单纯是指未附加智能合约之类的设计),所以很多设计沿用了比特币的做法,比如账户模型就采用了 UTXO 模型。所谓 UTXO,就是指未花费的交易输出,每一笔交易都应该有 N 个交易输入,同时产生 M 个交易输出(N 与 M 可以不等)。其中交易输入是前序任意交易的未花费的交易输出,如果当前交易成交,该前序交易的输出也就变成了成交的交易输出,也就失去了成为交易输入的资格。因此在网络中的每个 slot 领导者不仅仅接收交易,还会验证交易输入的合法性。为了验证交易,每个节点都必须保持对未花费交易输出的跟踪,这样就可以验证当前交易中的输入是否还未被花费,如果所有的交易输入都是未花费的,那么该交易就被证明是合法的,会被当前领导者接收,打包成块。UTXO 模型能够追踪数字货币的流向: 未花费的交易输入告知货币是从哪里来的,未花费的交易输出告知货币往哪里去。

网络架构

典型的区块链中的节点间是对等的,随着数据量的增多,才渐渐出现了全节点轻节点的区别。而 ADA 在网络架构层次上就对节点分了层,现阶段,主要有以下三组节点:

  • 核心节点,是整个网络的重中之重,所有的权益都集中在核心节点,只有核心节点才可以是权益所有人。也可以说这么说,只有核心节点是区块链节点,其余两种节点只是辅助节点。而且为了加强核心节点的安全性,完全可以将核心节点与公网隔离,只通过中继节点与外界通信;
  • 中继节点,是公网与核心节点的通信代理,由于中继节点是不隔离的,所以他可能被攻击。但是中继节点被设计成无状态的,因此可以使用负载均衡分散流量。中继节点即便被攻击,对核心节点的影响几乎为零;
  • 边缘节点,可简单的认为是与区块链交互的客户端,主要负责发起交易,而核心节点和中继节点没有权利创建交易。从名字就可以看出来,边缘节点是没有机会直接与核心节点交流的,必须通过中继节点转接。

交易确认

在 ADA 中,领导者出块因为有区块扩散的过程,因此不是一个确定性的共识算法,在某个 slot 段内,其领导者因为网络或故意为之,并不一其前置区块作为其区块的 parent,因此产生了分叉。官方给出了一个交易安全确认的等级表,攻击者的比例越高,需要确认的区块数越多;确认水平越高,相对应的需要的区块数也越多。

卡尔达诺与 EOS

卡尔达诺与 EOS 都被认为是区块链 3.0 的代表,经常被放在一起比较。而且不仅是媒体、信仰者,EOS 的核心开发者 BM 也公开发表文章数落卡尔达诺的不足,卡尔达诺官方就此也做了一个回应,这里就他们争论的关键点做个总结:

DPoS

我们都知道,卡尔达诺和 EOS 都使用了 DPoS 作为其共识算法,但是 D 的含义却是不同。在 EOS 中,D 指的是 Delegated,也就是委托;而卡尔达诺中的 D 指的是 Dynamic,意思是动态。EOS 通过投票委托见证人代表自己生产区块,而卡尔达诺是通过动态随机的选取权益候选人作为区块的生产者。

出块时间

BM 认为卡尔达诺 20 秒的出块时间太长,根本不能满足高性能的需要,而与之对应的 EOS 只需要 0.5 秒即可(白皮书中是 3 秒,之后有所变更,在节点出块的 3 秒钟时间内,连续出 6 块,因此单个区块是 0.5 秒)。而卡尔达诺团队认为,出块时间间隔应该与完成信息交换的时间基本一致,而且 20 秒是一个相对保守的估值。考虑到节点的真实地理位置,比这个时间更短的全球化区块扩散在现有的网络环境下是不太可能的。他们认为 EOS 所谓的高性能,要么是错误的,要么只是低去中心化的解决方案。

在我看来,EOS 的高性能现在还是未知数,可能是噱头也可能是杀手锏,而且卡尔达诺提出的网络传输问题也是不能忽视的,EOS 确实在这方面有所夸大。另一方面,卡尔达诺说 EOS 是低去中心化,这点难以认同,因为按照卡尔达诺的设计,只有占全网 2% 权益以上的节点才可以作为 slot 领导者,正如上文所提到的,最多只有 50 个(但永远不可能有 50 个)节点作为候选者,实际可能更少,而且节点权益越高,成为领导者的概率越高,节点间的权利是不对等的,而 EOS 在同一选举周期里,只有 21 个区块生产者,且权利对等。我认为是互有利弊,孰优孰劣只有等实际运行后才能比较。

激励机制

ADA 的激励机制跟现有的大多数公有链类似,“矿工”收取交易手续费。与比特币不同,交易手续费是 ADA 矿工的唯一收入来源。而且交易手续费不仅是给矿工的激励,也是一种防止 DDoS 攻击的手段,当攻击者试图用大量伪造交易冲击网络时,必须付出足够多的手续费。而 EOS 的激励机制则完全不同,EOS 每年增发 5% 作为“矿工”的奖励,因为“矿工”的权利是一致的,所以奖励应该是与其被选中的次数正相关。

二者都明确一件事,那就是“矿工”是需要被激励的,只是手段不一样,ADA 雁过拔毛,EOS 无中生有。如果以人民币作为参考系,假设 ADA 和 EOS 的都是升值的,那么使用 ADA 的成本肯定会逐渐增加,且币减少;而 EOS 如果整个生态价值的增长每年超过 5%,扣除增发,用户手中的币不变,价值却依然增长了,当然一切的前提是生态发展。

另一方面,ADA 声称手续费可以防止 DDoS 攻击,不可否认这是一种方法,但我认为 EOS 的按持币比例分享网络资源是一种更好的选择,它让资源的竞争变成了一种市场行为而不是强制的规则。如果 DAPP 开发者想要获得更多的资源,那么他必须从二级市场囤积更多的 EOS,因此势必会抬高币价,但是囤积的 EOS 并不会被大量消耗,因为交易都是免费的。当 DAPP 开发者放弃当前业务时,可以将囤积的 EOS 再次流入二级市场,这是一个良好的生态循环。

尾声

BM 在他的文章中这么说:“卡尔达诺是一个重达 400 磅的防弹背心,即便能防弹,又有什么用呢?”,言外之意就是说即便卡尔达诺的设计是无懈可击的,但是在实践面前,太臃肿的设计不见得是好用的。卡尔达诺是一次典型的由学术派发起的技术革命,项目都是先有论文,再“双盲(匿名提交、匿名评审)”评审,最后才有技术实现,与 EOS 的实践派形成鲜明对比。未来到底如何,我也不敢妄自定论,但可以确信的是,这两个项目一定会推进区块链技术的落地。

参考列表:

  • 《Ouroboros: A Provably Secure Proof-of-Stake Blockchain Protocol》 2017
  • 《Cardano Settlement Layer Documentation》 2017
  • 《Cardano(ADA)的共识算法 Ouroboros》2018
  • 《区块链中的随机数》2018
  • 《用密码学玩暗军棋 – 闲聊多方计算》 2017
  • 《Peer Review of Cardano’s Ouroboros》 2018
  • 《On the Ouroboros Design: How rigour and engineering are essential for critical infrastructure》2018

作者介绍

自游,区块链底层架构师。16 年初接触区块链并全职投入,现供职于某世界 500 强企业做区块链底层研究及 BAAS 平台搭建。精通区块链底层存储、共识等技术,职业方向偏重联盟链体系。

2018-04-26 18:103637

评论

发布
暂无评论
发现更多内容

云上办公兴起,华为云桌面Workspace更靠谱

IT科技苏辞

2022-11-25:连续出现的数字。编写一个 SQL 查询,查找所有至少连续出现三次的数字。 答案是输出1,原因是1是唯一连续出现三次的数字。 DROP TABLE IF EXISTS logs;

福大大架构师每日一题

数据库 福大大

华为云桌面Workspace,不得不爱的移动办公新体验

爱科技的水月

SpringBoot整合Elasticsearch超详细教程

陈老老老板

ES spring-boot 11月月更

【Python 基础学习】-数据类型

度假的小鱼

11月月更 Python数字类型

JPQL超详细介绍与JPA命名规则

陈老老老板

Spring JPA 11月月更

PGL图学习之图神经网络ERNIESage、UniMP进阶模型[系列八]

汀丶人工智能

深度学习 图神经网络 11月月更 GAT

信息论与编码:信道的数学模型

timerring

11月月更 信道 数学模型

GaussDB拿下的安全认证CC EAL4+究竟有多难

华为云开发者联盟

数据库 后端 华为云

高效、安全,华为云会议开启云上办公新天地

IT科技苏辞

支持向量机-探索核函数的优势和缺陷

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

SpringBoot整合MongoDB超详细教程

陈老老老板

java; spring-boot 11月月更

一文了解 Go 中的指针和结构体

陈明勇

Go golang 指针 结构体 11月月更

第五章TCP/IP 网络在我们身边

初学者

网络 11月月更

有了 Protocol buffer 还是用 JSON

HoneyMoose

@Valid与@Validated的区别

陈老老老板

java; 11月月更

C++---类型萃取---is_integral && is_floating_point

桑榆

C++ STL 11月月更

python数据分析-pandas增删改查

AIWeker

Python Python数据分析 11月月更

湖仓一体电商项目(十三):数据发布接口和可视化

Lansonli

湖仓一体电商项目 11月月更

【Java面经】阿里三面被挂!幸获内推,历经5轮终于拿到口碑offer

钟奕礼

Java java面试 java编程 程序员‘

【Python 基础学习】-字符串

度假的小鱼

11月月更 Python字符串操作

湖仓一体电商项目(十二):编写写入DM层业务代码

Lansonli

湖仓一体电商项目 11月月更

湖仓一体电商项目(十四):实时任务执行流程

Lansonli

湖仓一体电商项目 11月月更

Linux 文件与目录管理

芯动大师

创建资源文件 11月月更 Linux系统指令

后台管理不可忽视,华为云会议最新支持管理员分权分域

秃头也爱科技

高标准企业级安全性,华为云会议为线上沟通保驾护航

爱科技的水月

Spring Data JPA简介与SpringBoot整合超详细教学

陈老老老板

Spring JPA 11月月更

线上沟通无忧,华为云会议SmartRoom了解一下

清欢科技

10 W字最新 Java 热门面试题及答案总结

钟奕礼

Java java面试 java编程 程序员 java

看我如何连夜自建网站背刺我的求职对手们

华为云开发者联盟

云计算 华为云 云服务器 自建网站

第四章TCP/IP网络层设备路由器

初学者

网络 11月月更

区块链创新之卡尔达诺(Cardano)_语言 & 开发_自游_InfoQ精选文章