metamask连接私有链发生的转账问题

我用ganache-cli启了一个以太坊网络,然后我在metamask连接到了这个网络,并且导入了一个账户,正常显示余额是100ETH,但是转账的时候发生了错误。

EthQuery - RPC Error - Error: [ethjs-rpc] rpc error with payload {"id":3715053778334,"jsonrpc":"2.0","params":["0xf8720485012410110082520894c8fb523ca95721bf3408f6e6ef0ed8e7c3f65488880de0b6b3a7640000808602df64fab56ea052b79e6fe25a6bd073f48d853c053d35b0d4de1e3f1e77e7e82c520bd24d9783a059bf550c3fa7fec8a93584f77b0998545b936e7e583bb53076fb2eac9664725d"],"method":"eth_sendRawTransaction"} [object Object]

错误原因是ganache的chainId和metamask的chainId不同

解决方法:
ganache-cli -i 1 -h 0.0.0.0 -p 7545

-i 指定启动的链id,我这里指定1
-h 指定监听所有ip,因为我把ganache装在了云服务器上面,且没有注册域名,没法用nginx做代理,所以只能监听所有ip,这样我才能在本机访问到
-p 指定端口,默认是8545,但是truffle部署合约时是用的7545,所以懒得改truffle的代码就可以指定ganache在7545启动

随后在metamask中添加一个自定义网络并填上相应信息,metamask建议去github上下压缩包自己添加到扩展程序中,我在chrome商店下了N回都是出错,metamask添加网络步骤如下
metamask连接私有链发生的转账问题_第1张图片

metamask连接私有链发生的转账问题_第2张图片
metamask连接私有链发生的转账问题_第3张图片
网络名称随意,url如果本机就填http://localhost:7545,如果是服务器填上对应ip,关键是ChainID一定要和ganache-cli启动时一致,最后保存即可

注意:如果你的metamask已经连到了你本来没有指定chainId的网络了,那你再指定chainId启动网络,metamask转账可能仍然报错,这时候可以把metamask删掉重新加入扩展程序

转账成功的样子
metamask连接私有链发生的转账问题_第4张图片

你可能感兴趣的:(dapp)