Ohne es selbst durch den Versand von Minisummen rauszufinden, frage ich mich, welche Prüfroutinen die Bitbox App beim Senden von BTC an Wallet Adressen so vornimmt. Gibt es da Check-Summen o.ä.? Falls man wirklich mal einen Seed händisch eingeben sollte können ja schon Tippfehler entstehen.
Also wie sicher kann man sich sein, dass die Adresse die man eingegeben hat auch wirklich existiert?
Die FAQs sagen dazu leider nichts.
Wenn man es genau nimmt gibt es schon alle Bitcoin-Adressen im Netzwerk. Sie haben nur keine Guthaben oder Transaktionen.
Eine gültige Adresse wird durch eine Prüfsumme überprüft, so auch dein Seed.
Also zuerst mal hat der Seed an der Stelle nichts mit der Empfangsadresse zu tun.
Die Seedphase (12 oder 24 Wörter) gibst du nur dann ein, wenn du die Bitbox zurückgesetzt hast und anschließend wiederherstellen möchtest. Du gibst diese auch niemals irgendwo anders ein!
Davon sprichst du aber denke ich hier nicht. Du meinst, ob es bei der Eingabe einer Empfangsadresse irgendwelche Prüfungen gibt, damit man sich nicht vertippt…
Wie @Elsa schon gesagt hat, enthalten Bitcoin-Adressen eine Prüfsumme. Das heißt Tippfehler werden zuverlässig von der Wallet-Software erkannt (z.B. Bitbox App oder Sparrow).
Zusätzlich musst du die Adresse nochmal auf der Bitbox selbst prüfen und bestätigen, wenn du eine Transaktion tätigst. Ich empfehle dir an der Stelle, die angezeigte Adresse nicht mit deiner am PC eingegebenen zu vergleichen, sondern wirklich mit der Adresse, die du als Empfangsadresse mitgeteilt bekommen hast (z.B. angezeigte Adresse auf einer Börsen-Seite).
Ich weiß allerdings auch nicht, ob die Bitbox selbst noch einmal prüft, dass die Adresse valide ist, also dass die Prüfsumme passt. Dafür habe ich kurz in den Bitbox Code geschaut, aber finde ehrlich gesagt keine Prüfung, außer der passenden Länge.
Die Informationen, welche die Bitbox von der Wallet Software erhält, werden entschlüsselt, decodiert und nach meinem Verständnis in einen BtcSignOutputRequest deserialisiert. Ich habe allerdings an der Stelle und auch beim anschließenden Verarbeiten von Payload und Adresse keine Prüfung der Checksumme gefunden. Muss aber nichts heißen; kenne mich nicht in Rust aus. Evtl. weiß @sutterseba das.
→ Github BitBox Code - Verarbeitung von Bitcoin Transaktionen
Danke für deine Mühe und Antwort. Ja ich meine die Empfangsadresse ;-)
Zur Frage, ob die BitBoxApp Adressen vor Erstellen der Transaktion prüft: Ja, man würde bei einer ungültigen Adresse direkt einen Fehler erhalten und könnte die Transaktion erst gar nicht an die BitBox02 übergeben. Die Adresse wird auch gegen den Account geprüft, d.h. man könnte eine „gültige“ Testnet-Adresse nicht bei einer Mainnet-Transaktion angeben.
Relevanter Code: bitbox-wallet-app/backend/coins/btc/coin.go at 61750886bfb177bd71e12fd3bb134d901275e2dc · BitBoxSwiss/bitbox-wallet-app · GitHub
Die BitBox02 Firmware bekommt im Normalfall keine codierten Adressen übergeben. Die BitBoxApp baut die Transaktion, und in der ist nur die Zahlungsinformation (z.B. ein Public Key Hash) enthalten.
Die Firmware rekonstruiert die Adresse dann aus dem rohen Payload, um die Adresse auf dem Display anzuzeigen. Da der Nutzer ohnehin die Adresse verifizieren muss (bzw. sollte), würde z.B. ein Tippfehler auffallen.
Dazu kommt es aber erst, sofern die verwendete Host-Wallet die Adressen nicht prüft. Soweit ich weiß, verifizieren aber alle mit der BitBox02 kompatiblen Host-Wallets die Adressformate. Zumindest fällt mir keine ein, bei der das nicht der Fall wäre.
Eine Prüfung seitens der Firmware würde aber sicherlich nicht schaden, das ist an sich keine schlechte Idee, kostet aber auch Platz und fügt Komplexität hinzu. Für z.B. Silent Payment Adressen wird der String mit übergeben, die BitBoxApp kann hier nämlich auch nicht die Transaktion alleine bauen: Silent Payments erklärt - Teil 2
Ah, ok, das erklärt einiges!
Hast schon recht! Sehr unwahrscheinlich, dass mal irgendeine Wallet Software diese Prüfung nicht durchführen wird. Man hat höchstens ein kleines Bisschen mehr Sicherheit, wenn man der Bitbox einfach mehr vertraut.
Ansonsten wäre die Checksumme evtl. auch ein Schutz gegen fehlerhafte USB-Übertragung oder Bitflips. Aber evtl. bietet das USB-Protokoll ja schon einen solchen Schutz.