1.上一篇文章创建一个Dapp的过程是不是太简单了?使用CHAINPIP社区发行代币,创建Dapp,感觉跟程序员没什么关系,点一下就完了,不写代码你算什么程序员。所以今天就按照官方给的方法来。先决条件:对以太坊和智能合约有一定的了解,有一定的JavaScript编程基础,了解简单的代码逻辑和HTML。环境安装首先我们需要安装项目代码的运行环境1.Node安装进入Node官网:https://nodejs.org/en/download/,下载适合自己电脑的版本。2、truffle安装安装好Node后,使用命令行输入以下命令npminstall-gtruffle安装完成后,输入命令truffleversion,显示如下信息,说明环境安装完成。3.安装Ganache进入Ganache官网:https://trufflesuite.com/gana...,下载适合自己电脑的版本。下载项目模板pet-shop接下来就是下载truffle提供的项目模板。项目介绍:皮特有一家宠物店,有16只宠物。他想开发一个去中心化的应用程序,供大家领养宠物。在trufflebox中,已经提供了宠物店网站部分的代码,我们只需要编写合约和交互部分即可。新建一个空文件夹,使用命令行进入,输入下载命令:truffleunboxpet-shop下载完成添加合约并部署代码使用代码编辑软件打开项目(我用的是vscode),如下图文件截图1.AddAdoptionContract在contracts文件夹下,新建一个Adoption.sol文件,输入以下代码:pragmasolidity^0.5.0;contractAdoption{address[16]publicadopters;函数采用(uint256petId)公共回报(uint256){要求(petId>=0&&petId<=15);采用者[petId]=msg.sender;返回宠物编号;}functiongetAdopters()publicviewreturns(address[16]memory){returnadopters;}}2、在migrations文件夹下添加部署合约文件,新建adoptation.js文件,输入如下代码:varAdoption=artifacts.require("./Adoption.sol");module.exports=function(deployer){deployer.deploy(采用);};编译、部署合约打开Ganche,点击第一个“QUICKSTART”,Ganche会自动打开一条本地私链,并提供10个钱包地址。打开控制台(终端)开始编译部署合约:编译命令:trufflecompile编译后会生成build文件夹。部署命令:部署trufflemigrate,将合约上传到本地私链。创建用户界面和智能合约交互我们已经编写、部署和测试了我们的合约,接下来我们需要在项目中编写交互逻辑代码(即前端部分)。打开src/js/app.js文件,修改下面函数:initWeb3:asyncfunction(){//现代dapp浏览器...if(window.ethereum){App.web3Provider=window.ethereum;try{//请求帐户访问权限awaitwindow.ethereum.enable();}catch(error){//用户拒绝帐户访问...console.error("Userdeniedaccountaccess");}}//传统dapp浏览器...elseif(window.web3){App.web3Provider=window.web3.currentProvider;}//如果未检测到注入的web3实例,则回退到Ganacheelse{App.web3Provider=newWeb3.providers.HttpProvider("http://localhost:7545");}web3=newWeb3(App.web3Provider);返回App.initContract();},initContract:function(){$.getJSON("Adoption.json",function(data){varAdoptionArtifact=data;App.contracts.Adoption=TruffleContract(AdoptionArtifact);App.contracts.Adoption.setProvider(App.web3Provider);返回App.markAdopted();});返回App.bindEvents();},markAdopted:function(adopters,account){varadoptinstance;App.contracts.Adoption.deployed().then(function(instance){adoptationInstance=instance;returnadoptationInstance.getAdopters.call();}).then(function(adopters){for(i=0;i
