私はいくつかのビットコイン関連のコードをテストしており、それをテストするために、docker コンテナー内に bitcoin-testnet-box をインストールしました。
正常に動作しており、コンテナー内でコマンドを実行して結果を確認できます。
Dockerfile はポート 1900149155
を公開しています。これは、インスタンスの 1 つの RPC ポートとしてポートにマッピングしており、 node-bitcoinbitcond
を使用して通信しようとしています。
現在の難易度を取得することを目的とした簡単なテストを作成しました。
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'、エラー番号: 'ECONNREFUSED'、syscall: 'connect' }
docker ps
ショーの概要
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」の両方に変更しようとしましたが、同じ結果が得られました。
ノードとビットコインのテストは実際には何も変わっていないので、明らかに単純なものが欠けています。
実行に使用されたコマンド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
別の更新
docker
を使用して Mac で実行していることを説明する価値があるboot2docker
ので、参照している IP 番号はdocker ip
、Mac 自体の IP ではなく、実行時に表示される IP です。NodeJS
boot2docker VM や実際の Docker コンテナーではなく、Macを使用してテストを実行しています。そのため、念のため、ファイルにも( Mac の IP はrpcallowip=192.168.1.4
どこにあるのか) を追加してみました。残念ながら違いはありませんでしたが、まだ応答があります。192.168.1.4
bitcoind.conf
{ [Error: Invalid params, response status code: 403] code: -32602 }
また、bitcoin.conf ファイルの内容と照らし合わせて、ユーザー名とパスワードを 3 回チェックしました。
以下の Chris McKinnel の提案netstat -tunlp
に従って、docker コンテナー内で実行したところ、次のように表示されます。
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
ファイルに追加しました。残念ながら、まだ違いはありません。
最後に解決策
rpcallowip=*
以下の設定で問題が解決した Chris McKinnel に再度感謝します。もちろん、これはまったく新しい問題を引き起こしますが、私はその橋に着いたら燃やします. 今のところ、Bitcoin プロセスをとても楽しくテストできます。