私鑰到公鑰到底怎么算的?數字貨幣底層就這一步,講透了
很多人覺得私鑰和公鑰之間像魔法,一個數字"變"出另一個。做過底層開發的人都知道,這中間就是一道數學題——橢圓曲線上的標量乘法,沒有什么神秘成分。
私鑰說白了就是一個256位的大隨機整數,取值范圍是1到曲線階n-1。比如BTC里一個合法私鑰就是66381068970825802406580254382908048237007015124442177598216883379116499760603,這串數字在錢包里就是全部資產憑證,丟了就再也找不回來。
公鑰的生成方式:拿私鑰k去乘橢圓曲線基點G,得到坐標點(kx, ky)。這條曲線是secp256k1,方程y2=x3+7。k乘G本質上是連續做k次點加法,用"雙-加"算法加速到O(log k)步,算起來并不慢。
反方向就不行了。給你公鑰kG,讓你反推k,這就是離散對數問題。目前沒有任何亞指數級算法能在合理時間內解256位的secp256k1數字貨幣 私鑰到公鑰,量子計算機(Shor算法)也還沒到實用規模,所以公鑰→私鑰在工程上視為不可逆。
實際錢包生成流程:隨機數生成器出私鑰→橢圓曲線乘法得公鑰→SHA-256+RIPEMD160取哈希得地址。每一步都是確定性的,同樣的私鑰永遠算出同一個地址私鑰到公鑰到底怎么算的?數字貨幣底層就這一步,講透了,私鑰是唯一憑證,公鑰和地址可以公開,這就是整個體系信任的根基。
Leave Comments