<<  >> (p.190)
    Author Topic: Bitcoin puzzle transaction ~32 BTC prize to who solves it  (Read 334535 times)
    nomachine
    Full Member
    ***
    Offline Offline

    Activity: 742
    Merit: 110


    View Profile
    October 24, 2023, 03:39:58 PM
    Last edit: October 24, 2023, 04:17:59 PM by nomachine
     #3781

    Let's say we have a 66 bit private key. Such key must be a multiple of smaller number

    Why numbers at all?

    Let's say we have a Puzzle 65, 64, 63 private keys in bytes:

    Code:
    Puzzle 65 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xa88\xb15\x05\xb2hg'
    Puzzle 64 b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x05\x1f'\xb0\x91\x12\xd4"
    Puzzle 63 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00|\xce^\xfd\xac\xcfh\x08'
    and so on....

    Do you see how many leading zeros there are and how small the end is in bytes?

    b'\x00' * 23 (twenty-three zeroes) + 9 bytes

    You need to generate the last 9 bytes to get full WIF (from 66 to 71 bits).

     I went one step further now. To represent hash160 directly in the vector as bytes and

     
    Code:
      std::vector<std::vector<unsigned char>> target_hash160_list = {
            {0x20, 0xd4, 0x5a, 0x6a, 0x76, 0x25, 0x35, 0x70, 0x0c, 0xe9, 0xe0, 0xb2, 0x16, 0xe3, 0x19, 0x94, 0x33, 0x5d, 0xb8, 0xa5},
            {0x73, 0x94, 0x37, 0xbb, 0x3d, 0xd6, 0xd1, 0x98, 0x3e, 0x66, 0x62, 0x9c, 0x5f, 0x08, 0xc7, 0x0e, 0x52, 0x76, 0x93, 0x71},
            {0xe0, 0xb8, 0xa2, 0xba, 0xee, 0x1b, 0x77, 0xfc, 0x70, 0x34, 0x55, 0xf3, 0x9d, 0x51, 0x47, 0x74, 0x51, 0xfc, 0x8c, 0xfc},
            {0x61, 0xeb, 0x8a, 0x50, 0xc8, 0x6b, 0x05, 0x84, 0xbb, 0x72, 0x7d, 0xd6, 0x5b, 0xed, 0x8d, 0x24, 0x00, 0xd6, 0xd5, 0xaa},
            {0xf6, 0xf5, 0x43, 0x1d, 0x25, 0xbb, 0xf7, 0xb1, 0x2e, 0x8a, 0xdd, 0x9a, 0xf5, 0xe3, 0x47, 0x5c, 0x44, 0xa0, 0xa5, 0xb8},
            {0xbf, 0x74, 0x13, 0xe8, 0xdf, 0x4e, 0x7a, 0x34, 0xce, 0x9d, 0xc1, 0x3e, 0x2f, 0x26, 0x48, 0x78, 0x3e, 0xc5, 0x4a, 0xdb},
            {0xfe, 0x7c, 0x45, 0x12, 0x67, 0x31, 0xf7, 0x38, 0x46, 0x40, 0xb0, 0xb0, 0x04, 0x5f, 0xd4, 0x0b, 0xac, 0x72, 0xe2, 0xa2}
        };

     compare them directly afterwards without any conversion to hex.

    This works fast as hell.  It is SO fast that you can barely see the numbers on the display. Flashing characters on the screen....
    But it's not fast enough for Puzzles over 60...Need GPU....

    BTC: bc1qdwnxr7s08xwelpjy3cc52rrxg63xsmagv50fa8
Page 189
Viewing Page: 190