Skip to content

Latest commit

 

History

History
163 lines (134 loc) · 12.9 KB

README(old).md

File metadata and controls

163 lines (134 loc) · 12.9 KB

区块链智能合约大学生/研究生教材

介绍

区块链智能合约是区块链系列教材(由电子工业出版社和IBM中国负责组织和出版)中的一本。 本网站包括所有学生学习本教材的相关资料:

  1. source code 本教材中用到的一些例子程序
  2. data 本教材中用到的一些数据文件
  3. PPT 本教材的PPT
  4. paper 区块链和智能合约相关的著名论文
  5. ebook 区块链和智能合约相关的电子书

本书可作为高校区块链专业大学生/研究生的教材,也可以作为对区块链感兴趣的程序开发人员和高校师生的参考书,或者作为区块链相关培训课程的培训教材。本书适合于学习过至少一门面向对象编程的大学生和开发人员。

作者简介

黄立群: 博士,华中理工大学副教授。1969年10月出生。1992年获得华中理工大学电磁测量学士学位;1995年获得华中理工大学系统工程硕士学位;1999年获得华中理工大学电信息系通信与电子系统博士学位。2000年至2004年在武汉市东胡开发区管委会工作,2002年赴美担任武汉市政府驻美国友好城市匹兹堡市代表。2004年2月至今华中科技大学软件学院任教。1996获得ORACLE联合大学国际认证证书;2000年参加以色列国际企业管理交流项目。主持研究项目12项,参加自然科学基金、863项目和国家攻关项目多项,发表高水平论文十余篇,编写教材一部。主要研究方向为计算机网络安全、人工智能、区块链技术等。

郑宇(笔名:嘉文):华中理工大学计算机学士/硕士,加拿大麦吉尔(McGill)大学信息学硕士、多伦多大学罗特曼(Rotman)商学院MBA。曾任贝尔公司电子商务部门与大数据产品部门的经理和技术架构师,清华学堂在线技术架构师。具有8+年区块链实操经验,现为多家公司和高校的区块链讲师,先后从事在线课程、慕课(MOOC)系统开发、糖尿病检测、基于自主开发的云爬虫的金融大数据等产品的创业、比特币分叉、区块链社交、基于区块链的量化交易平台的设计和开发。现从事区块链艺术品NFT交易和流动性挖矿研究和实现。研究兴趣在于Rust编程语言,区块链里的NFT,零知识证明,Substrate,DEFI和IPFS/Filecoin。是畅销书《白话区块链》和《以太坊Solidity智能合约编程》的作者。技术博客在https://my.oschina.net/gavinzheng731。

黄晓涛: 女,博士,华中科技大学网络与计算中心教授,计算机基础教研室副主任,硕士研究生导师。研究方向为智能计算、大数据管理与分析、云计算与边缘计算、系统安全与隐私保护、计算机教育等。多年从事计算机基础教育工作,主讲课程有:计算机与程序设计基础、C++程序设计语言、电子商务概论、数据库基础及应用和区块链基础等计算机基础课和专业课,具有丰富的教学经验。获得多项省级以上教学研究项目,主编和参编教材8本,发表教学研究论文20多篇,负责课程获得校精品课程,指导学生湖北省优秀学士学位论文、全国大学生大型主机应用大赛(二等奖)优秀指导教师奖、华中科技大学教学质量优秀奖二等奖、IBM优秀教师和Google优秀教师等多项奖励。长期从事网络计算和大数据技术方向研究,参与多项国家自然基金项目,主持湖北省自然基金项目和多项横向项目,发表科研论文30余篇,多篇论文被EI和SCI收录。获首届武汉市自然科学论文优秀二等奖,负责的《计算机与程序设计基础》被评为全国线下一流金课。

内容简介

本书首先介绍了区块链技术的特点,包括其定义,应用,解决的问题以及面临的挑战。为了方便深入的理解区块链技术,本书也详细的介绍了区块链相关的算法,数据结构和多学科交叉的内容;着重阐述了区块链是低成本的信任机器;是在信息不对称,不完全的环境下,在完全不信任节点间建立信任机制的技术;是价值网络,是传递价值的互联网(Internet Of Value, IOV)。同时,鉴于智能合约是区块链应用技术的核心基石之一,本书详细介绍了目前最成熟、应用最广的智能合约开发平台 — 以太坊,以及目前社区最活跃、应用最多、最具人气的以太坊智能合约编程语言 — Solidity。本书介绍了Solidity语言的文法,以及各种高级话题;同时又深入解析了Solidity智能合约的以太坊虚机(EVM)的汇编实现,帮助读者更深刻的理解智能合约的工作原理,从而能够更好地解决各种异常情况。最后,本书介绍了智能合约编程的另一个重要分支 — 超级账本和链码编程,以及目前智能合约研究领域最热门,最前沿的方向 — Web Assembly(WASM)技术。

本书的结构如下:
区块链篇
第一章 介绍区块链技术的定义,历史,分类,应用以及面临的挑战
第二章 介绍区块链技术包含的各学科的技术,包括算法和关键数据结构
第三章 介绍目前最成熟的智能合约开发平台—以太坊

以太坊Solidity智能合约篇
第四章 介绍了Solidity编程语言的基础知识:关键字,语句,修饰符,以及特殊特性
第五章 介绍Solidity智能合约编程和传统语言编程的不同,包括设计模式,编程语言如何与智能合约交互,智能合约编程的安全性等方面
第六章 介绍了Solidity编程的一些高级话题:合约间如何调用,如何省GAS, ABI,Solidity合约的汇编实现,以及如何设计可升级的智能合约
第七章 介绍基于Solidity智能合约的DApp编程,以及如何使用去中心化的存储

超级账本篇
第八章 介绍超级账本架构以及链码编程

未来篇
第九章 介绍智能合约编程的明日之星--Web Assembly(WASM)

附录1,介绍以太坊Solidity智能合约编程会用到的一些内置变量,函数等
附录2,介绍区块链发展历史上的大事件
附录3,介绍区块链的一些术语
附录4,收录以太坊预置的一些合约,用于Solidity智能合约编程

资料获取
可以在https://gitee.com/gavinzheng731/blockchain-and-smart-contract 获得本书中用到的一些示例程序,文件,PPT等。
镜像站在https://github.com/gavinzheng/Blockchain-Smart-Contract

前言

习总书记2019年10月的讲话,让区块链技术终于得以被正名并把区块链技术推向了国家竞争,弯道超车的高度。由此区块链技术的潜力被正式承认,也催生了各行各业区块链应用落地的滚滚热潮。区块链技术是一项颠覆性的技术,被认为是继上世纪80年代的微机革命,上世纪90年代后半的互联网革命之后的又一次新技术的创新。微机革命和互联网革命被视为生产力的创新:有一代更比一代强的芯片,有功能便捷,强大的,不断花样翻新的软件,也有新一代的互联网基础设施的升级,比如路由器,浏览器等。与它们相比,区块链技术则是一场生产关系的革命。区块链技术利用现有的多学科的,跨领域的多种技术,将之集成在一起,为我们打造了一个在信息不完全,不对称的环境下的低成本的信任机器,从而彻底将我们从个人信任(亲戚,血缘,朋友等),制度信任(契约,合同,法庭等)的时代推到了机器信任的时代。在机器信任的时代,人们信任公开透明,多方计算,多方存储的分布式账本;人们相信代码即法律(Code is Law)。而基于机器的信任,由于其建立信任的成本低廉,高效率以及公平公正性,必将颠覆现实世界里的各行各业的商业逻辑。在这样的愿景中,基于区块链的智能合约开发扮演着核心基石的角色。

本书详细而深入的介绍了区块链技术和智能合约技术,包括了算法,数据结构以及相关的多学科的各种理论。从实际应用的角度出发,本书介绍了最具人气的智能合约编程语言 — Solidity:从Solidity语言中基础的关键字和语句开始介绍,逐步深入到高级应用,包括设计模式、合约可升级的设计、合约的安全性问题及对策等;并结合EVM的实现,讨论Solidity语句的汇编实现;讲解Solidity编程原理,并提供了相对应的实例,以期读者能更易于理解Solidity编程语言的实现机理;介绍如何应用Solidity来开发去中心化应用(DApp),及如何使用区块链上的去中心化存储(IPFS)。同时,出于全面性和前瞻性的考虑,本书也详细介绍了智能合约的重要分支:基于超级账本的链码编程和智能合约编程的明日之星 — Web Assembly(WASM)编程技术。

本书可作为高校区块链专业大学生/研究生的教材,也可以作为对区块链感兴趣的程序开发人员和高校师生的参考书,或者作为区块链相关培训课程的培训教材。本书适合于学习过至少一门面向对象编程的大学生和开发人员。

谨以至诚,不揣冒昧,以本书就教于各位方家。鉴于区块链技术是一门新兴的技术以及目前区块链研究和应用的滚滚大潮,区块链人才出现了巨大的缺口。希望本书能帮助到对区块链技术感兴趣,并希望切换到区块链智能合约赛道上的大学生和开发人员。同时,笔者也期待各方的指教和反馈,并欢迎各种方式的讨论。念念不忘,必有回响。笔者相信,随着区块链专业人才的大量涌现,区块链的落地应用必将呈现一个全新的局面。

致谢
最后想感谢催生本书的出版界的朋友:电子工业出版社的章海涛编辑。可以说,没有章编辑和IBM中国,就没有这本书的诞生。同时感谢青海大学的郑睿辰同学,做了大量文字校对和绘图工作,提供了有用信息。

目录

前言
内容简介
作者简介
1 第一章区块链概述
1.1 什么是区块链?
1.2 区块链历史
1.3 区块链的分类
1.4 区块链解决的问题
1.6 区块链技术的应用
1.7 区块链面临的挑战
1.8 习题
2 第二章 区块链技术
2.1 区块链的一般架构
2.2 哈希函数
2.3 密码学算法
2.4 共识算法
2.5 博弈论
2.6 P2P算法
2.7 数据结构
2.8 习题
3 第三章 以太坊与智能合约
3.1 以太坊介绍
3.2 以太坊关键数据结构
3.3 智能合约介绍
3.4 现有智能合约框架介绍
3.5 习题
4 第四章 SOLIDITY编程
4.1 sol文件结构
4.2 合约文件结构
4.3 变量类型
4.4 操作符
4.5 语句
4.6 修饰符
4.8 事件
4.9 继承
4.10 其他
4.11 习题
5 第五章 智能合约开发
5.1 智能合约开发的不同点
5.2 智能合约的生命周期
5.3 开发智能合约的周期
5.4 设计模式
5.5 基础算法
5.6 安全
5.7 总结
5.8 习题
6 第六章Solidity智能合约高级话题
6.1 可升级
6.2 省Gas
6.3 汇编代码
6.4 合约间调用
6.5 ABI 编程
6.6 运行原理
7 第七章基于Solidity智能合约的去中心化应用(DApp)
7.1 DApp的特点
7.2 DApp架构
7.3 去中心化数据存储
7.4 消息通信
7.5 名字解析
7.6 习题
8 第八章 超级账本
8.1 Fabric 284 8.2 Fabric智能合约—链码(Chaincode)
8.3 Chaincode智能合约交互
8.4 习题
9 第九章Web Assembly(WASM)
9.1 为什么需要WASM
9.2 Web Assembly
9.2.1 特点
9.2.2 WebAssembly 动态运行库
9.3 如何前后端交互(以golang为例)
9.4 如何从Solidity迁移到WASM
9.5 习题
10 附录A SOLIDITY常用函数
11 附录B 区块链大事记
12 附录C 区块链术语
13 附录D以太坊内置合约
14 参考文献

特技

  1. 使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md
  2. Gitee 官方博客 blog.gitee.com
  3. 你可以 https://gitee.com/explore 这个地址来了解 Gitee 上的优秀开源项目
  4. GVP 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
  5. Gitee 官方提供的使用手册 https://gitee.com/help
  6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 https://gitee.com/gitee-stars/