Truffle 控制台变量声明

Truffle console variable declaration

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

当我进入

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

我得到 "undefined" 结果,也无法与以下命令交互。我肯定部署了合约,因为

truffle(development)> ProofOfExistence1.deployed()

获取输出并列出合约中的所有函数等。 用 testrpc 和 geth testnet 试过所以我猜它与松露有关?

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

truffle<development)> ProofOfExistence1.at("copy its address after the migration").function name();

.deployed()方法returns一个Promise。尝试:

truffle(development)> ProofOfExistence1.deployed().then(function(a) { poe = a; })
...
truffle(development)> poe.address

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

使用这种方法无需担心 promise,易于将测试用例复制并粘贴到控制台中。

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

让合约=等待ProofOfExistence1.deployed()

contract.address

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

让 function1 = contract.function1()

函数 1

不是区块链专家,只是初学者,如果这不是最佳答案,我们深表歉意;)