Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
digaran
on 23/10/2023, 18:53:57 UTC
Main question is, how can we guess the first few digits? If even if we guess the 4 first digits correctly, the fifth digit would cause a problem if we make a mistake.
sincerely i have not investigated much in this technique, due to lack of time.
I only know that dividing by 5 with this technique, you will not worry about floating numbers.
I have applied the technique in 2 rounds and everything seems to be on the right track.
honestly do not know how many rounds are possible, but in my opinion it is a good idea.
Code:
x=2000000000000000
t=1185429467683753

A0=x-t
>>814570532316247

A1=t/5
>>237085893536750.6
A2=A0/5
>>162914106463249.4

A3=t-A1
>>948343574147002.4
A4= A0-A2
>>651656425852997.6


A5=A4-A1
>>785429467683753

A6=A3-A2
>>414570532316247

#---------------------------

t=A5
>>785429467683753
A0=A6
>>414570532316247

A1=t/5
>>157085893536750.6
A2=A0/5
>>82914106463249.4

A3=t-A1
>>628343574147002.4
A4= A0-A2
>>331656425852997.6


A5=A3-A2
>>545429467683753

A6=A4-A1
>>414570532316247

we obtain.
target=1185429467683753
  R=      545429467683753

Will this work with your script of dividing by 3 you have posted before? Or do you have a script for this one as well?

Ok.
I'm working on Kangaroo Twimi algorithm on  hash160.
I don't know if it will work, but this is an idea.
It uses two EC_POINT objects (K and W) and iteratively moves them around the elliptic curve by adding random steps until they land on the same point.
When the Kangaroo and Wallaby points collide, the algorithm returns the discrete logarithm k.

Code:
bool kangarooTwimi(const EC_GROUP* group, const BIGNUM* order, BIGNUM* x, BIGNUM* result) {
    BIGNUM* k = BN_new();
    BIGNUM* k1 = BN_new();
    BIGNUM* k2 = BN_new();
    BIGNUM* x1 = BN_new();
    BIGNUM* x2 = BN_new();

    // Set k to a random value
    BN_rand_range(k, order);

    EC_POINT* G = EC_POINT_new(group);
    EC_POINT* kG = EC_POINT_new(group);
    EC_POINT* xG = EC_POINT_new(group); // Create an EC_POINT for x

    EC_POINT_mul(group, G, k, NULL, NULL, NULL); // G = k * G

    while (true) {
        EC_POINT_mul(group, kG, NULL, G, k, NULL); // kG = k * G

        // Use EC_POINT_mul to compute xG = x * G
        EC_POINT_mul(group, xG, NULL, NULL, x, NULL);

        // Extract affine coordinates
        EC_POINT_get_affine_coordinates_GFp(group, kG, k1, NULL, NULL);
        EC_POINT_get_affine_coordinates_GFp(group, xG, x1, NULL, NULL);

        if (BN_cmp(k1, x1) == 0) {
            BN_copy(result, k);
            BN_free(k);
            BN_free(k1);
            BN_free(k2);
            BN_free(x1);
            BN_free(x2);
            EC_POINT_free(G);
            EC_POINT_free(kG);
            EC_POINT_free(xG);
            return true;
        }

        BN_add(k, k, BN_value_one());
    }
}
rest is similiar as Bytea HASH160 Search from here :
https://bitcointalk.org/index.php?topic=1306983.msg63029958#msg63029958

100% OpenSSL code...
I wish I knew anything about coding, I could give my opinion, but your idea is great, I can work on different values until I get a result, but could you also work on a scalar mod n script alone please?  I mean just scalar mod n, no EC involved, scratch that, I believe if you can write a script where it takes both scalar and points and does the magic on both but with the ability to output points for scalar results.  If you don't understand me, I will explain later, I'm in pain now.😉