分类 区块链 下的文章

环境

  • web3 v1.0.0-beta.52
  • truffle v5.0.14
  • nodejs v11.14.0
  • ganache

遭遇问题:

  1. 问题表现:
    web3 deploy 合约的 promise 不会结束, 而且前台一直有请求(如图), 很久时间之后,会出现一个报错.
    Screenshot

    问题解决:
    关闭 ganache 每次交易自动挖一个块的模式, 改为每2秒挖一个块, 再次尝试,问题不再出现.Ooo yeah !
    解说 合约部署算一次交易,在eth中每次交易之后是需要固定次数的确认动作,我猜测没一个确认都需要出一个块,因为ganache 的自动出块机制(每次交易只出一个块),让部署合约的交易得不到所需的确认次数.

  2. 合约方法调用无效
    解决: 交易性质的合约调用,要用send 而不是call, 例子: ctr_xxx.methods.xxx().send().then()

Tips:

  • geth 连接到 ganache-cli
geth attach http://localhost:8545