最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

當前位置:主頁 > 區(qū)塊鏈 > 區(qū)塊鏈技術 > 比特幣的私鑰轉碼與使用

一文讀懂比特幣的私鑰轉碼與使用

2021-12-13 17:06:23 | 來源: | 作者:佚名
這篇文章主要介紹了一文讀懂比特幣的私鑰轉碼與使用的相關資料,希望這篇關于一文讀懂比特幣的私鑰轉碼與使用的文章,能夠幫助到各位朋友對比特幣私鑰的有一個深入地了解。

凡是關心自己的比特幣財產安全的人都應該試著理解下圖:

一文讀懂比特幣的私鑰轉碼與使用

數字

如果你完全理解二進制、十進制和十六進制,可以跳過這部分。

十進制指每一位數都有 10 種可能(0、1、2、3、4、5、6、7、8 或 9)。數字 “6.15” 有 3 位數(順帶一提,6.15 這個數字是有特殊含義的,即,每個人都應該努力擁有 6.15 個比特幣)。第一個數是 “6”,第二個數是 “1”,第三個數是 “5”。這三個數可以是 0、1、2、3、4、5、6、7、8、9 中的任何一個。

在十進制中,我們從 “0” 數到 “9”(0、1、2、3、4、5、6、7、8、9)就沒有新的數了,接下來就要在左邊新增一位 “1”(即,逢十進一),得到 “10”,然后再從 “0” 開始數起 —— 原先的 “9” 進了一位,十位數變成了 “1”,個位數變成了 “0”。

二進制指每一位數只有兩種可能(“0” 和 “1”)。

在二進制中,我們從 “0” 數起,然后是 “1” ,接著就是 “10”!看見沒?如果你覺得跨度很大,那是因為你還沒有跳出十進制思維。

在十進制中,“10” 就是普通人的手指數量 —— 因為我們有 10 個手指,所以我們人類常用 10 進制。

但是,在二進制中,“10” 就是一個人的大拇指的數量。想象一下用你的大拇指數數:1、10、11、100、101、111、1000、1001…… (譯者注:這幾個數字換算成十進制就是 1、2、3、4 ……)

如果這是你第一次了解二進制,可以用紙和筆自己算一下,可能會有幫助。這就像是第一次學習數數那樣,而且還不能靠直覺。

十六進制指每一位數有 16 種可能(0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f)。其中,a=10、b=11、c=12、d=13、e=14 和 f=15。

就像撲克牌游戲一樣,Jack=11、Queen=12、King=13、Ace=14 或 1。一個字母可以代表一個數字,這就是關鍵。

每一位數的可能性越多,表達一個大數字所用的位數就越少。例如,十進制下的 2047 ,寫成二進制就是 11111111111(11 位數),寫成十六進制就是 7FF。

總結:

一文讀懂比特幣的私鑰轉碼與使用

隨機二進制數、校驗和、私鑰

私鑰首先是一個二進制數,可以轉換成其它形式。但是,私鑰本質上是二進制數,因為它是為了給計算機使用的。下面是二進制私鑰的一個例子:

01000011111 10101110110 01001000001 01001101000 10000100011 10001011011 00100110111 11010000011 11001000001 10111110010 00010101000 00101110110 01100001101 11000010011 01101111001 11001010111 10011010000 01001110000 01000010010 00001110011 10011110101 11000110011 10101101110 00100111111

請注意,這個私鑰由 24 組數字組成,每 11 個數字為一組,共計 264 個二進制數字(24×11=264)。

計算機看到的私鑰雖然是同一串數字,但是沒有空格:

010000111111010111011001001000001010011010001000010001110001011011001001101111101000001111001000001101111100100001010100000101110110011000011011100001001101101111001110010101111001101000001001110000010000100100000111001110011110101110001100111010110111000100111111

這是個很大的數字,寫成十進制就是:

7,869,270,257,961,728,227,967,109,454,183,816,220,476,881,432,001,550,169,555,390,346,110,510,455,025,983

請注意這兩個數的值是一樣的,區(qū)別只在于十進制寫起來更短。

總之,私鑰有一部分是隨機生成的,而最后 8 位(叫作校驗和(checksum))是以前面的隨機部分作為輸入通過一個公式計算得出的。這是一種(軟件錢包共同認可的)工程設計:如果數據輸入不正確,計算機就會發(fā)現校驗和與輸入數據不匹配,并警告用戶。錢包會提示 “抱歉,您的輸入可能有誤” 。當然,用戶可以強行選擇繼續(xù)。校驗和并非比特幣代碼的一部分,是為了保障用戶安全而引入的。

換言之……從數學設計上來講,在創(chuàng)建私鑰時,下面這個隨機部分……

01000011111 10101110110 01001000001 01001101000 10000100011 10001011011 00100110111 11010000011 11001000001 10111110010 00010101000 00101110110 01100001101 11000010011 01101111001 11001010111 10011010000 01001110000 01000010010 00001110011 10011110101 11000110011 10101101110 001

只會生成下面這個校驗和……

00111111

把二者結合起來就得到了最終的私鑰。點擊此處,了解私鑰是怎么來的,以及校驗和是如何計算的。請注意,8 位數的校驗和與末尾 3 個隨機數字組合起來剛好是一組 11 位數字,與其它幾組一樣(在 BIP39 標準下,一個單詞需要 11 位數表達,詳見下文)。

不同的 隨機 二進制數會產生不同的校驗和。假設用戶在錢包里輸入私鑰,并聲稱 “這是我之前生成的私鑰,請顯示我的地址”,只要有一位數字錯誤,軟件錢包都會發(fā)現并發(fā)出警告。

請原諒我有些啰嗦,但是掌握這些背景知識真的很重要。

私鑰轉換

人類很難準確記錄下一個二進制私鑰并將其輸入軟件錢包。一旦發(fā)生錯誤,就有可能導致比特幣丟失。手寫無法使用校驗和來檢查錯誤,只有輸入計算機才可以。

一種解決方案是將二進制數轉化成十進制數,讓私鑰變得更短、更好記。

假設一個二進制數被切分成每 11 個數字一組,則每一組數最多可以表示 2048 個十進制數(可表示的十進制數范圍是 “0” 至 “2047”)。“0” 至 “2047” 轉化成二進制就是 “00000000000” 至 “11111111111”。

我們可以將這個私鑰轉換成 24 組十進制數,每組十進制數的范圍是 “0” 至 “2047”。這樣寫起來容易,但還是容易出錯。

BIP39 可以有效化解這一風險。這個協議建議比特幣用戶使用一列由協議定義過的單詞表,我猜測這些單詞是經過精挑細選的,以防被誤讀成其它單詞。

BIP 39 單詞表共包含 2048 個單詞,按照字母順序排列。點擊此處,查看列表。除了英文版,還有其它語言版本。每個單詞都代表 “0” 至 “2047” 之間的某個數字。這樣一來,私鑰中的每個十進制數都可以被寫成一個單詞。數字和所對應的單詞之間有什么特殊聯系嗎?沒有,這只是由協議定義的,只要我們都使用這個協議,那么單詞與數字之間就可以畫上等號。

這就是助記詞(seed words)的由來。你在軟件錢包中輸入助記詞后,每個單詞都會轉化成 11 個二進制位,將它們組合起來就會形成一個 264 位的二進制數,也就是私鑰(還記得嗎?最后一個單詞包含校驗和,因此不是隨機的)。如果是由 12 個單詞組成的助記詞,私鑰的長度只有一半,也就是 132 位。

遺憾的是,原始的 BIP 39 單詞表存儲在 GitHub 內,代表的十進制數范圍是 “1” 至 “2048”,而非 “0” 至 “2047”。這只是 Github 格式的問題,而非有意設計成如此。

為了清楚地說明這個問題,我們來舉個例子。假設某個私鑰的開頭是 11 個 “0”,例如 “00000000000”,那么我們要用單詞表上的第一個單詞來表示這個二進制數。第一個單詞是 “abandon”,表示的是 “00000000000”,但是被標記成了 “1”。這是不對的。十進制數 “1” 轉化成二進制是 “00000000001”,這不是我們想要的。但是,由于格式的問題,單詞表上所有單詞的序號都比它們實際代表的十進制數大了 “1”。

我們還可以通過拋硬幣來生成二進制數。計算機可以幫助我們獲得使用斜體表示的最后 8 位數:

0100001111110101110110010010000010100110100010000100011100010110110010011011111010000011110010000011011111001000010101000001011101100110000110111000010011011011110011100101011110011010000010011100000100001001000001110011100111101011100011001110101101110001*00111111*

我們首先要做的,是將這個二進制數按照每 11 個數為一組進行切分:

01000011111 10101110110 01001000001 01001101000 10000100011 10001011011 00100110111 11010000011 11001000001 10111110010 00010101000 00101110110 01100001101 11000010011 01101111001 11001010111 10011010000 01001110000 01000010010 00001110011 10011110101 11000110011 10101101110 00100111111

接下來,我們將每一組數轉化成十進制數:

543, 1398, 577, 616, 1059, 1115, 311, 1667, 1601, 1522, 168, 374, 781, 1555, 889, 1623, 1232, 624, 530, 115, 1269, 1587, 1390, 319

然后,我們查詢這些十進制數在單詞表上對應的單詞:

一文讀懂比特幣的私鑰轉碼與使用

考考你:十進制數 543 對應的是哪個單詞?Dry、duck 還是 dumb?

上圖是從 Github 上截取的,因此這張單詞表的序號是從 “1” 開始的。因此,每個序號都減去 “1” 之后才是每個單詞真正對應的十進制數。 因此,序號 544 的單詞 dumb 實際上代表的是 “543”,也就是我們要找的那個單詞。

第二個數是 1398,對應的是單詞表上序號為 1399 的單詞。

全部轉化為單詞后就是:

dumb put else escape love merge cheap spare sight salad bench conduct giant second hundred slab old evoke drastic attack pact shoe punch child

請注意,所有單詞都是按字母排序的,首字母越靠前的單詞代表的數字越小,首字母越靠后的單詞代表的數字越大。當你明白這些單詞的排序規(guī)律之后,可以明顯看出這點。

擴展私鑰

再來看下面這張圖:

一文讀懂比特幣的私鑰轉碼與使用

擴展私鑰是使用二進制私鑰以及密語(passphrase)和衍生路徑(derivation path),根據你我都沒必要知道的數學公式計算得出的。

請注意增加密語是如何徹底改變下游擴展私鑰的。修改衍生路徑也會改變下游數據。不要小看了你的軟件錢包提供的默認衍生路徑,請務必把它寫下來保存好。我會另外寫一篇文章來詳細介紹衍生路徑。

擴展私鑰最終用來生成一個錢包中的所有比特幣地址,而且可以花費這些地址上的比特幣。如上圖所示,擴展私鑰可以生成多個獨立私鑰(不是擴展私鑰,而是普通的私鑰),每個私鑰會生成獨立的公鑰,每個公鑰又會生成一個地址。

擴展私鑰還可以用來生成接下來要詳細討論的擴展公鑰。

我們無法根據單個獨立私鑰倒推出擴展私鑰。這是我個人的理解,但是我不是密碼學專家,因此不能確定,不過這么想很合理。但是,每個獨立私鑰有可能指向后一個獨立私鑰,當然這點我也不確定。因此,為確保萬無一失,別向任何人泄漏你的任何一個私鑰。

可以確定的是,任何一個公鑰都不會泄漏其對應的私鑰。明白這一點很重要。

我在 https://iancoleman.io/bip39/ 上生成了一個測試錢包。這個網站是練習生成虛擬錢包的好地方(千萬別在聯網的電腦上使用這種方式生成真的錢包)。

擴展私鑰如下所示:

一文讀懂比特幣的私鑰轉碼與使用

請注意,上圖顯示的是 “賬戶” 擴展私鑰。我不知道這個網站為什么要這么標記。

再來看這個擴展私鑰的開頭是 “x”。這意味著使用這個私鑰將生成以 “1” 開頭的傳統地址。傳統地址也叫作 P2PKH(pay to public key hash,支付到公鑰哈希值)地址。

使用以 “y” 開頭的私鑰(或公鑰)會生成以 “3” 開頭的地址。這些地址也叫作 P2SH(Pay to script hash,支付到腳本哈希值)地址。

使用以 “z” 開頭的私鑰會生成原生的 segwit/Bech32 地址。這類地址以 “bc1q” 開頭。

最后,以大寫字母 “X”、“Y” 或 “Z” 開頭的私鑰會生成多簽錢包的地址。

擴展公鑰

擴展公鑰的用途不是很明顯。如果你仔細看示意圖的底部,你會發(fā)現使用擴展公鑰通過錢包軟件生成的比特幣地址與使用擴展私鑰生成的一樣,而且地址順序相同。使用擴展公鑰和擴展私鑰生成的錢包看起來完全一樣。那么區(qū)別在哪兒呢?

使用擴展私鑰生成的錢包能夠進行支付。

使用公鑰生成的錢包無法進行支付。這種錢包通常被稱為 “觀察” 錢包。你可以將這個錢包放在安全性低的計算機上,不用擔心會丟失私鑰,但可以用來查看你的錢包余額,或是復制地址發(fā)送給其他人。

但你還是應該注意保護好自己的擴展公鑰。一旦泄漏,其他人就可以通過訪問你的擴展公鑰來查詢你的錢包余額和你的所有地址。從今往后,他們都可以查詢你的錢包余額,就好像查詢你的銀行賬單一樣。

保護好你的金融隱私,更要保護好你的金融密鑰(比特幣私鑰)。

注:擴展公鑰如下圖所示:

一文讀懂比特幣的私鑰轉碼與使用

如上圖所示,公鑰不是以 “xprv” 開頭,而是以 “xpub” 開頭,另外也可以 “ypub”、“zpub”、“Xpub”、 “Ypub” 和 “Zpub” 開頭。(大寫指的是多簽私鑰。)

總結

我希望這篇文章能幫助你理解比特幣的公鑰和私鑰,進而讓你更容易理解比特幣的運作原理。

如果你有任何問題,請聯系我,或閱讀我的輔導材料。

讀懂了這篇文章會讓你更容易理解如何通過擲骰子的方式生成助記詞,多簽錢包的生成以及 PGP 加密。

補充閱讀

點擊此處,了解什么是衍生路徑。

以上就是一文讀懂比特幣的私鑰轉碼與使用的詳細內容,更多關于比特幣的私鑰轉碼與使用的資料請關注腳本之家其它相關文章!

免責聲明:本文只為提供市場訊息,所有內容及觀點僅供參考,不構成投資建議,不代表本站觀點和立場。投資者應自行決策與交易,對投資者交易形成的直接或間接損失,作者及本站將不承擔任何責任。!
Tag:私鑰轉碼   比特幣  

你可能感興趣的文章

幣圈快訊

  • 特朗普周五指示美軍不要在伊朗發(fā)動新的打擊

    2026-07-26 01:05
    7月26日,據Axios新聞報道,兩位消息人士稱,特朗普于當地時間周五指示美國軍方不要在伊朗發(fā)動新的打擊,打破了近兩周的每日連續(xù)攻擊。特朗普的指令是在此前連續(xù)13天對伊朗進行打擊后作出的。目前尚不清楚特朗普周五的命令是一次性的,還是意味著這種平靜狀態(tài)將持續(xù)下去。特朗普的決定既反映了他愿意為外交留出更多空間,也承認了在當前未恢復大規(guī)模作戰(zhàn)行動的情況下,美軍打擊的效果已達到極限。如果特朗普下令恢復打擊,美軍可以在相對較短的時間內進行動員。消息人士稱,美軍仍在為可能恢復大規(guī)模作戰(zhàn)行動制定計劃,但特朗普尚未下達朝這一方向推進的命令。白宮未作出回應。(金十)
  • 俄羅斯最大銀行Sberbank計劃在12月1日前推出加密交易基礎設施

    2026-07-26 01:03
    俄羅斯最大銀行Sberbank計劃在12月1日前推出加密交易基礎設施和數字存管服務,以支持受監(jiān)管金融體系。俄羅斯加密交易、托管和結算新規(guī)將于9月1日生效,持牌中介機構相關要求將自2027年7月起適用。俄羅斯公開加密交易將限于滿足嚴格流動性和市值門檻的資產,境內商品和服務支付仍禁止使用加密資產。
  • Jupiter上已質押超過10億枚JUP占代幣總供應量約15%

    2026-07-26 00:43
    7月26日,據MessaribyBlockworks披露,Solana生態(tài)聚合器Jupiter已質押超過10億枚JUP,占代幣總供應量約15%。
  • 美國銀行預測:美國今年財政赤字將突破2萬億美元

    2026-07-26 00:14
    7月26日,美國銀行預測:美國今年財政赤字將突破2萬億美元,年度債務利息支出達1萬億美元。(新浪財經)
  • Solana鏈上累計代幣化股票交易量已突破80億美元

    2026-07-25 23:44
    7月25日,據TokensonSolana披露,Solana鏈上累計代幣化股票交易量已突破80億美元,占鏈上代幣化股票歷史總交易量的96%以上。
  • 查看更多
更多

熱門幣種

  • 幣種
    最新價格
    24H漲跌幅
  • bitcoin BTC 比特幣

    BTC

    比特幣

    $ 64210.21¥ 434715.96
    +0.36%
  • ethereum ETH 以太坊

    ETH

    以太坊

    $ 1865.93¥ 12632.71
    +0.38%
  • tether USDT 泰達幣

    USDT

    泰達幣

    $ 0.9991¥ 6.7641
    +0.01%
  • binance-coin BNB 幣安幣

    BNB

    幣安幣

    $ 567.61¥ 3842.83
    +1.25%
  • usdc USDC USD Coin

    USDC

    USD Coin

    $ 1.0008¥ 6.7756
    +0%
  • ripple XRP 瑞波幣

    XRP

    瑞波幣

    $ 1.1027¥ 7.4654
    +1.49%
  • solana SOL Solana

    SOL

    Solana

    $ 74.3162¥ 503.13
    +0.64%
  • tron TRX 波場

    TRX

    波場

    $ 0.3321¥ 2.2483
    +0.45%
  • hyperliquid HYPE Hyperliquid

    HYPE

    Hyperliquid

    $ 57.9241¥ 392.15
    -1.38%
  • dogecoin DOGE 狗狗幣

    DOGE

    狗狗幣

    $ 0.072118¥ 0.4882
    +4.96%
历史| 崇信县| 灵石县| 虹口区| 奉新县| 北京市| 屏东县| 汤阴县| 扎囊县| 灵石县| 迁西县| 靖远县| 牙克石市| 尉氏县| 华安县| 永年县| 库伦旗| 哈尔滨市| 昌邑市| 武夷山市| 塔河县| 丰宁| 盘锦市| 锦屏县| 杂多县| 县级市| 龙山县| 介休市| 天全县| 阿拉善盟| 泽普县| 昆山市| 个旧市| 鹿邑县| 巴中市| 博客| 常州市| 石城县| 义马市| 监利县| 剑川县|