一.web3的call()獲取不到返回值問題和解決方法
- 在彩票小合約中,遇到一個問題:合約中 有兩個方法
第一個返回一個帳戶地址,沒有使用到當前方法調用者信息;
第二個使用到了當前方法調用者信息
在web3中使用call()來調用這兩個方法,第二個 老是得不到值
- 緣由:第二個方法由於使用到了方法調用者的信息(msg.sender),因此 web3 在call調用合約這個方法時,須要將調用者的地址設置給 參數from,固然也能夠經過直接設置 web3.eth.defaultAccount 來代替

- 補充: web調用合約另外一個要注意的類型:合約中的 resetData() 方法由於修改了合約的全局變量(也叫狀態變量),須要花費,因此在 web3 中調用時使用 send()調用,並傳入 from 和 gas。同理,合約中的 kill()方法由於要銷燬合約,也須要經過 send() 調用並 傳入 from 和 gas。

【完整 以太坊彩票合約案例源碼:https://www.jianshu.com/p/6a0492cfb59a】web