Bitcoin Forum
January 10, 2026, 06:19:50 PM *
News: Due to a wallet-migration bug, you should not upgrade Bitcoin Core. But if you already did, there's no need to downgrade.
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Determine if a public key point y is negative or positive, odd or even?  (Read 1123 times)
sss555 (OP)
Newbie
*
Offline Offline

Activity: 16
Merit: 1


View Profile
September 22, 2015, 09:07:12 AM
 #1

Take a bitcoin public key (x, y) and its additive inverse (x, -y). How do you identify which is the positive point and which is the negative point?

Example

Private key 1 -> (x, y)

x = 0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798L

y = 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8L

-y = 0xb7c52588d95c3b9aa25b0403f1eef75702e84bb7597aabe663b82f6f04ef2777L

Private key 2 -> (x, y)

x = 0xc6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5L

y = 0x1ae168fea63dc339a3c58419466ceaeef7f632653266d0e1236431a950cfe52aL

-y = 0xe51e970159c23cc65c3a7be6b99315110809cd9acd992f1edc9bce55af301705L

Private key 3 -> (x, y)

x = 0xf9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9L

y = 0x388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672L

-y = 0xc77084f09cd217ebf01cc819d5c80ca99aff5666cb3ddce4934602897b4715bdL

--------------------------------------------------------------------------------------------------------------------------

Also, how can you identify which pub key is odd and which is even?

ex: private key 1 x,y is odd , private key 2 x,y is even (based with pub key)

--------------------------------------------------------------------------------------------------------------------------
addition info :

bitcoin doubling pub key

In normal math number 7/2 results are 3 and 1 if we need 7 back 3*2 = 6 + 1 = 7

elliptical curve cryptography

private key 7 pub key are

x = 0x5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bcL

y = 0x6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264daL

Getting 7 pub key back by , just doubling below given pub key to get 7 pub key

x = 0x592152c398d6c719636a03a6dad64246a5a6814aa62c156b0ce5332f6759b031L

y = 0x72dd2e1d26c233337760c49122a1df67d0aa792b453f97bd29765c83b47ba01dL

Like the same for 3,5,9,11......etc

Just education

--------------------------------------------------------------------------------------------------------------------------
mjojo
Newbie
*
Offline Offline

Activity: 81
Merit: 0


View Profile
January 17, 2025, 08:33:13 AM
 #2

Take a bitcoin public key (x, y) and its additive inverse (x, -y). How do you identify which is the positive point and which is the negative point?

Example

Private key 1 -> (x, y)

x = 0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798L

y = 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8L

-y = 0xb7c52588d95c3b9aa25b0403f1eef75702e84bb7597aabe663b82f6f04ef2777L

Private key 2 -> (x, y)

x = 0xc6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5L

y = 0x1ae168fea63dc339a3c58419466ceaeef7f632653266d0e1236431a950cfe52aL

-y = 0xe51e970159c23cc65c3a7be6b99315110809cd9acd992f1edc9bce55af301705L

Private key 3 -> (x, y)

x = 0xf9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9L

y = 0x388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672L

-y = 0xc77084f09cd217ebf01cc819d5c80ca99aff5666cb3ddce4934602897b4715bdL

--------------------------------------------------------------------------------------------------------------------------

Also, how can you identify which pub key is odd and which is even?

ex: private key 1 x,y is odd , private key 2 x,y is even (based with pub key)

--------------------------------------------------------------------------------------------------------------------------
addition info :

bitcoin doubling pub key

In normal math number 7/2 results are 3 and 1 if we need 7 back 3*2 = 6 + 1 = 7

elliptical curve cryptography

private key 7 pub key are

x = 0x5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bcL

y = 0x6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264daL

Getting 7 pub key back by , just doubling below given pub key to get 7 pub key

x = 0x592152c398d6c719636a03a6dad64246a5a6814aa62c156b0ce5332f6759b031L

y = 0x72dd2e1d26c233337760c49122a1df67d0aa792b453f97bd29765c83b47ba01dL

Like the same for 3,5,9,11......etc

Just education

--------------------------------------------------------------------------------------------------------------------------
How about to calculation larga number/large private key?
hexan123
Newbie
*
Offline Offline

Activity: 27
Merit: 0


View Profile
January 17, 2025, 04:48:35 PM
 #3

can you write something more about these calculation methods
odolvlobo
Legendary
*
Offline Offline

Activity: 4914
Merit: 3744



View Profile
January 18, 2025, 06:24:17 AM
Merited by ABCbits (2), vapourminer (1), nc50lc (1)
 #4

Take a bitcoin public key (x, y) and its additive inverse (x, -y). How do you identify which is the positive point and which is the negative point?

The sign (or more precisely even/odd) is determined simply by the value of the least-significant bit Notice that the values of the LSBs for Y and -Y are opposites in all of your examples. That's why they are referred to as even/odd and not positive/negative.

To answer your question, there is no "positive/negative". All numbers are positive.

Join an anti-signature campaign: Click ignore on the members of signature campaigns.
PGP Fingerprint: 6B6BC26599EC24EF7E29A405EAF050539D0B2925 Signing address: 13GAVJo8YaAuenj6keiEykwxWUZ7jMoSLt
mjojo
Newbie
*
Offline Offline

Activity: 81
Merit: 0


View Profile
January 18, 2025, 08:18:12 AM
 #5

simply method to derive pubkey to private key is divide the known pubkey..but the first challenge must be make sure pubkey is even or odd. I hope the creator of this thread its OK after 10 years and starting discussion again.
kTimesG
Full Member
***
Offline Offline

Activity: 714
Merit: 221


View Profile
January 18, 2025, 10:03:18 PM
 #6

Odd: y mod 2 == 1
Even: y mod 2 == 0
Negative: always (subtract P until y < 0)
Positive: always (add P until y > 0)
Relation between scalar parity and y odd/even: not proven to exist, but also not proven to not exist. Perhaps a quantum super-computer the size of our solar system may come up with some equation. The solution obviously needs to consider G.x, G.y and the absurdly high degrees of polynomials involved with each new group addition.

Off the grid, training pigeons to broadcast signed messages.
COBRAS
Member
**
Offline Offline

Activity: 1136
Merit: 25


View Profile
January 19, 2025, 12:49:00 AM
 #7

I don know ...

If subtract  21 -10 = 11, -10 = 1, -10 = -9 ,-10 = -19.

how come to  -21 subtracting 10 from 21? because middle of a number of subtraction is a transfer from positive to negative zones.

[
mjojo
Newbie
*
Offline Offline

Activity: 81
Merit: 0


View Profile
January 19, 2025, 12:55:51 AM
 #8

can you write something more about these calculation methods

in ecc secp256k1

1/2 = 57896044618658097711785492504343953926418782139537452191302581570759080747169

7/2 = 57896044618658097711785492504343953926418782139537452191302581570759080747172

57896044618658097711785492504343953926418782139537452191302581570759080747172 / 57896044618658097711785492504343953926418782139537452191302581570759080747169 = 7

So the above method from @sss555 is not work to define the pubkey is odd or even. I already try many use method to separate odd and even but pattern to cyclic odd and even is always same.
COBRAS
Member
**
Offline Offline

Activity: 1136
Merit: 25


View Profile
January 19, 2025, 12:57:41 AM
 #9

can you write something more about these calculation methods

in ecc secp256k1

1/2 = 57896044618658097711785492504343953926418782139537452191302581570759080747169

7/2 = 57896044618658097711785492504343953926418782139537452191302581570759080747172

57896044618658097711785492504343953926418782139537452191302581570759080747172 / 57896044618658097711785492504343953926418782139537452191302581570759080747169 = 7

So the above method from @sss555 is not work to define the pubkey is odd or even. I already try many use method to separate odd and even but pattern to cyclic odd and even is always same.


7/2 - 1/2 = 3,

7 -3 = odd

Huh

[
mjojo
Newbie
*
Offline Offline

Activity: 81
Merit: 0


View Profile
January 19, 2025, 01:00:29 AM
 #10

can you write something more about these calculation methods

in ecc secp256k1

1/2 = 57896044618658097711785492504343953926418782139537452191302581570759080747169

7/2 = 57896044618658097711785492504343953926418782139537452191302581570759080747172

57896044618658097711785492504343953926418782139537452191302581570759080747172 / 57896044618658097711785492504343953926418782139537452191302581570759080747169 = 7

So the above method from @sss555 is not work to define the pubkey is odd or even. I already try many use method to separate odd and even but pattern to cyclic odd and even is always same.


7/2 - 1/2 = 3,

7 -3 = odd

Huh

remember we just have the pubkey as known variable, no decimal or pvkey
COBRAS
Member
**
Offline Offline

Activity: 1136
Merit: 25


View Profile
January 19, 2025, 01:02:58 AM
 #11

can you write something more about these calculation methods

in ecc secp256k1

1/2 = 57896044618658097711785492504343953926418782139537452191302581570759080747169

7/2 = 57896044618658097711785492504343953926418782139537452191302581570759080747172

57896044618658097711785492504343953926418782139537452191302581570759080747172 / 57896044618658097711785492504343953926418782139537452191302581570759080747169 = 7

So the above method from @sss555 is not work to define the pubkey is odd or even. I already try many use method to separate odd and even but pattern to cyclic odd and even is always same.


7/2 - 1/2 = 3,

7 -3 = odd

Huh

remember we just have the pubkey as known variable, no decimal or pvkey

I talk abot this

1/2 = 57896044618658097711785492504343953926418782139537452191302581570759080747169

7/2 = 57896044618658097711785492504343953926418782139537452191302581570759080747172

[
mjojo
Newbie
*
Offline Offline

Activity: 81
Merit: 0


View Profile
January 19, 2025, 01:07:59 AM
 #12

can you write something more about these calculation methods

in ecc secp256k1

1/2 = 57896044618658097711785492504343953926418782139537452191302581570759080747169

7/2 = 57896044618658097711785492504343953926418782139537452191302581570759080747172

57896044618658097711785492504343953926418782139537452191302581570759080747172 / 57896044618658097711785492504343953926418782139537452191302581570759080747169 = 7

So the above method from @sss555 is not work to define the pubkey is odd or even. I already try many use method to separate odd and even but pattern to cyclic odd and even is always same.


7/2 - 1/2 = 3,

7 -3 = odd

Huh

remember we just have the pubkey as known variable, no decimal or pvkey

I talk abot this

1/2 = 57896044618658097711785492504343953926418782139537452191302581570759080747169

7/2 = 57896044618658097711785492504343953926418782139537452191302581570759080747172



just run ecctools from @Alberto
COBRAS
Member
**
Offline Offline

Activity: 1136
Merit: 25


View Profile
January 19, 2025, 01:23:04 AM
Last edit: January 24, 2025, 02:09:18 PM by mprep
 #13

can you write something more about these calculation methods

in ecc secp256k1

1/2 = 57896044618658097711785492504343953926418782139537452191302581570759080747169

7/2 = 57896044618658097711785492504343953926418782139537452191302581570759080747172

57896044618658097711785492504343953926418782139537452191302581570759080747172 / 57896044618658097711785492504343953926418782139537452191302581570759080747169 = 7

So the above method from @sss555 is not work to define the pubkey is odd or even. I already try many use method to separate odd and even but pattern to cyclic odd and even is always same.


7/2 - 1/2 = 3,

7 -3 = odd

Huh

remember we just have the pubkey as known variable, no decimal or pvkey

I talk abot this

1/2 = 57896044618658097711785492504343953926418782139537452191302581570759080747169

7/2 = 57896044618658097711785492504343953926418782139537452191302581570759080747172



just run ecctools from @Alberto

I using ecctools

another situation:

x = 0x123456789

b  = 1

c = 0x100000000

Xx = x + b

Xx = Xx - c


# = 0x2345678a


print(hex(x-Xx))

output:

0xffffffff

[Program finished]

if  know range of pubkey after subtraction it is posible or not, verify with brute in range ffffff,like in scrypt , brute 0xffffffff


anyone try their examples and you get fffff too ffff will be know range

but what about if  "c" in my code wrong ?







N =    115792089237316195423570985008687907852837564279074904382605163141518161494337

def inv(v): return pow(v, N-2, N)
def divnum(a, b): return ( (a * inv(b) ) % N )


x =0xfffffffffffff# 0x123456789

b  = 1

c = (0x123456789 *(-1%N)%N)%N

print("c",hex(c))

Xx =(x + b %N)%N

Xx = (Xx - c %N)%N


# = 0x2345678a


print("x+Xx",hex((x+Xx%N)%N))

res:

c 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8bacf0d9b8
x+Xx 0x20000123456788


N =    115792089237316195423570985008687907852837564279074904382605163141518161494337

def inv(v): return pow(v, N-2, N)
def divnum(a, b): return ( (a * inv(b) ) % N )


x =0xfffffffffffff# 0x123456789

b  = 1

c = (0x123456789 *(1%N)%N)%N

print("c",hex(c))

Xx =(x + b %N)%N

Xx = (Xx - c %N)%N


# = 0x2345678a


print("x+Xx",hex((x+Xx%N)%N))


result:

c 0x123456789
x+Xx 0x1ffffedcba9876

[Program finished]

edcba9876 !=0x123456789

 Huh


[moderator's note: consecutive posts merged]

[
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!