remix编写智能合约,编译之后发布。run ->environments选择发布环境:
- javaScript VM (用于本地测试)
- Injected Web3 (使用metaMask发布智能合约)
- Web3 Provider (指定测试链)
第三个环境指定测试链时,如http://localhost:8545
有如下提示:
Not possible to connect to the Web3 provider. Make sure the provider is running and a connection is open (via IPC or RPC).
这个错误有两个方面的原因:
1、指定的测试链的地址是http,而remix是https的;
解决方案:
将https://remix.ethereum.org
改成https://remix.ethereum.org
2、指定的测试链的启动方式不对,少参数
解决方案:
./geth --identity “TestNode” --rpc --rpcaddr “0.0.0.0” --rpcport “8545” --rpcapi “web3,eth,net,debug” --rpccorsdomain “*” --datadir=/Users/qianrongli/eth/data0/eth-test --port “30303” --nodiscover console
- identity:指定私链的名称(可不指定)
- nodiscover:让别人看不到这个私链
- console:命令行启动
- rpc:允许 HTTP-RPC 访问
- rpcaddr:允许访问的ip
- rpcport:HTTP_RPC的访问端口,默认为8545
- rpcapi:HTTP_RPC访问的api
- datadir: 指定节点数据存放位置
- port:网络监听端口,默认为30303
后台启动:
nohup ./geth --identity “TestNode” --rpc --rpcaddr “0.0.0.0” --rpcport “8545” --rpcapi “web3,eth,net,debug” --rpccorsdomain “*” --datadir=/Users/qianrongli/eth/data0/eth-test --port “30303” --nodiscover & > nohup.out
访问控制台:
./geth attach ipc:/opt/eth/geth.ipc
按上述方式启动,是可以连接让remix连接到链的。
希望对您有帮助