第1篇 Python基础篇第1章 Python语法基础1.1 初识Python1.1.1 为什么要学习Python1.1.2 Python开发环境搭建1.1.3 选择一个适合的IDE1.1.4 写下你的第一个Python程序1.2 Python基础语法1.2.1 数据类型1.2.2 常用操作符1.2.3 流程控制语句1.2.4 了解Python的编码风格1.3 输入输出(IO)1.3.1 文件的打开与读取1.3.2 文件与目录操作1.3.3 JSON格式处理1.4 函数1.4.1 函数的基本定义1.4.2 函数的调用1.4.3 递归函数1.4.4 匿名函数1.4.5 装饰器1.5 异常处理1.5.1 错误处理思想1.5.2 try语句使用1.5.3 断言语句1.6 面向对象编程1.6.1 面向对象的编程思想1.6.2 Python的面向对象特色第2章 Python的语法特色2.1 Python的数据处理工具2.1.1 迭代器2.1.2 切片2.1.3 数据生成器2.1.4 lambda表达式2.2 模块与包2.2.1 第三方模块的安装与使用2.2.2 NumPy2.2.3 OpenPyXL2.2.4 Shapely2.3 并发编程2.3.1 并发编程思想2.3.2 多进程编程2.3.3 多线程编程2.4 正则表达式2.4.1 正则表达式的基本规则2.4.2 在Python中处理正则表达式2.5 标准库的使用2.5.1 Map简介2.5.2 Reduce简介2.5.3 sorted简介2.5.4 filter简介2.6 网络编程2.6.1 TCP协议简介2.6.2 如何搭建TCP服务器2.6.3 HTTP协议简介2.6.4 如何搭建Web服务器第3章 Python与数据库操作3.1 Python与关系型数据库3.1.1 Python与MySQL开发环境准备3.1.2 通过Python对MySQL数据进行增改删3.1.3 通过Python查询MySQL数据 3.2 Python与非关系型数据库 3.2.1 Python与MongoDB开发环境准备3.2.2 通过Python操作MongoDB数据库3.2.3 Python与Redis开发环境准备3.2.4 通过Python操作Redis数据库第2篇 区块链技术篇第4章 初识区块链4.1 区块链的诞生与发展4.1.1 区块链的诞生4.1.2 认识密码朋克组织4.1.3 区块链技术的高速发展4.2 P2P网络4.2.1 P2P网络概述4.2.2 P2P网络的搭建要点4.2.3 区块链网络的数据同步机制4.3 区块链的数据结构4.3.1 哈希函数4.3.2 时序的链块式结构4.3.3 默克尔树4.4 PoW机制4.4.1 分布式网络中共识的意义4.4.2 什么是PoW4.4.3 PoW的本质原理4.5 UTXO与交易4.5.1 什么是UTXO4.5.2 比特币交易模型4.5.3 交易脚本4.6 区块链账本的安全与挑战4.6.1 双花攻击4.6.2 51%攻击4.6.3 激励相容第5章 区块链的技术原理5.1 以太坊详解5.1.1 以太坊概述5.1.2 智能合约5.1.3 外部账户与合约账户5.1.4 世界状态树5.1.5 以太坊经济体5.2 区块链的共识算法5.2.1 PoS原理5.2.2 DPoS原理5.2.3 PBFT原理5.3 区块链的技术方向5.3.1 跨链5.3.2 同态加密5.3.3 零知识证明5.3.4 二层网络(Layer2)5.3.5 NFT第6章 区块链技术的发展趋势6.1 公链与联盟链6.1.1 公链与联盟链的对比6.1.2 常见联盟链平台6.1.3 BaaS平台6.1.4 区块链应用的合规性 6.2 联盟链与基础设施建设6.2.1 数字化身份6.2.2 数字人民币6.2.3 存证溯源平台6.3 公链的热门应用方向6.3.1 去中心化交易所6.3.2 DeFi应用简介6.3.3 IPFS应用简介6.3.4 DFINITY应用简介第3篇 区块链开发篇第7章 Solidity智能合约开发入门7.1 智能合约运行原理与环境搭建7.1.1 智能合约的概念7.1.2 智能合约的运行机制7.1.3 智能合约运行三要素7.1.4 智能合约开发环境搭建7.1.5 Remix环境简介7.1.6 初识Solidity7.2 Solidity基础语法7.2.1 Solidity基础数据类型7.2.2 函数7.2.3 修饰符7.2.4 内建对象7.2.5 内建函数7.2.6 事务控制7.2.7 自定义修饰符7.3 复合数据类型与数据结构7.3.1 自定义结构7.3.2 数组和动态数组7.3.3 映射7.3.4 address类型7.3.5 memory与storage7.4 Solidity面向对象编程7.4.1 接口7.4.2 函数选择器与接口ID7.4.3 library7.4.4 合约继承7.4.5 abstract关键字第8章 Solidity智能合约开发进阶8.1 Solidity经典案例8.1.1 智能合约开发的一般步骤8.1.2 土豪发红包8.1.3 我要开银行8.1.4 智能拍卖8.2 ERC标准8.2.1 ERC概述8.2.2 ERC-20标准8.2.3 ERC-165标准8.2.4 ERC-721(NFT标准)8.3 可升级合约8.3.1 不可篡改与可升级之间的矛盾8.3.2 跨合约调用8.3.3 通过底层函数调用合约8.3.4 主—从式可升级合约8.3.5 代理—存储式可升级合约8.4 合约开发最佳实践8.4.1 最佳实践概述8.4.2 工厂模式8.4.3 存储注册表模式8.4.4 遍历表迭代器8.4.5 避免重入攻击8.4.6 警惕外部合约调用8.5 Python与智能合约调用8.5.1 RPC原理分析8.5.2 Python-SDK简介8.5.3 Python调用智能合约步骤8.5.4 节点连接8.5.5 ABI分析与编译8.5.6 通过Python调用智能合约第9章 Python语言离线钱包开发9.1 区块链钱包原理9.1.1 区块链钱包的核心原理9.1.2 助记词如何生成与验证9.1.3 如何存储私钥9.2 区块链钱包核心功能实现9.2.1 钱包如何支持Coin转移9.2.2 钱包如何支持Coin查询9.2.3 ERC-20标准实现与部署9.2.4 钱包如何支持Token转移9.2.5 钱包如何支持Token查询9.2.6 事件订阅第10章 项目实战:开发“赏金任务系统”区块链10.1 项目需求分析与通证设计10.1.1 项目需求与痛点分析10.1.2 项目整体设计10.1.3 FISCO BCOS简介10.1.4 搭建FISCO BCOS开发环境10.1.5 SDK的使用10.2 企业级智能合约设计与实现10.2.1 用户合约设计与实现10.2.2 积分合约设计与实现10.2.3 任务合约设计与实现10.3 赏金任务系统核心功能实现10.3.1 Django简介与安装10.3.2 Django的基础使用10.3.3 用户注册功能的实现10.3.4 登录与Session处理10.3.5 任务发布10.3.6 任务信息查询10.3.7 任务状态变更10.3.8 项目总结
为什么写这本书Web 3.0 旨在构建一个更加公平、开放、自主、安全且充满活力的创新互联网生态,为人们带来全新的互联网体验和价值创造机会。当今我们正处于Web 3.0的过渡阶段,虽然Web 3.0的理念和技术,如区块链、去中心化应用等受到人们越来越多的关注,但Web 3.0的全面成熟和普及仍面临着诸多挑战和障碍。本书旨在更好地普及区块链技术,因为区块链技术是Web 3.0的重要基石。学习区块链技术时,选择一门编程语言作为切入点是非常有必要的。Python近些年发展迅猛,在IEEE Spectrum、TIOBE等平台发布的编程语言排行榜上,早已稳居前列甚至榜首的位置。Python是一门入门容易、开发方便的编程语言,在降低开发者门槛方面无出其右。目前,Python也是区块链生态中发展势头非常好的编程语言。例如,以太坊就拥有Python开发的客户端,而且使用Python与区块链进行交互也非常方便。正因如此,Python与区块链的结合可能更容易推广区块链技术。本书的特点是什么(1)理论与实践相结合,每个理论都有对应的实践代码讲解,读者参考源码,完成实例,就可以看到实验效果。(2)提供实训与学习问答,方便读者在阅读后尽快巩固知识点,以便做到举一反三,学以致用。(3)内容知识体系系统、完整,可以快速帮助读者搭建区块链应用开发知识体系。本书适合哪些读者● 编程初学者:适合对编程感兴趣,希望通过学习Python语言踏入编程领域的新手,特别是对区块链技术有浓厚兴趣的人群。● Python开发者:适合已经掌握Python编程基础,希望拓展自己的技能范围,深入学习区块链应用开发的程序员。● 区块链行业从业者:适合在区块链领域工作的专业人士,他们需要深入理解区块链原理、智能合约开发和DApp(分布式应用)的构建。● 金融科技爱好者:适合对金融科技创新特别感兴趣的人士,特别是希望探索在金融行业中应用区块链技术的研究者和实践者。● IT专业学生:适合计算机科学、软件工程或相关专业的学生,他们希望在校期间掌握最新的技术趋势,并希望在课程学习或毕业设计中涉足区块链这一前沿领域。● 技术创新探索者:适合对新兴技术好奇,愿意不断学习和尝试的技术爱好者,特别是渴望自建项目,将区块链应用于解决实际问题的创新者。写给读者的学习建议阅读本书时,如果读者是零基础,建议读者从第1篇Python基础篇开始学起,如果读者已经掌握Python编程基础,可以跳过第1篇,直接从第2篇开始阅读。同样,如果读者对区块链技术原理有所了解,但对Python不太了解,可以从第1篇开始阅读,在区块链原理部分可以选择跳过熟悉章节。很多区块链或Python开发的初学者可能会有一个认识误区,认为编码能力比掌握原理更重要。这个问题在区块链行业有些例外,因为区块链这个行业有些特殊,它会受到市场因素的影响。笔者在很多场合说过,掌握区块链技术原理将帮助开发者更深入地感受这一行业的独特魅力,并在这个行业内更好地立足。区块链应用开发虽然有一定的门槛,但对于有经验的开发者来说难度并不高,读者只要掌握了区块链原理、智能合约开发、区块链系统设计思想,就可以做出自己想要的区块链应用。
高野 ---------------------------- 高野,毕业于吉林大学计算机科学与技术专业,曾先后就职于中国联通、飞创科技(大商所下属子公司)、传智播客,现任京北方区块链架构师,FISCO-BCOS社区MVP,Aptos技术大使。2017年开始研究区块链,熟悉以太坊、FISCO-BCOS、Aptos、HyperLedger Fabric等主流公链及联盟链平台应用开发,多次参加企业内训及技术分享,线上、线上授课经验丰富,培养的学生遍布全球。著有《Go语言区块链应用开发从入门到精通》一书,参与了蚂蚁链白皮书的编写。辛智勇 ---------------------------- 辛智勇,2019年开始研究区块链相关技术,熟悉比特币、以太坊等主流技术,长期从事计算机软件的设计和开发工作。曾就职于中兴通讯、四维图新,历任研发部门总经理、技术专家、高级技术顾问。北京市科学技术委员会科技评审专家;生态聚合平台Aptos Eden高级技术顾问。肖岩 ---------------------------- 肖岩,毕业于中原工学院软件工程专业,前北大青鸟培训讲师。现任职于上市公司开发工程师,大前端开发工程师。生态聚合平台Aptos Eden技术顾问。熟悉Python、Kotlin、Java、JavaScript等多种开发语言,2018年起长期关注区块链相关技术,推动区块链、联盟链等相关技术在实际项目中落地使用。郑一鸣 ---------------------------- 郑一鸣,前京东算法工程师,现独立开发者,擅长Python、Solidity、Rust 等,706 Creators社区多个Web3课程的发起人,包括zkp、Rust、Move等,长期关注以太坊生态与底层服务开发,热爱社群空间营造与青年创新教育。
本书全面系统地介绍了Python语言区块链应用工程师所需的基础知识和相关技术,主要分为Python基础篇、区块链技术篇和区块链开发篇三部分。全书共10章,其中第1~3章为Python基础篇,介绍Python语法基础、Python的语法特色、Python与数据库操作等内容;第4~6章为区块链技术篇,介绍初识区块链、区块链的技术原理、区块链技术的发展趋势;第7~10章为区块链开发篇,介绍Solidity智能合约开发的入门和进阶、Python语言离线钱包开发、通过Python和Solidity开发一个“赏金任务系统”,项目中将使用FISCO BCOS联盟链作为基础,结合Django框架,并应用Python-SDK与区块链交互完成数据的读写操作,完成一个区块链的Web项目。本书内容系统全面,案例丰富翔实,既适合想学习Python语言编程和区块链开发的初学者阅读,也适合作为区块链行业从业者、金融科技爱好者的学习用书,还可以作为广大职业院校相关专业的教材参考用书。