我正在测试一些与比特币相关的代码,为了测试它已在docker容器中安装了bitcoin-testnet-box.
运行正常,在容器中,我可以执行命令并查看结果.
Dockerfile是exposing port 19001,我将其映射到端口49155作为bitcond实例之一的RPC端口,并且尝试使用node-bitcoin与之通信.
我写了一个简单的测试,目的只是为了解决当前的困难.
var bitcoin = require('bitcoin'),client = new bitcoin.Client({
host: "192.168.59.103",port: 49155,user: "admin1",pass: "123"
});
describe("Core Wallet Functions",function() {
it("can get the current bitcoin difficulty",function(done){
client.getDifficulty(function(err,difficulty){
console.log("got response",err,difficulty);
expect(err).to.equal(null);
expect(difficulty).to.equal(1);
done();
});
});
});
{[错误:连接ECONNREFUSED]
代码:“ ECONNREFUSED”,
errno:“ ECONNREFUSED”,
syscall:’connect’}
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8b04ed26d9e3 freewil/bitcoin-testnet-Box:latest /bin/bash 3 hours ago Up 8 minutes 0.0.0.0:49155->19001/tcp,0.0.0.0:49156->19011/tcp bitcoind
我尝试将主机更改为“ localhost”和“ 0.0.0.0”,但结果相同.
显然,我缺少一些简单的东西,因为node-bitcoin tests并没有做任何不同的事情.
用于运行bitcoin-testnet-Box的命令为
docker run -ti --name bitcoind -P -p 49155:19001 freewil/bitcoin-testnet-Box
我可能做错了什么?
更新资料
我按照以下建议更改了bitcoin.conf,现在错误消息为
[Error: Invalid params,response status code: 403]
我的bitcoin.conf看起来像
# testnet-Box functionality
testnet=1
dnsseed=0
upnp=0
rpcallowip=192.168.59.103
rpcallowip=192.168.1.4
rpcallowip=0.0.0.0
# listen on different ports than default testnet
port=19000
rpcport=19001
# always run a server,even with bitcoin-qt
server=1
# enable SSL for RPC server
#rpcssl=1
rpcuser=admin1
rpcpassword=123
另一个更新
值得解释的是,我正在使用boot2docker在Mac上运行docker,所以我指的IP地址是运行docker ip时显示的IP,而不是Mac本身的IP.我正在Mac上使用NodeJS运行测试,而不是在boot2docker VM或实际Docker容器中运行测试.因此,我也尝试将rpcallowip = 192.168.1.4(其中192.168.1.4是我的Mac的IP)添加到我的bitcoind.conf文件中,以防万一. las没什么关系,我仍然收到{[错误:无效的参数,响应状态代码:403]代码:-32602}响应.
我还根据bitcoin.conf文件中的内容对我的用户名和密码进行了三重检查.
根据克里斯·麦金纳尔的建议,我在docker容器中运行了netstat -tunlp,它显示:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:19000 0.0.0.0:* LISTEN 65/bitcoind
tcp6 0 0 :::19000 :::* LISTEN 65/bitcoind
tcp6 0 0 :::19001 :::* LISTEN 65/bitcoind
tcp6 0 0 :::19011 :::* LISTEN 75/bitcoind
所以我也将rpcallowip = 0.0.0.0添加到了我的bitcoin.conf文件中. las仍然没有区别.
终于解决了
再次感谢Chris McKinnel,通过设置rpcallowip = *可以解决此问题.当然,这提出了一个新的问题,但是当我到达那座桥时,我会把它烧掉.现在,我可以很高兴地测试我的比特币过程.