本视频课程面向初学者,介绍什么是区块链,什么是智能合约,内容涵盖以太坊开发相关的基本概念,Gregory(Dapp University 创始人,专注于讲解在以太坊区块链上构建DApp应用程序教程。Gregory大神的以太坊课程在youtube上超过五千位订阅者,所有课程超过10万人次观看,深受区块链技术开发用户的喜爱 )大神在课程中手把手地教大家如何构建一个基于以太坊的完整去中心化应用 —— 区块链投票系统。
课程介绍
本视频课程面向初学者,介绍什么是区块链,什么是智能合约,内容涵盖以太坊开发相关的基本概念,Gregory大神在课程中手把手地教大家如何构建一个基于以太坊的完整去中心化应用 —— 区块链投票系统。
通过本课程的学习,你将掌握:
1、以太坊区块链开发的基本知识
2、开发和部署以太坊合约所需的软件环境
3、使用高级语言(solidity)编写以太坊智能合约
4、使用NodeJS编译、部署合约并与之交互
5、使用Truffle框架开发分布式应用
6、使用控制台或网页与合约进行交互
课程内容
【精品】以太坊DApp开发入门实战-区块链投票系统视频教程
什么是区块链?
我们用一个比喻来明白什么是区块链,它的工作原理是怎样?让我们先看一下网页应用程序。
当我们和网页应用程序交互时,你使用网页浏览器去连接我们的应用中心服务器。所有的网页应用都基于中心服务器,所有的数据都在中心数据库。任何时候在应用程序上交易,你都需要和网页中心服务器沟通。
如果我们在网页应用程序上投票选举,投票选举时我们会有以下问题:
1. 数据库里的数据可能会被改变:或者重复投票:也可能投票数据全部被删除。
2. 网页服务器上的源代码在任何时候都可能会被改变。
我们不愿意在网页上创建应用程序。我们更愿意把它创建在大家能连接的区块链上,确保一人投票一次,且不可篡改。让我们看看在区块链上怎么去实现它。
区块链不是一个中央服务器和一个数据库,而是一个网络和一个数据库。区块链是计算机的对等网络,称为节点,共享网络中的所有数据和代码。因此,如果您是连接到区块链的设备,则您是网络中的一个节点,并且您可以与网络中的所有其他计算机节点通话。您也拥有区块链上所有数据和代码的副本。区块链上没有中央服务器,只有不同设备之间在同属性下的网络点对点交流。
区块链取代中心化数据库,所有的交易都在区块链上,所有包含的记录称之为区块。所有连接起来的区块叫区块链,区块链之间创建公共账本,公共账本代表区块链里面的所有数据。
公共账本的所有数据都通过加密技术哈希密码进行保护,并通过共识算法进行验证。网络上节点的参与确保网络上分散的所有数据副本都是一样的。这就是我们为什么要在区块链上构建投票应用程序,因为我们希望确保我们的投票都被计算在内,而且没有被篡改。
如果我们的投票应用程序应用在区块链上会怎么样?
对于新用户来讲,新用户需要一个带钱包地址和有ETH的账户。ETH也就是以太坊的加密货币。一旦连接到区块链网络,投票会在区块链上消耗一些ETH。
这些交易费用称之为“燃气”。当开始投票是,网络上帮助完成这笔交易的矿工将获得这笔交易费用的ETH。我投票的记录就永远被记录下来了。
记住一点:投票是一种交易,交易会消耗ETH,但读取数据是免费的。
什么是智能合约?
智能合约就是在以太坊虚拟机(EVM) 上执行我们代码的过程。
智能合约的编程语言是Solidity,有点像Javascript,但有点不一样。Solidity编程语言可以实现我们所有的商务交易逻辑。
如果说公共账本代表网页的数据库,那么智能合约就是实现所有商务逻辑交易的地方。
现在让我们快速的看看我们构建的DApp的结构。
传统的前端应用程序用的是HTML, CSS, 和 Javascript.语言。
代替传统的前端应用程序是后端服务器,客户安装连接本地以太坊区块链,去用Solidity语言编译去中心化选举。部署智能合约到本地区块链上进行投票选举。
让我们一起来看看区块链的工作原理,为什么我们要用区块链代替下当前的中心化应用程序。
我们要创建什么?
我们将构建一个客户端应用程序,与我们在区块链上的智能合约进行对话。这个客户端应用程序将有一个候选人列表,列出每个候选人的ID,姓名和投票数。 它会有一个表格,我们可以为我们想要的候选人投一票。 它还显示我们在“您的帐户”下连接到区块链的帐户。
安装依赖项
创建DApp之前, 首先需要安装依赖项.
节点包管理器 (NPM)
我们需要的第一个依赖是Node Package Manager或NPM,它