Pages:
Author

Topic: Bitcoin puzzle transaction ~32 BTC prize to who solves it - page 98. (Read 230098 times)

member
Activity: 348
Merit: 34
e54acb08cf7e7d9be0102e2914d1a4eb643f5df386e67bb4be1bad5a05a53879

Huh
member
Activity: 275
Merit: 20
the right steps towerds the goal
e54acb08cf7e7d9be0102e2914d1a4eb643f5df386e67bb4be1bad5a05a53879
member
Activity: 43
Merit: 10
Hey Guys,, the Question is about Kangaroo. i'm a bit confused..  the kangaroo designed by JeanLucPons. is the program restricted to work only inside the range of 125 bits? if yes what does it mean? because i tried it with a 130 bit range and it seems to work and in the issues section i see people talking about how it wouldn't work for 130 bits can someone tell me what they are talking about ?

The program is limited to a range width of 125 bits or less.

The range width is the upper bound of the range minus the lower bound.

You can find the discussion about this on the kangaroo thread;

https://bitcointalksearch.org/topic/pollards-kangaroo-ecdlp-solver-5244940
newbie
Activity: 4
Merit: 0
Could someone take a look at my smaller application/website for calculating smaller ranges to see if it uses the correct calculations ?    http://cosmiccat.unas.cz/ (You need to use HTTP instead of HTTPS. It's some random free web hosting, don't worry)
newbie
Activity: 27
Merit: 4
Hey Guys,, the Question is about Kangaroo. i'm a bit confused..  the kangaroo designed by JeanLucPons. is the program restricted to work only inside the range of 125 bits? if yes what does it mean? because i tried it with a 130 bit range and it seems to work and in the issues section i see people talking about how it wouldn't work for 130 bits can someone tell me what they are talking about ?
member
Activity: 165
Merit: 26
I could save some time there, calculating only what has to be calculated, C-02 or C-03, but...

If it is stupid, why people sent funds to all 3, compressed-02, compressed-03 and uncompressed-04 addresses of the same private key?, by error? just for testing? who knows...

I discovered this by accident, because did not understand which is the check on the private key, to decide which Compressed-02 or compressed-03 Id I must use, so I did both, and also the other U-4, C-6 and C7 and calculated everything else up to the ripemd160 hash, and searched all 5 in my list of list 53M ripemd160 hashes with balance. Just in case there is a treasure somewhere.
You are confusing a lot of things.
Private Key is a scalar value.
Public Key is an EC point (X, Y) and Y has a parity (e.g. least significant bit odd or even, 1 or 0).
Y is a function of X.
So a public key can be uncompressed (04) in full (X, Y) form or compressed with just X and the Y parity (02 or 03 byte hint prefix)

If you are doing blind searches in hope of a collision, and you have a private key interval, you need to use the correct Y parity to produce the hashed address, otherwise you are hashing the address for private key N - k which is always outside your private key search interval (for all intervals lower than N/2 in size, which is ~ 2^255), and the Y value is negated, hence the key for (X, -Y) = (X, P - Y). -Y = P- Y is always odd if Y is even, and viceversa, because P is odd.

If you are doing blind searches in hope of a collision and you don't have a private key interval in mind (so full-blown 256-bit keyspace), then your goal is to produce as fast as possible public keys, in which case you can use symmetry (02 / 03) and the 3-cycle endomorphism ±k*lambda^i -> (X*beta^i, ±Y) to quickly compute 6 (2 * 3) private keys and their points (public keys) for every generated (private key, public key) pair. So it ends up as an optimization problem to do as fast as possible key generation with lowest amount of multiplications involved, since it was explained earlier that multiplication is the highest overhead of any possible group operation (since it's basically just rounds of additions).

The only number I am aware of that is larger than the number of all possible Bitcoin private keys is the number of electrons in the Universe (around 2-3 electrons for every possible BTC private key).
newbie
Activity: 56
Merit: 0
Quote
It's not like the 02 or 03 were chosen arbitrarily. It's stupid to check for a collision by doing both 02 and 03. Just stick to the correct parity of the actual Y of the point.

I could save some time there, calculating only what has to be calculated, C-02 or C-03, but...

If it is stupid, why people sent funds to all 3, compressed-02, compressed-03 and uncompressed-04 addresses of the same private key?, by error? just for testing? who knows...

I discovered this by accident, because did not understand which is the check on the private key, to decide which Compressed-02 or compressed-03 Id I must use, so I did both, and also the other U-4, C-6 and C7 and calculated everything else up to the ripemd160 hash, and searched all 5 in my list of list 53M ripemd160 hashes with balance. Just in case there is a treasure somewhere.

For example, private key 1,


Quote
(0) Private ECDSA Key (64 hex chars, 256 bits):
    0000000000000000000000000000000000000000000000000000000000000001
(1) (U)ncompressed & (C)ompressed Public Key from SECP256K1 curve (130 hex chars, 520 bits): 27.46 us
          (C-02) 0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798
          (C-03) 0379be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798
          (U-04) 0479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c 4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8
          (C-06) 0679be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798
          (C-07) 0779be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798
(2) SHA-256 hash of 1) (64 hex chars, 256 bits): 2.41 us
          (C-02) 0f715baf5d4c2ed329785cef29e562f73488c8a2bb9dbc5700b361d54b9b0554
          (C-03) fbd27dbb9e7f471bf3de3704a35e884e37d35c676dc2cc8c3cc574c3962376d2
          (U-04) 50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0
          (C-06) a5b6d4f1afa0d2d636d24fedbbf4b9e7af021c781ba49d3aa929995ff2ca816b
          (C-07) f202daaa8a47a5b3c956ed3336a29a41bd18219f774631a36486fcc6d2c07bf4
(3) RIPEMD-160 Hash of 2) (40 hex chars, 160 bits): 3.13 us
          (C-02) 751e76e8199196d454941c45d1b3a323f1433bd6
          (C-03) adde4c73c7b9cee17da6c7b3e2b2eea1a0dcbe67
          (U-04) 91b24bf9f5288532960ac687abb035127b1d28a5
          (C-06) f7c5db8a136ecdeb0a166b90dba910ec5c0e084c
          (C-07) b5ad7fc95a16cd96ac15b34f5556c8c42738f4c2
(4) Adding Bitcoin (00) network byte to 3) Smiley
          (C-02) 00751e76e8199196d454941c45d1b3a323f1433bd6
          (C-03) 00adde4c73c7b9cee17da6c7b3e2b2eea1a0dcbe67
          (U-04) 0091b24bf9f5288532960ac687abb035127b1d28a5
          (C-06) 00f7c5db8a136ecdeb0a166b90dba910ec5c0e084c
          (C-07) 00b5ad7fc95a16cd96ac15b34f5556c8c42738f4c2
(5) SHA-256 hash of 4) (64 hex chars, 256 bits): 1.20 us
          (C-02) c5a2ed70d2c035108c2415792162a6daaf21e6dc015ace0f9a458dd3f01da598
          (C-03) 0a949428f11ccbbd74e2f6837b65bee2cde8d5c493c44868a746ed0c4b8d382f
          (U-04) 79fa926bf4ac874060b244d6e985c694233eed0d5562c0b88cdf37bfbb80b44f
          (C-06) 1b051daafde0cc5730701f0bb7fe41afe06d613a22f31b98600eefb76d2c4d74
          (C-07) eadcc137063b2856e15e9579d006370d02dbe11130912bd31ada66516e632637
(6) SHA-256 hash of 5) (64 hex chars, 256 bits): 1.17 us
          (C-02) 510d1634d943109b69da527ef5948106f22b655fb5193b4e9ef7e4dcd342d245
          (C-03) 2c2b0787b4332fa72ea7174062b0dd262dcf24cff911ff122cad781c40b213dd
          (U-04) 0074ffe0526d823be09b39865422a1d6135afc85afb0a6863c58e9fe89989170
          (C-06) af537bc85e867fed63eb5460d085e35a06275e524be860ef2926d2920cf32cc6
          (C-07) 9fbf8ab54d2f5f4e754048ee673346c389281b4f0d805209bc3a8c7ed2ca6f0e
(7-8 ) First four bytes of 6) at the end of 4):
          (C-02) 00751e76e8199196d454941c45d1b3a323f1433bd6510d1634
          (C-03) 00adde4c73c7b9cee17da6c7b3e2b2eea1a0dcbe672c2b0787
          (U-04) 0091b24bf9f5288532960ac687abb035127b1d28a50074ffe0
          (C-06) 00f7c5db8a136ecdeb0a166b90dba910ec5c0e084caf537bc8
          (C-07) 00b5ad7fc95a16cd96ac15b34f5556c8c42738f4c29fbf8ab5
9) Base58 encoding of 8 ):6.48 us
      (BTC C-02) 1BgGZ9tcN4rm9KBzDn7KprQz87SZ26SAMH (35 chars)
      (BTC C-03) 1GrLCmVQXoyJXaPJQdqssNqwxvha1eUo2E (35 chars)
      (BTC U-04) 1EHNa6Q4Jz2uvNExL497mE43ikXhwF6kZm (35 chars)
   (BTC CHyb-06) 1Pb6vmWniHWeK1yVECHcHGmw5y8b5DAaRD (35 chars)
   (BTC CHyb-07) 1HZd9eyS44EXgWsDVrQnpqZnLiqLTnARvU (35 chars)
10) Export Mainnet PrivKey 1) into WIF format:
    (C-SHA256x2) 4671fc3f80de85b50cc4d7d718fbe440800b885dba9e2b4c2cf930d1e4682401
    (U-SHA256x2) a85aa87e9879f34d1449e35c58e64d9325733ca2efb4577e6720ec42c3625783
         (C-ext) 80000000000000000000000000000000000000000000000000000000000000000101
         (U-ext) 800000000000000000000000000000000000000000000000000000000000000001
   (C-ext+chksm) 800000000000000000000000000000000000000000000000000000000000000001014671fc3f
   (U-ext+chksm) 800000000000000000000000000000000000000000000000000000000000000001a85aa87e
         (C-WIF) KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFU73sVHnoWn (53 chars)
         (U-WIF) 5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAnchuDf (52 chars)
11) Binary Search of 3) in the input list:
    (C-02)751e76e8199196d454941c45d1b3a323f1433bd6 r=-138
    L=000000,M=26997358,R=53994717  [026997358][7f6d1f7a3c4c2218944870f7902f2a7f1b489082] r=-10 -> searching down
    L=000000,M=13498678,R=26997357  [013498678][3fba6ab86c91fd1c7d8eaccfae45d634c948047d] r=54 -> searching up
    L=13498679,M=20248018,R=26997357  [020248018][5fcf41f80dc97a709b37bab9dadefe50a79d6d77] r=22 -> searching up
    L=20248019,M=23622688,R=26997357  [023622688][6f802f2c5209b67328916fb7f91420630758b503] r=6 -> searching up
    L=23622689,M=25310023,R=26997357  [025310023][776afd85cbc23414b99aa4244d69973effbf60cf] r=-2 -> searching down
    L=23622689,M=24466355,R=25310022  [024466355][73738b855e053c71397fc6572be19fb88a9b9210] r=2 -> searching up
    L=24466356,M=24888189,R=25310022  [024888189][756e25805cddbb24d6b177b9d9af29139b8ea84b] r=-80 -> searching down
    L=24466356,M=24677272,R=24888188  [024677272][746f6d2ac6e6008d61cff82eaeb5b78a1f364412] r=1 -> searching up
    L=24677273,M=24782730,R=24888188  [024782730][74eec386cc13e03a62ee0a281e5d6210a852cda4] r=1 -> searching up
    L=24782731,M=24835459,R=24888188  [024835459][752ea978faffb2d9aac5f77db626f212681e79db] r=-16 -> searching down
    L=24782731,M=24809094,R=24835458  [024809094][750f08e0526ff1235da8fb58517e1cc48dda0f1e] r=15 -> searching up
    L=24809095,M=24822276,R=24835458  [024822276][751ef46df183ecf1edff58087507827f57a3f152] r=-126 -> searching down
    L=24809095,M=24815685,R=24822275  [024815685][75171082196189db524ce50e841c80ddbc97322b] r=7 -> searching up
    L=24815686,M=24818980,R=24822275  [024818980][751b051c231073cd588960ba4bba649424b17132] r=3 -> searching up
    L=24818981,M=24820628,R=24822275  [024820628][751d0c2953b8d5d899012432daab1887806c0635] r=1 -> searching up
    L=24820629,M=24821452,R=24822275  [024821452][751e02f00e0e1c8c701914d1472388066bcc2c8b] r=116 -> searching up
    L=24821453,M=24821864,R=24822275  [024821864][751e7ebf0973e343e36db34274248749b7287411] r=-8 -> searching down
    L=24821453,M=24821658,R=24821863  [024821658][751e430d740583d15556375e8591a0ef153679a6] r=51 -> searching up
    L=24821659,M=24821761,R=24821863  [024821761][751e61cc4036ac563d6b247b59a92fd81600bbe1] r=21 -> searching up
    L=24821762,M=24821812,R=24821863  [024821812][751e70916d45447472ca626365a8c7b8adbfd9e7] r=6 -> searching up
    L=24821813,M=24821838,R=24821863  [024821838][751e77051d52a132cafa91f0adc6b58ef6206889] r=-1 -> searching down
    L=24821813,M=24821825,R=24821837  [024821825][751e752b04646b2142e3f89cf74a23d230353062] r=1 -> searching up
    L=24821826,M=24821831,R=24821837  [024821831][751e7594b54496e60d9f87c9719d7de9c88de58a] r=1 -> searching up
    L=24821832,M=24821834,R=24821837  [024821834][751e7677d4b56fa664dd5690336ac26bf382c48d] r=113 -> searching up
    L=24821835,M=24821836,R=24821837  [024821836][751e76e8199196d454941c45d1b3a323f1433bd6] r=0 -> BINGO! HASH FOUND!-C02.
    COMPRESSED-02 HASH FOUND IN THE LIST!: 0000000000000000000000000000000000000000000000000000000000000001 -> Key saved in found.txt
 jumps=024 95618.23 us

    (C-03)adde4c73c7b9cee17da6c7b3e2b2eea1a0dcbe67 r=-82
    L=000000,M=26997358,R=53994717  [026997358][7f6d1f7a3c4c2218944870f7902f2a7f1b489082] r=46 -> searching up
    L=26997359,M=40496038,R=53994717  [040496038][bfa9e9e4e75dd26fc34343505fc7bfe7e1b3f854] r=-18 -> searching down
    L=26997359,M=33746698,R=40496037  [033746698][9f9293a4b16f79ebdd6a9a95d1280381fe306683] r=14 -> searching up
    L=33746699,M=37121368,R=40496037  [037121368][af90a29b48ca6c37ad04c9af7549eaad65485cf7] r=-2 -> searching down
    L=33746699,M=35434033,R=37121367  [035434033][a7846d7805d181ab265c83af5b384bfe9564c78d] r=6 -> searching up
    L=35434034,M=36277700,R=37121367  [036277700][ab89e364ae07e7ab122b9df14234e038c0ea8f11] r=2 -> searching up
    L=36277701,M=36699534,R=37121367  [036699534][ad8cf4b68db1de5beaaad5d2f279bcde8a568c2a] r=82 -> searching up
    L=36699535,M=36910451,R=37121367  [036910451][ae8e36ba499c869a9badb6891a6561a585f357d4] r=-1 -> searching down
    L=36699535,M=36804992,R=36910450  [036804992][ae0dadbf3e37cd2295b03b2d097b817c053a6c59] r=-1 -> searching down
    L=36699535,M=36752263,R=36804991  [036752263][adcd5813cc21b7a7d617a7bc69813c2614b59a4e] r=17 -> searching up
    L=36752264,M=36778627,R=36804991  [036778627][aded6fdfd74c74b11df493a5c41f75a9ae30e9c8] r=-15 -> searching down
    L=36752264,M=36765445,R=36778626  [036765445][addd68257d27cf9054cfb9c45f9dcef937cc31bc] r=1 -> searching up
    L=36765446,M=36772036,R=36778626  [036772036][ade5847b88a3fee264ad2a339c7c16b1e644e3ee] r=-7 -> searching down
    L=36765446,M=36768740,R=36772035  [036768740][ade168acc9b78d9bc5f4125418a413932e5b5efe] r=-3 -> searching down
    L=36765446,M=36767092,R=36768739  [036767092][addf7426bc41f6013b5159143d5b46c8736b3345] r=-1 -> searching down
    L=36765446,M=36766268,R=36767091  [036766268][adde6c452daddda62a0487280c0030282b29f8ae] r=-32 -> searching down
    L=36765446,M=36765856,R=36766267  [036765856][addde8aa011388d42d723698fed8f32b4ac4100f] r=1 -> searching up
    L=36765857,M=36766062,R=36766267  [036766062][adde293f8d6b835e398c9086c68711f5606a4e49] r=35 -> searching up
    L=36766063,M=36766165,R=36766267  [036766165][adde4c6650e369dd5470acf1a4c30a21c8bf2b3c] r=13 -> searching up
    L=36766166,M=36766216,R=36766267  [036766216][adde5cdf4390cce6fdf12fb092a082a23a42e865] r=-16 -> searching down
    L=36766166,M=36766190,R=36766215  [036766190][adde540d129d88a372939332767c98fc96d6d1b0] r=-8 -> searching down
    L=36766166,M=36766177,R=36766189  [036766177][adde50f07fd306d43ed5e8a3eecc3acc133bce6b] r=-4 -> searching down
    L=36766166,M=36766171,R=36766176  [036766171][adde4de053aa9db5394b38d4bdd1ddeb7b961d5a] r=-1 -> searching down
    L=36766166,M=36766168,R=36766170  [036766168][adde4cfe08c932487a7ff6119540d9ce7d68bf9a] r=-139 -> searching down
    L=36766166,M=36766166,R=36766167  [036766166][adde4cb424dd52d296fc1d6c7bc1443f01372fb9] r=-65 -> searching down jumps=025 119.48 us

    (U-04)91b24bf9f5288532960ac687abb035127b1d28a5 r=-110
    L=000000,M=26997358,R=53994717  [026997358][7f6d1f7a3c4c2218944870f7902f2a7f1b489082] r=18 -> searching up
    L=26997359,M=40496038,R=53994717  [040496038][bfa9e9e4e75dd26fc34343505fc7bfe7e1b3f854] r=-46 -> searching down
    L=26997359,M=33746698,R=40496037  [033746698][9f9293a4b16f79ebdd6a9a95d1280381fe306683] r=-14 -> searching down
    L=26997359,M=30372028,R=33746697  [030372028][8f82895a18e2409bd54c43838f53106677ea57e0] r=2 -> searching up
    L=30372029,M=32059363,R=33746697  [032059363][978a904cfce9f5b45dbe93fc619e14bae26baeed] r=-6 -> searching down
    L=30372029,M=31215695,R=32059362  [031215695][93855355fb12b4f7a45022b2ad14af9d2fac9100] r=-2 -> searching down
    L=30372029,M=30793861,R=31215694  [030793861][9185076cb256e675c63431d76deac88a6ad6bcbb] r=45 -> searching up
    L=30793862,M=31004778,R=31215694  [031004778][9284a538feec87dcba156b217a898c644ea0df78] r=-1 -> searching down
    L=30793862,M=30899319,R=31004777  [030899319][92055139acf8da4af5987d96041cd08bfabb81a7] r=-1 -> searching down
    L=30793862,M=30846590,R=30899318  [030846590][91c4f55d85f486e7eaa9fe6242047727bce4f0e9] r=-18 -> searching down
    L=30793862,M=30820225,R=30846589  [030820225][91a4ca1f09381d0710f4888572c25b653af6b34d] r=14 -> searching up
    L=30820226,M=30833407,R=30846589  [030833407][91b4bfd64ad44d38f1aa57314e515f81ae36bfce] r=-2 -> searching down
    L=30820226,M=30826816,R=30833406  [030826816][91ace7e86f4cb311249081bee2a509257e11a844] r=6 -> searching up
    L=30826817,M=30830111,R=30833406  [030830111][91b0e4212d608573c033a5f57256f5ac61795dc4] r=2 -> searching up
    L=30830112,M=30831759,R=30833406  [030831759][91b2d3b2294d5fac93843ba59ce61c3ae41ac7b9] r=-136 -> searching down
    L=30830112,M=30830935,R=30831758  [030830935][91b1daf82560e8f09e0498939908b583de393e1e] r=1 -> searching up
    L=30830936,M=30831347,R=30831758  [030831347][91b254f149b3cc8f2c459b84d0aa740924b108dd] r=-9 -> searching down
    L=30830936,M=30831141,R=30831346  [030831141][91b2194e05060df067c4989c1ea6f1865b03432e] r=50 -> searching up
    L=30831142,M=30831244,R=30831346  [030831244][91b2379d843bebf2fbaf20cad483858571b4382b] r=20 -> searching up
    L=30831245,M=30831295,R=30831346  [030831295][91b24748670f53d3f79af870926e137fff8a35f6] r=4 -> searching up
    L=30831296,M=30831321,R=30831346  [030831321][91b24e755c0c43dbc4465b4efb046ddf060bade3] r=-3 -> searching down
    L=30831296,M=30831308,R=30831320  [030831308][91b24b66892bcda55cb5bdddf8b2b0f84366b6c2] r=147 -> searching up
    L=30831309,M=30831314,R=30831320  [030831314][91b24c396b87f530d25ed9ec28c3965bfbdb1040] r=-1 -> searching down
    L=30831309,M=30831311,R=30831313  [030831311][91b24bc29b0206629359d3f6d4a6727245d08039] r=55 -> searching up
    L=30831312,M=30831312,R=30831313  [030831312][91b24bd47b0d32db93138158203277c2737e6b6e] r=37 -> searching up
    L=30831313,M=30831313,R=30831313  [030831313][91b24c165727fce1d621ab36caedece9d0469a3c] r=-1 -> searching down jumps=026 70.70 us

    (C-06)f7c5db8a136ecdeb0a166b90dba910ec5c0e084c r=-8
    L=000000,M=26997358,R=53994717  [026997358][7f6d1f7a3c4c2218944870f7902f2a7f1b489082] r=120 -> searching up
    L=26997359,M=40496038,R=53994717  [040496038][bfa9e9e4e75dd26fc34343505fc7bfe7e1b3f854] r=56 -> searching up
    L=40496039,M=47245378,R=53994717  [047245378][dfd6d80c1f496f49e64c37c35825ade57c2e96c9] r=24 -> searching up
    L=47245379,M=50620048,R=53994717  [050620048][efe8281cd47c48401a8f59d2a22262eddabb2b84] r=8 -> searching up
    L=50620049,M=52307383,R=53994717  [052307383][f7f2aa3652744864d14e1b58cfc2fc6b5aab2a8b] r=-45 -> searching down
    L=50620049,M=51463715,R=52307382  [051463715][f3ec6ffa4c78a65d0aa1422540edd87fb90b7fc0] r=4 -> searching up
    L=51463716,M=51885549,R=52307382  [051885549][f5ef5e49e0674be3bfc3c529b42eb5ca6687c0b5] r=2 -> searching up
    L=51885550,M=52096466,R=52307382  [052096466][f6f125770f6b709b6ffb3388b14dac4c341f24ea] r=1 -> searching up
    L=52096467,M=52201924,R=52307382  [052201924][f7727ccda3c74e95ae0bc580b0cded445452001b] r=83 -> searching up
    L=52201925,M=52254653,R=52307382  [052254653][f7b2974abd090996c8f0b51108b1f7b0bd98b400] r=19 -> searching up
    L=52254654,M=52281018,R=52307382  [052281018][f7d25d4920fe3c44aef56a2c34e8556d60a223ab] r=-13 -> searching down
    L=52254654,M=52267835,R=52281017  [052267835][f7c24227fa1ce2dccf7dae013d7a2f9dd71dc65f] r=3 -> searching up
    L=52267836,M=52274426,R=52281017  [052274426][f7ca352f88a1737e0a2cc60f90eae03c1f15c917] r=-5 -> searching down
    L=52267836,M=52271130,R=52274425  [052271130][f7c6463d6ae90ac102cd3cd25a824c134d88d47b] r=-1 -> searching down
    L=52267836,M=52269482,R=52271129  [052269482][f7c4452debea533b835d18f421b295ea5c8c19db] r=1 -> searching up
    L=52269483,M=52270306,R=52271129  [052270306][f7c5427c9fb735b8e63ac6e7c79c4c633d00f91e] r=153 -> searching up
    L=52270307,M=52270718,R=52271129  [052270718][f7c5c843a21776136c95b09c7824a3f0bdbd4708] r=19 -> searching up
    L=52270719,M=52270924,R=52271129  [052270924][f7c60967db247b96b4384463a7e1b6dafa2045ab] r=-1 -> searching down
    L=52270719,M=52270821,R=52270923  [052270821][f7c5e828d3f6afc2238c219719610a4ed30faf39] r=-13 -> searching down
    L=52270719,M=52270769,R=52270820  [052270769][f7c5d79937b794705594f7fe89c4bad9ce1e6dda] r=4 -> searching up
    L=52270770,M=52270795,R=52270820  [052270795][f7c5e034e87fd22b7c52af6a74a0cf61663ba4b4] r=-5 -> searching down
    L=52270770,M=52270782,R=52270794  [052270782][f7c5db2ce61593bddfc473ea05d60ce1770179cd] r=94 -> searching up
    L=52270783,M=52270788,R=52270794  [052270788][f7c5dc9ff1b3ac6c65c7c19f8692521ca4894c73] r=-1 -> searching down
    L=52270783,M=52270785,R=52270787  [052270785][f7c5dc0fde1087bd5260d0bbb05c8f80c7248878] r=-1 -> searching down
    L=52270783,M=52270783,R=52270784  [052270783][f7c5db9dcdd5f2b4a4e617ca8b6640ce4b902403] r=-19 -> searching down jumps=025 160.75 us

    (U-07)b5ad7fc95a16cd96ac15b34f5556c8c42738f4c2 r=-74
    L=000000,M=26997358,R=53994717  [026997358][7f6d1f7a3c4c2218944870f7902f2a7f1b489082] r=54 -> searching up
    L=26997359,M=40496038,R=53994717  [040496038][bfa9e9e4e75dd26fc34343505fc7bfe7e1b3f854] r=-10 -> searching down
    L=26997359,M=33746698,R=40496037  [033746698][9f9293a4b16f79ebdd6a9a95d1280381fe306683] r=22 -> searching up
    L=33746699,M=37121368,R=40496037  [037121368][af90a29b48ca6c37ad04c9af7549eaad65485cf7] r=6 -> searching up
    L=37121369,M=38808703,R=40496037  [038808703][b79c46c17fe0cc0ab23e538fe6c29664f0fae312] r=-2 -> searching down
    L=37121369,M=37965035,R=38808702  [037965035][b396058622569091c9de70b5fc92e87c356dd4d8] r=2 -> searching up
    L=37965036,M=38386869,R=38808702  [038386869][b59a79f07fa7d88ef487c0d7d8e635ece640a219] r=19 -> searching up
    L=38386870,M=38597786,R=38808702  [038597786][b69b64ad218fc50c92996d143792b661826a84e1] r=-1 -> searching down
    L=38386870,M=38492327,R=38597785  [038492327][b61a64aa24df4516957df4b07ce243d8c0c337f3] r=-1 -> searching down
    L=38386870,M=38439598,R=38492326  [038439598][b5da7b7a0b837d0905968bb09aafbce1a6b5ae62] r=-45 -> searching down
    L=38386870,M=38413233,R=38439597  [038413233][b5ba9dab104aacf677a7bdf3b794ecc4b3ff7801] r=-13 -> searching down
    L=38386870,M=38400051,R=38413232  [038400051][b5aaae7f8215bcc0f58f80b7c89a603237dcf9de] r=3 -> searching up
    L=38400052,M=38406642,R=38413232  [038406642][b5b28cfd055b817109126b78d7ff2f60d6682a77] r=-5 -> searching down
    L=38400052,M=38403346,R=38406641  [038403346][b5ae9c6645b33cb8c53fab074a2b8411c6a192c0] r=-1 -> searching down
    L=38400052,M=38401698,R=38403345  [038401698][b5acabe38fa7fe92f163b4e27ffe2b3eaa1cb501] r=1 -> searching up
    L=38401699,M=38402522,R=38403345  [038402522][b5ad9e724f11549ad8771064bd817cdd0184619a] r=-31 -> searching down
    L=38401699,M=38402110,R=38402521  [038402110][b5ad25fde5a12578352a5e6cb9e27e724475905d] r=90 -> searching up
    L=38402111,M=38402316,R=38402521  [038402316][b5ad63c866b42c3a414dfea477a1a268e7fc0192] r=28 -> searching up
    L=38402317,M=38402419,R=38402521  [038402419][b5ad843176e8653cb0ed83ebe23cc968fbfe4e4a] r=-5 -> searching down
    L=38402317,M=38402367,R=38402418  [038402367][b5ad728ee14d53c76f72cf6568d7b8547e699ea8] r=13 -> searching up
    L=38402368,M=38402393,R=38402418  [038402393][b5ad7c8d5a602db819db894a82d0ad8b3df0d961] r=3 -> searching up
    L=38402394,M=38402406,R=38402418  [038402406][b5ad8080c63a396fa9f679e8dd7c29d17231e200] r=-1 -> searching down
    L=38402394,M=38402399,R=38402405  [038402399][b5ad7e4eff15d25f57a527ce4fcc091f2d913d01] r=1 -> searching up
    L=38402400,M=38402402,R=38402405  [038402402][b5ad7f8a2a5f7180d5da6423eaebac0796791933] r=63 -> searching up
    L=38402403,M=38402404,R=38402405  [038402404][b5ad80167174e9c1b677d1e13907c2e7faec9617] r=-1 -> searching down
    L=38402403,M=38402403,R=38402403  [038402403][b5ad7fa7c7ca3e1847cce60fe36797e6f0af733d] r=34 -> searching up jumps=026 173.27 us

In step 9 we got the addresses for the 5 Ids:

      (BTC C-02) 1BgGZ9tcN4rm9KBzDn7KprQz87SZ26SAMH (35 chars)   this is puzzle 1 -> https://mempool.space/address/1BgGZ9tcN4rm9KBzDn7KprQz87SZ26SAMH
      (BTC C-03) 1GrLCmVQXoyJXaPJQdqssNqwxvha1eUo2E (35 chars)   but, this also got and spent funds! -> https://mempool.space/address/1GrLCmVQXoyJXaPJQdqssNqwxvha1eUo2E
      (BTC U-04) 1EHNa6Q4Jz2uvNExL497mE43ikXhwF6kZm (35 chars) and this had 7.847675 BTC!! https://mempool.space/address/1EHNa6Q4Jz2uvNExL497mE43ikXhwF6kZm
   (BTC CHyb-06) 1Pb6vmWniHWeK1yVECHcHGmw5y8b5DAaRD (35 chars) -> nothing
   (BTC CHyb-07) 1HZd9eyS44EXgWsDVrQnpqZnLiqLTnARvU (35 chars) -> nothing

Now you tell me how stupid is searching for all C-02, C-03 and U-04.... AT THE SAME TIME


Private key 0 (I know it is not valid point of the curve), is also interesting. People also sent funds to all 3 Addresses! Could this be considered a black hole address?

Quote
(0) Private ECDSA Key (64 hex chars, 256 bits):
    0000000000000000000000000000000000000000000000000000000000000000
(1) (U)ncompressed & (C)ompressed Public Key from SECP256K1 curve (130 hex chars, 520 bits): 29.75 us
          (C-02) 020000000000000000000000000000000000000000000000000000000000000000
          (C-03) 030000000000000000000000000000000000000000000000000000000000000000
          (U-04) 0400000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000
          (C-06) 060000000000000000000000000000000000000000000000000000000000000000
          (C-07) 070000000000000000000000000000000000000000000000000000000000000000
(2) SHA-256 hash of 1) (64 hex chars, 256 bits): 2.08 us
          (C-02) 523ba5a7ec9362dbb08039a387922592ccea3dde63634480cd1b05b7bd50a269
          (C-03) 7324b5c72b51bb5d4c180f1109cfd347b60473882145841c39f3e584576296f9
          (U-04) 59ef1a5a00f35b1a722da56ca70b52a721f33998634d4fa4259301f170f7b6bd
          (C-06) fdfdd5396ba68d416587eb28ee4dbdcb3cb04c34e0c7bb63f393afa769cd74f4
          (C-07) c14ca2b59dbaac489b662ff822ffeeab3eff0a505f23e78a589ca4d49daf350e
(3) RIPEMD-160 Hash of 2) (40 hex chars, 160 bits): 2.84 us
          (C-02) 3625c4a2ea974760a816368fd15de771594476e7
          (C-03) e47e46277b5ba401242699870e3688b9d1848f18
          (U-04) 3b4df4363caa9e3bd9da58020d3080be8230a4ae
          (C-06) 814c7d332b816d56b7983c6acf420adcb39a18c6
          (C-07) bddff6369989dc001049f578a506b8eb3d0fd1ed
(4) Adding Bitcoin (00) network byte to 3) Smiley
          (C-02) 003625c4a2ea974760a816368fd15de771594476e7
          (C-03) 00e47e46277b5ba401242699870e3688b9d1848f18
          (U-04) 003b4df4363caa9e3bd9da58020d3080be8230a4ae
          (C-06) 00814c7d332b816d56b7983c6acf420adcb39a18c6
          (C-07) 00bddff6369989dc001049f578a506b8eb3d0fd1ed
(5) SHA-256 hash of 4) (64 hex chars, 256 bits): 1.37 us
          (C-02) 15bc4c5c37fa3ddf59e3107df6813c1d5c0edcf23c9950b1c8d8df27044c1692
          (C-03) 8c3c4456ca89295fdbb255b77f4ad38d9c7feded3086b709bbc1d3ef075a835f
          (U-04) ba02fc87e13c4ac93ba8029ee9b92f4b7a73b110c40d6d913e663d566af9d0e7
          (C-06) aa7ad76bcdc7f15b2ebf07910b96e2d72ebf32cb7cb8efa79ebbceb59903e0eb
          (C-07) e43048f84bab9a001f7e70ce80dbce8020b3a82b7785b2aa474bcc5e314ef991
(6) SHA-256 hash of 5) (64 hex chars, 256 bits): 1.31 us
          (C-02) f4ed0da0b4234dcea06a923d8cab0d17d68ed9e3fe6be3a31307b0f81b934be7
          (C-03) fe3a65ae291d82113714a8b243b1b34bd8ab05d5659b38d54133d3af5f8647b1
          (U-04) b158b448eed111aafb81f989f8b29c392f7ee228814a789d5ad786ad55a95346
          (C-06) 4b5026dca67fbde6299cd7e067d2bbafe3dc6b1b387f4253ae1339ec6fd0cdf8
          (C-07) f4d06de7e9c76c6c8095dc53e3bce38ba492624f756c743f79e4576e79ccec2e
(7-8) First four bytes of 6) at the end of 4):
          (C-02) 003625c4a2ea974760a816368fd15de771594476e7f4ed0da0
          (C-03) 00e47e46277b5ba401242699870e3688b9d1848f18fe3a65ae
          (U-04) 003b4df4363caa9e3bd9da58020d3080be8230a4aeb158b448
          (C-06) 00814c7d332b816d56b7983c6acf420adcb39a18c64b5026dc
          (C-07) 00bddff6369989dc001049f578a506b8eb3d0fd1edf4d06de7
9) Base58 encoding of Cool:7.02 us
      (BTC C-02) 15wJjXvfQzo3SXqoWGbWZmNYND1Si4siqV (35 chars)
      (BTC C-03) 1MqALQs6ea1ACgwRurqgaBDWzxYPoXCXzu (35 chars)
      (BTC U-04) 16QaFeudRUt8NYy2yzjm3BMvG4xBbAsBFM (35 chars)
   (BTC CHyb-06) 1CnfoJMvvo9SV98PQhzQMMC2UJuHjuAA43 (35 chars)
   (BTC CHyb-07) 1JJy1PmdaPCsNFcdW5MBRyLyT5ahitktSA (35 chars)
10) Export Mainnet PrivKey 1) into WIF format:
    (C-SHA256x2) 69f436de87362589b89943c1554c53c4cee37d1c951552eff7e2bca8b3068967
    (U-SHA256x2) 0565fba7ebf8143516e0222d7950c28589a34c3ee144c3876ceb01bfb0e9bb70
         (C-ext) 80000000000000000000000000000000000000000000000000000000000000000001
         (U-ext) 800000000000000000000000000000000000000000000000000000000000000000
   (C-ext+chksm) 8000000000000000000000000000000000000000000000000000000000000000000169f436de
   (U-ext+chksm) 8000000000000000000000000000000000000000000000000000000000000000000565fba7
         (C-WIF) KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFU73Nd2Mcv1 (53 chars)
         (U-WIF) 5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAbuatmU (52 chars)
11) Binary Search of 3) in the input list:
    (C-02)3625c4a2ea974760a816368fd15de771594476e7 r=-201 -> Blacklisted!  jumps=000 1.92 us

    (C-03)e47e46277b5ba401242699870e3688b9d1848f18 r=-27 -> Blacklisted!  jumps=000 0.46 us

    (U-04)3b4df4363caa9e3bd9da58020d3080be8230a4ae r=-196 -> Blacklisted!  jumps=000 0.46 us

    (C-06)814c7d332b816d56b7983c6acf420adcb39a18c6 r=-126
    L=000000,M=000127,R=000255  [000000127][80df54e1f612f2fc5bdc05c9d21a83aa8d20791e] r=1 -> searching up
    L=000128,M=000191,R=000255  [000000191][c97f9591e28687be1c4d972e25be7c372a3221b4] r=-72 -> searching down
    L=000128,M=000159,R=000190  [000000159][a45dae9cd5d3fde21e5aa9a95367d107267b3b8a] r=-35 -> searching down
    L=000128,M=000143,R=000158  [000000143][941ccb7383109b47b841044c9f865785676b0918] r=-19 -> searching down
    L=000128,M=000135,R=000142  [000000135][8c2a6071f89c90c4dab5ab295d7729d1b54ea60f] r=-11 -> searching down
    L=000128,M=000131,R=000134  [000000131][8661cb56d9df0a61f01328b55af7e56a3fe7a2b2] r=-5 -> searching down
    L=000128,M=000129,R=000130  [000000129][85a1f9ba4da24c24e582d9b891dacbd1b043f971] r=-4 -> searching down
    L=000128,M=000128,R=000128  [000000128][85567151f330b69bac3eba86bb3aedd8813ec2b7] r=-4 -> searching down jumps=008 18.22 us

    (U-07)bddff6369989dc001049f578a506b8eb3d0fd1ed r=-66
    L=000000,M=000127,R=000255  [000000127][80df54e1f612f2fc5bdc05c9d21a83aa8d20791e] r=61 -> searching up
    L=000128,M=000191,R=000255  [000000191][c97f9591e28687be1c4d972e25be7c372a3221b4] r=-12 -> searching down
    L=000128,M=000159,R=000190  [000000159][a45dae9cd5d3fde21e5aa9a95367d107267b3b8a] r=25 -> searching up
    L=000160,M=000175,R=000190  [000000175][b907c3a2a3b27789dfb509b730dd47703c272868] r=4 -> searching up
    L=000176,M=000183,R=000190  [000000183][c053d1c7b2e7e27c624dcb8087549876af73aa03] r=-3 -> searching down
    L=000176,M=000179,R=000182  [000000179][badf8b0d34289e679ec65c6c61d3a974353be5cf] r=3 -> searching up
    L=000180,M=000181,R=000182  [000000181][bfebb73562d4541b32a02ba664d140b5a574792f] r=-2 -> searching down
    L=000180,M=000180,R=000180  [000000180][bf7413e8df4e7a34ce9dc13e2f2648783ec54adb] r=-2 -> searching down jumps=008 54.80 us


9) Base58 encoding of Cool:7.02 us
      (BTC C-02) 15wJjXvfQzo3SXqoWGbWZmNYND1Si4siqV (35 chars)  -> HAS 0.0066 BTC https://mempool.space/address/15wJjXvfQzo3SXqoWGbWZmNYND1Si4siqV
      (BTC C-03) 1MqALQs6ea1ACgwRurqgaBDWzxYPoXCXzu (35 chars) -> HAS 0.00001800 BTC https://mempool.space/address/1MqALQs6ea1ACgwRurqgaBDWzxYPoXCXzu
      (BTC U-04) 16QaFeudRUt8NYy2yzjm3BMvG4xBbAsBFM (35 chars) -> HAS 0.01024676 BTC https://mempool.space/address/16QaFeudRUt8NYy2yzjm3BMvG4xBbAsBFM
   (BTC CHyb-06) 1CnfoJMvvo9SV98PQhzQMMC2UJuHjuAA43 (35 chars)
   (BTC CHyb-07) 1JJy1PmdaPCsNFcdW5MBRyLyT5ahitktSA (35 chars)

I blacklisted this 3 ripemd160 to avoid confusions, and getting excited for nothing, I believe they are invalid addresses:
15wJjXvfQzo3SXqoWGbWZmNYND1Si4siqV,666556,743371,3625c4a2ea974760a816368fd15de771594476e7
16QaFeudRUt8NYy2yzjm3BMvG4xBbAsBFM,1024130,549600,3b4df4363caa9e3bd9da58020d3080be8230a4ae
1MqALQs6ea1ACgwRurqgaBDWzxYPoXCXzu,1800,330208,e47e46277b5ba401242699870e3688b9d1848f18
Public Address, Balance, Transactions,ripemd

It is interesting there is a lot of transactions reported for all the 3 ripemd160... this might be an error of the python parser I am using to scrap the bitcoin addresses with balance (https://github.com/graymauser/btcposbal2csv).

I have no idea what they mean...





hero member
Activity: 862
Merit: 662
I always dreamed finding something unspent on those ID's (04-06-07).

I didn't know the existence of 06 and 07 public key prefix. I wonder where are those prefixes used?

Is there some trick to compute the X value of P + G if you don't know P.y? I'm curious to know.

Q = P+G

Well you need to know the value P.y in order to calcualte the next sequence of Q values but you you don't need to calculate the actual Q.y value, this sound a dubious but actuallly it works and faster than regular approach.

This work better for some array of Q values, if the array is 512 or 1024 items long you can skip the calcualtions of 512 or 1024  Q.y values

You only need to calculate one Q.y value for next group of items and repeat (This value need to be the center of the group becuse it use it use a property that  P + i*G and P - i*G have the same deltax and same inverse value), this save alot of time.

It not only works for  Q = P+G but for any Q = P+ iG

Its complex and painful but read the code but it worth the time to study and implement it, just to see how the speed increment, maybe i will publish an step by step explatnation for it, but if you want to take a look please check where i learned it: https://github.com/JeanLucPons/BSGS/blob/master/BSGS.cpp#L189

That implementation alone multiply the previous speed x4 times.
member
Activity: 165
Merit: 26
Also talking about ID's. I realized the puzzle pieces are alternatively Compressed-02 and 03 only.
It's not like the 02 or 03 were chosen arbitrarily. It's stupid to check for a collision by doing both 02 and 03. Just stick to the correct parity of the actual Y of the point.

Why? Because if k is the private key of some point, then the key of its Y-symmetric point is -k == N - k. So the keys of all those other points is in the range [2^256 - 2^66 .... 2^256 - 2^65] which is always outside the interval of interest.

Another short cut is you don't need to calculate the Y value of all the subsequent keys (unless you are scanning for uncompressed keys) this may double the speed of the calculations.

Another short cut is endomorphism (This don't work on small puzzles) but it can multiply your speed up to 6 times for a general search.

Is there some trick to compute the X value of P + G if you don't know P.y? I'm curious to know.

Endomorphism will not work for any puzzle, not just small ones. Same reason as above. Multiplying the key by lambda or lambda^2 instantly lands your key into 256-bit space, no matter what interval you were working on. Even for 160-bit puzzle, the chance that k*lambda or k*lambda^2 ends up back into a 160-bit space is 1 / 2^96.
newbie
Activity: 56
Merit: 0
Thanks again for the detailed answer Alberto. I will try what you suggested.


My tool actually calculates for all the ID Bytes, 0x02, 0x03, 0x04, 0x06, and 0x07.

Code:
    //-----------------------------------------------------------------
    // Wallet Generation
    //
    do{

        // 0) Priv Key print
        if(single_calculation){
            printf("\r\n\r\n(0) Private ECDSA Key (64 hex chars, 256 bits): ");
            printf("\r\n    " COLOR_RED);
            for(k=0;k<32;k++) printf("%02x", privkey[k]);
            printf(COLOR_RESET);
        }

        // 1) Calculate Public Key using SECP256K1 eliptic curve
        if(single_calculation){
            printf("\r\n(1) (U)ncompressed & (C)ompressed Public Key from SECP256K1 curve (130 hex chars, 520 bits): ");
            if(single_calculation) start=omp_get_wtime();
        }
        result=secp256k1_ec_pubkey_create(ctx, &pubkey_from_secp256k1.p, privkey);       //secp256k1_ec_pubkey_create(const secp256k1_context* ctx,  secp256k1_pubkey *pubkey, const unsigned char *seckey)
        if(single_calculation){
            end=omp_get_wtime();
            printf("%.2f us",(end - start)*1000000);
        }

        //---------------------------------------------
        // Public Key
        // https://github.com/bitcoin/bitcoin/blob/ba4b3fbcf21317a9410f3be913e4437d58968091/src/secp256k1/include/secp256k1.h#L179
        //
        // Prefix byte used to tag various encoded curvepoints for specific purposes
        #define SECP256K1_TAG_PUBKEY_EVEN 0x02          // par
        #define SECP256K1_TAG_PUBKEY_ODD 0x03 // impar
        #define SECP256K1_TAG_PUBKEY_UNCOMPRESSED 0x04
        #define SECP256K1_TAG_PUBKEY_HYBRID_EVEN 0x06
        #define SECP256K1_TAG_PUBKEY_HYBRID_ODD 0x07

        // ID Byte
          compressed_02_pubkey[0]=SECP256K1_TAG_PUBKEY_EVEN;
          compressed_03_pubkey[0]=SECP256K1_TAG_PUBKEY_ODD;
          uncompressed_04_pubkey[0]=SECP256K1_TAG_PUBKEY_UNCOMPRESSED;
          compressed_06_pubkey[0]=SECP256K1_TAG_PUBKEY_HYBRID_EVEN;
          compressed_07_pubkey[0]=SECP256K1_TAG_PUBKEY_HYBRID_ODD;
       
        //---------------------------------------------
        // Uncompressed Pubkey reordering from 2 chunks of 32bytes to 65 bytes most significative byte lower index, and adding the key ID.
        //
        // 0x04 - Uncompressed public key format ID 0x04.
        //
        l=32;                                      // First 32 bytes chunk
        for(k=0;k<32;k++){
            uncompressed_04_pubkey[l]=pubkey_from_secp256k1.eb[k];  // .eb is the union element to access the memory in (E)igth (B)its.
            l--;
        }
        l=64;                                      // second 32 bytes chunk
        for(k=32;k<64;k++){
            uncompressed_04_pubkey[l]=pubkey_from_secp256k1.eb[k];
            l--;
        }

        //---------------------------------------------
        // Compressed PubKey get X from uncompressed and select ID byte using parity 0x02-0x03
        //
        // Copy X coordinate to new array with ID byte
        l=32;                                      // First 32 bytes chunk
        for(k=0;k<32;k++){
          compressed_02_pubkey[l]=pubkey_from_secp256k1.eb[k];  // .eb is the union element to access the memory in (E)igth (B)its.
          compressed_03_pubkey[l]=pubkey_from_secp256k1.eb[k];  // .eb is the union element to access the memory in (E)igth (B)its.
          compressed_06_pubkey[l]=pubkey_from_secp256k1.eb[k];  // .eb is the union element to access the memory in (E)igth (B)its.
          compressed_07_pubkey[l]=pubkey_from_secp256k1.eb[k];  // .eb is the union element to access the memory in (E)igth (B)its.  
          l--;
        }
       
        if(single_calculation){
            printf("\r\n          (C-02)" COLOR_GREEN ); for(k=0;k<33;k++) printf("%02x", compressed_02_pubkey[k]); printf(COLOR_RESET);
            printf("\r\n          (C-03)" COLOR_GREEN ); for(k=0;k<33;k++) printf("%02x", compressed_03_pubkey[k]); printf(COLOR_RESET);
            printf("\r\n          (U-04)" COLOR_GREEN ); for(k=0;k<65;k++) printf("%02x", uncompressed_04_pubkey[k]); printf(COLOR_RESET);
            printf("\r\n          (C-06)" COLOR_GREEN ); for(k=0;k<33;k++) printf("%02x", compressed_06_pubkey[k]); printf(COLOR_RESET);
            printf("\r\n          (C-07)" COLOR_GREEN ); for(k=0;k<33;k++) printf("%02x", compressed_07_pubkey[k]); printf(COLOR_RESET);
        }


Also talking about ID's. I realized the puzzle pieces are alternatively Compressed-02 and 03 only.

I got the list below just running my tool using the know private keys found here.

I know the puzzle creator said there is no pattern just a mask from HD wallets.

For example puzzle-1 to 5 are Compressed-02, and puzzle-6 is Compressed-03.


Code:

 1, Asc, C-02, 000000000000000001, 0000000000000000000000000000000000000001,            1,           2, 0000000000000000000000000000000000000010
 2, Asc, C-02, 000000000000000003, 0000000000000000000000000000000000000011,            3,           4, 0000000000000000000000000000000000000100
 3, Asc, C-02, 000000000000000007, 0000000000000000000000000000000000000111,            7,           1, 0000000000000000000000000000000000000001
 4, Asc, C-02, 000000000000000008, 0000000000000000000000000000000000001000,            8,          13, 0000000000000000000000000000000000001101
 5, Asc, C-02, 000000000000000015, 0000000000000000000000000000000000010101,           21,          28, 0000000000000000000000000000000000011100
 6, Asc, C-03, 000000000000000031, 0000000000000000000000000000000000110001,           49,          27, 0000000000000000000000000000000000011011
 7, Asc, C-02, 00000000000000004c, 0000000000000000000000000000000001001100,           76,         148, 0000000000000000000000000000000010010100
 8, Asc, C-03, 0000000000000000e0, 0000000000000000000000000000000011100000,          224,         243, 0000000000000000000000000000000011110011
 9, Asc, C-02, 0000000000000001d3, 0000000000000000000000000000000111010011,          467,          47, 0000000000000000000000000000000000101111
10, Asc, C-03, 000000000000000202, 0000000000000000000000000000001000000010,          514,         641, 0000000000000000000000000000001010000001
11, Asc, C-03, 000000000000000483, 0000000000000000000000000000010010000011,         1155,        1528, 0000000000000000000000000000010111111000
12, Asc, C-03, 000000000000000a7b, 0000000000000000000000000000101001111011,         2683,        2533, 0000000000000000000000000000100111100101
13, Asc, C-03, 000000000000001460, 0000000000000000000000000001010001100000,         5216,        5328, 0000000000000000000000000001010011010000
14, Asc, C-03, 000000000000002930, 0000000000000000000000000010100100110000,        10544,       16323, 0000000000000000000000000011111111000011
15, Asc, C-02, 0000000000000068f3, 0000000000000000000000000110100011110011,        26867,       24643, 0000000000000000000000000110000001000011
16, Asc, C-02, 00000000000000c936, 0000000000000000000000001100100100110110,        51510,       44313, 0000000000000000000000001010110100011001
17, Asc, C-03, 00000000000001764f, 0000000000000000000000010111011001001111,        95823,      102846, 0000000000000000000000011001000110111110
18, Asc, C-02, 00000000000003080d, 0000000000000000000000110000100000001101,       198669,      158866, 0000000000000000000000100110110010010010
19, Asc, C-03, 00000000000005749f, 0000000000000000000001010111010010011111,       357535,      505782, 0000000000000000000001111011011110110110
20, Asc, C-03, 0000000000000d2c55, 0000000000000000000011010010110001010101,       863317,      948447, 0000000000000000000011100111100011011111
21, Asc, C-03, 0000000000001ba534, 0000000000000000000110111010010100110100,      1811764,     1195739, 0000000000000000000100100011111011011011
22, Asc, C-02, 0000000000002de40f, 0000000000000000001011011110010000001111,      3007503,     2591299, 0000000000000000001001111000101001000011
23, Asc, C-03, 000000000000556e52, 0000000000000000010101010110111001010010,      5598802,     8829874, 0000000000000000100001101011101110110010
24, Asc, C-03, 000000000000dc2a04, 0000000000000000110111000010101000000100,     14428676,    18756833, 0000000000000001000111100011010011100001
25, Asc, C-03, 000000000001fa5ee5, 0000000000000001111110100101111011100101,     33185509,    21353353, 0000000000000001010001011101001110001001
26, Asc, C-02, 00000000000340326e, 0000000000000011010000000011001001101110,     54538862,    57411079, 0000000000000011011011000000011000000111
27, Asc, C-03, 000000000006ac3875, 0000000000000110101011000011100001110101,    111949941,   115684467, 0000000000000110111001010011010001110011
28, Asc, C-03, 00000000000d916ce8, 0000000000001101100100010110110011101000,    227634408,   173074486, 0000000000001010010100001110100000110110  
29, Asc, C-02, 000000000017e2551e, 0000000000010111111000100101010100011110,    400708894,   632453190, 0000000000100101101100100111100001000110
30, Asc, C-03, 00000000003d94cd64, 0000000000111101100101001100110101100100,   1033162084,  1069226467, 0000000000111111101110110001100111100011
31, Asc, C-03, 00000000007d4fe747, 0000000001111101010011111110011101000111,   2102388551,   991084263, 0000000000111011000100101011111011100111
32, Asc, C-02, 0000000000b862a62e, 0000000010111000011000101010011000101110,   3093472814,  4043965098, 0000000011110001000010100000001010101010
33, Asc, C-03, 0000000001a96ca8d8, 0000000110101001011011001010100011011000,   7137437912,  6995634245, 0000000110100000111110001110100001000101
34, Asc, C-03, 00000000034a65911d, 0000001101001010011001011001000100011101,  14133072157,  5979799635, 0000000101100100011011001000000001010011
35, Asc, C-02, 0000000004aed21170, 0000010010101110110100100001000101110000,  20112871792, 22274898188, 0000010100101111101011111111100100001100
36, Asc, C-02, 0000000009de820a7c, 0000100111011110100000100000101001111100,  42387769980, 57863790615, 0000110101111000111100110110000000010111
37, Asc, C-02, 000000001757756a93, 0001011101010111011101010110101010010011, 100251560595, 46719975997, 0000101011100000101110100100001000111101

I will drop the uncompressed (04) and the Compressed 06-07 as the puzzle seems not using them.

Does anyone know if the uncompressed (04) and the Compressed 06-07 were used so far on any early days wallet? or for what are they used for?

I always dreamed finding something unspent on those ID's (04-06-07).



hero member
Activity: 862
Merit: 662
would you recommend any other? or any other PRO tips?

The function that you mention use the method know as Scalar Multiplication, this method is also know as "double and add" it use a cycle that per each bit in the key double the generation point G and only adds to the result those whom are bits 1.

In the worst case it is near 256 cycle per key or if you have some precalculated data of those public keys divided in bytes instead bits  you can reduce that cycle to 32 per key but that is still just a suggestion for that function.

The best way to proceed with it this kind of programs is just calculate the first key and with that first key do Public key additions to reach the next key this process will speed you program around 30 times

So instead of recalculate the public key each time with secp256k1_ec_pubkey_create

Code:
result=secp256k1_ec_pubkey_create(ctx, &pubkey_from_secp256k1.p, privkey);
next_key =secp256k1_ec_pubkey_create(ctx, &pubkey_from_secp256k1.p, privkey +1);
next_key =secp256k1_ec_pubkey_create(ctx, &pubkey_from_secp256k1.p, privkey +2);
next_key =secp256k1_ec_pubkey_create(ctx, &pubkey_from_secp256k1.p, privkey+3);

privkey + something is just an example to illustrate what i mean.

the program will do something like:

Code:
first_key=secp256k1_ec_pubkey_create(ctx, &pubkey_from_secp256k1.p, privkey);
next_key = some_publickey_addition(first_key,G);
next_key = some_publickey_addition(next_key ,G);
next_key = some_publickey_addition(next_key ,G);
...
next_key = some_publickey_addition(next_key ,G);
...


Only the first key is calculated in the old way and the subsequent keys are calculated in a faster way.

Another short cut is you don't need to calculate the Y value of all the subsequent keys (unless you are scanning for uncompressed keys) this may double the speed of the calculations.

Another short cut is endomorphism (This don't work on small puzzles) but it can multiply your speed up to 6 times for a general search.
member
Activity: 165
Merit: 26
I benchmarked every step of the brute force loop, and most of the compute time goes into the ECDSA curve library secp256k1_ec_pubkey_create() function.

Quote
#include     // Bitcore eliptic curve library. https://github.com/bitcoin-core/secp256k1
                                         // dont forget to link to /usr/local/lib/libsecp256k1.a
There are numerous places where it's stated by its authors and mentors that the Bitcoin libsecp256k1 library is designed to provide a secure framework for Bitcoin software, not to be the fastest way to do EC math. One of the main features is protection against side-channel attacks, which means that all computations take constant time, with not a lot of shortcuts, if any at all, in order to protect against branch predictions, time-based attacks, etc.

If you want a fast(er)/(est) way to do EC math on a CPU you'll most likely have to roll your own. Slow but easy? Python. Fastish? libsecp256k1. Faster? C and custom arbitrary precision modular arithmetic code. Fasterish? assembler / SIMD CPU instructions. Faster than anything so far? GPU parallel executor threads. Fastest? Your own programmed ASIC.
newbie
Activity: 56
Merit: 0
The search speed is between 15-25K keys/s per CPU thread, depending on the CPU clock.

For CPU that speed is slow, the minimum acceptable speed per thread is at least 1 Million keys.

Even my Core i5 laptop can do some 15 millions keys per second using only 8 threads.

There is a lot of shortcuts that can be made to reach those speeds.

I am interested to know the nature of the bot wars.

How is it possible the war?

Are the Kangaroo and BSGS tools sending the private key findings to the developers?

No those tools are open source and you can read the code to see what network activities they do.

The bot war may start as soon an output transaction come from those address a transaction contains the public key, with it Kangaroo or BSGS can solve the private key almost instantly and with it they may be now able to make a new transactions with a different destination address


Thank you very much for the responses Alberto.

I know the chances to brute force puzzle 66 from private key to ripemd160 are very very small, but I would like to improve my tool, just for the sake of programming it, now you mention my tool seems slow in its performance per CPU thread.

I benchmarked every step of the brute force loop, and most of the compute time goes into the ECDSA curve library secp256k1_ec_pubkey_create() function.

I am using this library.

Quote
#include      // Bitcore eliptic curve library. https://github.com/bitcoin-core/secp256k1
                                         // dont forget to link to /usr/local/lib/libsecp256k1.a
#include               // OpenMP CPU multithreading


        // 1) Calculate Public Key using SECP256K1 eliptic curve
      if(single_calculation){
         printf("\r\n(1) (U)ncompressed & (C)ompressed Public Key from SECP256K1 curve (130 hex chars, 520 bits): ");
         if(single_calculation) start=omp_get_wtime();
      }
        result=secp256k1_ec_pubkey_create(ctx, &pubkey_from_secp256k1.p, privkey);       //secp256k1_ec_pubkey_create(const secp256k1_context* ctx,  secp256k1_pubkey *pubkey, const unsigned char *seckey)
      if(single_calculation){
         printf("%f ms",(omp_get_wtime()-start)*1000);
      }




would you recommend any other? or any other PRO tips?

Thank you very much in advance.
member
Activity: 43
Merit: 10
Are you sure that this API is capable of displaying information from the mempool?

I don't think so, I believe this one is just for confirmed txs.

This is not meant to be used as is in a real scenario, although you could probably consider it a ground work to expand upon.

The goal was to actually see how long the whole operation can take using different tools.

In my end it took roughly a minute to go from a public key on the web to a 70 bit private key stored in a .txt file.

Probably not the best performance too, but scary nevertheless.  Grin
newbie
Activity: 8
Merit: 0

Are you sure that this API is capable of displaying information from the mempool?
hero member
Activity: 862
Merit: 662
The search speed is between 15-25K keys/s per CPU thread, depending on the CPU clock.

For CPU that speed is slow, the minimum acceptable speed per thread is at least 1 Million keys.

Even my Core i5 laptop can do some 15 millions keys per second using only 8 threads.

There is a lot of shortcuts that can be made to reach those speeds.

I am interested to know the nature of the bot wars.

How is it possible the war?

Are the Kangaroo and BSGS tools sending the private key findings to the developers?

No those tools are open source and you can read the code to see what network activities they do.

The bot war may start as soon an output transaction come from those address a transaction contains the public key, with it Kangaroo or BSGS can solve the private key almost instantly and with it they may be now able to make a new transactions with a different destination address
newbie
Activity: 49
Merit: 0
I started my project few years ago, when puzzle-64 still had balance. I was away of this forum for a very long time.....


This is written in your readme:

BINGO! (In the rare case of finding some private key with balance):
Import the WIF into a fully synced Bitcoin Core node.
If not sure how to do that, contact me by email ([email protected]) attaching the 'found.txt' file.



Do you think people are idiots?
You even without a twinge of conscience ask to send a file with the found private key to your email!
member
Activity: 43
Merit: 10
Code:
import requests
import time
import os
import subprocess

# Address to monitor
address = "[b]13zb1hQbWVsc2S7ZTZnP2G4undNNpdh5so[/b]"

# File path to save the public key once detected
file_path = "[b]C:\\Path\\To\\Your\\Cracking\\Tool\\Folder\\[/b]puzzle.txt"

# Command to execute
cmd = "[b]your_cracking_tool.exe -r 20000000000000000:3FFFFFFFFFFFFFFFF -o FOUND.txt -i[/b] puzzle.txt"

# API endpoint
api_url = f"https://blockchain.info/q/pubkeyaddr/{address}"

def monitor_address():
    start_time = time.time()
    while True:
        try:
            response = requests.get(api_url)
            if response.status_code == 200:
                print("OUTGOING TRANSACTION DETECTED!")
                print("FETCHING COMPRESSED PUBLIC KEY...")
                public_key = response.text
                with open(file_path, 'w') as file:
                    file.write(public_key)
                print("INITIALIZING!")
                os.chdir("[b]C:\\Path\\To\\Your\\Cracking\\Tool\\Folder[/b]")
                subprocess.call(["cmd.exe", "/c", cmd])
                break
            else:
                os.system('cls' if os.name == 'nt' else 'clear')
                elapsed_time = time.time() - start_time
                print(f"Monitoring address: {address}...")
                print(f"[T: {int(elapsed_time)}] No outgoing transaction yet...")
                time.sleep(1)
        except Exception as e:
            print(f"Error: {e}")
            time.sleep(1)

if __name__ == "__main__":
    monitor_address()


This script monitors a given address waiting for an outgoing transaction to be broadcasted.

When this happens, the script will then write the public key to a file named "puzzle.txt" and execute the cracking tool of choice using "puzzle.txt" as the in file.

If someone wants to mess with it just replace "File path to save the public key once detected" and os.chdir("C:\\Path\\To\\Your\\Cracking\\Tool\\Folder") with the actual path

Also replace "Address to monitor" with your target address and "Command to execute" with the actual command to start up the algorithm of choice.

This script is fairly simple and as is it won't be able to compete with more elaborate bots, as it stops after finding the private key.

There's no automation to import the key into a wallet/transfer funds etc.

I made it just to test the response time using different tools.

BSGS-CUDA seems to be one of the best options for this, as it doesn't take too much time to load up.

I got to puzzle #70's private key in less than a minute with it.
full member
Activity: 1162
Merit: 237
Shooters Shoot...
I’m seeing so many variations of software throughout this thread and the other one. If I wanted to randomly let my pc waste electricity on weekends doing a random search for #66, what would be my best bet?

Use the program as you wish, but from puzzle 79, 81, 82, 83 and above.

Or, ask someone with knowledge about timings which is the lowest feasible puzzle to be solved that will leave enough time to withdraw without a bot snatchingup. I don't know this answer, could be even puzzle #70?  

If someone can answer that, that would be great.


Puzzle 81 is quite safe. I solved Puzzle 80 in about 26 hours (with extremely large memory in BSGS). The bot does not work on that number.
Nothing below 100, is really safe.

Especially with all this time in between the solving of puzzles.

Kangaroo would still be the program to use, IMO, that's what I would use anyway. Not BSGS, although one could if they had everything prebuilt and ready to go.
newbie
Activity: 56
Merit: 0
I discovered the tools yesterday in this other thread! thanks to someone that mentioned them https://bitcointalksearch.org/topic/m.63916232

I started my project few years ago, when puzzle-64 still had balance. I was away of this forum for a very long time.

I like to fork projects I like, to keep them on the radar, not making any contribution to it. That does not mean I understand all the projects I have on my github.
So I have no idea which kind of bad person you think I am. Might be your paranoia comes from a reflection of what you are.

If you don't trust my binaries, Ok, just don't run them. Your awareness message was fair enough for the community. But, they can be ran safely in VM if you are still curious.

It is my work, It is my choice to open the source or not. I hope you understand it. I am open to collaborate in private repo. My code is still not good to show, plenty of shit that needs to be cleaned. I am not very proud of it.

The motivation creating my own tool was I didn't trust the LBC collider project (I do not understand perl), and I didn't trust the creators.

I see you have done very good progress here with the GPU versions.

I am still interested to know why puzzle 70, 75, 80, 85, get solved before 66.
Is it any way of constraining the search space of puzzle-66 ?

I made some statistic analysis as well and the bits of the known private keys are pretty randomly allocated in the space.

I would like to understand the bot wars as well...

I have to confess I didn't read this thread completely, my apologies if the answers are already here.

Thanks.





Can anyone please be so kind and explain to me what it means that some public keys from this puzzle (like task 130 but not task 66 for example) have been found which makes kangaroo and keyhunt with bsgs mode possible?

I thought we know public addresses as they hold the reward and the task is to find the suitable public key from a reduced key range. So what does it mean that the public key for task 130 is known and is 03633cbe3ec02b9401c5effa144c5b4d22f87940259634858fc7e59b1c09937852? I literally don't understand this.

Thank you

There are private keys , public keys and addresses. These are three different things.

You can use BSGS or Kangaroo modes only on public keys but not on addresses.

The known public keys in this whole challenge were intentionally released by it's creator.

If you see an outgoing transactions in given address history you can easily check it's public key and try the BSGS or Kangaroo modes.

When you have just address without any outgoing transactions your only method is to blindly guessing private keys in hope you will find one which corresponds to address.

Currently finding 66bit privkey without knows public key can be considered as hard as finding 130bit privkey with public key known.

Thank you very much for the explanation!

My tool uses the hard way, private key to ripemd160 and then search on the list of ripemd160 with balance.

[moderator's note: consecutive posts merged]
Pages:
Jump to: