智能合约是近年来出现的一种旨在以信息化方式传播、验证、执行合同的计算机协议。尽管可编程的区块链为去中心化的概念在生活中的应用创造了无限可能,但区块链项目的大规模落地与推广仍面临一系列挑战。本书秉承由浅入深、理论与实践相结合的思想,在阐述理论的同时,也对相关操作进行了详细说明。相信读者在阅读完本书后,会对以太坊智能合约有比较完整的了解,更重要的是,会对与以太坊智能合约相关的网络安全问题有充分的认识,并能够在开发和审计过程中积极应对常见的网络安全问题。
本书适合智能合约开发人员、智能合约审计人员、网络安全研究人员,以及对区块链、智能合约感兴趣的读者阅读。
针对以太坊2.0智能合约安全问题,从漏洞到字节码全方位展示智能合约安全审计过程,为智能合约安全提供坚固的盾牌
王艺卓
网络ID Xrosheart,就读于上海交通大学网络空间安全学院。现于Loccs实验室区块链研究小组和看雪区块链安全小组从事区块链领域的研究,在以太坊智能合约安全方面有相关在投论文和在申请专利。
陈佳林
看雪论坛“iOS安全”版主roysue,看雪讲师,在移动安全领域有丰富的项目经验。曾在2017看雪安全开发者峰会、GeekPwn发表主题演讲,多次主持银行、电信、行业部门的培训并担任讲师,在看雪、FreeBuf、安全客等安全社区发表多篇精华文章。目前就职于看雪科技,主要研究方向包括移动安全、区块链等。
王鑫
网络ID dwfault,启明星辰ADLab团队安全研究员。主要研究方向为区块链、Web浏览器等软件系统的漏洞分析、漏洞挖掘,并在上述领域获得了若干CVE漏洞编号和厂商致谢。
何芷珊
网络ID CoralineH,毕业于上海交通大学电子信息与电气工程学院信息安全专业。主要研究方向包括区块链、人工智能对抗、ICN等。
序
比特币作为一种新型加密货币,其出现使得区块链去中心化的概念成为密码学研究的热点方向。去中心化本身,则是金融领域现有机制的有益补充,甚至是一大突破。以以太坊为代表的区块链2.0,作为可编程的区块链去中心化平台,其EVM及智能合约的创举,为去中心化在金融、日常生活等领域创造了无限可能。在一个良好的生态环境中,区块链正在茁壮成长。
尽管可编程的区块链为去中心化的概念在现实生活中的应用创造了无限可能,但区块链项目的大规模落地与推广仍面临一系列挑战。除了容量、延迟、拓展性等性能方面的问题,一大制约因素就是区块链的安全问题。一方面,区块链本身的共识机制需要从安全性的角度加以证明;另一方面,自区块链2.0出现以来,由于区块链部署的不可更改性,智能合约本身的安全受到了密切关注,DAO等由于智能合约漏洞造成巨大损失乃至以太坊硬分叉的安全事件,更是将智能合约的安全问题提到了新的高度。
区块链作为当下的热点领域,应用日趋广泛,未来的发展需要安全人才保驾护航。看雪学院(kanxue.com)专注安全领域20年,一直致力于培养安全人才、促进产业发展。对于区块链领域,看雪学院也为众多研究者提供了交流、研讨的平台。本书针对区块链2.0——以太坊,着眼于智能合约安全,进行了深入的分析与探讨,相信对于区块链设计、开发人员,以及未来有志从事区块链领域工作的人士,都会有很大的帮助。
段 钢
看雪学院创始人
2019年5月9日
前言
区块链作为一种去中心化的分布式数据存储结构,以数字加密货币为源头发展至今,在商业、金融、信息等多个领域发挥着重要的作用并受到了普遍的认可,在学术界和产业界掀起了潮流。据相关报道,2019年5月,区块链的总市值达到2300亿美元。
以太坊是仅次于比特币的第二大区块链系统。以太坊智能合约的链上编程语言使其不仅仅是一种加密货币,还是一个基于智能合约的去中心化应用程序(DApp)平台。2018年年底,以太坊已经托管了超过100万份智能合约。截至2019年5月,在全球范围内2667个成熟且活跃的分布式应用中,约有92% 来自以太坊平台。
与比特币的脚本相比,以太坊智能合约作为图灵完备的语言,在拥有功能更为强大、更具拓展性等优势的同时,也因其复杂性产生了诸多安全问题。一方面,由于智能合约编程语言Solidity本身缺乏大整数等特性,需要开发人员在编写过程中注重代码的安全性、完整性;另一方面,由于区块链本身的不可更改性,存在漏洞的合约一旦部署上链,就会造成不可逆的损失。以著名的DAO攻击事件为例,黑客利用智能合约中的重入漏洞转移了价值约6000万美元的以太币,导致以太币的市值一度下跌了40%。因此,如何保障智能合约的安全性成了区块链落地的关键。
在本书的写作过程中,我们秉承由浅入深、理论与实践相结合的思想,在阐述理论的同时,对实际操作进行了详细说明。
第1章对区块链的发展历程进行了由浅入深的介绍。借助一个故事,结合经典的《比特币白皮书》,梳理了区块链1.0~区块链3.0的框架,并对以太坊及其智能合约进行了简单的探讨。
第2章旨在将区块链和以太坊的概念与实现对应起来。结合实践,对常用的以太坊客户端geth、钱包、浏览器等应用的操作进行讲解,既提供了命令行环境,也展示了图形界面。
第3章将智能合约的语法、操作、应用融为一体,不仅介绍了智能合约的语法特性,还详细讲解了如何利用Truffle实现代币合约和众筹合约。
第4章对智能合约的常见漏洞及其原理进行了分析,在Remix IDE中对漏洞的代码进行了调试,并针对每一个漏洞给出了相应的防范建议。
第5章介绍了常见的智能合约蜜罐,结合原理讲解和复现操作,提供了相应的安全建议。
第6章对现有智能合约分析与审计工具的使用进行了说明。
第7章介绍了智能合约的审计流程,并提供了审计案例。
第8章深入以太坊虚拟机的运行机制,介绍了智能合约是如何部署和执行的。
相信读者在阅读完本书后,会对以太坊智能合约有较为完整的了解,更重要的是,会对以太坊智能合约的安全问题有更加充分的认识,能够在开发和审计过程中发现并识别常见的漏洞和蜜罐。本书覆盖面虽广,但内容由浅入深、通俗易懂,同时不乏深度的思考。例如,智能合约审计工具的研发是研究的热点,智能合约字节码的解构能力是在以太坊上进行开发的敲门砖。
在本书的编写过程中,我们得到了来自家人、同事、朋友及看雪区块链研究社区的支持和鼓励,在此表示感谢!
最后,希望本书能为推动区块链的落地和技术的进步作出微薄的贡献。
作 者
2019年6月于上海