使用 Truffle,我们得到了一个很好的合约包装器。但它有一个让我头疼的功能:
文档中的示例:
MetaCoin.at(contract_address).then(function(instance) {
coin = instance;
return coin.sendCoin(account_two, 3, {from: account_one});
}).then(function(result) {
// This code block will not be executed until truffle-contract has verified
// the transaction has been processed and it is included in a mined block.
// truffle-contract will error if the transaction hasn't been processed in 120 seconds.
})
这提出了四个问题:
- 如何防止用户获得 120 秒的超时,因为他的交易仍然可能在几分钟后被挖掘(取决于 gas 价格和网络状况)?如果我们谈论的是以太币发送交易,这一点尤其重要。我不想通过声称交易失败(并建议他们重复)来欺骗我的用户。
- 它会在哪里出错?在带有第二个参数 (
function(result, error)
) 或整个事物 (.then( function(result) {...} ).catch(e)
) 的回调中?我无法在本地使用 Ganache 对其进行测试。 - 您如何告知用户交易状态?在这 120 秒期间,您是在任何情况下都显示“交易成功”还是使用某种 throbber(这就是我现在正在考虑的)?
- 如何尽快获得 tx-hash?通过使用 MEW 发送,我立即获得了指向 etherscan.io 的交易链接——即使交易尚未传播。
特别是问题 #1 让我很头疼。
问候