比特幣源碼研讀之公鑰篇

這是我的第六篇研讀記錄泻肯,每天擠一點(diǎn)時(shí)間邊學(xué)邊寫(xiě)海洼,歡迎大家拍磚。

公鑰

1休里、公鑰的生成

公鑰通過(guò)私鑰與橢圓曲線相乘而得蛆挫,公式為

K=k*G

k:是私鑰

G:稱為生成點(diǎn)的常數(shù)點(diǎn)(坐標(biāo)點(diǎn))

K:所得的公鑰

上述公式并不是一個(gè)簡(jiǎn)單的乘法運(yùn)算,而是一個(gè)幾何運(yùn)算妙黍,涉及到一個(gè)橢圓曲線運(yùn)算

2悴侵、橢圓曲線

橢圓曲線源于橢圓弧長(zhǎng)的,橢圓積分的反函數(shù)拭嫁。比特幣中的橢圓曲線是用美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)設(shè)立的secp256K1標(biāo)準(zhǔn)可免。公式:y2modp=(X3+7)modp

其坐標(biāo)范圍(0,1.158x10^77-1)做粤,與之前的私鑰空間范圍相同浇借。

3、橢圓曲線坐標(biāo)

由于x驮宴、y限定范圍非常大逮刨,導(dǎo)致整個(gè)數(shù)值也非常大呕缭,又因?yàn)樗请x散的堵泽,所以要找到相同點(diǎn)非常難修己。在secp256k1的標(biāo)準(zhǔn)下它的坐標(biāo)值非常大,無(wú)法用我們所知的個(gè)十百千萬(wàn)來(lái)描述迎罗,它的源碼位于src/secp256k1睬愤,包含了私鑰與地址相關(guān)的函數(shù),主要功能是實(shí)現(xiàn)比特幣密鑰與地址的計(jì)算纹安,包括:簽名尤辱、驗(yàn)證、密鑰的生成等

4厢岂、橢圓曲線幾何算法

K=k*G并不是一個(gè)簡(jiǎn)單的乘法運(yùn)算光督,而是一個(gè)幾何運(yùn)算。簡(jiǎn)單介紹一下兩種情況的坐標(biāo)值:

1)兩個(gè)不同點(diǎn)坐標(biāo)值:P+Q=R

P+Q表示為P和Q的連線塔粒,R表示連線與整個(gè)橢圓曲線的焦點(diǎn)结借,然后對(duì)焦點(diǎn)進(jìn)行X取反得“-R”,得到一個(gè)坐標(biāo)值卒茬,即公鑰值船老。K=k*G,k*G表示k個(gè)G在橢圓曲線上的相加圃酵,G是常量柳畔,要想得到不同的公鑰,只有k(私鑰)不同才能保證公鑰的不同

2)兩個(gè)相同點(diǎn)坐標(biāo)值:P+P=2P

P+P表示為兩個(gè)點(diǎn)在同一位置郭赐,那如何計(jì)算呢薪韩?以P點(diǎn)作橢圓曲線的切線,對(duì)曲線的焦點(diǎn)進(jìn)行x取反捌锭,得到相應(yīng)的坐標(biāo)值躬存,即公鑰值。

綜上所述舀锨,以G為起點(diǎn)做相加處理岭洲,以切線計(jì)算與橢圓曲線交點(diǎn)取反,再加上下一個(gè)G坎匿,循環(huán)往復(fù)計(jì)算形成一種無(wú)序的狀態(tài)盾剩,從而得到需要的公鑰值(x.y)坐標(biāo)。

5替蔬、壓縮公鑰

當(dāng)我們得到相應(yīng)的坐標(biāo)值告私,我們就能得到我們需要的公鑰值。首先把x.y進(jìn)行組合承桥,并在組合后的公鑰前加上04作為前綴驻粟,這樣就形成了“04xy”公鑰值(稱為未壓縮公鑰),由于未壓縮公鑰值占比內(nèi)存較大(512位),需要對(duì)其進(jìn)行壓縮蜀撑、以減少存儲(chǔ)壓力挤巡。那怎么實(shí)現(xiàn)呢?

一方面由于y的坐標(biāo)值可以通過(guò)x推導(dǎo)出來(lái)酷麦,所以y值的信息沒(méi)必要存儲(chǔ)矿卑,可以節(jié)省一半的信息量肠阱。

另一方面y值有正負(fù)數(shù)落蝙,所以當(dāng)y為正數(shù)時(shí),公鑰前加02檐嚣,如:02x糊肤;反之在公鑰前加03琴昆,如:03x。

當(dāng)公鑰需要的儲(chǔ)存空間變小馆揉,這樣就有利于比特幣交易更加完善椎咧。

? ? ? ? ? ? ? 區(qū)塊鏈研習(xí)社源碼研讀班方建強(qiáng)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市把介,隨后出現(xiàn)的幾起案子勤讽,更是在濱河造成了極大的恐慌,老刑警劉巖拗踢,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脚牍,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡巢墅,警方通過(guò)查閱死者的電腦和手機(jī)诸狭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)君纫,“玉大人驯遇,你說(shuō)我怎么就攤上這事⌒钏瑁” “怎么了叉庐?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)会喝。 經(jīng)常有香客問(wèn)我陡叠,道長(zhǎng),這世上最難降的妖魔是什么肢执? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任枉阵,我火速辦了婚禮,結(jié)果婚禮上预茄,老公的妹妹穿的比我還像新娘兴溜。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布拙徽。 她就那樣靜靜地躺著刨沦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪斋攀。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,443評(píng)論 1 302
  • 那天梧田,我揣著相機(jī)與錄音淳蔼,去河邊找鬼。 笑死裁眯,一個(gè)胖子當(dāng)著我的面吹牛鹉梨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播穿稳,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼存皂,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了逢艘?” 一聲冷哼從身側(cè)響起旦袋,我...
    開(kāi)封第一講書(shū)人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎它改,沒(méi)想到半個(gè)月后疤孕,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡央拖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年祭阀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鲜戒。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡专控,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出遏餐,到底是詐尸還是另有隱情伦腐,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布失都,位于F島的核電站蔗牡,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏嗅剖。R本人自食惡果不足惜辩越,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望信粮。 院中可真熱鬧黔攒,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至赏胚,卻和暖如春访娶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背觉阅。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工崖疤, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人典勇。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓劫哼,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親割笙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子权烧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容