4

私はいくつかのビットコイン関連のコードをテストしており、それをテストするために、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 です。NodeJSboot2docker VM や実際の Docker コンテナーではなく、Macを使用してテストを実行しています。そのため、念のため、ファイルにも( Mac の IP はrpcallowip=192.168.1.4どこにあるのか) を追加してみました。残念ながら違いはありませんでしたが、まだ応答があります。192.168.1.4bitcoind.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 プロセスをとても楽しくテストできます。

4

2 に答える 2