背景
记录以前练习的第一个Dapp宠物商店,使用以太坊作为处理宠物收养的方式。该商店在特定时间可容纳16只宠物,并且他们已经拥有宠物数据库。所以我们做一个将以太坊地址与宠物相关联的dapp,官方提供了网站结构和样式。我们只需编写智能合约和执行前端逻辑。首先我的思路是:
设置开发环境
使用Truffle创建项目
编写智能合约
编译和迁移智能合约
测试智能合约
创建用户界面以与智能合约进行交互
在浏览器中与dapp交互
Dapp简介
Dapp 是 Decentralized Application 的简称,即去中心化应用。在某种程度上,比特币可以说是出现的第一个 Dapp,因为它是完全开源的,为贡献者提供奖励回报,不受一个中央机构的控制,并使用区块链作为支撑技术。 区块链作为一个基础设施,提供了分布式的去中心化可信数据库,人们可以基于此,可以开发各种应用,适用于不同的场景。 简单来说,Dapp和普通的 App 原理一样,除了他们是完全去中心化的,由类似以太坊网络本身自己的节点来运作的 Dapp,不依赖于任何中心化的服务器,Dapp 是去中心化的,可以完全自动地运行。 目前 Dapp 通常指代基于以太坊或者 EOS 上的智能合约开发的相关应用。
Dapp运行原理:Dapp 底层区块链开发平台就好比手机的 iOS 和 Android 系统,是各种 Dapp 的底层生态环境,Dapp 就是底层区块链平台生态上衍生的各种分布式应用,也是区块链世界中的基础服务提供方,Dapp于区块链,就好比 app之于 iOS 和 Android。
设置开发环境
在我们开始之前有一些环境需要安装。
- 首先安装的是Node.js v8+ LTS and npm,它可以让JavaScript 运行在服务端的开发平台,在前端交互的地方会使用到,再根据自己的电脑版本选择合适的下载。
- 然后是git也是必须的,他是一个开源的分布式版本控制系统。
- 然后就是我们的truffle,可以直接在命令行里面安装
npm install -g truffle
要验证Truffle是否已正确安装,可以输入truffle version查看版本。
然后就是下载一个测试链工具Ganache,他的前身是TestRPC用于以太坊开发的个人区块链,我们主要使用它来部署合同,并且开发应用程序和运行测试。如果想在没有图形界面的环境中进行开发,可以使用Truffle Develop,这是Truffle的内置个人区块链,在命令行输入ganache-cli我们也可以看到可用的账户和秘钥,ganache默认创建10个测试账户,每个账户里面也会有一些余额
使用truffle创建项目
1、用Truffle在当前目录中初始化,在文件夹中创建一个目录,然后把项目移进去。
mkdir pet-shop-tutorial
cd pet-shop-tutorial
2、使用现成的的Truffle Boxpet-shop框架,其中包括基本的项目结构以及用户界面的代码。用truffle unbox命令解压缩这个框架到我们的文件夹下。
truffle unbox pet-shop
注意:truffle框架可以通过几种不同的方式初始化。另一个的初始化命令是truffle init,它创建一个空的Truffle项目,但不包含示例合同。
3、默认的Truffle目录结构包含以下内容:
- contracts/:包含我们的智能合约的Solidity源文件。这里有一个迁移合约Migrations.sol
- migrations/:Truffle使用迁移系统来处理智能合约部署。迁移是一种额外的特殊智能合约,可以跟踪变化。
- test/:包含智能合约的JavaScript和Solidity测试
- truffle-config.js:truffle配置文件
写智能合约
1、我们将通过编写充当后端逻辑和存储的智能合约来启动dapp。这里推荐一个在线的编译器remix可以用来测试智能合约。创建一个名为一个新的文件Adoption.sol在contracts/目录中。将以下内容添加到文件中:
pragma solidity ^0.5.0;
contract Adoption {
}
需要注意的事项:
合同顶部标明了所需的最低Solidity版本:pragma solidity