使用以太坊钱包小狐狸踩过的坑
MetaMask是什么? 钱包! 是一款在浏览器(Chrome, Firefox)上使用的插件类型的以太坊钱包,当我们通过web3.js与以太坊交互的时候,我们可以使用MetaMask(小狐狸)来实现.记录一下在使用小狐狸过程中踩过的坑...
Metamask.png
场景1:当在remix编辑器界面产生交易的时候,出现:
transact to xxxx pending ...
可别痴傻地等着,抬头看看小狐狸,有1个待处理的提示,点击就可以看到交易了.
image.png场景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环境)并没有切换过来
image.png image.png切换地址的时候一定要在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.
image.png
出现这个情况是因为: 合约代码中的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
报错原因是小狐狸没有切换到对应的网络环境!!