Ich möchte das Datenverzeichnis und das Walletverzeichnis getrennt behandeln. Dazu kann man wohl in der bitcoin.conf (die im Installationsverzeichnis liegt) die Werte anpassen:
Tut man das, zeigt zwar Datenverzeichnis dann korrekt da hin, jedoch das Walletverzeichnis nicht. Beim Start sucht er immer die Wallet im Datenverzeichnis, obwohl der Pfad wo anders hin zeigen sollte.
Wenn man allerdings die bitcoin-qt.exe mit folgenden Parameter startet, klappt es:
Die zusätzliche Option geht wohl nur wenn die Wallet vor dem Beenden geschlossen war. -wallet="Z:\Bitcoin Wallet\Goldschatz"
Es gibt noch weitere Einstellungen in der bitcoin.conf wie z.B: walletdir="Z:\Bitcoin Wallet\Goldschatz"
Ich frage mich, warum das zwar per Verknüpfung geht, jedoch nicht per bitcoin.conf? Ich kann mir nicht vorstellen das dies ein Bug ist …
Jemand Ideen dazu?
Ich danke vorab!
PS: Bitte keine grundlegenden Diskussionen darüber, was man mit Bitcoin Core auf einem Windows macht. Auf der Wallet liegt nur Spielgeld, und ich überlege es als Node mitlaufen zu lassen (server=1, txindex=1, …)
fs::path GetWalletDir()
{
fs::path path;
if (gArgs.IsArgSet("-walletdir")) {
path = gArgs.GetPathArg("-walletdir");
if (!fs::is_directory(path)) {
// If the path specified doesn't exist, we return the deliberately
// invalid empty string.
path = "";
}
} else {
path = gArgs.GetDataDirNet();
// If a wallets directory exists, use that, otherwise default to GetDataDir
if (fs::is_directory(path / "wallets")) {
path /= "wallets";
}
}
return path;
}
Allerdings wird an der gleichen Stelle nach einer erfolglosen Prüfung auf den Start-Parameter auch geprüft, ob dein Datadir-Verzeichnis ein Unterverzeichnis \wallets hat. Falls das auch nicht vorhanden ist, wird einfach das Datadir verwendet.
Wenn dir das reicht, kannst du mal ohne den Parameter starten, aber vorab einen Unterordner wallets im Datadir anlegen. Dann sollte dieser automatisch von Bitcoin Core für die Wallet verwendet werden.
Ich verstehe nicht ganz. Ich möchte den Pfad für die Wallet eben ganz wo anders haben. Ich dachte der Parameter wallet= in der bitcoin.conf wäre genau dafür da?
Mit eine Start-Verknüpfung geht es ja, was mir zeigt das es grundsätzlich ja geht.
Ich kann dir nur sagen, dass an dieser Code-Stelle zwar der Startparameter walletdir, nicht aber ein Parameter wallet ausgewertet wird.
Keine Ahnung warum wallet dann in der Beispiel bitcoin.conf drinsteht. Man könnte sich mal die Commit History ansehen.
Vielleicht täusche ich mich auch einfach. Das glaube ich aber eigentlich nicht, da die Funktion GetWalletDir() an mehreren Stellen verwendet wird.
Wenn du ein komplett anderes Verzeichnis nutzen möchtest, nimm halt einfach den Startparameter. Kannst ihn doch in der Verknüpfung speichern.
Ansonsten lege einfach ein Unterverzeichnis wallets im Datadir-Verzeichnis an.
Nachtrag:
Die Beispiel bitcoin.conf wird bei einer neuen Release automatisch mit den Parametern generiert, die man durch bitcoind --help erhält.
bitcoind hat tatsächlich beide Parameter, also -walletdir und -wallet, wobei letzterer ja anscheinend nicht in der oben genannten Funktion ausgewertet wird.
Es ist weiterhin so, das er Stur den datadir Ordner nimmt und dort unterhalb im Ordner dann einen Ordner mit dem Namen der Wallet erstellt.
Davon ab: Wenn man bei der Installation einen anderen Pfad für das datadir auswählt, ist das zwar bei jeden Start von bitcoin-qt.exe aktiv, allerdings ist dann in der bitcoin.conf die Option
# Specify data directory
#datadir=<dir>
immer noch auskommentiert. Dort hätte ich dann den neuen Pfad erwartet.
Ich muss schon sagen:
Alles ziemlich verwirrend, weil es eben per Verknüpfung geht, jedoch nicht per bitcoin.conf Datei. Ich kann mir wie gesagt kaum vorstellen, das ich der einzige Mensch auf der Erde bin, dem dies aufgefallen ist
Weil es wohl grundsätzlich keine schlechte Idee ist die wallet.dat ganz wo anders zu haben, auch wenn nur Spielgeld drauf ist. Ein böser Mensch schaut sicherlich zu aller erst in den C:\Program Files\Bitcoin\ Pfad.
Was ich auch etwas seltsam finde, ist das man zwar den Namen der Wallet frei wählen kann, die wallet.dat am Ende aber immer einer wallet.dat bleiben muss. Umbenennen geht nicht, weil der immer eine wallet.dat erwartet. Warum das denn bitte? Mir wäre es wesentlich lieber wenn man den Dateinamen ebenfalls frei wählen könnte.
Erstellt man mehrere Wallets, schaut das unter Windows dann so aus:
Hier geht es wie gesagt nicht darum eine grundsätzliche Debatte zu führen was man mit Bitcoin Core auf einem Windows macht. Mir ist das nur auf Anhieb aufgefallen, nachdem ich nach Jahren mal wieder die Software unter Windows betreiben wollte.
Hast du inzwischen ausprobiert, in der bitcoin.conf walletdir=... mit deinem Pfad einzutragen?
Kann man halt so oder so implementieren. Ich habe mir den Code nicht weiter angesehen, vermute aber einfach folgendes:
Die bitcoin.conf ersetzt die Notwendigkeit jedes Mal Startparameter übergeben zu müssen. Die Settings in der bitcoin.conf sind damit gleichwertig zu den Parametern beim Programmaufruf. Das ist auch bei Config-Dateien anderer Software nicht unüblich.
Wenn du bei der Installation einen anderen Pfad angibst, wird dieser offensichtlich irgendwo gespeichert. Es gibt also keine Notwendigkeit, diesen auch als „Startparameter-Ersatz“ in der bitcoin.conf stehen zu haben, weshalb es dort auskommentiert ist. Trotzdem hast du die Möglichkeit über Startparameter oder die bitcoin.conf von der Installationsangabe abweichende Angaben zu machen.
Alternativ hätte man das ganze auch so implementieren können, dass die Installationsangabe auch nur zu einem Setting in der bitcoin.conf führt. Dann hätte man das jederzeit explizit dort nachsehen und ebenfalls noch ändern können.
Bitcoin Core ist jetzt nicht unbedingt eine Wallet, die man heute noch verwendet. Nur, weil die wallet.dat an einem anderen Ort liegt, wird es nicht wirklich sicherer. Hat jemand Zugriff auf deinen PC, ist die wallet.dat auch dann potentiell gestohlen, wenn sie nicht in dem offensichtlichen Verzeichnis liegt.
Vermutlich hat daher auch niemand den vermeintlichen Bug gefunden.
Ich würde Node und Wallet immer trennen. In zwei Ordnern zählt für mich nicht als getrennt. Gut ist die Node auf dem PC und die Wallet auf dem Handy. Noch viel besser ist natürlich eine Hardware Wallet.
Gibt es einen Grund, dass du unbedingt die Walletfunktion von Bitcoin Core nutzen möchtest?
Vielleicht gibt es Probleme mit dem " , \ oder Leerzeichen.
Hast du mal folgende Pfade probiert? walletdir=Z:\Bitcoin wallet\ walletdir=Z:\Bitcoin_wallet walletdir=Z:\Bitcoin_wallet\ walletdir="Z:\Bitcoin_wallet"
Oder eventuell muss deine wallet.dat schon in dem Verzeichnis liegen?