本书全面介绍了区块链技术的理论和实践,涵盖了理解区块链技术的全部内容。在阅读完本书后,读者将能够深入了解区块链技术的内部工作原理,并具备开发区块链应用程序的能力。本书包含了与区块链技术相关的所有主题,涉及密码学、加密货币、比特币、以太坊等,以及用于区块链开发的各种平台和工具。
本书详细阐述了与区块链开发相关的基本解决方案,主要包括区块链、去中心化、密码学和基本技术、比特币、替代币、智能合约、以太坊、超级账本等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。 本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学教材和参考手册。
目 录 第1章 区块链 1 1.1 分布式系统 2 1.1.1 CAP定理 3 1.1.2 拜占庭将军问题 4 1.1.3 一致性 4 1.2 区块链发展史 5 1.2.1 电子现金 6 1.2.2 电子现金的概念 6 1.3 区块链简介 8 1.3.1 区块链技术的各种定义 9 1.3.2 区块链中的一般元素 10 1.3.3 区块链特性 11 1.3.4 区块链技术应用 13 1.3.5 区块链发展层次 13 1.4 区块链类型 14 1.4.1 公有区块链 14 1.4.2 私有区块链 14 1.4.3 半私有区块链 15 1.4.4 侧链技术 15 1.4.5 许可账本 15 1.4.6 分布式账本 15 1.4.7 共享账本 15 1.4.8 全私有和专有区块链 15 1.4.9 标记化区块链 16 1.4.10 无代币区块链 16 1.4.11 区块链中的共识 16 1.5 CAP定理和区块链 18 1.6 区块链的优点和局限性 18 1.7 区块链技术的限制和挑战 19 1.8 本章小结 20 第2章 去中心化 21 2.1 基于区块链的去中心化 21 2.2 去中心化方法 23 2.2.1 非中介化 23 2.2.2 竞争 23 2.3 去中心化流程 24 2.4 区块链和完整的生态圈去中心化操作 25 2.4.1 存储 25 2.4.2 通信 26 2.4.3 计算 27 2.5 智能合约 28 2.6 去中心化组织 28 2.7 去中心化自治组织 29 2.8 去中心化自治企业 29 2.9 去中心化自治社会 30 2.10 去中心化应用程序 30 2.10.1 去中心化应用程序的需求条件 30 2.10.2 DAPP操作 31 2.11 去中心化平台 31 2.12 本章小结 32 第3章 密码学和基本技术 33 3.1 简介 33 3.1.1 数学知识 33 3.1.2 密码学 35 3.1.3 保密性 35 3.1.4 完整性 35 3.1.5 认证 35 3.1.6 不可否认性 36 3.1.7 问责制 36 3.2 密码原语 37 3.2.1 对称加密 38 3.2.2 块密码 39 3.2.3 数据加密标准 42 3.2.4 高级加密标准(AES) 42 3.3 非对称加密 45 3.3.1 整数分解 47 3.3.2 离散对数 47 3.3.3 椭圆曲线 47 3.4 公钥和私钥 48 3.4.1 RSA 48 3.4.2 离散对数问题 54 3.4.3 密码原语 62 3.4.4 哈希函数 62 3.4.5 椭圆曲线数字签名算法(ECDSA) 71 3.5 金融市场和交易 76 3.5.1 交易 77 3.5.2 交易所 77 3.5.3 交易的生命周期 78 3.5.4 订单预期者 79 3.5.5 市场操控 79 3.6 本章小结 79 第4章 比特币 81 4.1 比特币概述 82 4.1.1 比特币的概念 83 4.1.2 密钥和地址 83 4.1.3 比特币中的公钥 84 4.1.4 比特币中的私钥 84 4.1.5 比特币货币单位 85 4.1.6 Base58Check编码 85 4.1.7 虚地址 86 4.2 交易/事务 87 4.2.1 交易的生命周期 87 4.2.2 交易的结构 87 4.2.3 交易类型 90 4.3 区块链 94 4.3.1 区块链结构 94 4.3
前 言 物联网(IoT)是指连接各种物理设备到网络并能控制它们的突破性技术。创建基本的物联网项目是很普通的,但是设想一下如果一个智能物联网项目能够从物理设备抽取出数据,它将能够实现自我决策。 智能物联网项目是实施物联网和智能系统结合方案的重要参考。基本的统计知识和各种统计科学、机器学习的算法已经被用来加速实现在物理设备上集成控制系统。本书包含一些物联网项目,如制作一个智能温度控制器,制作你自己的机器视觉项目,制作一个自动控制的移动小车,通过语音命令控制物联网项目,以及利用云技术、数据科学来帮助创建物联网项目。 希望本书能对你有帮助,让你的技能提升一个台阶。 本书包括 第1章,让物联网项目变得智能,帮助用户了解一些物联网设备,如Arduino和Raspberry Pi(树莓派)。介绍一些统计和数据科学的Python库,了解它们的作用。 第2章,将决策系统用于物联网工程,帮助用户了解如何在物联网设备上构建控制系统。包括了解一些与控制系统相关的Python库,学习如何在IoT板上实现决策系统。 第3章,搭建机器视觉,探索如何通过摄像机让机器能够“看到”事物,并在训练机器检测和跟踪物体时对机器视觉有所理解。另外,本章也会介绍一些摄像机模块方面的知识。 第4章,制作自动机器车,探索如何制作机器车。通过集成一些传感器和驱动器让小车自行运动而不需要人为的干预。学习如何导航,同时也可以在计算机上控制它。 第5章,在物联网项目中添加语音技术,使IoT板“说话”。了解各种声音和语音模块。 第6章,为物联网项目搭建数据云,探索如何为物联网项目应用云平台。物联网项目的后端基础建设也是很重要的。当在不同地理位置处获取传感器数据时更需要注意。 你需要准备什么 你需要拥有Raspberry Pi、Arduino和一些本书中需要用到的电子组件。
适合的读者 本书适合希望学习如何将各种机器学习算法集成在物联网项目里的读者。你会学习到如何在真实的物联网项目里实现机器学习功能。但是你不需要对Raspberry Pi和Arduino有任何经验。 格式约定 在本书中,你会发现一些文字格式有所区别。这里给出一些例子说明它们的意义。 文字中的代码、数据库表名、文件夹名字、文件名、文件扩展、路径、链接、用户输入和Twitter handles都如下所示:“我们用sm.OLS()实现线性回归”。 块状代码如下:
import RPi.GPIO as GPIO import time
led_pin = 17 GPIO.setmode(GPIO.BCM) GPIO.setup(led_pin, GPIO.OUT)
如果想让读者着重注意某部分代码,则将其设为加粗:
try: while 1: print("turn on led") GPIO.output(led_pin, GPIO.HIGH) time.sleep(2) print("turn off led") GPIO.output(led_pin, GPIO.LOW) time.sleep(2)
except KeyboardInterrupt: GPIO.output(led_pin, GPIO.LOW) GPIO.cleanup()
print("done")
命令行的输入和输出格式如下:
$ mkdirgps_web
$ cdgps_web
$ nano gspapp.py
注意:表示警告或者重要的说明。 提示:表示提示和技巧。 读者反馈 我们欢迎读者反馈,让我们了解读者对于本书的看法—喜欢的和不喜欢的部分。读者反馈对我们非常重要,因为它能帮助我们了解读者真正学到的部分。 读者可以通过发送邮件到feedback@packtpub.com,只需要在主题里写上书的题目即可。 如果读者对一个主题有专业的看法并且想要对写作或者对书做一些贡献,可参考我们的作者指南:www.packtpub.com/authors。 消费者支持 现在你是书的拥有者,我们有一些内容提供给你,帮助你最大化你购买的价值。 下载示例代码 你可以用你的账户在http://www.packtpub.com 下载到示例代码。如果你在其他地方购买本书,可以访问http://www.packtpub.com/support并注册,我们把文件直接发给你。 你可以通过以下步骤下载到代码: (1)用邮箱地址和密码登录或者注册我们的网站。 (2)将鼠标指针移动到顶部的SUPPORT一栏。 (3)单击Code Downloads & Errata。 (4)在Search框中输入书的名字。 (5)选择要下载代码的书。 (6)选择购买书的位置的下拉菜单。 (7)单击Code Download。 你也可以在Packt出版社网站的这本书的主页单击Code Files按钮下载,还可以通过在Search框中搜索这本书的名字找到。请注意你需要登录你的Packt账户。 文件下载后,请确认你的解压软件是最新版本: ? WinRAR / 7-Zip for Windows ? Zipeg / iZip / UnRarX for Mac ? 7-Zip / PeaZip for Linux 本书的代码也被托管在GitHub,网址为https://github.com/PacktPublishing/Smart-Internet- of-Things-Projects。我们也把其他书籍的代码和视频放在https://github.com/PacktPublishing/。 勘误 虽然我们已经努力确保内容正确,但是错误仍难避免。如果你发现文字或者代码的错误并能告知我们,我们将非常感激。这样可消除其他读者的困惑,也能帮助我们提高后面版本的质量。你可以访问http://www.packtpub.com/submit-errata,选择你要勘误的书,单击Errata Submission Form并输入勘误的细节。一旦你的勘误得到验证,我们会接收你提交的信息并将勘误上传到我们的网站,或者添加到勘误章节的列表里。 访问https://www.packtpub.com/books/content/support并在搜索框中输入书的名字,在Errata一节中可以看到之前的勘误。 盗版行为 盗版行为在互联网上非常常见。在Packt,我们非常严肃地保护我们的版权。如果你看到任意形式的非法复制,请立即提供给我们网站地址和名字,我们将追究赔偿。 请把有盗版嫌疑的材料发送到copyright@packtpub.com。 对于你对我们作者的保护,我们不胜感激,我们将给您提供有价值内容的权益。 问题 如果你对本书有任何问题,欢迎联系questions@packtpub.com,我们将竭尽全力解决你的问题。
学分是平台的虚拟货币, 实现付出者有收获(学分),收获(知识)者有付出。
如果是虚拟作品,兑换成功后,可以立即在作品详情页下载作品。如果是实体作品,会快递到你兑换时所填的地址(通常3天内发货)。
集市上架的基本都是知识型商品, 除恶意的虚假作品外,均不支持退货。
所有实物的邮寄费用由社区承担,邮寄范围仅限中国大陆地区。