Bitcoin Forum
May 12, 2024, 10:07:42 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: 1 2 [All]
  Print  
Author Topic: Wie schütze ich mich vor Verlust von Bitcoins durch einen Replay Angriff?  (Read 1239 times)
raay (OP)
Newbie
*
Offline Offline

Activity: 14
Merit: 0


View Profile
July 19, 2017, 01:40:10 PM
Last edit: July 20, 2017, 12:20:14 PM by raay
 #1

Ich habe mich schon relative gut eingelesen, wie ich meine. Bin aber noch weit von einem Profi entfernt. Grin
Kenne mich mit PHP, Javasript, SQl, NodeJS, HTML, CSS, .... aus, auch mit Verschlüsselung, GIT, Webserver ... usw.

Aber die Sache mit der "Replay Protection" verstehe ich nicht.
Extrem vorsichtig musst du sein, wegen der Replay Protection sein.
Wie hier angedeutet.

Angenommen es gibt einen Chain-Split also es existieren 2 getrennte Coins. BTC und BTCCash

Dann würde ich mit Elecrum so vorgehen:

Ich erstelle ein Kopie des ganzen Electrum Ordner (portable Version), stelle jeden Electrum so ein dass er sich mit dem richtigen Node verbindet, damit er die richtige Chain bekommt,
  ElectrumA mit dem BTC-OLD (BTC)
  ElectrumB mit dem BTC-NEW (BTCCash)

Da bei beiden die Blöcke bis zum Split gleich sind, habe ich auch in beiden Elektrum die gleiche Anzahl von Coins.

Wenn ich nach dem Split mit ElectrumA eine Transaktion mache, wie soll es dann möglich sein dass es in der B-Chain auch auftaucht oder umgekehrt?
Wenn doch beide unabhängig auf verschiedene Chains "horchen" und in verschiedenen Ordnern installiert sind.

Das will nicht in meinen Kopf rein.

Danke schon mal vorab.
 
BitcoinCleanup.com: Learn why Bitcoin isn't bad for the environment
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1715508462
Hero Member
*
Offline Offline

Posts: 1715508462

View Profile Personal Message (Offline)

Ignore
1715508462
Reply with quote  #2

1715508462
Report to moderator
hodlcoins
Legendary
*
Offline Offline

Activity: 1100
Merit: 1058


View Profile
July 19, 2017, 02:57:13 PM
 #2

Da B in der Blockchain sehen kann, das die alten Schlüssel benutzt werden, von wem auch immer.
Du kannst ja auch so die gleiche Wallet auf mehreren Geräten nutzen, eine Transaktion auf einem Gerät erscheint automatisch auch auf allen anderen.
Das einzige: evt. eingetragene Adressbuchnamen und später auch Wechselgeldadressen werden natürlich nicht synchronisiert, sind also evtl. irgendwann unterschiedlich.

Alles wird gut, die Frage ist nicht ob, nur wann!
raay (OP)
Newbie
*
Offline Offline

Activity: 14
Merit: 0


View Profile
July 19, 2017, 03:24:56 PM
Last edit: July 19, 2017, 04:04:54 PM by raay
 #3

Danke mal vorab.

Das heißt BTCCash (B) schaut in die neuen Blöcke von BTC (A) ?  (also in einem Block NACH dem Split)
Warum ist das so?

Das wäre ja so als würde LTC in die Chain von BTC schauen.
Das ist dass was ich nicht verstehe.

BTC und BTCCash sind doch dann genauso wie BTC und LTC, was geht dem einen die Chain des ANDEREN Coins an? (bildlich gesprochen)

Quote
Du kannst ja auch so die gleiche Wallet auf mehreren Geräten nutzen, eine Transaktion auf einem Gerät erscheint automatisch auch auf allen anderen.
Ja aber doch nur wenn beide auf dieselbe Chain blicken!?

Bei einem Split wo 2 Coins herauskommen sind es ab dem Split-Block 2 VERSCHIEDENE Chains wie z.B. bei LTC und BTC.
flipperfish
Sr. Member
****
Offline Offline

Activity: 350
Merit: 251


Dolphie Selfie


View Profile
July 19, 2017, 04:13:10 PM
 #4

Theoretisch hast du recht: Wenn die Clients der jeweiligen Chains nach dem Split nicht mehr miteinander reden, kommt eine Transaktion von Chain A nicht in Chain B. Praktisch musst du aber damit rechnen, dass ein geminer *haha* ((C) 2017 _hv) auf beiden Chains einen Client betreibt und diese beiden Clients miteinander über ein selbst gestricktes Gateway verbindet. Dadurch gelangen Transaktionen gedacht für Chain A ins P2P-Netz von Chain B und umgekehrt. Da die Transaktionen an sich auf beiden Chains gültig sind (TxIn im UTXO, Signatur gültig, ...), wird die Transaktion in beiden Chains gemined und damit Teil beider Chains.

Der Wortwitz mit den gemeinen Minern oben kommt auch nicht von ungefähr: Da die Miner diejenigen sind, die die Transaktionsgebühr bekommen, haben sie auch ein entsprechendes Interesse daran, möglichst viele Transaktionen für ihren Block zu bekommen.
raay (OP)
Newbie
*
Offline Offline

Activity: 14
Merit: 0


View Profile
July 19, 2017, 04:49:34 PM
Last edit: July 19, 2017, 05:03:34 PM by raay
 #5

Vielen Dank jetzt habe ich es glaub ich verstanden.
Also nochmal zur absicherung ein paar Fragen:

a.) wenn ich Electrum in 2 Verschiedenen Ordner betreibe und richtig einstelle (wie oben erklärt), ist alles richtig von meiner Seite aus?
b.) ich könnte dann mit beiden Clients meine Coins so behandeln wie wenn es z.B. LTC und BTC wäre?

Und jetzt kommt das was ich bis jetzt nicht verstanden habe:
c.) wenn ein Miner betrügen will dann nimmt er die (TxIn im UTXO, Signatur) meiner Transaktion von CoinA und macht damit eine Transaktion mit CoinB ohne mein zutun?


d.) deshalb kommt immer der Rat, man soll seine "alten" BTC mit einen "neuen" BTC gemeinsam an eine neue eigene Adresse senden, weil der Miner dann diese (TxIn im UTXO, Signatur) NICHT für CoinB verwenden kann?
e.) bei einem neunen BTC ist gemeint, dass dieser in einem Block NACH dem Splitt liegt?
f.) ist TAINT der Begriff ...für das senden "alter" mit den "neuen" Coins, in einer gemeinsamen Transaktion?

g.) wenn ich CoinA aber auf eine Adresse von mir sende ohne zu mischen, könnte der "gemeine" Miner die zwar kopieren, es würde aber der CoinB auch wieder auf meiner Adresse landen, dann halt in ChainB, dann habe ich doch eigentlich keinen Schaden?
h.) wenn ich mit Punkt g.) richtig liege, für was muss ich dann "Mischen", ich müsste doch einfach nur alle CoinsA 1 Mal an mich senden?
i.) das einzige was passieren kann, ist dass ein "gemeiner" Miner mir die Arbeit abnimmt und mir meine CoinB, an meine Adresse auf ChainB sendet?

MoinCoin
Sr. Member
****
Offline Offline

Activity: 286
Merit: 251


Extension Blocks <3 Rootstock <3


View Profile
July 19, 2017, 05:00:46 PM
Last edit: July 19, 2017, 05:24:03 PM by MoinCoin
 #6

Taint im Zusammenhang mit Bitcoin hat mehrere Bedeutungen
Bei Replay Protection geht es darum einen UTXO Eintrag zu nutzen, den es nur auf einer Chain gibt.

Der Taint ist der einzigartige UTXO Eintrag, den mal als Input in einer Transaktion benutzt.

Der Prozess wird dann Tainting genannt, weil es die Transaktion auf der anderen Chain ungültig macht, da normalerweise die Signaturen einer Transaktion alle Inputs abdecken (SIGHASH_ALL).

Die Transaktion ist also dann ungültig auf der anderen chain, weil sie "tainted" (verdorben, beschmutzt) ist durch den einzigartigen UTXO Eintrag als zusätzlichen Input.


zu deiner Frage:
Entweder man lässt sich Taint schicken, das geht am einfachsten mit Bitcoin, die neu gemined wurden, oder man stellt diese selber her, wobei es da passieren kann, dass die Transaktion auf beiden Ketten ausgeführt wird. 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.

Edit:
a) ja
b) ja
c) Der Miner kann nicht wissen, ob die Transaktion absichtlich war oder nicht - Irgendwer hat die gesamte Transaktion einfach ins andere Netzwerk kopiert
d) e) f) siehe oben

g) ggf. braucht man mehrere Versuche
h) ich würde einfach nur einen einzigen Input erstmal verwenden -> Damit ist die Transaktionsgröße am geringsten und du verbrauchst am wenigsten Gebühren, falls es fehlschlägt
i) genau

Tip: 1P4yZF9b9w2Sy7PXV5AC1RQ8rQ4RoacYG2
raay (OP)
Newbie
*
Offline Offline

Activity: 14
Merit: 0


View Profile
July 19, 2017, 05:19:02 PM
Last edit: July 19, 2017, 06:46:05 PM by raay
 #7

Danke, für deine ausführlichen Erklärungen.

Ich verstehe es schon besser.
In erster Linie geht es mir selbst darum es "lückenlos" zu verstehen, aber in zweiter Linie auch darum dass es ganz "normale" Menschen verstehen.

Deshalb noch hätte ich noch ein paar Fragen:

Wenn ich ein Mensch wäre der Bitcoin bei einem Automaten gekauft hätte, und sich diese auf eine Adresse gesendet hätte, die ich mit Electrum verwalte, und ich nichts von einem Split mitbekomme.
Ich so wie der Großteil der Menschen wäre die kein Ahnung von Kryptographie, programmieren usw. hätte, und folgendes machen würde:

Nehmen wir an ich besitze 2 Bitcoin.

Ich mach nichts anderes als sonst auch, (habe ja keine Ahnung davon) mach einfach nur eine Transaktion wie sonst auch.
Ich überweise NACH dem Splitt 1 Bitcoin an einen fremden, was kann passieren bzw. im schlimmsten Fall.


1.) ich habe noch 1 BTC auf meiner Wallet, und der fremde hat auch 1 BTC? (wäre Ok)
2.) ich habe 2 BTCCash auf einer Chain (die ich aber erst mit zB. ElectrumCash verwalten kann, auch wenn ich es erst in 1 Jahr verstehe)? (wäre Ok)
3.) ich habe 1 BTCCash auf einer Chain und der fremde hätte auch 1 BTCCash? (wäre nicht Ok)
4.) ich habe NUR noch 1 BTC auf meiner Wallet, und der BTCCash ist weg, weil ich durch meine Unwissenheit, nicht das richtige unternommen habe? (wäre nicht Ok)
5.) ich habe kein BTC und kein BTCCash (wäre nicht Ok)
6.) Oder kurz gesagt ich könnte KEINE BTC verlieren aber dafür ALLE BTCCash? (wäre je nach Entwicklung der beiden Coins u.U. auch nicht Ok)

Wenn irgendetwas sein KANN das man Geld verliert, abseits von Kursschwankungen, ich meine nur weil man sich in der komplexen Materie nicht auskennt, würde das meiner Meinung nach einen schweren Schaden in das Vertrauen der Kryptowährung nach sich ziehen.

Quote
c) Der Miner kann nicht wissen, ob die Transaktion absichtlich war oder nicht - Irgendwer hat die gesamte Transaktion einfach ins andere Netzwerk kopiert
7.) wenn das so ist wer kann das machen, ich meine wer ist "Irgendwer", es kann doch nur ICH ein NODE-Betreiber oder ein MINER sein, oder?
8.) ich meine ICH selber werde mich nicht Betrügen, also kann es nur ein NODE-Betreiber oder ein MINER sein?

Das ist auch einer der Gründe warum ich so perplex bin, wenn ich lese man kann Bitcoins verlieren wenn man etwas nicht beachtet, von dem die meiste gar nichts wissen werden.
Das Bitcoin-System wird als SEHR sicher beschrieben weil man eben nicht leicht Betrügen kann, bzw. viel Rechenkraft braucht (51%).
Aber wenn jetzt ein Miner oder NODE-Betreiber die ja die Grundbausteine des Systems sind, nicht vertrauen kann weil sie doch leich betrügen können, ist doch das ganze Absurd.

Ok ich weiß das Kryptowährung weit davon entfernt ist Massentauglich zu sein.


MoinCoin
Sr. Member
****
Offline Offline

Activity: 286
Merit: 251


Extension Blocks <3 Rootstock <3


View Profile
July 19, 2017, 07:40:14 PM
Last edit: July 19, 2017, 07:57:18 PM by MoinCoin
 #8

Also was kann passieren, wenn du keine Replay Protection verwendest:
1) Ja das sollte klappen, solange du die BitcoinCash nicht anfasst
2) kann funktionieren, muss aber nicht
3) kann passieren und zwar auch noch Wochen oder Monate später, wenn der Fremde nicht mehr die Kontrolle über die Adresse hat - die BTCCash wären dann wohl verloren
4) indirekt ja - es kann sein, dass du 1 BitcoinCash nicht siehst, also er dir 0 anzeigt und du deiner Software manuell beibringen musst, wie sie den BtcCash findet, weil es in eine Change Adresse/Output gesendet wurde
5) kann passieren, wenn du jeweils 1 BTC und 1 BTCCash ohne Replay Protection versendest - dann hast du, wenn du Pech hast 0 BTC und 0 BTCCash
6) kann passieren

7/8) Das Bitcoin Netzwerk besteht aus tausenden Nodes, die miteinander verbunden sind - Einige Nodes sind an Mining-Pools angeschlossen. Nur irgendeiner der tausenden Nodes muss die Transaktion in das andere Netzwerk kopieren, entweder passiert das unabsichtlich durch fehlerhafte Software, die die Bitcoin P2P Netze nicht unterscheiden kann, oder irgendwo auf der Welt sitzt jemand, der das absichtlich macht.
Das muss auch nicht sofort passieren, sondern kann auch noch Jahre später passieren, solange die Transaktion eben im anderen Netzwerk noch gültig ist.

Wenn du einen Entwickler von Bitcoin Core fragst, dann wird der dir auch sagen, dass das absurd ist, weil die anderen keine ausreichende Replay Protection eingebaut haben. Wenn du BitcoinCash komplett ignorierst, dann kann deinen Bitcoins auch nichts passieren.

Die Entwickler von BitcoinABC / BitcoinCash / UAHF haben das in Kauf genommen.
Die Entwickler vom alten Bitcoin können da nichts gegen machen.

Ein Chain Split ist schon ein besonderes Ereignis, dass sehr großes Chaos auslöst und deswegen von sehr vielen abgelehnt wird. Trotzdem steht es jedem frei jederzeit einen Hard Fork von Bitcoin zu machen - es ist eben ein offenes System. Verhindern oder verbieten lässt sich das nicht.

Hoffentlich müssen wir nie wieder einen Chain Split erleben.

Edit:
Könntest du bitte den Thread Titel aktualisieren, damit auch andere das leichter finden können?  Wink

Tip: 1P4yZF9b9w2Sy7PXV5AC1RQ8rQ4RoacYG2
raay (OP)
Newbie
*
Offline Offline

Activity: 14
Merit: 0


View Profile
July 20, 2017, 01:17:40 AM
Last edit: July 20, 2017, 10:31:15 AM by raay
 #9

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.
MoinCoin
Sr. Member
****
Offline Offline

Activity: 286
Merit: 251


Extension Blocks <3 Rootstock <3


View Profile
July 20, 2017, 12:10:37 PM
 #10

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

Tip: 1P4yZF9b9w2Sy7PXV5AC1RQ8rQ4RoacYG2
raay (OP)
Newbie
*
Offline Offline

Activity: 14
Merit: 0


View Profile
July 20, 2017, 12:45:43 PM
 #11

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.

flipperfish
Sr. Member
****
Offline Offline

Activity: 350
Merit: 251


Dolphie Selfie


View Profile
July 20, 2017, 05:28:30 PM
 #12

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.
raay (OP)
Newbie
*
Offline Offline

Activity: 14
Merit: 0


View Profile
July 21, 2017, 02:58:55 PM
 #13

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?
shorena
Copper Member
Legendary
*
Offline Offline

Activity: 1498
Merit: 1520


No I dont escrow anymore.


View Profile WWW
July 22, 2017, 08:21:49 PM
 #14

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.

Im not really here, its just your imagination.
MoinCoin
Sr. Member
****
Offline Offline

Activity: 286
Merit: 251


Extension Blocks <3 Rootstock <3


View Profile
July 22, 2017, 08:57:18 PM
 #15

[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)

Tip: 1P4yZF9b9w2Sy7PXV5AC1RQ8rQ4RoacYG2
MoinCoin
Sr. Member
****
Offline Offline

Activity: 286
Merit: 251


Extension Blocks <3 Rootstock <3


View Profile
July 24, 2017, 11:30:41 PM
Last edit: July 27, 2017, 09:19:08 PM by MoinCoin
 #16

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.

Tip: 1P4yZF9b9w2Sy7PXV5AC1RQ8rQ4RoacYG2
raay (OP)
Newbie
*
Offline Offline

Activity: 14
Merit: 0


View Profile
July 25, 2017, 12:45:51 PM
Last edit: July 25, 2017, 01:25:13 PM by raay
 #17

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.

raay (OP)
Newbie
*
Offline Offline

Activity: 14
Merit: 0


View Profile
July 25, 2017, 01:46:02 PM
 #18

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
MoinCoin
Sr. Member
****
Offline Offline

Activity: 286
Merit: 251


Extension Blocks <3 Rootstock <3


View Profile
July 25, 2017, 02:12:04 PM
 #19

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.

Tip: 1P4yZF9b9w2Sy7PXV5AC1RQ8rQ4RoacYG2
mezzomix
Legendary
*
Offline Offline

Activity: 2618
Merit: 1253


View Profile
July 25, 2017, 02:16:54 PM
 #20

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.
MoinCoin
Sr. Member
****
Offline Offline

Activity: 286
Merit: 251


Extension Blocks <3 Rootstock <3


View Profile
July 25, 2017, 04:32:14 PM
 #21

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.

Tip: 1P4yZF9b9w2Sy7PXV5AC1RQ8rQ4RoacYG2
raay (OP)
Newbie
*
Offline Offline

Activity: 14
Merit: 0


View Profile
July 25, 2017, 05:32:20 PM
 #22

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.
shorena
Copper Member
Legendary
*
Offline Offline

Activity: 1498
Merit: 1520


No I dont escrow anymore.


View Profile WWW
July 25, 2017, 05:43:32 PM
 #23

-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.

Im not really here, its just your imagination.
MoinCoin
Sr. Member
****
Offline Offline

Activity: 286
Merit: 251


Extension Blocks <3 Rootstock <3


View Profile
July 25, 2017, 06:55:53 PM
 #24

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.

Tip: 1P4yZF9b9w2Sy7PXV5AC1RQ8rQ4RoacYG2
shorena
Copper Member
Legendary
*
Offline Offline

Activity: 1498
Merit: 1520


No I dont escrow anymore.


View Profile WWW
July 25, 2017, 07:07:19 PM
Last edit: July 26, 2017, 11:41:44 AM by shorena
 #25

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.

Im not really here, its just your imagination.
raay (OP)
Newbie
*
Offline Offline

Activity: 14
Merit: 0


View Profile
July 26, 2017, 10:45:52 AM
 #26

https://electrum.org/bcc.txt
coinling
Sr. Member
****
Offline Offline

Activity: 431
Merit: 251


View Profile
July 27, 2017, 08:33:27 PM
 #27

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."

MoinCoin
Sr. Member
****
Offline Offline

Activity: 286
Merit: 251


Extension Blocks <3 Rootstock <3


View Profile
July 27, 2017, 09:05:49 PM
 #28

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.



Tip: 1P4yZF9b9w2Sy7PXV5AC1RQ8rQ4RoacYG2
Pages: 1 2 [All]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!