一步步教你开发部署第一个去中心化应用(Dapp)宠物商店区块链技术剖析

本文通过实例教大家来开发去中心化应用,应用效果如图:

从本文,你可以学习到:

Pete有一个宠物店,有16只宠物,他想开发一个去中心化应用,让大家来领养宠物。在trufflebox中,已经提供了pet-shop的网站部分的代码,我们只需要编写合约及交互部分。

1、建立项目目录并进入

>mkdirpet-shop-tutorial>cdpet-shop-tutorial2、使用truffleunbox创建项目

>truffleunboxpet-shopDownloading...Unpacking...Settingup...Unboxsuccessful.Sweet!Commands:Compile:trufflecompileMigrate:trufflemigrateTestcontracts:truffletestRundevserver:npmrundev这一步需要等待一会

contracts/智能合约的文件夹,所有的智能合约文件都放置在这里,里面包含一个重要的合约Migrations.sol(稍后再讲)migrations/用来处理部署(迁移)智能合约,迁移是一个额外特别的合约用来保存合约的变化。test/智能合约测试用例文件夹truffle.js/配置文件

其他代码可以暂时不用管

在contracts目录下,添加合约文件Adoption.sol

pragmasolidity^0.4.17;contractAdoption{address[16]publicadopters;//保存领养者的地址//领养宠物functionadopt(uintpetId)publicreturns(uint){require(petId>=0&&petId<=15);//确保id在数组长度内adopters[petId]=msg.sender;//保存调用这地址returnpetId;}//返回领养者functiongetAdopters()publicviewreturns(address[16]){returnadopters;}}编译部署智能合约Truffle集成了一个开发者控制台,可用来生成一个开发链用来测试和部署智能合约。

Solidity是编译型语言,需要把可读的Solidity代码编译为EVM字节码才能运行。dapp的根目录pet-shop-tutorial下,

>trufflecompile输出

Compiling./contracts/Adoption.sol...Writingartifactsto./build/contracts部署编译之后,就可以部署到区块链上。在migrations文件夹下已经有一个1_initial_migration.js部署脚本,用来部署Migrations.sol合约。Migrations.sol用来确保不会部署相同的合约。

现在我们来创建一个自己的部署脚本2_deploy_contracts.js

接下来执行部署命令:

>trufflemigrate执行后,有一下类似的输出,

Usingnetwork'develop'.Runningmigration:1_initial_migration.jsDeployingMigrations......0x3076b7dac65afc44ec51508bf6f2b6894f833f0f9560ecad2d6d41ed98a4679fMigrations:0x8cdaf0cd259887258bc13a92c0a6da92698644c0Savingsuccessfulmigrationtonetwork......0xd7bc86d31bee32fa3988f1c1eabce403a1b5d570340a3a9cdba53a472ee8c956Savingartifacts...Runningmigration:2_deploy_contracts.jsDeployingAdoption......0x2c6ab4471c225b5473f2079ee42ca1356007e51d5bb57eb80bfeb406acc35cd4Adoption:0x345ca3e014aaf5dca488057592ee47305d9b3e10Savingsuccessfulmigrationtonetwork......0xf36163615f41ef7ed8f4a8f192149a0bf633fe1a2398ce001bf44c43dc7bdda0Savingartifacts...在打开的Ganache里可以看到区块链状态的变化,现在产生了4个区块。这时说明已经智能合约已经部署好了。

现在我们来测试一下智能合约,测试用例可以用JavaScriptorSolidity来编写,这里使用Solidity。

在test目录下新建一个TestAdoption.sol,编写测试合约

pragmasolidity^0.4.17;import"truffle/Assert.sol";//引入的断言import"truffle/DeployedAddresses.sol";//用来获取被测试合约的地址import"../contracts/Adoption.sol";//被测试合约contractTestAdoption{Adoptionadoption=Adoption(DeployedAddresses.Adoption());//领养测试用例functiontestUserCanAdoptPet()public{uintreturnedId=adoption.adopt(8);uintexpected=8;Assert.equal(returnedId,expected,"AdoptionofpetID8shouldberecorded.");}//宠物所有者测试用例functiontestGetAdopterAddressByPetId()public{//期望领养者的地址就是本合约地址,因为交易是由测试合约发起交易,addressexpected=this;addressadopter=adoption.adopters(8);Assert.equal(adopter,expected,"OwnerofpetID8shouldberecorded.");}//测试所有领养者functiontestGetAdopterAddressByPetIdInArray()public{//领养者的地址就是本合约地址addressexpected=this;address[16]memoryadopters=adoption.getAdopters();Assert.equal(adopters[8],expected,"OwnerofpetID8shouldberecorded.");}}Assert.sol及DeployedAddresses.sol是Truffle框架提供,在test目录下并不提供truffle目录。

TestAdoption合约中添加adopt的测试用例

在终端中,执行

truffletest如果测试通过,则终端输出:

Usingnetwork'develop'.Compiling./contracts/Adoption.sol...Compiling./test/TestAdoption.sol...Compilingtruffle/Assert.sol...Compilingtruffle/DeployedAddresses.sol...TestAdoptiontestUserCanAdoptPet(62ms)testGetAdopterAddressByPetId(53ms)testGetAdopterAddressByPetIdInArray(73ms)3passing(554ms)创建用户接口和智能合约交互我们已经编写和部署及测试好了我们的合约,接下我们为合约编写UI,让合约真正可以用起来。

在TruffleBoxpet-shop里,已经包含了应用的前端代码,代码在src/文件夹下。

接下来,我们来编辑app.js修改initWeb3():删除注释,修改为:

使用truffle-contract会帮我们保存合约部署的信息,就不需要我们手动修改合约地址,修改initContract()代码如下:

initContract:function(){//加载Adoption.json,保存了Adoption的ABI(接口说明)信息及部署后的网络(地址)信息,它在编译合约的时候生成ABI,在部署的时候追加网络信息$.getJSON('Adoption.json',function(data){//用Adoption.json数据创建一个可交互的TruffleContract合约实例。varAdoptionArtifact=data;App.contracts.Adoption=TruffleContract(AdoptionArtifact);//SettheproviderforourcontractApp.contracts.Adoption.setProvider(App.web3Provider);//UseourcontracttoretrieveandmarktheadoptedpetsreturnApp.markAdopted();});returnApp.bindEvents();}处理领养修改markAdopted()代码:

markAdopted:function(adopters,account){varadoptionInstance;App.contracts.Adoption.deployed().then(function(instance){adoptionInstance=instance;//调用合约的getAdopters(),用call读取信息不用消耗gasreturnadoptionInstance.getAdopters.call();}).then(function(adopters){for(i=0;i

在接受隐私说明后,会出现页面如下:

这里我们通过还原一个Ganache为我们创建好的钱包,作为我们的开发测试钱包。点击页面的ImportExistingDEN,输入Ganache显示的助记词。

candymaplecakesugarpuddingcreamhoneyrichsmoothcrumblesweettreat然后自己想要的密码,点击OK。如图:

至此MetaMask的安装,配置已经完成。

接下来需要本地的web服务器提供服务的访问,TruffleBoxpet-shop里提供了一个lite-server可以直接使用,我们看看它是如何工作的。bs-config.json指示了lite-server的工作目录。

{"server":{"baseDir":["./src","./build/contracts"]}}./src是网站文件目录./build/contracts是合约输出目录

以此同时,在package.json文件的scripts中添加了dev命令:

"scripts":{"dev":"lite-server","test":"echo\"Error:notestspecified\"&&exit1"},当运行npmrundev的时候,就会启动lite-server

>npmrundev会自动打开浏览器显示我们的dapp,如本文的第一张图。现在领养一直宠物看看,当我们点击Adopt时,MetaMask会提示我们交易的确认,如图:

点击Submit确认后,就可以看到成功领养了这次宠物。

在MetaMask中,也可以看到交易的清单:

区块链技术专家,《精通以太坊智能合约开发》的作者,北京航空航天大学硕士,创新工场高级工程师,猎豹移动技术项目负责人,以太坊基金会讲师,登链科技创始人兼CTO。对底层公链技术,区块链技术落地都有深入研究。

THE END
1.养宠帮下载app手机版2024最新免费安装这个市场还可以促进宠物主人之间的交流和合作,以达到更好地照顾宠物的目的。10. 宠托师服务,又称伴宠师,是指一种专业宠物照顾服务,为有需要的宠物家庭提供全方面的宠物照顾、陪伴和培训,可按照主人的要求和宠物的需求定制服务计划,满足不同宠物需求的定制要求。开发者:常州久沃网络科技有限公司 养宠帮下载安装失败...https://m.pianwan.com/app/181110
2.养宠帮养宠帮致力打造一个养宠人的专属服务平台。服务涵盖宠物托运、宠物领养、宠物训练、宠物寄养、宠物医疗、宠物用品、猫粮、狗粮、宠物相亲婚配、宠物社交、同城宠友交友活动等http://yangchongbang.cn/
3.电子宠物机app下载电子宠物机软件v1.11安卓版内容介绍相关下载评论1 电子宠物机app是一款非常有趣的电子宠物软件,用户完成手表连接之后就可以在这里根据自己的喜好来挑选领养一个电子宠物,完成领养过后就可以在这里为宠物进行起名,从孵蛋开始照顾宠物,经过你不断的照料就能让用户快速成长完成孵化,让你在手机上就能感受喂养宠物的乐趣,非常的有趣。当宠物较大一点...http://m.xz7.com/downinfo/567168.html
4.基于微信小程序的爱心宠物领养送养平台20231126082131.docx基于微信小程序的爱心宠物领养送养平台.docx,PAGE 2 摘要 舒适的物质生活,这就是我们进行精神生活的必要条件和基本保证,精神生活就是对于物质生活的一种升华和优化。随着我国经济社会进步和发展,人们的生活水平日益提高,很多年轻人在他们的物质生活条件达到一个标准后https://max.book118.com/html/2023/1126/6231140235010012.shtm
5.宠物帮领养中心宠物帮领养中心创始人,2006年毕业于华中农业大学,资深救助人和自媒体运营者。 李聃 宠物帮领养中心创始人,2010年毕业于北京工商大学,资深自媒体运营者。 谭晶莹 宠物帮领养中心主编,2017年毕业于吉林大学,资深自媒体运营者。 倪栩婕 宠物帮领养中心资深运营,2017年毕业于南京航空航天大学,资深自媒体运营者。 http://www.petbang2014.com/
6.宠物帮领养中心的微博宠物帮领养中心 2月1日 18:13 来自微博网页版 已编辑 #宠物帮领养中心# 猫咪被领养啦位置:吉林省辽源市姓名:梦梦性别:男孩年龄:11月初出生的性格:活泼很亲人,会用头蹭人,会自己用猫砂盆埋。身体情况:无猫癣,猫瘟等任何疾病,...展开全文c ?收藏 转发 评论 ?赞 c +关注 宠物帮领养中心...https://weibo.com/chongwubangly
7.宠物帮领养中心“宠物帮领养中心”是北京宠物帮文化传播有限公司旗下流浪动物公益领养平台(简称:宠物帮)。2014年5月成立,并与全国超过600家流浪动物救助团队合作,成功送养超过16万余只猫狗。同时平台还提供寻宠、绝育、云养、筹粮、捐步、助力等救助领域全部功能,已成为国内知名流浪动物救助平台。 http://www.mengzands.com/about.html
8.宠物领养下载宠物领养手机APP官方下载首页>软件>宠物领养 宠物领养V1.1.26 下载2万次 大小20.1M 更新一年前 评分1.8 金牛区私宠订制宠物用品店隐私权限 装进手机 * 本站资源来源于互联网,若有侵权请联系我们处理;软件使用中产生的任何问题,均与本站无关,请谨慎判断后下载。 宠物领养-小编点评 ...https://m.anxinapk.com/rj/52492693.html
9.撸宠:通过芝麻证优化体验,领养成功率提升30%涉及宠物领养的APP和小程序不到1000个,主要是以公司、公益组织、个人救助为主的运营。而这些APP或小...https://open.alipay.com/portal/forum/post/102501055
10.全国宠物领养全国免费领养宠物八公宠物领养网为您提供免费领养宠物的信息,帮助更多的爱宠人士免费领养宠物。https://www.bagong.cn/lingyang
1.养宠帮app下载养宠帮下载10. 宠托师服务,又称伴宠师,是指一种专业宠物照顾服务,为有需要的宠物家庭提供全方面的宠物照顾、陪伴和培训,可按照主人的要求和宠物的需求定制服务计划,满足不同宠物需求的定制要求。 开发者:常州久沃网络科技有限公司 备案号:苏ICP备18007624号-6A 养宠帮app下载安装失败或使用异常,请 -> 一键举报...https://m.liqucn.com/rj/181110.wml
2.宠物邦下载宠物邦最新版下载宠物邦app下载宠物邦下载更新时间:2024-07-22安卓版下载 苹果版暂无 8.6 已有146人评分 您还未评分!宠物邦下载栏目提供了最全的宠物邦版本内容,喜欢这款软件的用户,可以下载最新的官方版本,还能够找到相同类型的APP,保证每一位来到这里的玩家都能够找到感兴趣软件版本。https://app.3dmgame.com/zt/89821_game/
3.全国十大宠物领养平台领养猫狗的平台推荐可领养宠物的app有哪些...宠物帮领养中心,是全国性的流浪动物网络领养平台,倡导“以领养代替购买”,每日发布最新全国领养、寻宠信息,已开通官方微博账户。据买购小编不完全统计,宠物帮领养中心已与全国超过600家流浪动物救助团队合作,成功送养超过16万余只猫狗,同时平台还提供寻宠、筹粮、绝育、云养等救助功能,已成为当下最好的领养宠物app之...https://m.maigoo.com/citiao/list_105163.html
4.京东宠物降领养中心正式上线快讯10月22日消息,在2024京东健康狗巴迪勇士赛上海站上,京东健康宣布启动 “京东宠物健康领养中心”,将携手国内外一线宠物健康品牌,以及具备良好资质的流浪宠物救助组织,旨在“让救助团队救得好、让领养人养得好、让小动物过得好”。即日起,消费者在京东APP搜索“领养中心”即可进入领养专区,进行线上预约,并选择就近的救...https://www.ebrun.com/ebrungo/zb/562600.shtml
5.宠物领养小程序端页面设计加实现源码立即下载 开通VIP(低至0.43/天) 买1年送3个月 项目适用于想要进行小程序开发学习者,或者需要做一个宠物领养小程序的高校学生或者学习者。里面包含了首页、小动物领养页面、小动物展示页面,个人中心等多个页面。便于直接拿下来学习、使用,使用了uni-app框架快速开发完成页面。https://download.csdn.net/download/lf21qp/87745920
6.产品研究68款宠物APP产品分析:宠物行业的巨浪淘沙每种类型的APP的侧重点不同带来的商业产值也不同,所以每种类型APP的相似类型产品的数量也不同。详细的各类型产品数量如图3-2所示,其排名依次(如图3-3)为宠物商城、宠物买卖、社交论坛、一站式服务、智能硬件、宠物健康、家庭寄养、宠物领养、宠物媒介交友、上门服务、宠物繁殖、宠物托运、训狗服务。 https://maimai.cn/article/detail?fid=1368921073&efid=jmMz1_nUCqB92B3wjI5FXg
7.附近有喵app下载附近有喵(手机宠物领养软件)v1.1.7安卓手机版下载...手机扫码下载 星球重启 逍遥模拟器 云手机pc 云手机安卓 腾讯手游助手 王者荣耀 明日之后 QQ飞车 详情介绍 附近有喵是一款非常好用的手机宠物领养软件。用户可以在软件上浏览相关信息,了解宠物特征、年龄、品种等内容,综合考虑后再进行领养。给自己的生活增添色彩,就来app里看一看吧。 https://www.jb51.net/softs/903678.html
8.半侣云养宠app下载半侣云养宠v1.0.3手机版半侣云养宠app半侣云养宠手机版 安卓版下载 应用介绍 半侣云养宠是一个有趣的宠物社区,在线即可领养宠物并进行云养,所有宠物都拥有可爱的卡通形象,满足你的各种少女心;所有用户都可以在该软件中拥有小家,风格多样,比如海滨小屋、和风坪庭、青葱小院等,自行选择喜欢的风格并装饰自己的家;随时为你推荐热门的宠物,...https://m.xgbbs.net/app/122168.html