問題タブ [bitcoinj]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - ローカル regtest ネットワーク上の特定のビットコイン アドレスに送金されたときに通知を受け取るにはどうすればよいですか?
誰かがビットコインを特定のアドレスに送信するたびに、プログラムで検出したいと考えています。これは、この docker -compose.ymlファイルを使用して開始したローカル テストネットで発生します。
ローカル テストネットが実行されたら、次を使用して新しいアドレスを作成します
返すとしましょう2N23tWAFEtBtTgxNjBNmnwzsiPdLcNek181
。
このアドレスを次のJava コードに入れます。
次に、このクラスを使用して Java アプリケーションを開始します。
次に、テスト ビットコインを問題のアドレスに送信します。
に行くとhttp://localhost:3002/tx/068c377bab961356ad9a3919229a764aa929711c68aefd5dbd4c7c348eef3406
、取引の詳細が表示されます。
ただし、リスナー (onCoinsReceived
メソッド) のブレークポイントはアクティブになりません。
テスト BTC を送信するために使用するコードやコマンドを変更して、そのアカウントがお金を受け取るたびにonCoinsReceived
メソッドが呼び出されるようにするにはどうすればよいですか? Wallet
ローカルホストに接続できる、またはNetworkParameters
接続したい場所はありますか?
bitcoinj-core のバージョン 0.15.10 を使用しています。
更新 1:
docker-compose.ymlを変更し、次のポート マッピングを追加しました。
次に、メソッドを書き直して、init
localhost に接続してポートを指定できるようにしました。
LocalTestNetParamsを使用すると、ポートを指定できます。
で前述のすべてのポートを試しましたnetParams.setPort(50001);
。
いずれの場合も、の後に次のメッセージが表示されますkit.awaitRunning();
。
10.10.1.218
InetAddress.getLocalHost()
inによって生成されるようですorg.bitcoinj.kits.WalletAppKit#connectToLocalHost
:
更新 1:
使ってみましたnetwork_mode: "host"
。
のように追加するnode
と
を実行すると、次のエラーが表示されますdocker-compose up -d
。
electrumx
のようにパーツに追加すると
別のエラーが発生します:
更新 2:
次のようにポートバインディングをコメントアウトすると
実行しdocker-compose up -d
て取得します
更新 3:node
エラーの原因は、私の Java コードで、実際の Bitcoin ノードではなく ElectrumX サーバーに接続しようとしたことだと思います ( docker-compose.yml
)。
更新 4:
docker-compose.yml
次のように変更しました。
現在、さまざまなエラーが発生しています(完全なログはこちらから入手できます):
更新 5:
誰かが (現在は削除されたコメントで) アプリケーションの出力に次のPeer does not support bloom filtering
メッセージがあることを提案しました。
そこで、元のイメージをフォークし、bitcoin.confファイルを変更してブルーム フィルタリングを有効にしようとしました。
実行するdocker build -t mentiflectax/bitcoind-custom-regtest:latest .
と、次のエラー メッセージが表示されます (残りの出力の一部はここにあります)。
更新 6:正しいポートは 19000 のようです。
ポート 19001 を使用すると、次のエラーが発生しkit.awaitRunning()
ます。
完全なログ出力は、こちらから入手できます。