前提:以太坊环境,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与智能合约交互实战)