división de coordinación x, y

código pitón

def inverse(x, p):

    return pow(x,p-2,p)

p = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f

#private key 2 -->(x , y) value

xx =  0xc6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5L
yy =  0x1ae168fea63dc339a3c58419466ceaeef7f632653266d0e1236431a950cfe52aL

#private key 4 -->(x , y) value

x  =  0xe493dbf1c10d80f3581e4904930b1404cc6c13900ee0758474fa94abe8c4cd13L
y  =  0x51ed993ea0d455b75642e2098ea51448d967ae33bfbdfe40cfe97bdc47739922L

a= (x*inverse(xx,p))%p

print "x = " + hex(a)

b= (y*inverse(yy,p))%p

print "y = " + hex(b)

producción

x = 0x1d8a71dd4218a520a1f976b6a4f66ed600880baf69d401a73dd010dd60f859ffL
y = 0x8f73b0d00f8d9e262cc230b7a6bee35d44ac898986195e819d68ecafd6b7803bL

matemáticas normales 4/2 = 2

pero aquí el valor de la clave privada 2 x,y dividido por el valor de la clave privada 4 x,y, no proporciona el valor correcto de x,y

bitcoin, aprendizaje de matemáticas

Respuestas (1)

No existe tal cosa como la multiplicación (o división) de dos puntos en el mundo de las matemáticas ECC. Esto se debe a que los puntos de una curva elíptica forman un grupo matemático, en lugar de un anillo.

Como tal, no debe esperar que las coordenadas de 4*G y 2*G estén relacionadas por el método que describió. El resultado de 2*G no es lo mismo que multiplicar cada una de las coordenadas de G por 2. Sin embargo, puedes comprobar que

4*G - 2*G = 2*G

La resta aquí es en realidad la abreviatura de un procedimiento complejo, pero formulado, para dos puntos ECC. Tenga en cuenta que la resta es simplemente la suma del inverso aditivo en el grupo ECC. Esto es muy diferente al inverso multiplicativo en el campo modular que definió su método de Python.