前端智能合约的交互

Truffle 为我们提供了丰富的脚手架功能。比如: truffle unbox react

box附带了你开始使用基于react 的dapp所需的一切,包括工程目录,基本的js和css文件。目录结构如下

主要介绍几个目录:

  • contracts
  • migrations
  • src
  • test

contracts :放置了所以智能合约文件,图中的Migrations.sol,SimpleStorage.sol 是初始化就带的,稍后我们会删除他们。

migrations:放置了智能合约文件的部署配置。

src:是前端react的主要文件,其中App.js 为启动文件。

test:测试文件,放置了智能合约的测试文件,包括两种格式:js和sol文件,分别对应 js测试和 合约测试方式。

为了能部署合约,还要修改migrations目录里的配置文件。

顾名思义,以”1“开头的文件第一个执行,然后以此类推,目前我们修改第二个文件2__deploy__contructs.js

var SafeMath = artifacts.require("SafeMath");
var Market = artifacts.require("Market");

module.exports = function(deployer) {
  deployer.deploy(SafeMath);
  deployer.deploy(Market);
};

因为之前引用了library ,千万注意不能忘了library文件!

测试环境

在正式开始之前,还应该准备测试环境。

鉴于原来的官方测试网络ethereumjs-testrpc已经下线,我们使用Ganache CLI。https://github.com/trufflesuite/ganache-cli

npm install -g ganache-cli

安装完成之后,ganache-cli 命令启动

可以看见测试账号了吧。

下面打开另一个新的命令行窗口,因为测试网络必须一直运行我们才能完成测试,所以暂时搁置一旁。

cd命令进入项目所在根目录,执行

truffle compile
truffle migration

出现了意料之外的结果:

提示:不能检测到当前网络。肯定是哪里配置有疏漏,不妨再检查一遍。

原来是根目录的truffle.js是空的,这是配置测试网络的地方,也是最容易疏忽的地方。

根据官方建议,添加如下代码:

module.exports = {
  migrations_directory: "./migrations",
  networks: {
    development: {
      host: "localhost",
      port: 8545,
      network_id: "*" // Match any network id
    }
  }
};

默认测试网络的端口是8545,因此这里我们也不做修改了。

下面再试试truffle migration 命令:

如果出现这些输入表示已经成功!

此时,观察文件目录,发现多了build目录,进入可以看到这个文件:Market.json

果然,合约文件被build成了json。

results matching ""

    No results matching ""