区块链案例实践报告_1_DAPP宠物商店

本文为个人学习报告,不做他用。
关于宠物商店的教程,网上已经给出了许多。因此,本文并不会十分详细地讲解具体操作,只是简述开发流程。
具体的实现步骤可参考
文字教程:https://www.jianshu.com/p/9844d97ef1d0
视频教程:https://www.bilibili.com/video/BV1ds41177Cy?p=7
以及我个人的部分代码:https://github.com/yumiki-syou/pet-shop

项目目标

熟悉DAPP的开发流程

项目介绍

Pete 开了一家宠物商店,里面一共有 16 只宠物。他想开发一个去中心化应用,让用户来领养宠物。
在 truffle box 中,已经提供了 pet-shop 的网站部分的代码,因此现在只需要编写合约及交互部分。

开发环境说明

1.操作系统 windows10(推荐linux或者linux for window)

2.Node.js (需要用到其内置的npm)

3.Truffle 框架(以太坊开发框架,内置了智能合约编译、链接、部署等功能。)

4.Ganache(Ganache可以在本地创建区块链网络来测试、部署Dapp或智能合约)

5.Metamask(一个Chrome插件形式的以太坊节点/钱包,被墙了,自己想办法安装)
在这里插入图片描述
6.代码编辑器 VsCode(使用Solidity插件)

开发流程

1.创建项目

建立项目目录并进入,利用truffle unbox pet-shop创建项目文件。
说明: truffle unbox <box_name>命令下载指定的Truffle项目模板。

项目目录结构说明
a)contracts 智能合约的文件夹,智能合约源文件目录,现在已经有了一个Migrations.sol源文件,功能是迁移/部署/升级智能合约。
b)migrations 迁移文件目录,迁移文件都是javascript脚本,帮助我们把智能合约部署到以太坊。
c)test 测试代码目录
d)truffle.js/truffle-config.js Truffle项目配置文件,例如可以在里面配置网络

另外,添加package.json文件,package.json是npm用来管理包的配置文件,在项目根目录下创建此文件,之后进行修改。

2.编写智能合约

智能合约承担着分布式应用的后台逻辑和存储。智能合约使用solidity语言编写。
在这里,创建合约文件 Adoption.sol 编写领养宠物的合约,主要实现领养宠物功能和返回领养者地址功能。
代码地址:https://github.com/yumiki-syou/pet-shop/blob/main/contracts/Adoption.sol

3.编译部署智能合约到本地区块链网洛

a)编译
利用truffle compile 指令 编译智能合约,可以看到项目根目录下生成build文件夹。
b)编写部署代码
在migrations文件夹下已经有一个1_initial_migration.js部署脚本,用来部署Migrations.sol合约。注意,在migrations目录中所有文件都有编号,作用是Truffle知道执行它们的顺序。现在,创建一个部署脚本2_deploy_contracts.js来部署之前写的 Adoption.sol 合约。
c)启动Ganache,并更新配置文件
利用Ganache启动好以太坊本地结点后,打开位于项目根目录下的truffle-config.js文件,修改内容(文件中的网络配置,包括ip地址、端口等,应该与Ganache的网络配置匹配)
d) 执行迁移命令
利用truffle migrate命令指令,将智能合约部署到本地的Ganache区块链网络。

4.智能合约测试

在test目录下新建一个TestAdoption.sol,编写测试合约。(测试用例可以用 JavaScript或者Solidity来编写)
然后利用truffle test指令来运行。

5.创建用户接口和智能合约交互

合约已经编写、部署及测试完成了。现在需要创建一个UI来实现用户和智能合约交互。
在Truffle Box pet-shop里,已经包含了应用的前端代码,代码在src/文件夹中。
在这里插入图片描述修改了js文件夹中,app.js的内容。
app.js的代码:https://github.com/yumiki-syou/pet-shop/blob/main/src/js/app.js

5.配置lite-server

lite-server 是一个全功能的网站架设工具软件包轻量级的,仅适用于开发 的 node 服务器。
配置bs-config.json,来指示lite-server的工作目录
bs-config.json:https://github.com/yumiki-syou/pet-shop/blob/main/bs-config.json
在package.json文件的scripts中添加了dev

"scripts": {
    "dev": "lite-server",
    "test": "echo \"Error: no test specified\" && exit 1"
  },

利用npm run dev指令启动lite-serve

6.配置MetaMask

因为MetaMask的图形界面简单易懂,操作也简单,故不在赘述。注意一点,链接本地区块链后,不需要创建账号,选择MetaMask的“Import Account”输入私钥,获取账号,可以查看对应ETH余额即可。
私钥可在Gananche中查看
在这里插入图片描述

7.运行

1.打开Ganache

在这里插入图片描述
2.运行lite-server
在项目根目录下 使用npm run dev 指令
获得网址: http://localhost:3000

在这里插入图片描述
在chorme浏览器中打开

在这里插入图片描述
3.设置Metamask,连接本地区块链网络

在这里插入图片描述
4.使用
这里收养这只叫Colins的小狗

在这里插入图片描述在确认交易之后,我们可以看到这只小狗被成功收养,并且账号3中可以看到Adoption的活动。

在这里插入图片描述

问题与感想

在实践这个案例的时候遇到了很多的问题。

  1. Ganache的安装(win10系统)
    Ganache的安装文件为appx,直接打开的话,会被作为压缩包打开,安装可以图片里的方法。

在这里插入图片描述2.truffle unbox的时候一直无法正常下载pet-shop的项目模板。解决方法是,换一个好一点的网。
还会遇到

Unbox failed! RequestError: Error: getaddrinfo ENOENT raw.githubusercontent.com 

这是因为raw.githubusercontent.com这个网址被墙了。建议修改host文件。
3.利用npm安装包的建议是使用国内镜像,不然速度真的很慢。

npm config set registry http://registry.npm.taobao.org/

利用npm get registry 命令,可以看到

	>http://registry.npm.taobao.org/

感想:
这是我第一次实践DAPP的实例,通过两周的时间,从0基础开始学习区块链。由于时间不长,对于很多东西的理解依然停留在表面,对于Solidity语言的应用也只是了解了基础语法,后续还需要实践深入。在这次开发过程中,我编写了两次这个案例,第一次直接copy了别人的代码,来验证运行;第二次,根据第一次的经验和留下的代码注释,自己手打了一遍,来体会代码的内容,加深理解。
虽然是个新手,但是之后我会继续努力的!

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值