Pages:
Author

Topic: Wie schütze ich mich vor Verlust von Bitcoins durch einen Replay Angriff? (Read 1285 times)

sr. member
Activity: 286
Merit: 251
Extension Blocks <3 Rootstock <3
Das ist eben so safe, wie die BCC Software die man verwendet.
Warten wir erstmal ab, ob die Leute es geschafft haben das zu implementieren, was in der Spec steht.

Quote
+RATIONALE: To provide strong protection against replay of existing
+transactions on the UAHF chain, only transactions signed with the new
+hash algorithm and having SIGHASH_FORKID set will be accepted, by consensus.
Quelle: https://github.com/Bitcoin-UAHF/spec/commit/f6a3864428352ed6ad8988b7cd4017f3096f245f

Also ja - so wie es aussieht muss man sich keine Sorgen machen über die Replay Protection / Replay Angriffe.
Man braucht wohl kein "Taint" und muss nicht vorher splitten.

Im normalen Bitcoin-Netzwerk könnte es ggf. zu einer erhöhten Transaktionslast dadurch kommen, nach dem Hard Fork.


sr. member
Activity: 431
Merit: 251
OK also so wie ich das verstehe, kann ich nun einfach unmittelbar nach dem Fork meine Bitcoins mit Electrum oder whatever verschicken und da BCC replay protection hat, kann ich irgendwann später , wann immer ich will ein BCC Wallet runterladen und dort meinen private key von den Bitcoins die ich damals verschickt habe eingeben und damit BCC versenden ?
Und das ist 100%ig safe, also ich brauch sie nicht vorher zu splitten wie bei ETH und ETC ?


"How to redeem my BCC?
---------------------

BCC wallets will require you to import your seed or your private keys,
which can be exported from Electrum. Doing so will expose all your
Bitcoin funds associated with that seed to the BCC wallet you decide
to use.

Therefore, *after* the BCC fork, but *before* you enter a seed or
private key in a BCC wallet, you should move all your funds to a new
Electrum wallet, with a new seed. You will still be able to use the
old seed or private key with BCC, because BCC has replay
protection. Wait until your funds are confirmed in your new Bitcoin
wallet, before you enter the old private key in a BCC wallet. This
will protect your BTC funds from rogue/untrusted software."
copper member
Activity: 1498
Merit: 1528
No I dont escrow anymore.
Ich denke ich habs selber beantwortet. Nein, sofern SIGHASH_ALL benutzt wird, da die Outputs verändert werden... -> https://bitcoin.org/en/developer-guide#signature-hash-types
Genau - Technischer Hintergrund: SIGHASH_ALL ist Standard für eine normale Transaktion bei Bitcoin und SIGHASH_FORKID ist Standard bei Bitcoin Cash.
Beide signieren alle Inputs.
Wenn sich ein Input ändert, werden die Signaturen ungültig und müssen neu erstellt werden.
Das heißt es reicht ein Input, den es nur auf einer Chain gibt (wird "Taint" genannt), für die Replay Protection.

Ok, ich war mir nicht sicher ob alle inputs oder nur der spezifische für den die Unterschrift nötig ist signiert werden.

Und der Input enthält ja nicht die Bitcoin Adresse - die ist also sowieso vollkommen egal für den Replay Schutz, sondern den Hash der vorherigen Transaktion (Transaktions ID) und welcher Output (Nummer) dieser Input in der vorherigen Transaktions war. Diese Daten werden dann von der Signatur geschützt.

Wenn man sich das ganze in Blockexplorern anguckt, sollte man meinen die Adressen wären viel wichtiger, aber tatsächlich sind diese nur eine Abstraktion für uns Menschen und werden auch dort nur genutzt, damit es anschaulicher ist. Tatsächlich bedeuten die Adressen nämlich nur, wie das Feld scriptPupKey im Output der Transaktion zu erstellen ist.

Danach ist die Signatur also nie wieder gültig, weil es die Inputs so nicht mehr gibt, auch nicht auf der anderen Chain.

Bei der Adresse ging es mir um den Output statt um den Input. Danke.
sr. member
Activity: 286
Merit: 251
Extension Blocks <3 Rootstock <3
Ich denke ich habs selber beantwortet. Nein, sofern SIGHASH_ALL benutzt wird, da die Outputs verändert werden... -> https://bitcoin.org/en/developer-guide#signature-hash-types
Genau - Technischer Hintergrund: SIGHASH_ALL ist Standard für eine normale Transaktion bei Bitcoin und SIGHASH_FORKID ist Standard bei Bitcoin Cash.
Beide signieren alle Inputs.
Wenn sich ein Input ändert, werden die Signaturen ungültig und müssen neu erstellt werden.
Das heißt es reicht ein Input, den es nur auf einer Chain gibt (wird "Taint" genannt), für die Replay Protection.

Und der Input enthält ja nicht die Bitcoin Adresse - die ist also sowieso vollkommen egal für den Replay Schutz, sondern den Hash der vorherigen Transaktion (Transaktions ID) und welcher Output (Nummer) dieser Input in der vorherigen Transaktions war. Diese Daten werden dann von der Signatur geschützt.

Wenn man sich das ganze in Blockexplorern anguckt, sollte man meinen die Adressen wären viel wichtiger, aber tatsächlich sind diese nur eine Abstraktion für uns Menschen und werden auch dort nur genutzt, damit es anschaulicher ist. Tatsächlich bedeuten die Adressen nämlich nur, wie das Feld scriptPupKey im Output der Transaktion zu erstellen ist.

Danach ist die Signatur also nie wieder gültig, weil es die Inputs so nicht mehr gibt, auch nicht auf der anderen Chain.
copper member
Activity: 1498
Merit: 1528
No I dont escrow anymore.
-snip-

Erstmal danke für den schönen Beitrag.

In einem Block-Explorer für Bitcoin und einem für Bitcoin Cash sollte man dann überprüfen, ob die Bitcoins tatsächlich Replay geschützt sind.
Das erkennt man daran, dass die Kombination aus den Inputs für die Transaktion auf der anderen Kette unmöglich ist.

Reicht das? Kann ich als Angreifer nicht die jeweilige Signatur für den Input nehmen der auf meiner Chain gültig ist und mir daraus ...

Ich denke ich habs selber beantwortet. Nein, sofern SIGHASH_ALL benutzt wird, da die Outputs verändert werden... -> https://bitcoin.org/en/developer-guide#signature-hash-types

Es sei den die Adresse kann mir egal sein, muss sie mir bei einem Replay Angriff ohnehin, und ich schaffe es ausreichend Inputs zu sammeln um die nötige Menge an Coins zu sammeln. Muss nicht 100% passen, zur Not ist meine Fee halt höher/geringer. Ich werd da glaub ich noch ein bisschen drauf rumdenken müssen bis mir das klar ist. Gerne in die richtige Richtung schupsen.
newbie
Activity: 14
Merit: 0
Quote
Ich versuche es mal etwas grafischer:
Danke jetzt hab ich es.

Quote
Der Trick ist, dass die Börsen gezwungen sind sich selbst vor Replay Angriffen zu schützen, weil sie sonst viel Geld verlieren könnten.
Ja so verstehe ich es auch Grin, denn damit ist mal relativ klar wie "leicht" man zu Taint kommt.
sr. member
Activity: 286
Merit: 251
Extension Blocks <3 Rootstock <3
Ggf. ist das Thema erstmal verschoben:
Bitcoin Cash implements strong replay protection

https://www.bitcoincash.org/replay

Allerdings war der commit bei BitcoinABC nur auf P2P Ebene und nicht auf Consensus Ebene.
Damit wäre es immer noch unsicher, ob ein Replay Angriff erfolgt oder nicht.
Also mal abwarten.
legendary
Activity: 2702
Merit: 1261
Noch eine andere Darstellung. Eigentlich ist die Sache ganz einfach, wenn A die bisherige Chain ist und B abgespalten wird. Dann laufen nach dem Split A' und B weiter.

Code:
        -- B -->
       /
-- A -+-- A' --->

Eine Transaktion die Inputs nur aus A bekommt wäre - ohne Replay Protection - auf A' und auf B gültig.

Eine Transaktion mit Inputs aus A und A' ist allerdings nur auf A' gültig. Eine Transaktion mit Inputs aus A und B ist nur auf B gültig. Transaktionen mit Inputs aus A' und B sind dagegen auf beiden Chains (A' und B) ungültig.
sr. member
Activity: 286
Merit: 251
Extension Blocks <3 Rootstock <3
Neu geminte Coins gehen immer und da ist es am einfachsten zu verstehen.
Der Trick ist, dass die Börsen gezwungen sind sich selbst vor Replay Angriffen zu schützen, weil sie sonst viel Geld verlieren könnten.
Vor allem bei Börsen, die BTC und BCC unterstützen werden.
Ich versuche es mal etwas grafischer:

Methode 1 - Taint von Börse schicken lassen:
Code:
Vorher:
[Coins BTC] [Coins BCC]
Taint (von Börse) A
A B
B C
C D
D

Transaktion auf BTC-Chain
Eingaben: Taint, A, B, C, D -> Ausgaben: Adresse aus neuem HD Wallet (E)
Transaktion kann nicht auf die BCC-Chain kopiert werden, weil dort der Taint nicht existiert.
Die Transaktion lässt sich nicht in Einzelteilen kopieren

Nachher:
[Coins BTC] [Coins BCC]
E(neues Wallet) A
B
C
D

Methode 2 - Taint selbst erstellen:
Code:
[Coins BTC] [Coins BCC]
A A
B B
C C
D D

Transaktion auf BCC-Chain mit Replay Protection durch BIP143 Signatur (SIGHASH_FORKID)
Eingabe: A -> Ausgabe: Adresse aus altem Wallet (F)
Die Transaktion kann nicht auf die BTC-Chain kopiert werden, da der Signaturtyp (SIGHASH_FORKID) dort ungültig ist.

[Coins BTC] [Coins BCC]
A F
B B
C C
D D

Transaktion auf BTC-Chain
Eingaben: A, B, C, D -> Ausgaben: Adresse aus neuem HD Wallet (E)
Transaktion kann nicht auf die BCC-Chain kopiert werden, weil dort die Eingabe "A" nicht mehr existiert.
Die Transaktion lässt sich nicht in Einzelteilen kopieren

Nachher:
[Coins BTC] [Coins BCC]
E(neues Wallet) F
B
C
D


Zum Schluss sollte man auch die Bitcoin-Cash Coins noch in ein neues Wallet überführen, aber dazu kann man sich Zeit lassen, bis es vernünftige Software gibt.
newbie
Activity: 14
Merit: 0
Das mit dem Taint, will irgendwie nicht in meinen Kopf, obwohl ich durchaus in der Lage bin komplexe Software zu verstehen.
Wenn ich mir BTC nach dem Split kaufe, werden sie in einem Block nach dem Split gespeichert, dann sende ich sämtliche Coins (inkl. neuen) mir, an eine neu erstellte Wallet
...da sämtliche BTC jetzt in einem Block nach dem Split sind, heißt das, wenn einer diese Transaktion zu BTCCache kopiert, kann die doch nicht gelingen, da die neuen BTC dort gar nicht mir gehören würden!?

hmm warte mal, oder meint ihr die NEUEN BTC die mir gesendet wurden, sind ja praktisch vom Vorbesitzer auch doppelt da, und könnten bei mir automatisch in der BTCCache Wallet auftauchen?
Dann müsste es aber definitiv mit NEU geminten Coins gehen. Da ist aber dann wieder die Frage wie man die bekommt.

Bin gespannt ob ich es jetzt geschnallt habe.  Undecided
newbie
Activity: 14
Merit: 0
Danke vorerst, für deine Tolle Hilfe!

Eine Anleitung für Electrum kann ich ja schon mal geben.

Anleitung 1 Eine HD-Wallet erstellen

  • ladet euch die Portable Version von der Webseite
  • verschiebt die Datei electrum-???-portable.exe in einen neuen Ordner
  • klickt auf die Datei electrum-???-portable.exe
  • wählt Auto connect ...auf Next klicken
  • gebt der Wallet einen Namen ...Next
  • wählt Standard wallet ...Next
  • wählt Create a new seed ...Next
  • schreibt euch den Seed[1] auf ...Next (diese 12 Wörter (Seed) dürft ihr nicht verlieren)
  • gebt den gerade notierten Seed ein ...Next
  • gebt zwei mal ein Passwort[2] ein ...Next

[1]Wenn ihr den Seed vergesst, ist alles unwiderruflich weg, es sei den ihr habt zusätzlich die Private-Keys von allen Adressen mit Guthaben.
[2]Wenn ihr das Passwort vergesst ist es nicht schlimm, dann muss man einfach die Wallet mit seinem Seed neu erstellen, da kann man dann wieder ein neues Passwort vergeben.
 
 
Es wird nun eine neue HD-Wallet erstellt, rechts unten habt ihr das Preferences Icon da kann man die Sprache usw. einstellen.
Jetzt ist eure HD-Wallet fertig, und ihr könnt sie Benutzen.

Anleitung 2 Eine Watch-Only-Wallet erstellen eine sichere Variante, da die Private Keys nicht im Online-PC sind.

  • als erstes legt ihr auf einem Offline-PC eine normale HD-Wallet nach Anleitung 1 an.
  • dann im Menü auf "Wallet" -> "Öffentliche Generalschlüssel" klicken, und den Master Public Key kopieren für den Online-PC
  • jetzt wieder zu dem Online-PC wechseln
  • ladet euch die Portable Version von der Webseite
  • verschiebt die Datei electrum-???-portable.exe in einen neuen Ordner
  • klickt auf die Datei electrum-???-portable.exe
  • wählt Auto connect ...auf Next klicken
  • gebt der Wallet einen Namen ...Next
  • wählt Standard wallet ...Next
  • wählt Use public or private keys ...Next
  • fügt den Master Public Key ein ...Next

Es wird nun eine neue HD-Watch-Only-Wallet erstellt, rechts unten habt ihr das Preferences Icon da kann man die Sprache usw. einstellen.
Jetzt ist eure Watch-Only-Wallet fertig.
Um Transaktionen zu senden müsst ihr diese an dem Online-PC erstellen und an dem Offline-PC Signieren.
Bedenkt dabei, die Private-Keys auf dem Offline-PC sind nur sicher, wenn der PC nie mit dem Internet in Kontakt kommt, und auch sonst keiner physischen Zugriff bekommt.


Um jetzt eine Transaktion zu erstellen, müsst ihr folgendes machen,

  • am Online-PC eine Transaktion im Senden-Tab erstellen, und auf Vorschau klicken
  • in dem Fenster klickt ihr dann auf Speichern speichert die Datei auf einen USB-Stick
  • wechselt zu Electrum auf dem Offline-PC
  • im Menü "Werkzeuge" -> "Transaktion Laden" die soeben gespeicherte Datei laden
  • auf Signieren und Speichern klicken, speichert die Datei wieder auf dem USB-Stick
  • wechselt zu Electrum auf dem Online-PC
  • im Menü "Werkzeuge" -> "Transaktion Laden" die signierte Datei wieder laden
  • und auf Übertragen klicken

Fertig.

Mit dem Master Public Key kann man sich auch auf Android sein Watch-Only-Wallet einrichten um die Coins zu beobachten, und man hat seine Adressen immer dabei.
Auch wenn das Handy abhanden kommt kann nichts passieren, außer dass denjenige weiß welche Guthaben man hat.

sr. member
Activity: 286
Merit: 251
Extension Blocks <3 Rootstock <3
Nachtrag 27.07.2017:
Momentan sieht es so aus, als ob es eine starke Replay Protection standardmäßig in Bitcoin Cash geben wird.
Das heißt man muss seine Coins nicht vorab splitten.

Seit euch aber weiterhin bewusst, dass es gefährlich ist einfach eure private Keys von Bitcoin in wenig getesteter Bitcoin Cash Software zu nutzen.
Sicherheitslücken in der Bitcoin Cash Software, gefährden dann auch eure normalen Bitcoins.

Um euch zu schützen könnt ihr nach dem Hard Fork am 01. August ein neues Wallet für eure Bitcoins anlegen.
Dann sendet ihr alle eure Bitcoins in das neue Wallet.

Jetzt könnt ihr ohne zusätzliche Gefährdung mit den alten private Keys oder dem alten Seed für ein Bitcoin Cash Wallet nutzen.

Obligatorischer Hinweis:
Nutzt wann immer es möglich ist ein Hardware Wallet oder ein Cold-Storage / Offline Setup um eure Bitcoins maximal zu schützen.





Alte Anleitung:
Vorwort:
Die alten Wallets funktionieren nicht unbedingt mit Bitcoin Cash, weil die bei dem Hard Fork auch die Mining-Difficulty anpassen.
Die OP_Return Replay Protection wird von den meisten Wallets nicht unterstützt oder erfordert zur sicheren Durchführung erweiterte technische Kenntnisse von Bitcoin und im Umgang mit den Clients.

Und BitcoinABC zu nutzen und da die ganzen private Keys auf einem Online-System einzupflegen halte ich für gefährlich.
Falls man gehackt wird kann der Hacker gleich auch die normalen Bitcoins klauen.
Davon abgesehen fehlt bei BitcoinABC und Electrum Cash die Überprüfung durch Sicherheitsexperten.
Ich hätte ein schlechtes Gefühl meine gesamten Bitcoins dem Risiko von schlecht getesteter Software auszusetzen.

Ich kann deswegen keines guten Gewissens eine Anleitung erstellen, bei dem ihr so einem Risiko ausgesetzt seit.
Wenn Ihr Bitcoins in einem Wallet habt, achtet immer darauf, dass das nicht einfach gehackt werden kann.
Verwendet ein Hardware Wallet, oder ein Offline Setup, bei dem ihr die Transaktionen in einem Online-Wallet erstellt und dann auf einem zweiten PC, ohne Netzwerk/Internetzugang signiert. Das geht zum Beispiel mit Armory oder Electrum.

Aufgrund der Schwierigkeiten ist es wohl immer noch eine praktische Variante "Taint" zu verwenden.
Ich würde euch deswegen empfehlen:
Erst die normalen, wertvollen Bitcoins sichern und dann erst Bitcoin Cash anzufassen

Vorbereitung und Voraussetzungen (genaue Beschreibung folgt):
Electrum Software
Adresse für Taint
Neues HD-Wallet um die Coins sauber zu trennen
Offline-Setup (Offline Wallet - Online Wallet - Offline PC) oder Hardware Wallet


Schritt 1:
"Taint" von einer Börse oder einem Freund schicken lassen.

Die aktuell einfachste Variante ist wohl eine beliebige Altcoin vor dem 01. August in einem Wallet zu haben oder ein paar €/$ auf einer Börse zu haben.
Nach dem 01. August kann man das dann einfach gegen Bitcoins tauschen.
Alternativ zu einer Börse könnt ihr natürlich auch einfach Shapeshift oder ähnliche Services nehmen.

Man kann den Taint auch selbst herstellen, allerdings musste ich nachdem ich einige Zeit darüber nachgedacht habe feststellen, das so viele Unbekannte vorhanden sind und unvorhersehbare Dinge passieren können, dass das es unheimlich kompliziert zu beschreiben wird. Wer das selbst machen will, sollte das tun, aber derjenige wird dann auch schon so viel Wissen haben, dass er keine Anleitung mehr braucht.

Schritt 2:
Kontrollieren, ob der "Taint" wirklich vor einem Replay-Angriff geschützt ist
Die Bitcoins die man sich dann von der Börse auszahlen lässt sollten bereits gegen Replay-Angriffe geschützt sein und sind deswegen als Taint geeignet.
Als Empfangsadresse verwendet ihr eine Adresse aus eurem Wallet.
Das kann auch eine Adresse sein, auf die ihr bereits andere Beträge empfangen habt.

In einem Block-Explorer für Bitcoin und einem für Bitcoin Cash sollte man dann überprüfen, ob die Bitcoins tatsächlich Replay geschützt sind.
Das erkennt man daran, dass die Kombination aus den Inputs für die Transaktion auf der anderen Kette unmöglich ist.

Es gibt aktuell noch keine entsprechenden Block Explorer für Bitcoin Cash, oder keinen Service, bei dem man überprüfen kann, ob die erhaltenen Bitcoins wirklich als sauberer "Taint" geeignet sind.
Ich werde den Beitrag noch überarbeiten und ein Beispiel machen, bei dem das erkennbar wird.

Wenn ihr euch nicht sicher seit, ob eure Bitcoins als Taint geeignet sind - fragt hier im Forum nach unter Angabe eurer Empfangsadresse und der Transaktions-ID.
Leider verliert ihr dadurch ein Stück Privatsphäre. Denn wenn ihr später diese Bitcoins als "Taint" benutzt, wird offensichtlich, welche Bitcoins euch gehören. -> ggf. also per PM oder eine Person des Vertrauens fragen.

Wenn die Bitcoins nicht als "Taint" geeignet sind, versucht es noch einmal -> Zurück zu Schritt 1.

Schritt 3:
Eine Transaktion mit dem Taint und den eigenen Bitcoins erstellen.
Bei Electrum geht das recht einfach.
Unter dem Eintrag "Coins" könnt ihr alles sehen, was ihr an Bitcoins empfangen und noch nicht wieder ausgegeben habt.
Stellt sicher, dass der "Taint" dort auch aufgelistet ist und bereits einige Bestätigungen hat.

Unter "Senden" nutzt als Empfänger eine noch nicht benutzte Adresse von euch schicken.
Falls ihr ein HD Wallet benutzt (12 Wörter zum Wiederherstellen), bei dem automatisch neue Adressen generiert werden, sollte die Adresse von einem neuen HD Wallet sein.
Das schützt euch vor dem Fall, dass euer Bitcoin Cash Wallet und Bitcoin Wallet nicht gleichzeitig gehackt werden können.

Als Betrag wählt ihr den maximalen Betrag - damit ist auch der Taint in eurer Transaktion enthalten.
Wenn ihr "Vorschau" drückt könnt ihr unter Eingänge nachprüfen, dass auch euer Taint enthalten ist.

...Transaktion signieren
...Transaktion veröffentlichen
...Warten, bis die Transaktion einige Bestätigungen hat.
Eure Bitcoins und die Bitcoin Cash Coins sind jetzt vor Replay Angriffen geschützt.

Schritt 4:
Jetzt könnt ihr auf eure Bitcoin Cash Coins zugreifen.
Selbst wenn die Software die ihr dafür verwendet eine Sicherheitslücke oder Fehlfunktion hat, bleiben eure normalen Bitcoins geschützt.

Ich werde die Anleitung laufend überarbeiten und verbessern.
Vor allem, wie ihr ein "Watch-Only-Wallet" mit Electrum erstellen könnt oder eure Private Keys, bzw. den Master Key importiert.
sr. member
Activity: 286
Merit: 251
Extension Blocks <3 Rootstock <3
[1] Ich nehme an TX auf andere Chain kopieren benötigt Zeit, was z.B, nicht gilt wenn ein Miner den Angriff durchführt und auf beiden Ketten den nächsten Block findet.
Das wird schwer, weil der Header ja den Hash des vorherigen Blocks enthält.
Ist die Frage, was für einen Anreiz die Miner haben - grundsätzlich können die so auf jeden Fall mehr Gebühren kassieren.

Ich bin mir nicht mal sicher, ob BitcoinABC normale Transaktionen auf dem P2P Layer als Non-Std. Tx markiert.
Die Dokumentation von BitcoinABC und Bitcoin Cash ist einfach schlecht.

Habe es noch nicht geschafft das fertig zu machen - Electrum hat einen Bug, der mich daran gehindert hat.
Wenn man Leerzeichen in Private Keys hat, sieht es zunächst im Importieren Dialog so aus, als ob er den Private Key lesen könnte, danach bleibt er aber hängen, ohne einen Fehler zu melden.

Wenn man die Leerzeichen entfernt, klappt es.

Wir haben ja noch ein bisschen Zeit, bis man überhaupt etwas gegen Replay Protection machen kann ;o)
copper member
Activity: 1498
Merit: 1528
No I dont escrow anymore.
Danke dir,
Quote
Man muss also die Coins nach dem Fork in beiden Chains auf unterschiedliche Zieladressen bekommen

Wie mache ich das?
Ich transferiere also BTC zB. zu Adresse x1111, und BTCC zu Adresse x2222.

So wie ich es jetzt verstanden habe gibt es für die BTCC Transaktion 2 Möglichkeiten.
1.) es geht gut dann liegen die BTCC auf einer anderen Zieladresse wie BTC, dann sind die Coins erfolgreich getrennt und ich habe ab da 2 UNABHÄNGIGE Coins, richtig?
2.) die BTCC landen auf der selben Adresse wie BTC, nur halt auf der BTCC-Chain. ich verliere nur die Gebühren, und muss es nochmal probieren.

3.) wenn 2. eintritt, wäre mein versuch die BTCC zu einer anderen Adresse wie BTC zu senden, praktisch ein double spend, weil schon die BTC Transaktion ins BTCC Netzwerk kopiert wurde, richtig?

Richtig. Daher bietet es sich auch an die Übertragung der Coins möglichst zeitgleich durchzufühen. Das erschwert den Replay Angriff, da er zeitgleich zu einem Double-Spend Angriff wird. Ein Double-Spend mit identischer Gebühr und verspätetem senden[1] hat wenig Aussicht auf Erfolg.

4.) wenn 3. eintritt, müsste ich die BTCC doch dann nur noch 1x zu einer anderen Adresse von mir senden (weil diese dann schon in einem Block NACH dem Split liegen), und spätestens dann wäre es fertig, oder?

Oder liege ich wieder Falsch?
Könntest du mir mal im Detail sagen wie du das machen würdest?

Nein, sie liegen ja jetzt auf beiden Ketten wieder auf der selben Adressen wodurch ein Replay-Angriff überhaupt erst möglich wird (weil eben die selbe Signatur gültig ist).

[1] Ich nehme an TX auf andere Chain kopieren benötigt Zeit, was z.B, nicht gilt wenn ein Miner den Angriff durchführt und auf beiden Ketten den nächsten Block findet.
newbie
Activity: 14
Merit: 0
Danke dir,
Quote
Man muss also die Coins nach dem Fork in beiden Chains auf unterschiedliche Zieladressen bekommen

Wie mache ich das?
Ich transferiere also BTC zB. zu Adresse x1111, und BTCC zu Adresse x2222.

So wie ich es jetzt verstanden habe gibt es für die BTCC Transaktion 2 Möglichkeiten.
1.) es geht gut dann liegen die BTCC auf einer anderen Zieladresse wie BTC, dann sind die Coins erfolgreich getrennt und ich habe ab da 2 UNABHÄNGIGE Coins, richtig?
2.) die BTCC landen auf der selben Adresse wie BTC, nur halt auf der BTCC-Chain. ich verliere nur die Gebühren, und muss es nochmal probieren.

3.) wenn 2. eintritt, wäre mein versuch die BTCC zu einer anderen Adresse wie BTC zu senden, praktisch ein double spend, weil schon die BTC Transaktion ins BTCC Netzwerk kopiert wurde, richtig?
4.) wenn 3. eintritt, müsste ich die BTCC doch dann nur noch 1x zu einer anderen Adresse von mir senden (weil diese dann schon in einem Block NACH dem Split liegen), und spätestens dann wäre es fertig, oder?

Oder liege ich wieder Falsch?
Könntest du mir mal im Detail sagen wie du das machen würdest?
sr. member
Activity: 350
Merit: 251
Dolphie Selfie
Nochmal kurz als TL;DR:
Ohne Replay-Protection musst du damit rechnen, dass alle Transaktionen die du in BTC ausführst parallel auch in BTCCash erfolgen und umgekehrt.

Noch ein kleine Frage zu Taint,
1.) bekomme ich Taint   ...wenn ich mir NEUE Bitcoin kaufe NACH dem Split?
2.) bekomme ich Taint   ...durch selber minen?
3.) sind Taint                ...neu erzeugte Coins (Block-Reward), bzw. wie bekommt man die dann?

1.) Das kommt auf den Verkäufer an. Wenn der die Coins bereits entsprechend getainted hat, dann kaufst du den Taint mit. Bei einem Exchange kommt es auf die Coins an, die dir der Exchange schickt, wenn du sie von deinem Konto dort zu einer eigenen Wallet schickst.
2.) Ja, aber nur, wenn der Blockheader oder wenigstens die Regeln der beiden Chains unterscheidbar sind. Das ist bei BTCCash der Fall. Hätte der Fork mit BU stattgefunden, wären die neu geminten Coins erst getainted, sobald der Core Client die BU Blöcke nicht mehr akzeptiert (z.B. weil zu groß).
3.) Tainted Coins sind Coins, deren Historie in einer der beiden Chains ungültig ist. Man muss also die Coins nach dem Fork in beiden Chains auf unterschiedliche Zieladressen bekommen, damit man die parallele Verarbeitung in beiden Chains in Zukunft los wird.
newbie
Activity: 14
Merit: 0
Danke, Jetzt versteh ich es gut.
Habe deinen Vorschlag für den Titel übernommen, Danke.

Quote
Dann verliert man aber nur die Transaktionsgebühren
Ok das ist dann natürlich, mal "nicht" schlimm.

Quote
Ich kann heute oder morgen mal eine ausführliche Anleitung machen, falls das bis dahin noch niemand gemacht hat.
Das wäre richtig Toll, würde mich sehr Freuen, Danke dir im voraus.

Noch ein kleine Frage zu Taint,
1.) bekomme ich Taint   ...wenn ich mir NEUE Bitcoin kaufe NACH dem Split?
2.) bekomme ich Taint   ...durch selber minen?
3.) sind Taint                ...neu erzeugte Coins (Block-Reward), bzw. wie bekommt man die dann?


...und vielen Dank dass du so geduldig mit mir bist, und dir die Zeit nimmst.

sr. member
Activity: 286
Merit: 251
Extension Blocks <3 Rootstock <3
Vielen Dank, jetzt wird mir einiges klarer.

Quote
Könntest du bitte den Thread Titel aktualisieren, damit auch andere das leichter finden können?
Hast du einen Vorschlag, was am besten passt?
Wie wäre es mit "Wie schütze ich mich vor Verlust von Bitcoins durch einen Replay Angriff?"

Quote
Quote
Wenn du BitcoinCash komplett ignorierst, dann kann deinen Bitcoins auch nichts passieren.
Damit habe ich aber auch noch so meine Probleme.
Es ist zwar beruhigend zu wissen dass den BTC nichts passieren kann, aber auch nur dann wenn der BTC seine "Popularität" behält.
Was ist wenn der BTCCash seinen Platz einnimmt, und BTC "verhungert" dann haben viele ein Problem, wenn sie durch falsche Handhabung zwar ihre BTC (die dann nichts mehr Wert sind) noch haben, aber ihre BTCCash (die dann etwas Wert wären) verloren haben.

Was muss man dann genau machen um keinen Schaden zu erleiden und, dass man beide Coins SICHER hat, denn wie soll folgendes z.B. ein Laie machen,
Quote
Entweder man lässt sich Taint schicken, das geht am einfachsten mit Bitcoin, die neu gemined wurden, oder man stellt diese selber her
denn so wie ich das verstehe bedeutet es, ich brauche BTC und BTCCash vom jeweiligen Block-Reward, oder muss selber minen. Wie soll das gehen, für einen Otto-Normal-User ?

Das ist immer alles natürlich theoretisch möglich, dazu müsste aber noch einiges passieren.
Ich kann heute oder morgen mal eine ausführliche Anleitung machen, falls das bis dahin noch niemand gemacht hat.

Quote
Quote
Deswegen sendet man in beiden Netzen mit einem kleinen Betrag (zum Beispiel mit dem gleichen UTXO-Eintrag als Input) zwei unterschiedliche Transaktionen, oder nutzt Mechanismen, wie RBF, die nur auf einer Chain funktionieren.
Das erstellen des Taints ist aber ein bisschen Glückssache, und erfordert unter Umständen mehrere Versuche.
Ich lese hierbei raus dass es Glückssache ist ob ich Coins verliere oder nicht, das ist meiner Meinung nach aber keine Option mit der einer einverstanden sein kann.
Ist der "kleine Betrag" zum Testen gedacht?
Ich muss ja dann noch die restlichen Coins sicher Senden, dann ist es ja wieder Glückssache oder?

Ich merke gerade, ich glaube ich habe es noch immer nicht ganz verstanden.
Die Antwort auf Frage 5 "man kann theoretisch ALLES verlieren" ist eigentlich der Supergau, wenn das vielen "Laien" passiert, dann ist es doch aus und vorbei mit Kryptowährungen im allgemeinen. Die Schlagzeilen wären Niederschmetternd
...oder denke ich zu kompliziert Shocked

Vllt, könntest du eine Schritt für Schritt Anleitung für Electrum geben wenn du Zeit und Lust hast.
Die Folge wäre wohl vor allem für BitcoinABC schlecht, denn die Leute werden das nicht so gerne benutzen wollen, wenn da Ihre Coins aus irgendwelchen technischen Gründen verschwunden sind.

Aber eins vorab - es ist keine Glückssache, ob man seine Coins oder verliert, wenn man sich selbst den Taint erstellt.
Es kann aber passieren, dass man mehrere Versuche braucht, wenn man dafür keine Methode verwendet, die selbst gegen den Replay-Angriff gewappnet ist.
Dann verliert man aber nur die Transaktionsgebühren, die man bei dem Versuch eingesetzt hat - also irgendwo etwas im niedrigen einstelligen €-Cent bereich.

Und da du vor dem Chain Split (1.August) dir noch keinen Taint erstellen kannst, bzw. deine Coins splitten kannst haben wir ja noch ein paar Tage Zeit Smiley

Ich hab Electrum noch nie benutzt, würde die Anleitung erstmal für Bitcoin Core und BitcoinABC erstellen - Aber wenn mir jemand ein kleines Trinkgeld spendiert, mach ich mir auch mal die Mühe das für Electrum zu schreiben.

Grundsätzlich gibt es die Anleitung für Electrum ja schon auf Englisch:
http://docs.electrum.org/en/latest/hardfork.html
newbie
Activity: 14
Merit: 0
Vielen Dank, jetzt wird mir einiges klarer.

Quote
Könntest du bitte den Thread Titel aktualisieren, damit auch andere das leichter finden können?
Hast du einen Vorschlag, was am besten passt?



Quote
Wenn du BitcoinCash komplett ignorierst, dann kann deinen Bitcoins auch nichts passieren.
Damit habe ich aber auch noch so meine Probleme.
Es ist zwar beruhigend zu wissen dass den BTC nichts passieren kann, aber auch nur dann wenn der BTC seine "Popularität" behält.
Was ist wenn der BTCCash seinen Platz einnimmt, und BTC "verhungert" dann haben viele ein Problem, wenn sie durch falsche Handhabung zwar ihre BTC (die dann nichts mehr Wert sind) noch haben, aber ihre BTCCash (die dann etwas Wert wären) verloren haben.

Was muss man dann genau machen um keinen Schaden zu erleiden und, dass man beide Coins SICHER hat, denn wie soll folgendes z.B. ein Laie machen,
Quote
Entweder man lässt sich Taint schicken, das geht am einfachsten mit Bitcoin, die neu gemined wurden, oder man stellt diese selber her
denn so wie ich das verstehe bedeutet es, ich brauche BTC und BTCCash vom jeweiligen Block-Reward, oder muss selber minen. Wie soll das gehen, für einen Otto-Normal-User ?

Quote
Deswegen sendet man in beiden Netzen mit einem kleinen Betrag (zum Beispiel mit dem gleichen UTXO-Eintrag als Input) zwei unterschiedliche Transaktionen, oder nutzt Mechanismen, wie RBF, die nur auf einer Chain funktionieren.
Das erstellen des Taints ist aber ein bisschen Glückssache, und erfordert unter Umständen mehrere Versuche.
Ich lese hierbei raus dass es Glückssache ist ob ich Coins verliere oder nicht, das ist meiner Meinung nach aber keine Option mit der einer einverstanden sein kann.
Ist der "kleine Betrag" zum Testen gedacht?
Ich muss ja dann noch die restlichen Coins sicher Senden, dann ist es ja wieder Glückssache oder?

Ich merke gerade, ich glaube ich habe es noch immer nicht ganz verstanden.
Die Antwort auf Frage 5 "man kann theoretisch ALLES verlieren" ist eigentlich der Supergau, wenn das vielen "Laien" passiert, dann ist es doch aus und vorbei mit Kryptowährungen im allgemeinen. Die Schlagzeilen wären Niederschmetternd
...oder denke ich zu kompliziert Shocked

Vllt, könntest du eine Schritt für Schritt Anleitung für Electrum geben wenn du Zeit und Lust hast.
Pages:
Jump to: