Truffle+ganache进行区块链项目开发

上一篇文章介绍了如何搭建Truffle开发框架,所以的开发都是基于这个框架,所以在开发之前需要把这个框架搭建好,不懂的需要先去看上一篇文章,链接如下:

https://blog.csdn.net/xuecuilan/article/details/90379919

初步建立好的项目目录如下:

Truffle+ganache进行区块链项目开发_第1张图片

  • contracts:用来存放你编写的智能合约代码
  • migrations:用来部署的文件夹
  • test:用来存放测试代码
  • truffle-config.js :truffle环境配置

Truffle集成了一个开发控制台,运行下面代码对你的智能合约进行编译:

truffle compile

Truffle会根据你的contracts文件夹中的合约按顺序进行一一编译,结果如下: 

Truffle+ganache进行区块链项目开发_第2张图片

这一步编译成功之后,truffle会把编译好的ABI及字节码信息保存在 build/cintracts里面,如下:

Truffle+ganache进行区块链项目开发_第3张图片

 注意:每一个合约对应一个json文件;

编译之后,就可以部署到区块链上了。

在migrations文件夹下已经有一个1-initial-migration.js部署脚本,用来部署Migration.sol合约。Migration.sol合约是Truffle生成的一个用来确保不会进行重复部署的合约,这个合约在contracts文件夹下,我们需要建立一个自己的部署脚本:目录结构如下

注意:如果一个合约用到别的合约的信息,可以分开写部署脚本,如上;否则部署脚本可以写在一起;脚本内容:

Truffle+ganache进行区块链项目开发_第4张图片

注意:deploy函数里面写合约名称和构造函数的参数,用逗号隔开;

目前我们要把智能合约部署到ganache的测试链上,所以我们需要先启动ganache的测试链,我用的是ganache提供的可视化界面,具体下载细节请自行百度:图形如下:

Truffle+ganache进行区块链项目开发_第5张图片

她为我们提供了十个账户,默认使用第一个;

启动好ganache之后,我们需要修改truffle的配置信息,使其链接到ganache网络;替换如下:需要修改host和port:

module.exports = {

  networks: {
    // Useful for testing. The `development` name is special - truffle uses it by default
    // if it's defined here and no other network is specified at the command line.
    // You should run a client (like ganache-cli, geth or parity) in a separate terminal
    // tab if you use this network and you must also set the `host`, `port` and `network_id`
    // options below to some value.
    //
    development: {
     host: "127.0.0.1",     // Localhost (default: none)
     port: 7545,            // Standard Ethereum port (default: none)
     network_id: "*",       // Any network (default: none)
    },

然后执行如下代码进行编译:

truffle migrate

部署成功后,就可以看到ganache链中block的变化,之后就可以进行编写测试代码了。

测试代码分为两种:一种用javascript编写,一种用solidity编写,我一直用solidity进行的测试;

编写完测试代码,运行下面代码进行测试:

truffle test

如下表示测试通过:Truffle+ganache进行区块链项目开发_第6张图片

接下来与web页面进行交互什么的。。。后续再总结

Truffle开发和用Remix的区别:

  • Truffle看起来很正式,目录结构很清晰,领导会觉得你很熟练,适合装逼;
  • remix上写合约,错误提示比idea上更加智能(自我感觉,一直喜欢用,测试很方便,当然领导觉得你这样测试相当于没测试);
  • remix需要一直部署合约,就是说你只要改一点点合约 就必须重新部署,但是truffle只需要部署一次;

 

 

 

 

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