欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-02-29 13:32:28
...

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

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

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

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

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

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

truffle compile

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

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

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

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

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

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

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

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

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

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

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

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

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

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

启动好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进行区块链项目开发

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

Truffle开发和用Remix的区别:

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