Einsteiger-Frage: Script - Vom Seed zum eigenem BTC - Wallet (Python oder PHP)

Hallo zusammen,

ich hoffe ich bin hier richtig. Irgendwie sind das sehr viele Infos die ich gerade verarbeite :slight_smile:

Ich habe nun verstanden, wie man sich seinen eigenen Seed errechnet und das funktioniert ganz gut. Habe mir das in Excel zusammengebastelt, aber dafür muss man noch zuviel Schritte ausserhalb machen und deshlab dachte ich mir, ich würde hier bei den Profis fragen.

Ich würde gerne anhand eines einfachen Scriptes (PHP oder Python) den Weg vom Seed zum Wallet nachvollziehen. Klar, es gibt viele Seiten, wo man sich 100 private Keys erstellen kann, aber das ist nicht, was ich suche (es sei denn, ich könnte das vom Seed aus machen.)

Wenn ich also nachvollziehen kann, wie ich vom Seed (23 Wörter + 24 errechnetes Wort inkl. Prüfsumme) dann zur Adresse / öffentlichen und privaten Schlüssel komme, würde das mir sehr helfen. Deshalb muss das Script nicht viel können. Wenn am Ende die Balance sichtbar ist, wäre es perfekt. :slight_smile:

Mein Geld würde ich dann eher Electrum anvertrauen. Weitere Schritte:

  • Bitcoin Core wird die Tage auf der Synology DS223+ eingerichtet
  • danach möchte ich dort noch Lightning installieren
  • am Ende wird noch Electrum-Server eingerichtet, um Sparrow zu nutzen.

Vielen Dank.

Meinst du vielleicht sowas wie das hier?

https://iancoleman.io/bip39/

PS: Hier solltest du natürlich nicht deinen wirklichen Seed eingeben, da dieser sonst mit dem Internet Kontakt hatte.

Hi, danke. Ja, etwas in der Richtung, wobei dort auch einiges errechnet wird, ohne Erklärung (stark vereinfacht ausgesagt).

Beispiel.

23 Wörter aus der Wortliste führen zu 23*11 Bits = 253 Bits. 3 weitere Bits denke ich mir aus und die restlichen 8 stellen die Checksummp dar. Bit-Folge in SHA256 = HEX.

Ersten zwei Zeichen führen den restlichen 8 Bits. Mit den restlichen 3 habe ich mein 11 Bits und damit das 24. Wort. Perfekt. Ich habe es verstanden.

Was passiert nun?
Wie entsteht aus dem Seed (den 264 Bits) nun eine Adresse?
Wie entsteht daraus der private und der öffentliche Schlüssel?

Wobei ich zum funktionieren in erster Linie die Adresse brauche. Damit kann ich auch jederzeit online den Kontostand abfragen.

Mein Wunsch wäre es, wenn ich am Ende mir einen Seed errechne, dort paar Sats überweise und das Online als Ergebnis sehen würde :slight_smile:

Für Python habe ich noch die Tage die BitcoinLib „gefunden“, aber damit heb ich mich noch nciht beschäftigt. Ich bin jetzt auch kein Coder - aber ich kann einem Code etwas folgen. Deshalb auch die Suche nach einem brauchbaren, offenen Script :slight_smile:

Hi, meine Antwort ist sehr technisch und setzt dabei Voraus, dass du einige Begriffe schon kennst. Die Berechnung vom Seed zur Adresse ist technisch komplex. Wenn du dies versuchst zu implementieren, denke ich du kennst dich schon etwas aus.

Wie man vom Mnemonic zur Adresse kommt ist in den Bitcoin Improvement Proposals (BIP) 39 und 32 beschrieben.

BIP39

BIP32

BIP39 beschreibt wie ein Mnemonic (die 12/24 Wörter) aufgebaut ist und zu einem Seed führt (der Seed ist eigentlich schon die dekodierte Version).

BIP32 beschreibt wie aus dem Seed die verschiedenen Child Paths generiert werden, also Unterpfade aus denen dann letztendlich die private und public keys errechnet werden.

Am Ende muss aus jedem private key (oder direkt aus dem public key) die Adresse errechnet werden.

Es folgen Zwei Links zu Beiträge in denen diese Vorgänge schematisch dargestellt sind

Diagramm BIP32 (im Bild unter dem Text)

Privkey zur Adresse

Ich habe vor zwei Jahren eine eigene wallet mit Taproot Integration programmiert und kann daher sagen, dass die Implementierung sehr komplex ist.
Ich habe aus deiner Frage nicht ableiten können, ob du am Ende ein fertiges Script nimmst und nur anwendest, oder ob du es von Grund auf neu schreiben möchtest.
Ich verstehe trotz gutem Verständnis für Programmierung und Bitcoin nicht genau wie jeder Schritt funktioniert. Ich kann dir aber sagen welche Library ich genutzt habe, falls du selbst Einblick bekommen möchtest.

BitcoinLib auf Github
Schau in dem Code mal unter class HDKey ab Zeile 1237. Diese Klasse beschreibt eigentlich alles um das zu erreichen was du willst, auch wenn ich den Inhalt selbst manchmal nicht verstehe.

Wie man diese anwendet findest du In dem Testordner der Library

5 „Gefällt mir“

Ich habe selbst auch eine eigene Wallet programmiert. Allerdings nur mit dem Legacy Adressformat. Also keine HD Wallet.

Ich würde dir aber raten dass du selbstgebaute Software nur zur Eigenverwahrung deines Geldes verwendest wenn du auch wirklich nachvollziehen kannst, was jede einzelne Code Zeile macht. Besonders bei Drittsoftware/Frameworks wäre ich besonders vorsichtig.

Hinzu kommt dass du der verwendeten Hardware und dem Betriebssystem immer noch vertrauen musst. Auch wenn es eher unwahrscheinlich ist, könnten Dinge wie die vom Betriebssystem zur Verfügung gestellten Zufallsalgorithmen manipuliert oder aus anderen Gründen unzuverlässig sein. Auch zusätzlich auf dem System installierte Software könnte solche Algorithmen manipuliert haben. Eine Internetverbindung ist dann für diese Angriffe nicht mehr notwendig. Bei Hardware Wallets, wie der Bitbox, werden sowohl die Software als auch die Hardware darauf optimiert sein, eine ohne Entropie aufzubringen. Das wird man mit einem klassischen Computer und selbst gebauten Scripts kaum hinbekommen.

Kennst du das Testnet von Bitcoin? Das ist ein eigenständiges, von Mainnet getrenntes, Netzwerk. Dort kannst du dir wertlose Test Bitcoin von jemandem geben lassen und deine Software damit testen. Das Netzwerk ist genau für sowas gedacht.

1 „Gefällt mir“

Vielleicht hilft dir auch Mastering Bitcoin von Andreas Antonopoulos weiter.
Dort ist die Programmierung von Bitcoin von klein auf erklärt.

Die englische PDF dazu gab es mal frei verfügbar, jetzt anscheinend nicht mehr, aber vielleicht hat die hier noch jemand.
Auf deutsch gab es das Buch nur zu kaufen, soweit ich weiß.

4 „Gefällt mir“

Dss ist wirklich nur zum Testzweck und „lernen“. Wallet erstellen, Bestand abfragen, mal versenden. Wenn ich das kapiert habe, werde ich mich um andere Wallets kümmern, ggf. später auch um eine Hardwarewallet.

Und dürfte man die Software sehen oder top Secret? Ich frag nur, fühle dich bitte nicht genötigt :slight_smile:

Danke für den Link.

Savage! Das sind die Threads, die mich bullish machen. Danke fürs teilen der Infos :slight_smile:

1 „Gefällt mir“