利用truffle框架构建基于以太坊的Dapp过程

前提:以太坊环境,node.js,ganache等一系列相关环境已将搭建好,接下来就是开发Dapp.确保ganache已经打开

本案例在ubuntu下测试的。

1、mkdir project1

      cd project1

      truffle init

以上创建并初始化一个truffle项目,成功则显示如下。

    

2、将已经创建好的合约放在project1/contracts/目录下,(即在此目录下进行智能合约的编写)

3、在migrations目录下新建2_deploy_contracts.js文件,编写内容如下,InfoContract为合约名称。

var InfoContract = artifacts.require("InfoContract");
module.exports = function(deployer) {
  deployer.deploy(InfoContract);
};

4、truffle.js编写内容如下:

module.exports = {
  // See 
  // for more about customizing your Truffle configuration!
  networks: {
    development: {
      host: "127.0.0.1",
      port: 7545,
      network_id: "*" // Match any network id
    }
  }
};

4、truffle compile

     truffle migrate

如何部署成功,ganache 下的block会有变化。

 

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

     project1/src/目录下添加app.js。在这里可以编写自己的业务逻辑

6、测试Dapp,使用node.js里提供的lite-server模块来当简单的web服务器使用。安装lite-server。在项目 目录下。

      使用指令    npm  init   

       生成package.json文件

      接着   npm install lite-server

      安装完成后,编写package.json文件内容。内容如下:

{
  "name": "project1",
  "version": "1.0.0",
  "description": "",
  "main": "truffle-config.js",
  "directories": {
    "test": "test"
  },
  "scripts": {
    "dev": "lite-server",//一般添加此条语句
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "lite-server": "^2.4.0"
  }
}

           在package.json同目录下增加 bs-config.json,内容如下:

{
 "server": {
 "baseDir": ["./src", "./build/contracts"]
 }
}

7、使用指令 npm run dev 启动lite-server.之后在浏览器上就能看到你所编写的东西。一般在本地的

3000端口。

 

可能的错误:

       1运行指令 truffle migrate出现Coule not find artifacts for xxx from any sources

        原因: 编写2_deploy_contracts有错误,var Adoption = artifacts.require("Adoption")(右边的Adoption必须是合约名称,而不是项目名称)

       

      参考文档:https://learnblockchain.cn/2018/01/12/first-dapp/(一步步教你开发、部署第一个去中心化应用(Dapp) - 宠物商店)

                       https://segmentfault.com/a/1190000015176485(开发基于以太坊智能合约的DApp)

                       https://learnblockchain.cn/2018/04/15/web3-html/(Web3与智能合约交互实战)

你可能感兴趣的:(区块链)