MetaMask是什么? 錢包! 是一款在瀏覽器(Chrome, Firefox)上使用的插件類型的以太坊錢包,當我們通過web3.js與以太坊交互的時候,我們可以使用MetaMask(小狐貍)來實現.記錄一下在使用小狐貍過程中踩過的坑...
場景1:當在remix編輯器界面產生交易的時候,出現:
transact to xxxx pending ...
可別癡傻地等著,抬頭看看小狐貍,有1個待處理的提示,點擊就可以看到交易了.
場景2:出現json-rpc錯誤的時候,要記得 setting-reset account
creation of Ballot errored: Internal JSON-RPC error.
導入了新的助記詞之后, 或者切換了環境(Main, Ropsten或者私鏈)之后, 一定要 Setting ----> Reset Account,避免不必要的麻煩.
場景3:
Transaction Error. Exception thrown in contract code
或者:
Error:MetaMask Tx Signatrue: User denied transaction signatrue
明明合約的代碼沒有問題,小狐貍卻彈出上面的錯誤!
解決辦法:小狐貍中 Setting ----> Reset Account, 若是 Setting ----> Reset Account 仍不成功, 重新打開一個網頁, 然后再切換一下網絡環境試試,比如Private和Ropsten進行切換!!
場景4:在小狐貍上切換地址后,在remix編輯器界面上(Injected Web3環境)并沒有切換過來
切換地址的時候一定要在remix編輯器上看看有沒有真的切換過來,如果沒有的話, 手動點擊一下環境即可.如果還是不行,重啟Chrome
若是使用小狐貍和本地ganache配合, 那么在remix中使用Web3 Provider環境, 那就不會像用Injected Web3那樣每次都得手動切換賬號!!!
場景5:當web3.js和以太坊交互的時候,console中出現下面的情況:
inpage.js:1 MetaMask - RPC Error: Internal JSON-RPC error. {code: -32603, message: "Internal JSON-RPC error."}
很明顯: Metamask沒有連上我們的本地區塊鏈網絡,在小狐貍中連接一下本地區塊鏈網絡即可.
場景6:
ALERT: Transaction Error. Exception thrown in contract code.
出現這個情況是因為: 合約代碼中的require或其他條件觸發了. 點擊CONFIRM之后不會成功的,會報錯的. 如下示例:
inpage.js:1 MetaMask - RPC Error: Error: Error: [ethjs-rpc] rpc error with payload {"id":2557247165649,"jsonrpc":"2.0",
"params["0xf86f188504a817c800836170d4941d485090a1dbac56517b63158714056f047e17c40184119f87478602cdbcacfa0aa016d23c83051129c01c7377fabd5193cedf243af53e281845775a9fbcec311bb4a03f0de4432507584ab93e42d38d02bc68a74f2e81693f774e372b4ef81f92e859"],
"method":"eth_sendRawTransaction"}
Error: VM Exception while processing transaction: revert err: 您還不是投資人 {code: -32603, message: "Error: Error: [ethjs-rpc] rpc error with payload {…rocessing transaction: revert err: 您還不是投資人 "}
場景7:部署到Ropsten網絡的時候,賬戶沒eth
Error encountered, bailing. Network state unknown. Review successful transactions manually.
insufficient funds for gas * price + value
報錯原因: 要么是小狐貍沒有切換到Ropsten, 要么是小狐貍的Ropsten賬戶沒錢,解決辦法是 給當前賬戶來點錢, 或者退出小狐貍,重新登錄一個有錢的小狐貍賬號(使用助記詞登錄).
場景8:使用Truffle框架部署合約的時候, 在瀏覽器控制臺會報錯
Error: Contract has not been deployed to detected network (network/artifact mismatch)
at contract.js:454
報錯原因是小狐貍沒有切換到對應的網絡環境!!