Wie kann ich Bitcoin in Test- und Produktionsnetzwerken gleichzeitig auf demselben Computer ausführen?

Bitcoin und Bitcoind senden einen Fehler, wenn sie mehrmals gestartet werden. Ich gehe davon aus, dass dies daran liegt, dass sie dieselbe Datenbank und dieselbe Brieftasche teilen.

Ist es möglich, zwei Instanzen von Bitcoin QT / bitcoind auszuführen, wobei eine auf Production und die andere auf Test lauscht? (am selben Rechner)

Ist dies ratsam oder nicht ratsam?

Antworten (3)

Sie können Mainnet- und Testnet-Bitcoin problemlos nebeneinander betreiben. Sie teilen sich nicht dieselbe Datenbank (man verwendet das Unterverzeichnis testnet3/).

Was zu Konflikten führt, ist der RPC-Port, da beide versuchen werden, sich an Port 8332 zu binden, um RPC-Verbindungen zu empfangen. Verwenden Sie -rpcport=N auf einem von ihnen, um einen anderen Port zu verwenden.

Vielen Dank! Mein Ziel ist es, bei der Testnet-Replikation zu helfen. Wird die Ausführung auf einem alternativen Port Probleme verursachen, wenn andere Clients mich entdecken?
Die Kommunikation mit anderen Knoten erfolgt über den P2P-Port, der standardmäßig 8333 für Mainnet und 18333 für Testnet ist. Der RPC-Port wird nur zum lokalen Senden von Befehlen an Bitcoin verwendet.
Ich habe testnet gerade auf demselben Computer wie die Produktion gestartet. Ich habe gesehen, dass das folgende Verzeichnis verwendet wird: Default data directory C:\Users\Administrator\AppData\Roaming\BitcoinSpezifisch wird debug.log, peers.dat, or wallet.datgeändert? Wird die bitcoin.conf gelesen? Es scheint, dass mein debug.log nach dem Ausführen von testnet abgeschnitten wurde. (Ich hatte ein großes Debug-Protokoll, das in der Produktion ausgeführt wurde.)

Ab Bitcoin Core 0.7.1 (19. Oktober 2012) können Sie sowohl Mainnet als auch Testnet ausführen, indem Sie Bitcoin Core einfach mit den entsprechenden Flags starten:

bitcoind -daemon           # mainnet, -daemon will cause it to fork into the background
bitcoind -daemon -testnet  # testnet

Ab Bitcoin Core 0.9.0 (19. März 2014) können Sie einfach verwenden bitcoin-cli, um Befehle an beide Knoten zu senden:

bitcoin-cli getinfo           # mainnet, uses port  8332 for RPC-JSON
bitcoin-cli -testnet getinfo  # testnet, uses port 18332 for RPC-JSON

Ebenfalls ab Bitcoin Core 0.9.0 gibt es einen Regressionstestmodus („ Regtest “), der die Entwicklung und das Testen von Apps beschleunigen kann, indem er fast sofort eine alternative Blockkette mit superniedrigem Schwierigkeitsgrad generiert.

Standardmäßig läuft der Regtest-Modus auf denselben Ports wie testnet (18333 für Bitcoin P2P , 18332 für RPC-JSON/HTTP REST ), obwohl er ein anderes Datenverzeichnis als testnet verwendet. Das bedeutet, dass die beiden folgenden Befehle beide einen Standard-Testnetz- oder Regtest-Knoten adressieren:

bitcoin-cli -testnet getinfo  ## sends command to port 18332
bitcoin-cli -regtest getinfo  ## also sends command to port 18332

Diese Antwort enthält einen grundlegenden Beispielcode, der zeigt, wie zwei Regtest-Knoten auf demselben Computer ausgeführt werden. Sie können jedoch auch etwas Ähnliches tun, wenn Sie einen Testnet-Knoten und einen Regtest-Knoten gleichzeitig ausführen möchten.


Nachtrag: Die akzeptierte Antwort von Pieter Wuille verwirrt mich. Es heißt, er habe es am 9. Dezember 2012 geschrieben, aber diese Zusammenführung von Pieter besagt, dass er Code (geschrieben von @kjj2) hinzugefügt hat, der den Testnet-Port am 28. September 2012 auf 18332 geändert hat – über zwei Monate zuvor. Außerdem war dieser Code in Bitcoin Core 0.7.1 enthalten, das im Oktober 2012 veröffentlicht wurde, immer noch fast zwei Monate vor Pieters Antwort.

Zucken. Ich schätze, vielleicht hat er die Änderung einfach vergessen.

habe ich wahrscheinlich :)

Vielleicht sollten Sie versuchen, durch das datadirArgument verschiedene Verzeichnisse zu verwenden. Auf diese Weise würden die Produktionsdaten und Testnetzdaten in verschiedenen Ordnern gespeichert.

REF: https://bitcointalk.org/index.php?topic=771930.0