巴比特论坛

发表于 2017-12-7 15:48:44 | 显示全部楼层
本文转载自微信公众号“万向区块链”,作者为万向区块链旗下万云平台首席技术官奚海峰。他从以太坊第三届DevCon大会回来后,对这趟会议之旅的所见所闻进行了总结,并为大家进行了技术分享。奚总对以太坊的生态现状和未来发展进行全方位解读,带领大家进一步深入了解以太坊。

作者简介:奚海峰,万云首席技术官。清华大学自动化专业硕士,马里兰大学电器及计算机工程硕士。先后担任IBM研究院工程师和高级咨询顾问,Sempra Commodities主管架构师,Tudor Investment软件开发主管等。荣获了包括“IBM研究成就奖”在内的多次嘉奖。在一流国际会议和杂志上发表过多篇学术论文,并持有美国发明专利。以下为正文,enjoy!

01 以太坊基础概念

以太坊作为一个区块链产品和技术平台,初衷是希望区块链可以像手机操作系统一样,当开发者想构建应用时不必重复创造和维护区块链,直接使用以太坊即可。以下是以太坊的一些基础概念。

账户

区块链最基本的结构是账户体系,以太坊在原比特币的外部控制账户基础上增加了合约账户。合约账户是由一段代码(智能合约)控制的账户。不同的账户间通过交易来实现交互,交易可以从一个外部控制账户发到另一个外部控制账户,实际上就是简单的转账。

如果从外部账户发一个交易到合约账户,就是对这个合约账户里包含代码的某个函数进行调用。此外,一个合约账户也可以嵌套式地调用另外一个合约账户的代码。

Gas和Gas Price

为避免智能合约被恶意使用造成死循环,以太坊加入了燃料(Gas)的概念。执行智能合约的某个操作,或者存储一些数据都要花费相应数量的Gas;在执行一个智能合约时,必须在一定Gas限度内完成,否则程序就会终止。Gas Price是智能合约调用者指定的,表示他愿意为每个Gas支付多少以太币,这种成本因素进一步约束黑客滥用以太坊资源的冲动。

交易

一个交易由若干关键字段构成:
Nonce:随机数,它可用来避免交易被重放。
Startgas:指调用方愿意为这次调用支付的Gas上限,在调用之前从账户里扣除。如果调用结束时,Startgas没有花完,剩下的就会退回到调用者账户。如果执行过程消耗的Gas超越了预先支付的Startgas,执行就中止。
To:指这个交易的目标地址。
Value:转账的以太币数量。
Data:目标为合约账户时,对调用函数名和参数的编码。

状态机

每个账户实际上都维护一个状态,这个状态在执行代码的时候发生转移,可以理解为以太坊每个节点都在维护一个巨大的状态机。就是通过执行交易去触发代码的执行,代码会修改账户的内部状态,包括代币里面存储的值,这样使得整个以太坊从一个状态转到另一个状态。

以太坊虚拟机(EVM)

智能合约运行在虚拟机里面,虚拟机相当于模拟的计算机,它有堆栈、内存、存储、环境变量、日志,所以它叫图灵完备。用这个虚拟机可以写任意复杂的逻辑,这也正是为什么要引入Gas机制的原因。

高级编程语言

虚拟机运行的智能合约代码,是编译为EVM可以理解的二进制码部署在智能合约当中的。但是作为编程人员直接用这种代码写程序较难,因为它是一个低级语言。所以以太坊提供了高级语言如Solidity、Viper、LLL、Bamboo来写智能合约,然后编译成EVM代码。

ABI

应用二进制接口ABI是智能合约函数调用的二进制编码格式。在向一个合约账户发送交易时,需要指明调用合约代码里的哪个函数,如果这个函数带参数,还要把参数值传递过去,这些东西都要有一个二进制编码。

Merkle Tree

在以太坊里有一个非常重要的概念“Merkle Tree”。在Merkle Tree里,从根结点向下(叶子节点除外),每一个节点的值都是下面节点的值合并后算哈希的结果。这样的好处是可以很容易形成对于叶子节点上的交易数据的验证。以太坊对Merkle Tree做了改进,以便高效地进行插入和删除操作。

02 以太坊面临的安全挑战

智能合约风险

以太坊作为一个带有图灵完备虚拟机的区块链平台,它的优势很明显,但优势往往也是它的劣势。对于以太坊来讲,因为它的虚拟机支持任意编程逻辑,在写智能合约的时候很有可能会引入bug,比如之前的The DAO事件造成以太坊的硬分叉,Parity钱包7月份和11月份两次bug被黑客利用造成的资产损失等。所以面对这些安全风险,应该怎么办?

一是可以通过以太坊的协议和EVM本身的升级来加强安全性。二是可以应用代码审计公司或者是自己编制严格的审计流程对自己的代码进行审计。另外,可以使用形式化验证工具来加强安全性,如区块链安全公司Zeppelin开发的工具,可以使得区块链上部署的智能合约代码修改起来更方便。苏黎士联邦理工大学软件可靠性实验室开发的安全审查工具Securify,给开发人员提供了一个简单的界面,可以对输入的智能合约代码进行形式化验证,然后找出里面存在的漏洞。

隐私风险

我们都知道,在区块链社区中特别注重隐私保护,而zk-SNARKs(“简明非交互零知识证明”)是此次DevCon上一个非常热门的话题。这个机制是让一个证明者,在不提供任何额外的有用信息的情况下,使验证者相信某个论断是正确的,是一种概率证明而不是确定性证明。

比如Alice有一把开门的钥匙,她需要向Bob证明她拥有这个钥匙。有两种做法,第一种是Alice把钥匙给Bob,Bob拿这个钥匙开了门进去,Bob知道Alice确实拥有进门的钥匙。另外一种做法是,Bob知道这个房子里有一样东西,他告诉Alice,Alice到房间里把这个东西拿出来给Bob看。由于Alice能做到这一点,Bob知道Alice有开门的钥匙。第二种方法就是所谓的零知识证明,可以在不泄露钥匙的情况下,向Bob证明Alice拥有它。现阶段,对隐私保护做得最好的是Zcash,Zcash对零知识证明应用得非常纯熟。

03 以太坊面临的扩容挑战

以太坊面临的另外一个重大问题,就是它的性能扩展。以太坊上面现在已经部署了成百上千的智能合约,但它之初的设计是基于PoW共识机制,每秒只能处理几十个交易,无法满足很多应用对交易性能的实际要求。以太坊被认为是第二代区块链,现在第三代区块链的崛起势头对以太坊形成了某种竞争压力,所以当务之急是如何在保持以太坊平台平稳运行的前提下,尽快把它切换到PoS的共识机制下,提高平台的性能。

现在以太坊面临的在性能扩展上的问题是,每一个节点都要处理每一个交易,这意味着整个区块链的容量是被单一节点的处理能力和存储能力所限制。另外,以太坊设计之初就不支持交易的并行处理,这些都限制了其性能的进一步提升。

04 以太坊的扩容之路

为了解决扩展性,Vitalik提出了Sharding(分片)方案,即“一个区块链,两套系统”。Sharding具体方案是将以太坊网络状态分解为众多分片(shard),分片间仅能异步通讯,每一个分片仅处理全网络的一部分交易,分片也分为主分片与新分片。Vitalik 称新分片为“宇宙星系”。

主分片与新分片在共识与治理上会有不同处理方式,主分片采取保守的方式,依然是PoW,然后进入一种混合的PoS模式,实际上就是PoW加PoS,以保障网络稳定性;新分片采取积极改进的方式,以便进行更多的试验,但不影响主分片,新分片则直接使用PoS模式,实现权益证明。如果能实现这样的治理构架,系统将会更稳定。

在新老分片中间的同步状态是通过一个叫无状态的客户端来做的。所谓无状态就是,当把新分片的一些局部状态想要同步到主分片的时候,共识节点不需要存储所有网络状态,仅存储区块头部信息即可。另外发送交易时,提交Merkle 证明即可以改变状态。因为Merkle是自洽的数据结构,它可以向主分区证明这个交易确实是在新分区上发生过了。这样在新分区上可以做很多的优化,比如并发处理,包括区块的大小,就不再是个问题。如果要想尝试不同区块大小带来的性能方面的影响,它可以创建不同的新分片,在不同的新分片做不同的设置。

总结来说,这套机制使把以太坊未来的开发分成两层。第一层是现有的主分片,强调安全和保守。另外一层是新的分片,直接用PoS协议,它可以实现快速的算法和功能迭代。

如果要想实现分片制的设想,PoS扮演了非常重要的作用。无论是主分区里从混合模式过渡到最终模式还是新分区一步到位,PoS在以太坊接下来的发展中就非常重要。PoS是一种公有链的共识算法,是权益证明,它和PoW工作量证明不一样的是,它不是解一个加密算题来给参与者进行奖励的挖矿机制,而是在它的机制里有一些验证人,这些验证人自己要持有区块链上的代币。这些验证人按照一定的算法轮流提议出块,所有的验证人为这个新的块进行投票。在投票的时候,每一个投票人的投票权重跟它的代币数量成正比。如果验证人的投票行为是正确的,他就会得到奖励。如果他作弊,那么他会被判定为以不符合协议的方式进行投票,他的代币会被惩罚没收。所以PoS基于经济机制来获得共识,并且获得网络的安全性。

PoS的优点有三个。第一是明确的经济安全性,因为它不再是通过挖矿的竞争实现共识,所以在链上治理这块就可以制定非常明确而且有针对性的奖惩措施。在PoW的机制里,要想进行51%攻击,代价很低,仅需电力消耗和设备损耗。但PoS不同,它的惩罚非常严重,当你进行51%的攻击,治理算法就会发现,你所有的代币就会被没收。所以它的经济安全性,比PoW高。第二,减少集中化风险。因为PoW挖矿机制使得它有集中化倾向,在PoS里面1块钱就是1块钱,你的钱和股份是平等的,减少了集中化风险。第三,提高能源效率。我们都知道,比特币挖矿消耗的能量相当于厄瓜多尔整个国家一年的耗电量。但切换到PoS上,绿色环保,非常值得提倡。

以太坊通过Casper的机制来实现PoS。Casper由两个项目组成:Casper由两个项目组成:Casper CBC和Casper FFG。FFG以保守的方式,在PoW 基础上实施了权益证明。简单地说,依然通过PoW 算法增加区块,但是每50个块有一个PoS “检查点”,通过网络验证人来评估区块的最终有效性。FFG解决的是短期内将主链迁移到PoS上,实现混合的PoS模式,只是过渡方案。而CBC是最终方案,从形式化的设计和形式化建设方面都是正确的算法。


本篇分享结束,你也可以关注我们的“知乎号【区块链也疯狂】”或“微信公众号【万向区块链】”,第一时间获取最新区块链活动信息和区块链干货。

0条回复 跳转到指定楼层

高级模式
您需要登录后才可以发帖 登录 | 立即注册 | 用新浪微博登录

本版积分规则

搜索

0关注 1粉丝 30主题

作者的其他主题

返回顶部 返回列表

登录

分享 发帖