Post
Topic
Board Development & Technical Discussion
Re: solve this problem i will donate 2022$
by
COBRAS
on 02/01/2022, 19:26:59 UTC
 Do you mean find a math realation between these numbers?

 first   x: c994b69768832bcbff5e9ab39ae8d1d3763bbf1e531bed98fe51de5ee84f50fb
second   x: 79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 private base x
third   x: bcace2e99da01887ab0102b696902325872844067f15e98da7bba04400b88fcb
even   y: 483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8 small range y private key: 1
odd   y: b7c52588d95c3b9aa25b0403f1eef75702e84bb7597aabe663b82f6f04ef2777     big range y private key: fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364140


 Like the a math realation bettewn first x and the second x?

It's called an endomorphism and the 3 X-points are all accessible by a cube (1/3) root, a 2/3 root, and the original X:

Now multiply 2*3 combos (endomorphisms) and you get a total of 6 endomorphisms: (x,y), (y,x) (y, n-x)  and (x,n-y), (n-y, x), (n-y, n-x).

There's also python code in another thread I recently saw that computes those X's from a single Y (and vice versa):



script : x from y

Code:
## Input
y = 0x3199555CE45C38B856C9F64AC6DB27000AB6CEA10CAD76B2B6E246C9A020E707

## Field parameters
# Field modulus
p = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f
# Cube root of 1
beta = 0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee

## Actual code
xcubed = (y*y - 7) % p
print ("xcubed = 0x%x" % xcubed)

x = pow(xcubed, (p + 2) / 9, p)
print ("x1 = 0x%x" % x)
print ("x2 = 0x%x" % (x * beta % p))
print ("x3 = 0x%x" % (x * beta * beta % p))


script: y from x

Code:
p = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f
x = 0x33709eb11e0d4439a729f21c2c443dedb727528229713f0065721ba8fa46f00e
ysquared = ((x*x*x+7) % p)    
print ("ysquared= %s ",  hex(ysquared) )  
y = pow(ysquared, (p+1)/4, p)
print ("y1 =  ",hex(y))
print ("y2 =  ", hex(y * -1 % p))
y1 = y
y2 = (y * -1) % p
print(" ")
print("value x = ",hex(x))
print("value x = ",x)
print("         ")

if Integer(y1) % 2 == 0:
    
    print("value 02 to y = ",hex(y1))
    print("value 02 to y =",y1)
    print(" ")
    print("value 03 to y = ",hex(y2))
    print("value 03 to y =",y2)
    

if Integer(y2) % 2 == 0:
    print("value 02 to y = ",hex(y2))
    print("value 02 to y =",y2)
    print(" ")
    print("value 03 to y = ",hex(y1))
    print("value 03 to y =",y1)
    

#test
print (hex((x**3 + 7 - y1**2) % p) )  

print (hex((x**3 + 7 - y2**2) % p))  



Recall that for X point from Y point, all you have to do is solve the y^2 = x^3 + 7 equation for X (you already know Y).



I know this is completely unrelated, but before I forget, let me explain why x = pow(xcubed, (p + 2) / 9, p) actually works in the code - It's because xp % p equals x (as is the case when you take any number to the power of the modulus), so that means:
xp+1 % p equals x2
xp+2 % p equals x3
xp-1 % p equals 1/x
xp-2 % p equals 1/x2
etc...
so once you have xcubedp+2, this is actually the value of x3*3=9, so to get back from xcubed to x you'd have to divide the power by 9, so that they cancel out like x9/9 = x:

so in this case xcubed(p+2)/9 would give us x.

Similarly:

square root:  xsquared(p+1)/4
4th root:  x4th(p+3)/16
5th root:  x5th(p+4)/25
etc...

And then if you wanted to get 1/sqrt(x) for example, you'd take xp-2, (not xp-1 which will be equal to 0 for all x), which is just x1/(2*2)=1/4, and so to get 1/sqrt(x) you'd calculate  x(p-2)/4
1/x3 you'd calculate  x(p-3)/9
and so on...

I know it has nothing to do with your problem, just wanted to jot this down somewhere before it gets lost in space forever.

HI. And what heppen with privatekey in this calculation ?