繁体   English   中英

为Solidity项目构建React前端

[英]Building React front end for Solidity project

我有一组onlyOwner方法,在部署合同(在合同内创建游戏)时需要正确运行。 自动启动状态以进行测试的最佳方法是什么? 使用松露,React,Ganache

假设您进行了这样的迁移,并且文件名是2_cat.js

var Cat = artifacts.require("./Cat.sol");

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

在以上迁移中运行,将根据您提供的--network标志将Cat合同部署到网络,即truffle migrate --network development

您还将在build/contracts文件夹中获得一个文件。 该文件应该是Cat.json ,您将找到一个类似以下的块:

  "networks": {
    "xxx": {
      "events": {},
      "links": {},
      "address": "0x...",
      "transactionHash": "0x..."
    }
  }

address是已部署的Cat合同的地址。 您可以使用该地址并在新终端中启动truffle console以开始与其进行交互。

例如,要读取Cat合同中的内容,您可以执行以下操作:

c = Cat.at("0x_put_address_here")
c.method_name.call()

要编写某些内容(更改合同状态),可以执行以下操作:

c = Cat.at("0x_put_address_here")
c.method_name(arg1, arg2)

如果您需要从特定地址发送该交易,则可以执行以下操作:

c = Cat.at("0x_put_address_here")
c.method_name(arg1, arg2, {from: "0x_account_address"}) // for example, the owner

确保这是一个帐户地址。 不是合同地址。 当然,该账户需要有一些ETH来支付汽油费。

好的,那是设置合同状态的手动过程。 为此,您可以使用truffle exec命令并传递JS文件路径。

例如,该JS文件可以是这样的:

let Cat = artifacts.require("./Cat");

module.exports = async function() {
  let c = await Cat.deployed()
  await ct.method_name(arg1, arg2, {from: "0x_account_address"})
}

将其保存在Truffle项目的根目录或目录中。 然后,在终端中运行以下命令:

$ cd /path/to/your/truffle/project/root
$ truffle exec path/to/that/js/file.js --network development

运行以上命令后,您的合同状态应更新。 deployed()函数将去查找build/contracts/Cat.json文件,并取出networksaddress值。

它类似于c = Cat.at("0x_put_address_here") 但是,它将在您每次更新和部署该合同时为您找到Cat地址并为您创建合同实例,而无需您对Cat地址进行硬编码。

这里要记住的最重要的事情是,您需要先运行truffle migrate命令。 否则, Cat.json networks中的address值将不会更新,您可能正在更新旧合同。

更糟糕的是,由于不存在build/contracts/Cat.json文件,您可能会尝试创建尚未部署的合同实例。

希望这可以帮助。 我也有一些啾啾更多提示deploy() new() deployed()函数和truffle exec在一个线程在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM