开发环境:win 10系统
一:下载和安装Ganache
Ganache的图形化版本
Ganache可以快速启动个人以太坊区块链,是一个非常有用的进行以太坊开发的私有区块链,并可以使用它来运行测试,执行命令、检查状态,同时控制链条的运行方式。
1、官网下载安装包
https://truffleframework.com/ganache
下载完后,直接按提示即可以安装成功。打开后的界面如图所示:
2、Ganache默认值
1)Ganache默认端口号为7545。
2)Ganache默认生成10个账户可用。每个账户里都有100枚ETH。
3、通过Ganache,我们可以:
1)快速查看所有账户的当前状态,包括他们的地址、私钥、交易和余额
2)查看Ganache内部区块链的日志输出,包括响应和其他重要的调试信息
3)检查所有块和交易,以获取相关问题的信息
Ganache的命令行版本:
ganache安装命令:npm install -g ganache-cli
注:命令行版本并未亲测,个人觉得图形化版本使用更加方便直观
二:Truffle的安装和配置
详细步骤见本人总结的 WIN10下node.js \ npm \ truffle的安装与配置
三:开发DApp项目
1、创建项目目录,并进入该目录
在刚刚的Truffle安装目录下新建Dapp项目文件夹(注:可以随便选择目录的存放地址),cd 到该目录下
cd D:\软件安装目录\NodeJs安装\node_global\node_modules\truffle\Dapp项目
2、初始化Truffle
truffle unbox
可以看到在Dapp项目文件夹下生成了一个智能合约项目
contracts存放智能合约,含ConvertLib.sol MetaCoin.sol Migrations.sol
migrations 存放部署智能合约的程序
test 存放测试智能合约的脚本
truffle-config.js 存放配置信息
3、配置truffle-config.js 文件如下:
module.exports = {
networks: {
development: {
host: "localhost",
port: 7545,
network_id: "*", // Match any network id
gas: 5000000
}
},
compilers: {
solc: {
settings: {
optimizer: {
enabled: true, // Default: false
runs: 200 // Default: 200
},
}
}
}
};
3、自定义合约
在contract目录下新建Audit.sol合约,里面是写好的合约代码,注意,合约的名称和文件名要一致
PS:可以先来在线工具Remix上开发合约,等测试通过后再通过该文方法部署合约到私链上。
4、编译合约
truffle compile
Truffle仅默认编译自上次编译后被修改过的文件,来减少不必要的编译。如果你想编译全部文件,可以使用--compile-all选项
truffle compile --compile-all
编译完成后会在项目目录下生成build目录
编译合约遇到如下问题:
(1)、This function requires a single bytes argument. Use abi.encodePacked(...) to obtain the pre-0.5.0 behaviour or abi.encode(...) to use ABI encoding.
具体如图所示:
解决办法参考链接:https://ethereum.stackexchange.com/questions/63121/version-compatibility-issues-in-solidity-0-5-0-and-0-4-0
具体如下:
(2)、TypeError: Return argument type contract Audit is not implicitly convertible to expected type (type of first return variable) address.具体如图所示:
解决方法如下:
将代码中的获取当前合约地址函数删除,具体原因不清楚,幸亏我的代码也不需要这个功能
5、部署合约
在migrations里新建一个部署脚本 3_deploy_ audit.js,脚本内容如下:
const Audit = artifacts.require("Audit");
module.exports = function(deployer) {
deployer.deploy(Audit);
};
在控制台执行命令:
truffle migrate
运行结果如下:可以看到该合约部署的交易地址、合约地址、以及部署该合约的账户地址
注意:以上命令会默认编译部署项目下的所有合约
6、进入truffle控制台
truffle console
7、创建一个变量保存合约实例,然后部署合约。
Audit.deployed().then( instance => contract = instance )
8、调用合约函数
写在结尾:
如果此文对你有所帮助,请留下喜欢哦~ღ( ´・ᴗ・` )
-----朵耳