------前方高能,數學恐懼人員請從速徹離-----
有public key, private key,就可以做digital signature入面最重要既一步:簽名
起generate 簽名之前我地仲要計一對暫時性既private key and public key
而家define
k = 暫時性private key
r = 由k gen出黎既暫時性public key既x coordinate
s = k^-1 * (Hash(文件) + my private key * r) mod p
where p = 2^256-2^32-2^9-2^8-2^7-2^6-2^4-1
(s,r)呢組數就我簽比呢份文件既簽名
當對家要verify呢個簽名,佢就要計
s^-1 * Hash(文件) * G + s^-1 * r * my public key
呢個結果係一組coordinate
如果佢既x-coordinate係等於r, 咁呢個簽名就係有效既
留意起呢條verify function入面只有我既public key
無我既private key起度
如果睇到你都無比上面堆怪獸嚇窒,仲睇得明同識得問
「點解條式要咁寫?」
「點prove佢地?」
「點解要揀果個p?」
可以reply問下,睇下有無數學系既高手肯回
再講落去就要更加深入認識憜圓曲線
要講algebraic structure, finite fields, subgroup order....
開多幾個chapter講都唔知得唔得
所以,真係有興趣既話,自己Google啦,有些路只能一個人走
-----數學部份完畢-----
咁public key private key起bitcoin上有咩作為呢
每一次你要動用你既bitcoin,都要用private key簽個名作實
起真係過數之前,server會check下你個戶口既public key同你個簽名夾唔夾
夾既,先比你動用果筆資金,validate呢次transaction
如果比人偷到你條private key,就可以冒認你簽發交易
下個chapter會詳細講
k同r叫做(private/public)randomness好d
叫臨時key有d奇怪