基于以太坊的Truffle框架开发智能合约

开发环境:win 10系统

一:下载和安装Ganache

Ganache的图形化版本

Ganache可以快速启动个人以太坊区块链,是一个非常有用的进行以太坊开发的私有区块链,并可以使用它来运行测试,执行命令、检查状态,同时控制链条的运行方式。

1、官网下载安装包

https://truffleframework.com/ganache

下载完后,直接按提示即可以安装成功。打开后的界面如图所示:


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、调用合约函数



写在结尾:

如果此文对你有所帮助,请留下喜欢哦~ღ( ´・ᴗ・` )

                                                                                  -----朵耳

你可能感兴趣的:(基于以太坊的Truffle框架开发智能合约)