Bitcoin Forum

Bitcoin => Development & Technical Discussion => Topic started by: Kostelooscoin on January 27, 2021, 09:53:52 AM



Title: Why Pairgen is fast ?
Post by: Kostelooscoin on January 27, 2021, 09:53:52 AM
Hello why is pairgen so fast and how does it work?

with vanitygen :
Code:
thor@thor-All-Series:~/van$ ./vanitygen 1MLEvxNe
Difficulty: 873388193410
987.22 Kkey/s] [total 4036352] [Prob 0.0%] [50% in 7.1d] [total 4036352] [Prob 0.0%] [50% in 7.1d
with pairgen :
Code:
thor@thor-All-Series:~/pairgen$ ./pairgen 40
n = 40bits
difficulty = 1234604
distinguished = 11bits
threads = 4
init | ...|
find_Y |...Y|
refine_Y[7] |.................................Y|
refine_Y[0] |...S...
Y[0] = 63960b937332a82b859a35801456876de48650d0
Y[1] = bcf69bf233f413a4f6be6a26ab6c6d3260da5b3d
time = 3827ms

--RESULT-(SECRET)---------------------------------------------------------------

priv_key[1] = 2DCA02F4E17AF59D4F53FA47C88A3DA5ECB2DBD4BC55102A63A7D1B5F92BCDCC
priv_key[2] = C9B3646080483325B03337D29B64F78ED2CB3B72A8DD3AEC1D9435E84E5A01DE

WIF [1] = KxkieiAUmkvB29hNgnkCnGY7EZVrW3h2QJSgW1BnMNSNxC717C5h
WIF [2] = L3ynpSthAk4eHLe88bJ9srgFQWYeoitgHH7hVpMKX2cJeGg7q3nx

--RESULT-(SIGNATURES)-----------------------------------------------------------

message = "This is a real Bitcoin address."
sig[1] = H/eQdTr9ZNaQtpZBlFqgxXJwdFAxcaPqMLiZo10Fp8zNP6g54Y7/8K5ZucmRqIB3iI2ZtFBS6wdrfag2zwKtLsY=
sig[2] = H1mIBPAu+Q1D4k1leUaz6l0IF4jXIUG8yU8EXWieaeeQWnV/QutXdZO6r0Q3Dt7rbGJevamYDkYIwoB/j/1ykPk=

--RESULT-(PUBLIC)---------------------------------------------------------------

pub_key[1] = 0262128BE3997ADD392C7A27C5D751E64F7B06039C66F7DB79F91DA2F27EE328
pub_key[2] = 034D9D75D9B9330B77342C09242C028029DAF850C720E6182A9D5A74BDFCE9E7

bonus = 1bits
shared = 10 chars
hash160 [1] = df060c1e73c2d4fb8463696a6e4df867aa70d1bf
hash160 [2] = df060c1e73b63bb1035571ccdf3fdb1f191ed1fb

shared = 8 chars
addr[1] = 1MLEvxNeJHjv2Stbsm7Nfaa9nP9A3MFCAU
addr[2] = 1MLEvxNeFyxwMeZFyaddeD67ag1rEYVAgf

warning: verify the keys/addresses before use!

in less than 10 seconds


Title: Re: Why Pairgen is fast ?
Post by: j2002ba2 on January 27, 2021, 11:02:44 AM

Vanitygen searches for specific prefix. Pairgen searches for matching prefixes.

The difficulty of finding a pair is suqare root of the difficulty finding a specific prefix. This is known as Birthday Paradox (https://en.wikipedia.org/wiki/Birthday_problem).

Finding a 40-bit matching pair is 1,000,000 times faster than finding 40-bit prefix. Well, to be more precise, 890,578 times faster.



Title: Re: Why Pairgen is fast ?
Post by: NotATether on January 27, 2021, 11:27:14 AM
I assume by pairgen you mean https://github.com/basil00/pairgen ?

It's because all pairgen does is look for two addresses with random characters at the beginning, with the only condition being that they have the same N initial characters at the beginning, which can be any combination of characters as long as there's N of them, while vanitygen has to find the private key for an address that must begin with a specific combination of characters and there are so many different addresses that do not start with that prefix that finding one that does is slow - like finding a needle in a haystack.


Title: Re: Why Pairgen is fast ?
Post by: ProjectSe7en on December 16, 2022, 10:47:24 PM
Hello why is pairgen so fast and how does it work?

with vanitygen :
Code:
thor@thor-All-Series:~/van$ ./vanitygen 1MLEvxNe
Difficulty: 873388193410
987.22 Kkey/s] [total 4036352] [Prob 0.0%] [50% in 7.1d] [total 4036352] [Prob 0.0%] [50% in 7.1d
with pairgen :
Code:
thor@thor-All-Series:~/pairgen$ ./pairgen 40
n = 40bits
difficulty = 1234604
distinguished = 11bits
threads = 4
init | ...|
find_Y |...Y|
refine_Y[7] |.................................Y|
refine_Y[0] |...S...
Y[0] = 63960b937332a82b859a35801456876de48650d0
Y[1] = bcf69bf233f413a4f6be6a26ab6c6d3260da5b3d
time = 3827ms

--RESULT-(SECRET)---------------------------------------------------------------

priv_key[1] = 2DCA02F4E17AF59D4F53FA47C88A3DA5ECB2DBD4BC55102A63A7D1B5F92BCDCC
priv_key[2] = C9B3646080483325B03337D29B64F78ED2CB3B72A8DD3AEC1D9435E84E5A01DE

WIF [1] = KxkieiAUmkvB29hNgnkCnGY7EZVrW3h2QJSgW1BnMNSNxC717C5h
WIF [2] = L3ynpSthAk4eHLe88bJ9srgFQWYeoitgHH7hVpMKX2cJeGg7q3nx

--RESULT-(SIGNATURES)-----------------------------------------------------------

message = "This is a real Bitcoin address."
sig[1] = H/eQdTr9ZNaQtpZBlFqgxXJwdFAxcaPqMLiZo10Fp8zNP6g54Y7/8K5ZucmRqIB3iI2ZtFBS6wdrfag2zwKtLsY=
sig[2] = H1mIBPAu+Q1D4k1leUaz6l0IF4jXIUG8yU8EXWieaeeQWnV/QutXdZO6r0Q3Dt7rbGJevamYDkYIwoB/j/1ykPk=

--RESULT-(PUBLIC)---------------------------------------------------------------

pub_key[1] = 0262128BE3997ADD392C7A27C5D751E64F7B06039C66F7DB79F91DA2F27EE328
pub_key[2] = 034D9D75D9B9330B77342C09242C028029DAF850C720E6182A9D5A74BDFCE9E7

bonus = 1bits
shared = 10 chars
hash160 [1] = df060c1e73c2d4fb8463696a6e4df867aa70d1bf
hash160 [2] = df060c1e73b63bb1035571ccdf3fdb1f191ed1fb

shared = 8 chars
addr[1] = 1MLEvxNeJHjv2Stbsm7Nfaa9nP9A3MFCAU
addr[2] = 1MLEvxNeFyxwMeZFyaddeD67ag1rEYVAgf

warning: verify the keys/addresses before use!

in less than 10 seconds



Hi, how you do for search using this 1MLEvxNe as prefix in pairgen?