6

当我尝试进入以太坊编程时,我目前正在关注本教程(https://medium.com/zeppelin-blog/the-hitchhikers-guide-to-smart-contracts-in-ethereum-848f08001f05 )。第 3 步是与已部署的合约交互。

当我进入

truffle(default)> var poe = ProofOfExistence1.deployed()

结果我得到“未定义”,也无法与以下命令交互。我肯定部署了合同,因为

truffle(development)> ProofOfExistence1.deployed()

让我输出并列出合同中的所有功能等。用 testrpc 和 geth testnet 进行了尝试,所以我猜它与松露有关?

4

4 回答 4

4

.deployed()方法返回一个Promise. 尝试:

truffle(development)> ProofOfExistence1.deployed().then(function(a) { poe = a; })
...
truffle(development)> poe.address
于 2017-06-26T03:04:40.483 回答
1

要与已部署的合约交互,您必须输入 truffle 控制台:

truffle<development)> ProofOfExistence1.at("copy its address after the migration").function name();
于 2017-05-14T11:19:39.790 回答
0

可能来得太晚了,但我的回答希望对其他人有所帮助(因为这个伟大的框架已经帮助了我很多次)。这是我在合同交互中的做法:

让合约 = 等待 ProofOfExistence1.deployed()

合约地址

你也可以通过在你的合约中执行一些函数来进行交互,如下所示:

让 function1 = contract.function1()

功能1

不是区块链专家,只是初学者,如果这不是最佳答案,请见谅;)

于 2021-05-28T16:38:31.023 回答
0

我更喜欢使用truffle(development)> poe = ProofOfExistence1.at(ProofOfExistence1.address).

使用这种方法无需担心承诺,轻松将测试用例复制并粘贴到控制台中。

于 2018-07-02T01:33:47.610 回答