以太坊dApp开发教程(如何一步步构造一个全栈式去中心化应用)(一)背景及环境搭建

原文地址:http://www.dappuniversity.com/articles/the-ultimate-ethereum-dapp-tutorial

一、简介

本教程帮助你在以太坊区块链上构建去中心化的应用(dApp),教你如何写第一个以太坊智能合约,来实现对两个候选者的选举投票功能。我们会对合约编写测试代码,把合约部署到以太坊区块链上,开发一个前台界面以让用户投票,我们还会介绍几个关键概念:什么是区块链、智能合约,dApp如何工作。

视频教程见资源:

百度网盘链接:https://pan.baidu.com/s/1elaQXhfq9dtrp0IXUrlvDg 密码:klom

二、基本概念

1. 什么是区块链

我们先看一个web应用,通常我们使用浏览器通过网络连接到中心服务器,所有web应用的代码都存在于中心服务器,所有数据存在于数据库中,你使用web应用时必须和中心服务器通信。

如果我们要建立投票网站,需要解决以下两个问题:

  1. 数据库数据可能改变,数据可能被使用多次或者完全被移除
  2. web服务器上的源代码也可能随时改变

我们想把应用部署在区块链上,使任何能访问网络的人都可以参与投票,我们要保证投票被记下来,且只记下一次,现在看看我们怎么做的。

Instead of having a network, a central server, and a database, the blockchain is a network and a database all in one. A blockchain is a peer-to-peer network of computers, called nodes, that share all the data and the code in the network.

区块链使由节点组成的点对点网络,在其中共享所有数据和代码。如果你是网络中的节点,将存储所有数据和代码的拷贝。区块链没有中心服务器。

不像中心化的数据库,区块链的交易数据存储在一系列的区块中,这些区块连接在一起组成公开的分布式账本,包含了所有区块链中的数据,通过密码学的hash函数保证安全,通过分布式共识算法保证一致性。本例子的投票系统在区块链上开发,因为我们需要保证每个投票都被记录而且不能更改。

首先,用户需要一个有几个以太币的账户,当他们连接到区块链网络,并且投票后,支付一小部分代价(gas)以把这笔交易写到区块链中,当投票发生后,一些矿工节点竞争记账权,谁通过POW成功创建区块,就能获得交易代价的一部分奖励。投票者就能确定自己的交易永久记录下来了。注意:查看区块链上的数据是免费的,但写数据需要代价。

2. 什么是智能合约

我们的投票过程就是通过智能合约完成的,以太坊区块链允许智能合约通过以太坊虚拟机(EVM)来执行智能合约。

智能合约是应用的一些业务逻辑,也是dApp的核心部分,负责读写区块链上的数据、执行一些业务代码。

智能合约用Solidity书写,类似于JavaScript。智能合约很像网络上的微服务,如果公开账本是数据库层,智能合约就是业务逻辑层。本应用中创建这个合约的人负责计数,其他投票者每人一票,得票最多的候选者获胜。

以下是本dApp的结构图:

我们有一个传统的用HTML, CSS, Javascript写的前台客户端,客户端会连接到本地的以太坊区块链,智能合约会部署在本地。

3. 本系统效果图

这个是客户端的web界面,将与区块链上的智能合约交互。

三、安装软件

需要npm包管理工具,ganache以太坊测试客户端,truffle开发框架, Metamask, Sublime Text(用来编辑智能合约)

可以参考:https://blog.csdn.net/u011680118/article/details/81201602 进行环境搭建

windows用户最好从git官网下载一个git安装包,官网下载地址http://www.git-scm.com/download/  

git安装过程参考:https://blog.csdn.net/weixin_41714277/article/details/79399270

猜你喜欢

转载自blog.csdn.net/u011680118/article/details/82419631