區塊鏈私有鏈搭建中遇到的那些坑

miner.start() 返回null

這是正常現象,看 eth.hashrate 或者 miner.getHashRate() 只要不是0說明在挖礦了數組

虛擬機挖礦速度太慢

現象:難度設爲0x01,CPU使用率居高不下,但挖礦速度依舊很慢,好幾分鐘纔出一個區塊,eth.hashrate 一開始很高後來逐漸下降到0
解決:增長虛擬機的內存,以前分配了2G內存給虛擬機中的Ubuntu,後來加到3個G,速度就正常了,1秒能出1~2個區塊bash

truffle/ganache中函數返回爲空

下面這段代碼在remix IDE中用Javacript VM測試能正常返回數組的函數,鏈接到ganache中測試卻返回空值網絡

function getAllUsersAddress() public returns(address[])
{
    return userAddrs;
}
複製代碼

緣由是由於沒有加view/constant修飾符,致使這個函數無法直接返回結果,而是返回交易的哈希(transact都是返回交易哈希,call能夠直接返回結果,沒有view/constant修飾符的函數就須要用transact調用)。
更深刻地,remixIDE在本身的Javascript VM中,發送transact以後能夠馬上查詢交易執行的結果(畢竟Javascript VM只有一個節點),而鏈接到外部的ganache後,remixIDE自己是用相似於contractInstance.getAllUsersAddress.transcat(args,{/*其它參數*/})的方式與ganache進行交互,此時ganache雖然能夠瞬間執行完getAllUsersAddress(),但remixIDE不知道它能夠瞬間執行完畢啊,remixIDE可能以爲它鏈接的是一個真正的有成百上千節點的以太坊網絡,因此只能傻乎乎的拿到哈希後在那等着設想中的」其它成百上千節點「執行完畢嘍,天然也就不會馬上去查詢函數執行的結果。函數

相關文章
相關標籤/搜索