一步步教你开发部署第一个去中心化应用(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推荐买宠物的哪个好下载平台宠物卖家认证流程简单便捷,猫舍犬舍宠物商店用户下载买只宠物app,进行实名认证后即可在线卖猫卖狗卖宠物,面向全国宠物买家出售宠物,一对一在线沟通。让您的宠物售卖更便捷!推荐使用平台担保交易,保障交易安全,宠物买家卖家通过平台担保交易购买宠物,宠物商家收到订单后确认发货,宠物发货后10天内宠物买家资金由平台托管...https://www.wandoujia.com/bangdan/403227/
2.宠物交易app排行榜前十名偏玩手游盒子分享十大宠物交易app排行榜前十名手机应用,编辑为您推荐手机宠物交易app排行榜第一名到前5名到前十名的应用。找宠物交易app有哪些、宠物交易app哪个好用,上偏玩手游盒子https://www.pianwan.com/s/zj-1483013
3.买宠物的app线上买宠物app宠物交易app大全宠物交易app是一系列以买卖宠物和买卖宠物用具为主要服务内容的app,在宠物交易app中用户可轻松寻找到各种各样品种的宠物,宠物均明码标价,担保交易,先购后付款,交易安全有保障!http://m.downcc.com/k/chongwujiaoyiapp
4.小小宠物商店LittlestPetShopapp小小宠物商店Littlest Pet Shop是一款养成类游戏,算是gameloft少见的轻量级游戏了,这是个萌物。https://m.crsky.com/soft/46597.html
5.app软件2024新版下载宠物成长记录app宠物寄养app宠物领养app桌面宠物app上门喂养宠物的兼职app线上宠物医院app宠物上门喂养app宠物问诊app宠物类app手机宠物软件同城买宠物软件宠物交易app宠物app软件宠物托运app宠物交易平台app物业app全国冷链物流app识别动物软件 更多>技巧攻略 网易开发免费游戏!《冰汽时代》手游海外版明日上线 快手可灵AI用户...https://m.iuuu9.com/app-rn-9305592481992-0
6.店铺管理app有哪几款?店铺管理软件排行榜免费多店铺管理软件门庭管店app是一款高效的店铺管理app,用户可以进行线上管理,在线查看店铺订单量和每天的业绩数据,实时了解店铺经营情况,让店铺管理变得更轻松,欢迎到当易网下载使用! 门庭 宠族app 25.32M / 2018-09-12 / v3.2.0 安卓版 评分: 下载 宠族手机版是一款宠物界的万能淘宝购物软件,喜欢养宠物的用户可以通过宠族app...http://www.downyi.com/key/dianpuguanliapp/
7.怪物宠物商店怪物宠物商店下载怪物宠物商店:请注意:怪物宠物商店是免费的,不过,真正赚钱的额外费用in-app内容。你可以锁定能通过购买in-app内容,调整你的设备的设置。 自己开怪物宠物商店,生长,展览,并销售神奇魔法生物。玩、照顾和喂养你的创造物,以最大限度地幸福。快乐的生物奖更多的钱当你发现他们好房子。宠物店定制你的怪物——三种不同生...http://apple.19yxw.com/download/85446.html
8.商店模拟器:宠物店专区商店模拟器:宠物店中文版下载汉化商店模拟器:宠物店”——建造您梦想中的宠物店。在 商店模拟器:宠物店》,你可以实现经营宠物的梦想 店铺。沉浸在迷人的零售世界中,并保持您的 顾客高兴。您和最多三个朋友可以自定义您的商店 并满足宠物店的...https://wap.gamersky.com/ku/shop-simulator-pet-shop/
9....商店的五万年宠物,不知哪个好呢?妄想山海春节版本有了千年熊猫,打算买商店的五万年宠物,不知哪个好呢邀请回答 分享 收藏参考解答 坐小孩那桌入围 前期千年熊猫没啥用,有钱买五万的话,先买个穷奇养满,或者看物价,无限血蛋便宜的话,就把买五万蛋的钱,去买两个血蛋,把熊猫升五万年养满也行,总之,前期宠物不是很重要,9只血脉,养起来很费事,还加成少,...https://www.3839.com/wenda/19/6647019.htm
10.PetStore首页文档和下载宠物商店OSCHINAPetStore 是 SUN 公司推出的一个宠物商店的系统,其唯一的目的不是让你卖宠物,而是学习 J2EE 最新版本的特性的一个绝好例子。也有不少语言推出相应版本的宠物商店。 Petstore 的 J2EE 设计模式和组件框架思想是最值得学习的两种技术,在 PetStore 中,真正有关宠物这个具体应用相关的代码很少,整个宠物店是构架在一系列...https://www.oschina.net/p/petstore
11.宠物商店网站毕业论文.docx摘要宠物商店网站是一个为宠物爱好者和饲养者提供各种宠物商品和服务的在线平台。在这里,可以找到各种各样的宠物用品,如食品、玩具、床铺、护理产品等。此外,该网站还提供宠物寄养、美容、训练等专业服务,以满足宠物在生活中的各种需求。通过访问宠物商店网站,可以轻松地为宠物挑选合适的产品,并了解最新的宠物护理知识和...https://m.book118.com/html/2023/0803/6203213035005210.shtm
12.泉州宠物市场地址电话?这里信誉保证可实体店铺实地挑选宠物无论是日常饮食、健康护理还是行为训练,这里的专家都能给出专业意见,帮助宠物与主人建立更深的情感纽带。作为晋江地区首屈一指的宠物商店,【泉州来福乐猫犬舍】不仅拥有宽敞明亮的展示区,还配备了现代化的医疗设施,确保每只宠物都能在一个舒适、安全的环境中成长。此外,店内还设有专门的互动区域,供顾客与宠物亲密...https://m.163.com/dy/article/JH9335B805566L7X.html
1.宠物市场·一站式宠物交易平台enAppStore宠物市场成立于2015年,八年深耕宠物活体行业,以宠物担保交易为核心,延伸宠物用品、宠物保险、宠物洗澡、宠物美容、宠物寄养、宠物医疗、宠物酒店、宠物托运、宠物训练、宠物出行、宠物摄影、宠物殡葬等服务,为您提供安全省心的一站式养宠服务。汇集全国各地犬舍、猫舍、宠物店、宠物医院,涵盖狗狗、猫咪、仓鼠、鹦鹉、兔子...https://apps.apple.com/py/app/%E5%AE%A0%E7%89%A9%E5%B8%82%E5%9C%BA-%E4%B8%80%E7%AB%99%E5%BC%8F%E5%AE%A0%E7%89%A9%E4%BA%A4%E6%98%93%E5%B9%B3%E5%8F%B0/id977050477
2.petpet-shop 这是一个基于以太坊智能合约的宠物商店Dapp,使用truffle框架,Solidity编写,仅用于测试 项目背景 Pete有一个宠物店,有16只宠物,他想开发一个去中心化应用,让大家来领养宠物。 在truffle box中,已经提供了pet-shop的网站部分的代码,我们只需要编写合约及交互部分。 环境搭建 安装Node 安装 Truffle : npm ...https://download.csdn.net/download/weixin_42166626/18656457
3.开心宠物商店开心宠物商店2.3.0安卓版App下载 友情链接 植物大战僵尸下载 闪耀暖暖(台服)下载 植物大战僵尸2(美服)下载 传说对决(王者荣耀 台服)下载 量子特攻(全球服)下载 Custom Cast下载 JOJO's Pitter-Patter POP下载 卡通农场(Hay Day)下载 球跳塔下载 超级马力欧酷跑下载 OurPlay-开心宠物商店安装下载 开心宠物商店安装下载-OurPlay为您免费提供...https://m.ourplay.net/rank/detail/7477
4.智能宠物护理app开发kano模型问卷调查4. 显示周边宠物医院和商店,未自定义前提下,优先依据路程远近排序 很喜欢 理所当然 无所谓 勉强接受 很不喜欢 如果有这个功能您的评价是: 如果没有这个功能您的评价是: 5. 商城带有物种专属定制页面,被疏忽的小众宠物主也能便捷找到合适的产品 很喜欢 理所当然 无所谓 勉强接受 很不喜欢 如果有这个功能您的评...https://www.wjx.cn/xz/274826321.aspx
5.开心宠物商店HDPrettyPetSalonHDiOS版App Store下载 猜你喜欢 更多+ 星界幻想ios版文明曙光ios版轩辕剑群侠录ios版斗罗大陆ios版 滑动图片可查看更多>> 游戏简介 《开心宠物商店》是一个可爱又好玩的游戏,让你化身宠物美容师,忙碌的在商店赚钱。注意两位名人顾客随时在你的商店出现。 应用信息 应用分级: 18+ 版本: 1.8 应用权限: 相关...https://app.ali213.net/ios/41903.html
6.AI一周见闻:OpenAI要开大模型商店;LLM最新守擂赛排行:封闭完胜...6、即将推出AI虚拟宠物饲养平台,多样化情感需求受关注; 见智视角 1、OpenAI即将推出大模型App商店,想与微软争夺生态红利 OpenAI深夜放大招,Sam Altman表示将打造史诗级LLM「应用商店」。打通所有ChatGPT应用,彻底抢占AI模型生态。微软在5月刚刚发布了史上最牛的插件系统。OpenAI的LLM应用商店可谓是直接对轰微软,强行抢占...https://wallstreetcn.com/articles/3691778
7.我的宠物美容店app下载我的宠物美容店v1.0.2我的宠物美容店app是一款欢乐的适合小朋友玩的一款养成经营的小游戏.你需要好好照顾宠物兔子并打扮她。让它最时髦的宠物兔女郎.你需要照顾它的衣食住行.游戏里还有很多有意思且好玩的游戏内容等着你去发掘.赶紧下载游玩吧! 游戏简介: 《我的宠物店中文版》是一款非常Q萌可爱的宠物店经营模拟游戏,游戏中玩家将经营...http://www.289.com/igame/347794.html
8.哈屏宠物app下载哈屏宠物(手机主题美化软件)v2.2.5安卓手机版...哈屏宠物是由合肥抖屏科技有限公司开发的一款打造个性二次元创意桌面的手机美化软件,软件里有丰富的桌面宠物、手机壁纸、精美铃声可以选择,玩家可以自由替换,用户有了这款软件就可以让自己的手机桌面看起来更加的漂亮美观,软件里有很多的可爱动漫角色免费领取,放在桌面上可以和宠物进行互动,在无聊的时候宠物还会在手机两侧...https://m.jb51.net/softs/896181.html
9.Web3优秀案例收集整理(附带源码):80+项目创意和案例等待你的...创建一个基于Flow链的NFT宠物商店 https://nftschool.dev/tutorial/flow-nft-marketplace/#prerequisites 使用Moralis复制rarible NFT交易平台 https://youtube.com/playlist?list=PLFPZ8ai7J-iR6DMqBfZwJGc0vaNZPbJDv 从零开始搭建一个Solana DApp https://lorisleiva.com/create-a-solana-dapp-from-scratch ...https://maimai.cn/article/detail?fid=1744128853&efid=0ZU5e9Hff_sR0HEXROq_Iw
10.狗狗Bi商城app官方版下载狗狗Bi商城appv1.0.1安卓版狗狗Bi商城app特色: 1.医院商店:查看全国宠物医院与商店,并且可以直接导航去附近医院商店; 2.养宠知识:在这里除了有常见宠物问题,更有全面系统的养宠知识; 3.宠物动态:您可以将您与爱宠的点滴发布在此,与百万宠友分享快乐; 4.品种介绍:在这里有最详细的宠物品种介绍,并与FCI标准保持一致; 5.热门推荐:每日为您...https://www.qqtn.com/azsoft/673647.html
11....经销商回应/微信鸿蒙原生版正式上架华为商店/88VIP会员规模已超4...卡西欧推出 AI 宠物机器人「Moflin」 GUCCI 中国数字部副总裁离职 闪送开始内测「松鼠快送」,加入即时配送领域 88VIP 会员规模已超 4200 万 周末也值得一看的新闻 腾讯微信鸿蒙原生版正式上架华为商店 10 月 12 日下午,微信鸿蒙原生版上架华为应用商店的「应用尝鲜」专区,开放给了更多鸿蒙用户参...https://www.ifanr.com/1602270