Ich habe Probleme mit dem Regtest-Modus unter Linux. Verwenden der vorkompilierten Version 0.9.2.1 für Linux und Starten des Regtest-Modus gemäß den Anweisungen auf bitcoin.org:
<bitcoin-ver>-linux/bin/64>> ./bitcoind -regtest -daemon
Der Server startet, aber ein getinfo gibt 'connections' zurück: 0. Versucht, mit verschiedenen rpc*-Einstellungen in der .conf-Datei zu experimentieren. Was genau muss ich einstellen, um den Regtest-Modus zu verwenden? Muss ich echte Knoten über Addnode für Regtest hinzufügen? Es scheint nicht so, als müsste ich das brauchen. Ich konnte einige Verbindungen herstellen, indem ich einmal mehrere echte Knoten hinzufügte, aber nach ein paar Minuten fielen die „Verbindungen“ auf 0 zurück. Lassen Sie mich wissen, ob zusätzliche Informationen hilfreich wären.
Sie müssen mehr als einen Knoten auf Ihrem Rechner ausführen (das können Sie tun, wenn Sie jedem Knoten einen anderen -port und -rpcport zuweisen). Und Sie müssen ihnen mitteilen, wie sie sich finden können (mit -connect=127.0.0.1:Portnummer).
Es gibt Beispiele, die in Bash und Python im Quellbaum von Bitcoin Core geschrieben sind: https://github.com/bitcoin/bitcoin/tree/master/test/functional
Obwohl ich glaube, dass die Antwort von Fred Tingey vollständig ist, hat sie die folgenden Attribute:
Daher wollte ich das folgende prägnante Bash-Skript teilen, das das tut, was das OP will. Wie andere teilweise angemerkt haben, ist der Schlüssel, um dies zum Laufen zu bringen, Folgendes:
-connect
, um auf eigene Knoten zu beschränken, denken Sie daran, verwenden -listen
, um Verbindungen von eigenen Knoten zu akzeptieren.Das heißt, hier ist mein start-regtest-network.sh
Skript:
#!/bin/bash
bitcoind -server -listen -port=17591 -rpcuser=bitcoinrpc -rpcpassword=P$SECONDS -rpcport=16591 -datadir=$HOME/regtest/A/ -connect=localhost:17592 -regtest -pid=$HOME/regtest/A/.pid -daemon -debug
bitcoind -server -listen -port=17592 -rpcuser=bitcoinrpc -rpcpassword=P$SECONDS -rpcport=16592 -datadir=$HOME/regtest/B/ -connect=localhost:17593 -regtest -pid=$HOME/regtest/B/.pid -daemon -debug
bitcoind -server -listen -port=17593 -rpcuser=bitcoinrpc -rpcpassword=P$SECONDS -rpcport=16593 -datadir=$HOME/regtest/C/ -connect=localhost:17594 -regtest -pid=$HOME/regtest/C/.pid -daemon -debug
bitcoind -server -listen -port=17594 -rpcuser=bitcoinrpc -rpcpassword=P$SECONDS -rpcport=16594 -datadir=$HOME/regtest/D/ -connect=localhost:17595 -regtest -pid=$HOME/regtest/D/.pid -daemon -debug
bitcoind -server -listen -port=17595 -rpcuser=bitcoinrpc -rpcpassword=P$SECONDS -rpcport=16595 -datadir=$HOME/regtest/E/ -connect=localhost:17591 -regtest -pid=$HOME/regtest/E/.pid -daemon -debug
Außerdem hier meine stop-regtest-network.sh
:
#!/bin/bash
sudo killall --regex bitcoin.*
Mir ist klar, dass mein Stop-Skript schlampig ist und alle Bitcoin-Prozesse beendet. Wenn Sie so geneigt sind, können Sie dies ändern, um die einzelnen PIDs aus jedem Datenverzeichnis zu ziehen.
Schließlich müssen Sie wahrscheinlich einige Datenverzeichnisse für Bitcoin vorab erstellen, wenn Sie das Skript überhaupt nicht bearbeiten.
mkdir $HOME/regtest/A/
mkdir $HOME/regtest/B/
mkdir $HOME/regtest/C/
mkdir $HOME/regtest/D/
mkdir $HOME/regtest/E/
Sie sollten über Regtest-Bitcoind-Knoten verfügen, die Round-Robin an den Ports 17591, 17592, 17593, 17594 und 17595 verbinden. Ebenso sollten Sie in der Lage sein, eine Verbindung zu den RPC-Ports 16591, 16592, 16593, 16594 und 16595 herzustellen. Wenn Sie den RPC kennen müssen Kennwort können Sie überprüfen ps aux
oder ein explizites rpc-Kennwort im Skript festlegen.
HTH
../.pid
Verzeichnis oder Datei existiert nicht. ist pid obligatorisch?Um mehrere Knoten im Regtest-Modus auf einem einzelnen Computer auszuführen, müssen Sie jeden Knoten in einer Sandbox ausführen.
In diesem Beispiel habe ich drei Knoten, sie heißen Alice, Bob und Cory. Da Bitcoin ein Peer/Mesh-Netzwerk ist, ist es mein Ziel, jeden Knoten so zu verbinden, dass Änderungen, die an Cory vorgenommen werden, letztendlich für Bob sichtbar sind (ohne dass unbedingt eine direkte Verbindung zwischen den beiden erforderlich ist).
Diese Ordner enthalten unsere Daten und Konfigurationen für jeden Knoten. Die Namen sind nicht wichtig, sie können später umbenannt werden, also können Sie sie vorerst "Alice", "Bob" und "Cory" nennen. Denken Sie daran, wo Sie sie erstellen, Sie benötigen ihre Pfade für Schritt 3 unten.
In den Konfigurationsdateien wird Alice so konfiguriert, dass sie sich mit Cory verbindet, und Bob wird so konfiguriert, dass sie sich mit Alice verbindet. Neben der Konfiguration ausgehender Verbindungen legen wir hier auch regtest=1
Einstellungen server=1
fest.
regtest=1
server=1
# Alice connects to Cory
connect=localhost:18333
regtest=1
server=1
# Bob connects to Alice
connect=localhost:18444
regtest=1
server=1
# Cory connects to nobody
Beachten Sie, dass jeder Knoten eine andere Portnummer haben muss, da immer nur ein Knoten an eine Portnummer gebunden werden kann.
Sie können natürlich Ihre eigenen Portnummern wählen, aber achten Sie darauf, keine Portnummer zu verwenden, die bereits von etwas anderem verwendet wird.
Die Befehlszeilenoptionen teilen Bitcoin mit, welche Portnummer verwendet werden soll, wo Daten gespeichert werden sollen und wo die Konfigurationsdatei zu finden ist:
"C:\Program Files\Bitcoin\bitcoin-qt.exe" -conf="C:\Alice\bitcoin.conf" -datadir="C:\Alice" -rpcport=18444
"C:\Program Files\Bitcoin\bitcoin-qt.exe" -conf="C:\Bob\bitcoin.conf" -datadir="C:\Bob" -rpcport=18555
"C:\Program Files\Bitcoin\bitcoin-qt.exe" -conf="C:\Cory\bitcoin.conf" -datadir="C:\Cory" -rpcport=18333
Dadurch werden drei Instanzen des Bitcoin-Clients gestartet, und die Ordner für jeden Knoten beginnen mit der Initialisierung von Regtest-Daten.
Sie können die Help->Debug Window->Console
Option verwenden, um Befehle auf jedem der Knoten interaktiv auszuführen. Beispielsweise können Sie 101 Blöcke mit dem folgenden Bitcoin-Konsolenbefehl abbauen:
setgenerate true 101
Sie sollten (nach einigen Sekunden) dann Münzen erhalten haben.
Diese Mining-Aktivitäten führen zu Coinbase-Transaktionen – und nur die letzte von 50 BTC steht zur Verfügung. Jetzt können Sie einige BTC an einen der anderen Knoten senden. Nach etwas mehr Mining wird eine solche Transaktion bestätigt .
Sie können auch die Konsolenbefehle getpeerinfo
und verwenden getinfo
, um zu überprüfen, ob das Netzwerk korrekt eingerichtet ist. Einer von ihnen (Cory mit Port=18333) sollte 'sync=true' in seiner Peerinfo-Ausgabe haben, und alle Knoten sollten die gleiche "Blockhöhe" haben, unabhängig davon, welcher Knoten für das Mining verwendet wird.
Ich möchte eine Ergänzung zu den obigen Antworten machen.
Anstelle -connect=ip
der richtigen Option ist -addnode=ip
. -connect
lässt einen Knoten nur mit einem Knoten verbinden, während '-addnode' versucht, sich unter anderen Knoten mit der angegebenen Liste von Knoten (IP) zu verbinden.
--addnode
die auch die Erkennung und Verwendung von Knoten von Peers ermöglicht? ( --connect
wobei sich nur auf den angegebenen Knoten beschränken wird.) Wenn dies zutrifft, lohnt es sich möglicherweise, Ihre Antwort zu aktualisieren. Es wäre gut für die Leser, dies zu wissen
Joe M