Title: BTCCollider question Post by: Kostelooscoin on February 10, 2021, 04:48:02 PM Hello I would like to know how BTCCollider works (https://github.com/JeanLucPons/BTCCollider)
how does he manage to find these 2 addresses: Collision: 60 bits Priv (WIF): p2pkh:L3K5y3LyKXUCmSmpptJrAG5w6o9r6YbfBQyWATV5gyhQ5dwq8moB Priv (WIF): p2pkh:L3K5y3LyKXUCmSmpptJrAG5w6o9r6YbfBQxC9tihuggxfWGSwDY6 Add1: 12DgBEott9LiyPWspyZfY7K2EWv79498u2 Add2: 12DgBEott9LpupgZkw1fKKKK8pYPMoPatY6 is it random or does it start from one point to the next? Title: Re: BTCCollider question Post by: NotATether on February 10, 2021, 06:40:16 PM Simple TL;DR is that it generates addresses knowing that if all the possible address prefixes that are M characters long M-character long prefix amount to N prefixes in total, it's going to take advantage of the birthday paradox (https://en.wikipedia.org/wiki/Birthday_problem) phenomenon to keep generating addresses and it's going to eventually find two addresses that both have the same M-character prefix (one of those N prefixes). The more addresses generated the higher the probability of two having the same prefix becomes.
BTCcollider like most of Jean_Lucs programs have an optimization to reduce the number of addresses searched using something called Distinguished Points. If you're familiar with Kangaroo it's using the same Distinguished Point method as it to ignore leading bits of two numbers so that they are otherwise identical. This is Kangaroo's Github page. Replace Kangaroo with BTCcollider because both the "birthday problem" BTCcollider says it solves and Kangaroo's hops are kinds of random walks: Quote from: https://github.com/JeanLucPons/Kangaroo The distinguished point (DP) method is an efficient method for storing random walks and detect collision between them. Instead of storing all points of all In other words when using DPs you ignore the prefix of two numbers and compare the rest of their parts. A distinguished point = a collision = a solution. This is why discussion about the number of DPs is frequent here because the number of DPs tells how many collisions/solutions there are. Don't worry about dpBit in the quote above, it's not the number of DPs but it's the number of bits to permanently set to 1 (or 0) in a mask that can then be used to calculate the number of distinguished points there are (in the quote below the DP size causes some bits at the beginning to be permanently set to 1 and not compared): Quote from: https://github.com/JeanLucPons/BTCCollider DP size: 10 [0xFFC0000000000000] DP size: 5 [0xF800000000000000] DP size: 2 [0xC000000000000000] DP size: 1 [0x8000000000000000] DP size: 0 [0x0000000000000000] All those zeros represent groups of 4 bits (because these are hex numbers and each one encodes 4 bits) that will be used to search for the rest of the address. Title: Re: BTCCollider question Post by: Kostelooscoin on February 10, 2021, 06:46:47 PM all these seem to me super complicated do you have an example has drawn indicative that would better explain this process ?
Title: Re: BTCCollider question Post by: NotATether on February 11, 2021, 10:12:41 AM all these seem to me super complicated do you have an example has drawn indicative that would better explain this process ? Sure I made a diagram of it. https://i.ibb.co/JrSNmkt/btccollider.png As you can see, the more addresses we generate, the more likely that any two of the will have the same prefix (collision). Depending on the total number of prefixes possible, which the prefix length allows for, we will reach 100% probability slowly, but quicker if there are less combinations of prefixes possible, such as by using a smaller prefix length. https://i.ibb.co/pKDX4m6/distinguishedpoints.png Distinguished points is a technique used for the private key to keep a certain part of it fixed while BTCcollider searches the rest of the prefix. It allows you to find collisions more quickly at the expense that you may miss some solutions (by keeping some bits fixed). I believe the program actually builds a prefilled table of RIPEMD160s, that is what it is looking to match. Example 56 bit search result: Code: H1=7611B2A2E68C3741824EA64D60EEAFA7F71904A0 Good point. But since the top diagram is mainly to show the birthday paradox and not actual address generation I think I'll just change the prefixes at the beginning of each address to be all different. Something like the code block in your quote should be easy for anybody to understand without a diagram. Title: Re: BTCCollider question Post by: WanderingPhilospher on February 11, 2021, 09:04:37 PM I believe the program actually builds a prefilled table of RIPEMD160s, that is what it is looking to match.
Example 56 bit search result: Code: H1=7611B2A2E68C3741824EA64D60EEAFA7F71904A0 Title: Re: BTCCollider question Post by: Kostelooscoin on February 12, 2021, 09:38:03 AM an example of generation ?
Title: Re: BTCCollider question Post by: Kostelooscoin on January 29, 2023, 01:09:57 PM it starts by generating a private key to the base because without private key no address
Title: Re: BTCCollider question Post by: citb0in on January 29, 2023, 03:33:20 PM Collision: 60 bits Priv (WIF): p2pkh:L3K5y3LyKXUCmSmpptJrAG5w6o9r6YbfBQyWATV5gyhQ5dwq8moB Priv (WIF): p2pkh:L3K5y3LyKXUCmSmpptJrAG5w6o9r6YbfBQxC9tihuggxfWGSwDY6 Add1: 12DgBEott9LiyPWspyZfY7K2EWv79498u2 Add2: 12DgBEott9LpupgZkw1fKKKK8pYPMoPatY6 The distinguished point (DP) method is an efficient method for storing random walks and detect collision between them. [...] A distinguished point = a collision = a solution. [...] This is why discussion about the number of DPs is frequent here because the number of DPs tells how many collisions/solutions there are. I see no collision on those examples. Partly matched string != collission IMHO Title: Re: BTCCollider question Post by: Kostelooscoin on January 29, 2023, 05:17:41 PM what is this step by step method
from the private key to the colision and how does this distinguished point work Title: Re: BTCCollider question Post by: Kostelooscoin on February 03, 2023, 03:19:06 PM is there any possibility to create btccollider in python version ?
|