比特幣公鑰是什麼?比特幣公鑰生成原理是什麼?

買賣虛擬貨幣

比特幣公鑰是什麼?瞭解比特幣的幣友都知道,比特幣是一種加密數字貨幣,主要是因為比特幣有著金鑰用來保護自己的比特幣不被盜,而比特幣金鑰分為比特幣私鑰和比特幣公鑰,其中比特幣公鑰用來加密並且是可以公開的,說道這裡,幣圈小白就要問了,比特幣公鑰是什麼?比特幣公鑰生成原理又是什麼?別急,接下來鏈報小編就來為幣圈小白們解答。

比特幣公鑰是什麼?

公鑰是將私鑰透過一個橢圓曲線乘法(K = k * G ,其中k是私鑰,G是被稱為生成點的常數點,而K是所得公鑰)的演算法計算得來,是真正的比特幣地址。

在比特幣系統中,一個金鑰對包括一個私鑰,和由其衍生出的唯一的公鑰。公鑰用於接收比特幣,而私鑰用於比特幣支付時的交易簽名。

公鑰和私鑰之間的數學關係,使得私鑰可用於生成特定訊息的簽名。此簽名可以在不洩露私鑰的同時對公鑰進行驗證。

比特幣公鑰生成原理是什麼?

有了私鑰,再透過橢圓曲線演算法,就可以產生出公鑰啦!這個私鑰和公鑰是配對的!

橢圓曲線的定義非常簡單,滿足下面公式的所有(x,y)座標的集合,就是我們所說的橢圓曲線y^2/modp=(x^3/+7)/modp

上面公式中,mod是取餘符號,而p是一個很大的素數,到這一步,公式中就只剩下自變數x和因變數y了,你完全可以把它看成初中學過的二元多次函式,不過,並不是所有實數x都滿足這個曲線,所以實際上橢圓曲線是一個散點圖,下圖是當p為17時,滿足上述公式的圖形:

spec256k1 橢圓曲線

實際上,p取不同的素數,橢圓曲線會呈現出完全不同的形態,p越大,這個橢圓也就越大,可承載的數值範圍也就越大,衝突率會降低,乃至於更安全,所以出於安全性考慮,比特幣中採用的是一個特定的橢圓曲線,我們叫它 spec256k1.它是由 NIST(National Institute of Standards and Technology)這個組織確定的。

剛才說p是一個很大的素數,那麼 spec256k1 所選的p有多大呢?我們可以看一下

P=115792089237316195423570985008687907853269984665640564039457584007908834671663

這個p可以確定一個橢圓,我們再在其中取一個點(x,y)

X=55066263022277343669578718895168534326250603453777594175500187360389116729240

Y=32670510020758816978083085130507043184471273380659243275938904335757337482424

把該點中的x和y帶入上面的公式中,看等式兩邊是否成立:

Python 2.7.10 (default, Jul 15 2017. 17:16:57)

[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)] on darwin

Type "help", "copyright", "credits" or "license" for more information.

>>>x=55066263022277343669578718895168534326250603453777594175500187360389116729240

>>>y=32670510020758816978083085130507043184471273380659243275938904335757337482424

>>>p=115792089237316195423570985008687907853269984665640564039457584007908834671663

>>> (x**3+7)%p - y**2%p

0L

上面是我用Python算出的結果,可以看到時符合預期的。

橢圓曲線運算

上面我們已經認識了橢圓曲線,它看上去很有趣,但我覺得更有趣的是橢圓曲線的運算,公鑰的演算法就是運用了這些基本運算:

加法運算

無限點(point at infinity)定義

乘法運算

比特幣公鑰是什麼?透過以上介紹,鏈報小編相信,大家對於比特幣公鑰已經有了一定的瞭解,同時對於比特幣公鑰計算方式也有所瞭解,如果想要了解更多關於比特幣公鑰的問題,可以關注鏈報後續相關報道!

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;