3

我有一个 Truffle 示例应用程序,然后当我尝试在 truffle 控制台中与之交互时,我不明白为什么它没有部署或工作。

我激活 testrpc,然后输入:

> truffle console

> migrate --reset

> MetaCoin.new();

在那之后:

truffle(development)> MetaCoin.name
'TruffleContract'
truffle(development)> MetaCoin.country
undefined
truffle(development)> a1 = web3.eth.accounts[0];
'0x0a3d66a80b50875770fd264dd7c905f21395037f'
truffle(development)> MetaCoin.sendCoin(a1, 100);
TypeError: MetaCoin.sendCoin is not a function
    at evalmachine.<anonymous>:1:10
    at ContextifyScript.Script.runInContext (vm.js:59:29)
    at Object.runInContext (vm.js:120:6)
    at Console.interpret (/usr/local/lib/node_modules/truffle/build/cli.bundled.js:199314:17)
    at ReplManager.interpret (/usr/local/lib/node_modules/truffle/build/cli.bundled.js:200019:18)
    at bound (domain.js:301:14)
    at REPLServer.runBound [as eval] (domain.js:314:12)
    at REPLServer.onLine (repl.js:440:10)
    at emitOne (events.js:115:13)
    at REPLServer.emit (events.js:210:7)
truffle(development)> MetaCoin.sendCoin(a1, 100);

它说 sendCoin 函数不是函数,所以我不确定如何与合约交互。我怎么能这么叫?

4

2 回答 2

4

首先使用 truffle migrate 部署合约。

然后从 truffle 控制台通过以下方式与合约交互

MetaCoin.deployed().then(function(instance) {return instance.sendCoin(a1, 100);}).then(function(value) {console.log(value);});
于 2017-10-02T22:45:51.460 回答
0

看起来你想访问与 web3 的合同。这就是你与 web3 交互的方式。由于 truffle 在内部使用 web3,你可以在 truffle 控制台中使用 web3。在松露配置目录中

$ truffle console

然后

const instance=new web3.eth.Contract(Metacoin.abi,"addressOfDeployedContract")

const name=await instance.methods.name.call()
于 2021-10-19T02:19:48.740 回答