分享到微博 分享到人人 分享到LinkedIn 分享到Email
区块链:从入门到精通

回想9月里在上海参加以太坊第二届开发者大会,依然感到整个会议议程紧凑、干货十足,必须给我们的热心读者分享一下。

1. 什么是区块链(Blockchain)?

要说近期得到各行各业关注和讨论的热点,区块链必须算一个:迄今为止,2016年全球最大的投资项目都与区块链相关,投资金额分别在5500万美元和6000万美元,国内最大的一笔区块链项目也在9月底以超过2000万美元的投资规模宣布。

区块链的魅力在哪里?

若说今天的互联网是信息通过TCP/IP协议进行点对点的传递,是信息互联网,那么,价值(比如电子货币、电子资产等)怎样才能脱离第三方进行点对点的转移?区块链技术就提供了一种可能。

区块链是去中心的分布式记账系统。系统中的节点无需互相信任,通过统一的共识机制共同维护一份账本,每个节点都有一份完整的数据记录。区块链- Blockchain, 成块(block)的交易通过密码学算法连接在一起,使得整个账本公开透明、可追踪、不可篡改。

比特币作为全球通用的加密互联网货币,就是基于区块链技术发展起来的,而区块链上智能合约的支持,使更广泛的、比特币以外的数字资产的点对点转移变成现实,这就不难理解,为什么区块链技术会作为价值互联网的基石而引人注目了。

2 什么是以太坊(Ethereum)及其开发者大会(Devcon2)?

以太坊(Ethereum)作为全球最为知名的区块链项目之一,同时拥有全球最大的区块链开源社区。

什么是以太坊?它是一个有智能合约(SmartContract)功能的公共区块链平台。我们用智能手机打个比方,如果说以太坊好比智能手机的操作系统,那么智能合约就是上面打在的应用app。有了以太坊,用户可以直接开发自己的区块链应用,而无须担心底层的区块链系统。

此次是第二届以太坊开发者大会,不仅以太坊的核心团队成员悉数到场,还汇聚了来自世界各地的以太坊行业代表、开发者和社区成员。微软是此次大会的顶级赞助商,将与以太坊继续合作打造Microsoft Azure云端“区块链即服务”(BaaS: Blockchain-as-a-Service)。

​以太坊紫色革命

以太坊创始人Vitalik Buterin 在会上发布了描述下一代以太坊(以太坊2.0)关键改进的紫皮书(Mauve Paper),直指以太坊存在的两大问题:以工作量证明(proof-of-work)为基础的共识机制低效、耗能、不绿色环保,以及以太坊公链系统吞吐量 (throughput)和容量均不足以支撑全球大范围高频次使用。

针对第一个问题,紫皮书提出一个新的基于权益证明(proof-of-stake)的共识机制,命名为Capser,能让参于“挖矿”的方式,从原来重金购入大量通用计算机或专门定制“矿机”并消耗电力能源进行大量“无用”计算来争夺区块的构造和收益权,转变成直接将资金兑换为以太币注入以太坊区块链,“挖矿”相关的智能合约(Smart Contract)自动根据资金的注入量成比例随机分配区块的构造和收益权。配合一套设计精巧、赏罚分明的经济学激励措施,这一新的共识机制有望使以太坊公链变得更安全、更高效和更绿色。

​不过,基于权益证明的新共识机制的复杂度显著高于基于工作量证明的现有共识机制,部分社区成员对新机制的可靠性和正确性还存有疑虑,仍有待投入大量精力和时间以共同完善和验证。

针对第二个问题,关于吞吐量和容量的局限,紫皮书提出了缩短区块产生间隔时间(block time)和分区(sharding)这两个解决方案。

在保证安全的前提下,新的算法把区块产生间隔时间从12秒降低为4秒,使吞吐量提升为现在的三倍。新的分区机制将区块链分为80个相对独立的分区(sharding),以太坊的每个节点无需处理全网所有事务(transaction)和储存全网所有的数据,只要关注其中一个或几个分区的事务和数据即可,所有节点通过分工配合来完成覆盖所有分区的目标。这么做能使以太坊的容量增大为现有的80倍。同时,由于各分区的事务可以并发处理,吞吐量再获提升,变为现有水平的240倍(3 X 80)。

但这么做也是有代价的:分区之前,一个事务无论涉及到多少个智能合约,对所有这些智能合约状态的修改都能原子化地完成,这个性质极大简化了智能合约的编程和推理。分区之后,一个事务如果涉及到跨区的智能合约调用,由于跨区调用只能通过异步的方式完成,一个事务会被分段执行而失去原子性,这在本质上改变了智能合约的执行模型,增加了推理和编程的复杂度。这就是扩容的代价。

尽管如此,作为价值互联网的核心基础设施,由以太坊代表的支持智能合约的区块链技术平台正以激动人心的速度不断突破技术难题向前发展,值得进一步的跟踪、研究与参与。

智能合约的安全

简而言之,智能合约就是一段用来直接控制电子资产交易的计算机代码。智能合约与区块链的关系可以类比为手机应用与智能手机,智能手机为手机应用提供计算平台,而多样的手机应用极大地丰富了智能手机的应用场景。类似地,智能合约可以和区块链技术无缝对接,使区块链可编程化、可定制化,智能合约因此赋予了区块链智能,使区块链可以突破汇款这一传统的应用,让区块链可以应用在更复杂的逻辑中。

智能合约区别于普通程序代码的强大之处,在于它被公开而不可更改地储存在区块链之上,在定义好的内外部条件下得到区块链全网节点的忠实执行。任何人都不可能单方面篡改和阻止智能合约的执行。这是智能合约值得信赖的根本原因,却也是智能合约的“天生缺陷”,因为这个性质使智能合约的漏洞不能得到及时修复,利用漏洞的攻击行为也难以被及时阻止,从而造成实实在在的危胁。

这方面已经有了实际的例子,最有代表性的就是The DAO攻击。The DAO项目作为区块链业界最大的众筹项目,目的是给基于以太坊的创业团队和项目提供重要的资源,但是其编写的智能合约存在“递归调用漏洞”的问题。不幸的是,在程序员修复这一漏洞及其他问题期间,一个不知名的黑客开始利用这一漏洞收集The DAO代币销售中所得的以太币,导致The DAO损失了接近5000万美元。为挽回巨大损失,以太坊社区采取了充满争议和极具道德风险的硬分叉(hard fork),回滚到攻击发生前的区块,重新生长出一条不包含攻击结果的区块链。新生成的链虽然符合社区的主流民意,但由于违背了区块链不可篡改的原则,至今仍然受到社区一部分成员的抵制。

​值得特别强调的是,这不是以太坊平台的本身漏洞,而是以太坊上某些智能合约出现了漏洞。新加坡国立大学的博士研究生Loi Luu在此次大会介绍了他关于智能合约安全性的论文[1],分析了以太坊区块链上19366个智能合约,发现大约44%的智能合约存在安全风险。

有效防范这些风险是智能合约得到广泛应用的前提,因此,开源社区和学术界一样都在抓紧解决智能合约的安全问题。由来自康奈尔、加州大学伯克利分校、伊利诺伊大学厄巴纳-香槟分校和以色列理工学院等学术机构的研究人员组成的IC3研究组在会上提出了解决智能合约安全问题的三板斧:对智能合约进行形式化验证,在智能合约中内建危机应对机制,建立发现和修补智能合约漏洞的激励机制。微软研究院、法国国家信息与自动化研究所和哈佛大学三个研究机构的研究人员也在近期共同发表文章,阐述在对以太坊智能合约平台本身(以太坊虚拟机)和智能合约的形式化验证方面进行了前沿探索[2]。

Web 3:去中心化的下一代Web基础设施

以太坊生态系统中的重要成员,去中心化储存系统Swarm,其核心开发者Viktor Trón在会上通过一系列演讲,描绘了一个以以太坊为核心的去中心化的Web愿景:Web 3。

​在这个宏大的愿景中,以太坊作为一个去中心化的计算平台,辅以Swarm和IPFS(InterPlanetary File System)作为去中心化的加密储存平台,以及以Whisper为代表的去中心化的消息传递平台,构成一整套以P2P网络为核心的下一代Web基础设施。基于这种基础设施开发的去中化应用(Dapps),直接使用由分布于全球的P2P网络提供的存储、计算和消息服务,具有高容错、抗攻击、高可用、反审查等特点。这使得去中化的应用开发者不再需要架设和维护专门的服务器,而是通过应用的使用者直接向P2P网络购买所需的计算和加密存储服务来使用这些应用,天然就获得了自己数据的拥有权和控制权。这跟现有的Web架构下,所有用户数据天然集中于由应用或网站的开发者架设和控制的服务器的情况,有着革命性的区别。让这一切成为可能的,正是以区块链技术为基础的全球性去中心化的电子货币系统。

Web 3作为一种去中心化的云计算平台,是对现有的集中式云计算平台的有益补充。现有的集中式云计算平台有着去中心化平台所不具有的低成本、高效率、高性能、功能丰富等特点,而去中心化的云计算平台由于不被单一实体控制,更适合构建中立性要求极高、跨机构的信任基础设施。这两者不是互相取代的关系,而是共存共生、相互借鉴而共同发展的关系。展望这两种云计算平台在未来的碰撞和交融,一定异常精彩,必将促进云计算技术和云计算生态系统的进一步发展,推动云计算技术更为深刻和广泛的影响人类生产生活的方方面面。

微软BaaS – Bletchley

重要的事情放在最后:微软一直积极支持整个区块链开源社区和生态系统的发展,今年已是连续第二届成为以太坊开发者大会唯一的顶级赞助商,不仅在自己的公有云平台Azure上推出了完全开放的区块链服务(Blockchain-As-A-Service),提供各种区块链项目和技术的一键部署和开发测试平台,还在这次大会发布了代号为Bletchley的区块链生态系统框架的V1版本。

微软的Bletchley框架,兼容所有区块链系统和技术,为这些区块链系统的落地商用提供访问控制、身份认证、加解密、智能合约安全验证、代码安全执行容器、开发调试、大数据分析和机器学习以及区块链应用及智能合约市场等服务,并以此为基础构建一整套第一方和第三方的相关软件服务以及各种行业解决方案。

​特别值得一提的是名为Cryplet的代码安全执行容器,它将基于硬件的安全隔离执行环境容器化,以按需云服务的方式,为区块链跟外部世界交互的关键代码提供一个任何人都无法窥探、篡改的安全执行环境。Cryplet不仅适用于将智能合约依赖的外部世界的事件(如股价、天气情况等)以安全和来源可验证的方式注入区块链,还能根据区块链状态安全和可信的操作外部世界和触发外部的事件。Cryplet的不可窥探性使其特别适合运行需要保密的私有算法和处理敏感的数据,大大的扩展了区块链系统的应用边界。除此之外,Azure也与中国区的区块链平台和创业公司合作,提供了本地化的区块链应用市场服务,方便本土的区块链系统在Azure上的一键布署,助力区块链技术在中国的发展。

更多会议详情请戳:http://www.blockchainweek2016.org/index_cn.html

以及你们要的招募帖来了!

微软亚洲研究院的区块链项目

在微软亚洲研究院,我们Cloud & Mobile Group 也于半年前开始展开区块链技术的研究,设计的新技术已经获得区块链方面的美国专利。从基础的一致性协议理论,到提高区块链性能和扩展性的系统优化,我们都取得一些进展。同时,我们和Azure中国的团队一起设计和开发可落地的区块链的应用。

在10月16日的2016年开源年会,我们讲解了更多区块链和智能合约的技术细节,以及演示如果在Azure上方便部署和开发区块链的应用,请戳: http://www.huodongxing.com/go/coscon2016.

而随着相关研究迅速开展,我们也开放了多个实习职位,有区块链、分布式系统、分布式数据库或者分布式理论背景的同学如果感兴趣请发简历到ying.yan@microsoft.com,并在邮件主题注明“区块链实习”。

参考论文:

[1]. Loi Luu, Duc-Hiep Chu et al. "Making Smart Contracts Smarter"

[2]. http://research.microsoft.com/en-us/um/people/nswamy/papers/solidether.pdf

作者简介:

闫莺,微软亚洲研究院主管研究员,从事区块链技术,大数据分析和挖掘,数据库应用的研究。发表国内外顶级会议期刊论文30余篇,专利10余项。

陈洋,研究员,微软亚洲研究院云计算与移动计算研究组,从事云计算平台架构、大数据系统、编译的研究。