比特幣的助記符是什么

題圖

還記得我們創(chuàng)建比特幣錢包時的場景嗎?其中有一步操作,要求我們拿出紙筆,把屏幕上出現(xiàn)的一系列單詞(有時稱助記符,有的軟件叫Seed Words)按順序抄在紙張上,并提示我們保管好,因為這些單詞是恢復(fù)錢包的唯一手段。

如果你對比特幣有一定的了解,當(dāng)你在看到這些助記符時肯定會產(chǎn)生疑惑,因為通常人們理解的是:只有私鑰才需要保管,且只有私鑰才能恢復(fù)錢包,但創(chuàng)建錢包時并沒有要求你保存私鑰,而是記錄一些助記符,那么我們很容易的做出推斷——私鑰和助記符之間一定有著某種聯(lián)系。

我和助記符的故事

那為了驗證這種聯(lián)系,在沒有搞清楚助記符背后的邏輯之前,通常的做法是驗證這些助記符是否能像私鑰一樣恢復(fù)錢包

很多人一開始應(yīng)該和我一樣,很少考慮錢包的事情,然后把代幣都托管在交易所的錢包上,但9月4日之后,我開始陸續(xù)把資產(chǎn)轉(zhuǎn)移到自己的錢包,記得第一次使用比特幣錢包,我先轉(zhuǎn)了一筆價值不到100元的比特幣到錢包上,然后在錢包上把這個賬號刪掉,接著使用助記符恢復(fù)這個錢包,在確認(rèn)能夠恢復(fù)后,才放心的把剩余代幣轉(zhuǎn)移過去。

我還記得當(dāng)初花了2個小時來折騰這個事兒,因為我使用的是trezor錢包,trezor在恢復(fù)時會故意打亂助記符的順序,由于忽視了這一點,導(dǎo)致多浪費了不少時間。實際上,如果你理解了助記符的原理,你完全不需要再花時間來反復(fù)驗證了。

種子

那么助記符到底是怎么回事呢,在介紹助記符之前,我們要先說一個概念——種子(Seed),實際上比特幣錢包往往不會直接保存私鑰,而是保存一個“種子”(Seed)數(shù)據(jù),步驟大致如下:

  1. 產(chǎn)生種子數(shù)據(jù)
  2. 用種子算出一個賬號數(shù)據(jù)
  3. 通過這個賬號,可以產(chǎn)生無數(shù)個私鑰

其中從第1步到第2步,只要種子不變,通過種子算出的賬號也是不變的。

而第3步中,你可以給每個產(chǎn)生的私鑰分配一個序號,例如0、1、2等,只要序號確定,那么私鑰的數(shù)值就是一定的。這也是為什么我們可以在錢包里創(chuàng)建多個賬號的原因,這么多賬號雖然都各自擁有一對公、私鑰,但我們只需要一個種子,就可以把它們?nèi)炕謴?fù),你說是不是很神奇,保存種子比直接保存私鑰效率要高很多。

下面我們通過一個程序(bitcoin explorer是一個比特幣命令行工具)來觀察一下整個過程(符號 '#' 右邊的文字是我的解釋):

  1. 產(chǎn)生種子數(shù)據(jù)
$ bx seed
00654f0bbd1721b75bbe54e29fdbf755523ab435708336ad
  1. 產(chǎn)生account數(shù)據(jù),你可以把這一步重復(fù)多次,然后會觀察到產(chǎn)生的結(jié)果是一樣的
# 產(chǎn)生master數(shù)據(jù)
$ bx hd-new 00654f0bbd1721b75bbe54e29fdbf755523ab435708336ad
xprv9s21ZrQH143K4VHVZmdpHhfRKmZ4fnySJBpNaSpkC7UfA3wNiMzN714ga5BSqXhdGDJCaMvW5Ww176mnuTsB4pFurk2fNrnsNhYS4igVrkS
# 產(chǎn)生account數(shù)據(jù)
$ bx hd-private --hard xprv9s21ZrQH143K4VHVZmdpHhfRKmZ4fnySJBpNaSpkC7UfA3wNiMzN714ga5BSqXhdGDJCaMvW5Ww176mnuTsB4pFurk2fNrnsNhYS4igVrkS
xprv9uUeTjMk9f3C2u7sEUzBqtWWJ9AekeHAy1pfjq5X19nKW5qqyiUr5LBHp87bHSyNSMRT9ehaBP4H5A21AVSzFhjiqvxbDMfTQfhYD6Hh3xV
  1. 通過account數(shù)據(jù),你就可以按照序號來產(chǎn)生私鑰了,同樣你也可以多試幾次,并觀察同樣的序號,產(chǎn)生的私鑰是否是一致的
# 序號0
$ bx hd-private --index 0 xprv9uUeTjMk9f3C2u7sEUzBqtWWJ9AekeHAy1pfjq5X19nKW5qqyiUr5LBHp87bHSyNSMRT9ehaBP4H5A21AVSzFhjiqvxbDMfTQfhYD6Hh3xV
xprv9xcBDpHwSSEXHBCMqTcMSGooQjLgYKXxkMN9cdVWV9HJKVBzgMhk1kXy1WdsfG9FT1SzATjAPguZjGj6LoBhLBd7tyKz2EA2xixX6uxAuVN
# 序號1
$ bx hd-private --index 1 xprv9uUeTjMk9f3C2u7sEUzBqtWWJ9AekeHAy1pfjq5X19nKW5qqyiUr5LBHp87bHSyNSMRT9ehaBP4H5A21AVSzFhjiqvxbDMfTQfhYD6Hh3xV
xprv9xcBDpHwSSEXLjzaSkjq8khKHKR1BsXHWVZhz14VNZsM5eWyjYVwhwsjnLHJaHXD4EXrTSM1N3JzWJU8jqNrmF4sdpFiTEGsh1MkNUR6TUy

助記符

現(xiàn)在你再知道錢包是如何保存私鑰了的吧,但這還沒完,設(shè)想一個場景,在助記符出現(xiàn)之前,我們要備份賬號就一定要記下種子,而你也看到了,種子是一串長長的字符串,它沒有任何意義,人們在記錄它的時候會很容易出錯,助記符就是為了解決這個問題而生的。

從整個產(chǎn)生私鑰的過程來說,要引入了更容易記錄的助記符,只需調(diào)整一下種子的生成過程:

讓種子的生成算法僅依賴于助記符

通過示意圖,可以看到所做的調(diào)整是:用算法生成助記符,再通過助記符產(chǎn)生種子,后面的步驟保持不變。

下面我們再用命令來演示下如何產(chǎn)生助記符,及它是如何產(chǎn)生種子的

# 創(chuàng)建一個用來生成助記符的種子
$ bx seed
b03e3cf733130570068147160b80a117078ed3c9459dc2d2

# 創(chuàng)建助記符
$ bx mnemonic-new b03e3cf733130570068147160b80a117078ed3c9459dc2d2
rabbit vehicle differ great core retreat borrow cigar bid foster choose come jump hazard celery recipe security motion

# 通過助記符創(chuàng)建一個用來生成私鑰的種子
$ bx mnemonic-to-seed rabbit vehicle differ great core retreat borrow cigar bid foster choose come jump hazard celery recipe security motion
488e65727e3bf0440cee45863961828a2de2963c14e2124740c6e18d5c0c61a7c661760aa8fc82141af5c023e69a997d88ef1f1204eeef9e90e323dc76cfcdc6

同樣的,對于相同的助記符,你可以多執(zhí)行幾次bx mnemonic-to-seed命令,看看產(chǎn)生的種子是否都是一致的,可以推斷,恢復(fù)錢包的過程就是從這條命令開始的

最后,如果你有一定的編程基礎(chǔ),建議你去閱讀一下Bitcoin Explorer的源碼(這套代碼的組織結(jié)構(gòu)非常清晰),可以更深入的理解背后的密碼學(xué)原理。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,412評論 6 532
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,514評論 3 416
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,373評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,975評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 71,743評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,199評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,262評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,414評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,951評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,780評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,527評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,218評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,649評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,889評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,673評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 47,967評論 2 374

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