Bitcoin Forum
May 25, 2026, 07:44:07 PM *
News: Latest Bitcoin Core release: 31.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Do we all agree that some questions do not have answers?  (Read 37 times)
hmbdofficial (OP)
Member
**
Online Online

Activity: 196
Merit: 50


View Profile
May 24, 2026, 08:10:32 PM
Merited by stwenhao (1)
 #1

I mean how do we answer  this; does  anyone  knows how the half of secp256k1 generator  was created?
I was having  a text with someone  and he said no body knows the answer to that.  and I kind of think  if it was created  by someone  then  it should  definitely  have an answer.
Your inputs will be appreciated.
stwenhao
Hero Member
*****
Offline

Activity: 697
Merit: 1866


View Profile
May 24, 2026, 08:23:53 PM
Last edit: May 24, 2026, 09:11:17 PM by stwenhao
Merited by vapourminer (4)
 #2

Quote
does  anyone  knows how the half of secp256k1 generator  was created?
No, because it was discussed for decades, and nobody shared the solution yet. For example: https://www.youtube.com/watch?v=NGLR2N4EK58

Quote
if it was created  by someone  then  it should  definitely  have an answer.
And the creator certainly knew it. But it happened in the 90s, and now, we don't even have the original source code, which was used to create secp256k1 in the first place.

Also, the generator was not so important, because it was just given as an example. Different protocols and networks could use different generators.

Edit: Let's say, that someone would really want to get the same x-value for all curves: secp160k1, secp192k1, secp224k1, and secp256k1. In that case, it could be done in a provably fair way, by just hashing something with SHA-1.
Code:
SHA-1("34")=f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59
And then, it could be used for all four curves:
Code:
magic=0xf1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59

p = 0xfffffffffffffffffffffffffffffffeffffac73
K = GF(p)
a = K(0x0000000000000000000000000000000000000000)
b = K(0x0000000000000000000000000000000000000007)
E = EllipticCurve(K, (a, b))
G = E.lift_x(magic)
E.set_order(0x0100000000000000000001b8fa16dfab9aca16b6b3 * 0x1)
d = 0x1
P = d * G
print(hex(P[0]),hex(P[1]))

p = 0xfffffffffffffffffffffffffffffffffffffffeffffee37
K = GF(p)
a = K(0x000000000000000000000000000000000000000000000000)
b = K(0x000000000000000000000000000000000000000000000003)
E = EllipticCurve(K, (a, b))
G = E.lift_x(magic)
E.set_order(0xfffffffffffffffffffffffe26f2fc170f69466a74defd8d * 0x1)
d = 0x1
P = d * G
print(hex(P[0]),hex(P[1]))

p = 0xfffffffffffffffffffffffffffffffffffffffffffffffeffffe56d
K = GF(p)
a = K(0x00000000000000000000000000000000000000000000000000000000)
b = K(0x00000000000000000000000000000000000000000000000000000005)
E = EllipticCurve(K, (a, b))
G = E.lift_x(magic)
E.set_order(0x10000000000000000000000000001dce8d2ec6184caf0a971769fb1f7 * 0x01)
d = 0x1
P = d * G
print(hex(P[0]),hex(P[1]))

p = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f
K = GF(p)
a = K(0x0000000000000000000000000000000000000000000000000000000000000000)
b = K(0x0000000000000000000000000000000000000000000000000000000000000007)
E = EllipticCurve(K, (a, b))
G = E.lift_x(magic)
E.set_order(0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141 * 0x1)
d = 0x1
P = d * G
print(hex(P[0]),hex(P[1]))
Then, we would have these generators:
Code:
0xf1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59 0x600ea3a01f3440d7c72149ffeddbbf4adac6931a
0xf1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59 0x1196595f80903ac2083b8e8f747610d05086f97b73290e3a
0xf1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59 0x2a87d3bfa537ec6b7770dab5c2becd15e4449edc5ce462b8e904442b
0xf1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59 0x570f29a9c31e5071c825fbd851ab061878145b4fb0f2152516c04ce02cf79eea
And they could even be doubled, if someone would need it:
Code:
0xe25a6430a89769deda54de0967ba803482712681                         0x6ba4a131765ea434e04302c2c9fda4f05e6333f5
0x05030d4bc376204b7cbe7aca85785c13e105c514cc0c95c6                 0x995827385f204ac0cc8b4845dce013861b644575b665b01e
0x9f0db4893b0034c5cde53b97f8120aa9d695f8f7634b0730ca360346         0x461ad56d4abf48a371e91fe67400a184b461bc338fb77a9fc578f360
0x7ef889f3aba32f49170d7ed14529d74bddc3b4dbc3dbf69fdaa53d4f0f5cfe12 0xf56185816032bf11d1f877a1a784193de2bd8b3936296c1adfd5c552ecfb2480
But for some reason, that magic value around 0x48ce563f89a0ed9414f5aa28ad0d96d6795f9c62 was used. Even one bigger value would work for all four curves:
Code:
0x48ce563f89a0ed9414f5aa28ad0d96d6795f9c63 0x4c80552a4cdff5008657529ff0099a6ee990980e
0x48ce563f89a0ed9414f5aa28ad0d96d6795f9c63 0xc20dc9960bc82d2e8fa8e6521fe5ada3d6e539569c640d8
0x48ce563f89a0ed9414f5aa28ad0d96d6795f9c63 0x7f2bb64ace5c0ce64c928e128e30fc5a67163a6fd6ba88b30224473d
0x48ce563f89a0ed9414f5aa28ad0d96d6795f9c63 0x6fa8a092e8cfbb447972a525e94bc52c9bb542a6c07fd538e1a9e071b14d7c76
So, it is now simply unknown, why exactly these values were picked. Because as you can see, many others would work fine as well, if not better.

Proof of Work puzzle in mainnet, testnet4 and signet.
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!