区块链DAPP开发入门、代码实现、场景应用 - (EPUB全文下载)
文件大小:0.45 mb。
文件格式:epub 格式。
书籍内容:
区块链DAPP开发入门、代码实现、场景应用
第1章 智能合约概述
第2章 开发环境搭建
第3章 Solidity编程语法
第4章 ABI(应用程序二进制接口)
第5章 ICO、token和DAO
第6章 DAPP完整实战
第7章 智能合约安全与公链技术简介
第1章 智能合约概述
智能合约是运行在区块链公链上的一种代码,该代码由 Solidity 编写,并通过区块链的智能合约虚拟机来执行,以达到对区块链编程的目标。为了更好地理解智能合约的运行环境,本章将讲解区块链公链的基本概念。可以将区块链公链理解为操作系统,Solidity是编写该操作系统应用程序的编程语言,智能合约虚拟机则是编程语言编译之后的代码运行环境。本章除介绍区块链公链的基础知识外,还会讲解智能合约与区块链公链的交互方式,以及智能合约虚拟机的系统架构。
本章主要涉及的知识点有:
●区块链公链的常用术语和基本知识。
●智能合约虚拟机的系统架构。
●DAPP与区块链交互的方式。
●智能合约编程语言Solidity的基本语法结构。
1.1 区块链基础知识
本节将简单介绍区块链公链的基本概念和技术架构,从交易的产生到“区块”这个名称的产生,从挖矿到区块链攻击,从公链基础功能到基于公链操作系统的可编程环境。本节将从不同的角度,对公链的基本技术术语进行简明阐述,对公链底层技术感兴趣的读者可以根据本文的介绍,检索相关资料,比特币和以太坊在官网都有详细的技术文档和资料,感兴趣的读者可以自行检索,本节仅讲解与DAPP开发相关的技术点。
1.1.1 交易
区块链通常被理解为超级账本,账户与账户之间可以通过交易来完成转账,只是这种转账方式与传统的银行转账有很大的不同。
(1)这是一个完全去中心化的金融系统,区块链账户不需要使用者到银行机构或者其他部门申请,因为整个系统中没有这样的中心化部门来管理账户信息,使用者只需要根据一种非对称加密算法来生成一个密钥对,其公钥作为账户地址,也就是常说的区块链钱包地址,这个地址可以在网络中广播,允许网络中所有的账户获取和使用,如图1.1所示。
图1.1 以太坊钱包的地址
该账户地址是公开的。私钥作为转账交易的签名和密码,由使用者私人保管,每次转账时,需要通过私钥签名来证明交易的合法性。在现实使用中,私钥往往非常长,而且非常复杂,因此区块链钱包会将私钥进行对称加密,通过使用者输入人类能够理解的密码作为私钥加密的密钥,将区块链密钥以密文的形式保存在磁盘空间里。但是如果忘记解密密钥的密码,用户就失去了对账户的操作权限,也就是说即使账户有余额并且可以查看,也无法进行转账和使用,这就是社交媒体经常报道的丢失比特币的情况。
(2)这是一个完全无中心的账本系统,其交易方式与传统的交易系统有着本质的差别,传统的银行系统中,当A转账100元给B时,银行从数据库中将A的账户扣除100元,同时在B的账户下增加100元。在这个过程中,数据库是在银行的严密保护下操作的,扣除与增加金额的操作需要很高的安全级别才能进行,并且查询余额用的数据库和真正写入的数据大多数情况下是分离的。尤其需要注意的是这个过程生成的交易记录至少有2条:1条是从A的账户下扣除金额的记录,另1条是在B的账户下增加金额的记录。
而发生在区块链上的交易则完全不一样,在区块链上每一笔交易都是一条转账记录,如果该交易成功被整个区块链网络认可则转账成功,并且会将转账记录存储在区块链的数据库里面,每个区块链节点都可以访问和操作这个数据库,并且任何人都可以查询交易双方的账户信息。对于比特币网络来说,BTC 的转账,除了转给对方,还要将账户下的余额转给自己,这样就会生成多条记录,这样做是因为BTC没有账户余额的设计。
如图1.2所示,Bob给Alice转0.5 BTC时,会生成2条交易记录,1条记录是Bob→Alice,另1条是 Bob→Bob,这些交易使用了非对称加密技术的加密和验证签名技术,这个过程属于区块链公链的设计范畴,不在本书讨论范围内。需要指出的是,这样可以在没有任何中心化银行提供服务并且没人掌握交易接收者或者发送者密钥的情况下,实现公开、安全的转账交易。即使交易数据公开在网络中传播,也无法被篡改,即无人可以将Bob转账的0.5 BTC修改为5 BTC,因为任何数据的变更都会导致数据的 Hash 值变化,进而导致数据的签名无法被校验通过,进而无法被全网认可,也就是说伪造任何报文和交易,都是无法被网络认可的。这样,比特币在没有银行并且公开交易信息的情况下也能转账。
图1.2 比特币网络交易
(3)发生在区块链上的交易,是存储在区块链网络中的所有全节点(拥有所有交易数据的区块链节点叫作全节点)上的,并且也是公开可查的,用户不仅可以查询某个账户下的所有交易,还可以查看其账户余额,这与银行的交易记录也是截然不同的。图1.3所示为比特币区块链浏览器,这些查询系统被称作区块链浏览器。与银行不同的是,即使能看到区块链交易的所有细节及所有账户的余额,也无法将账户与现实世界中的人联系起来,这与银行系统的账户设计完全不同。
图1.3 比特币区块链浏览器
1.1.2 区块
所有的交易信息都会形成一个结构化的账本,它们会被区块链的节点(矿工)按照一定的方式和时间间隔组织起来,存储在区块链节点中。这个用于存储交易信息的结构体就是区块,除了交易信息,区块还要存储一些额外的信息以保证交易数据的完整性和可靠性,区块数据结构如图1.4所示,该结构图仅仅列举了一些关键信息,不同的公链有各自不同的设计。关于区块的生产间隔,不同的区块链网络有不同的设定,比如以太坊出块的时间间隔约为15s,而比特币网络则需要10min才生产一个区块。
图1.4 区块数据结构
区块数据包含区块头与区块体,区块体存储具体的交易及交易相关的原始数据,区块头存储的是原始数据的Hash信息,任何对原始数据的修改,都会引起区块头Hash值的变化,这样对任何信息的篡改都很容易被察觉到并被验证为假数据。除了交易原始数据和对应的 Hash 信息,还有一些为了维持区块安全性 ............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » 区块链DAPP开发入门、代码实现、场景应用 - (EPUB全文下载)