[英]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
文件,并取出networks
的address
值。
它类似于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.