錢包 判斷一個人是否真的了解區塊鏈的一個簡單的測試是問一句:“我轉錢給你。你的錢包地址是啥?” 這個試金石可以輕松區分很多偽專家。在成熟的互聯網世界,沒有郵件地址還說得過去,畢竟沒有郵件地址也可以點外賣,但是現在百廢待興的區塊鏈世界,一切都如此原始,沒有自己的錢包地址就是一個旁觀者。 要開始,先要搞一個錢包,獲得自己的地址。比如這就是一個合法的比特幣地址: 1EHNa6Q4Jz2uvNExL497mE43ikXhwF6kZm 這就像銀行賬戶一樣,有了它任何人都可以給你轉賬了。有非常多的軟件可以幫你生成自己的地址。 受互聯網網站的思維慣性影響,還有銀行開戶程序的影響,很多人以為要搞一個錢包地址還需要到什么地方注冊一下。其實不然。任何人都可以自己獨立的,不聯網的生成自己的錢包。這是怎么做到的呢?錢包里面到底包含什么呢? 公鑰私鑰 這涉及到一個密碼學上的一個基本概念:公鑰密鑰。公鑰和密鑰一對一對兒的出現,公鑰加密的東西可以拿私鑰解開,私鑰加密的東西可以用公鑰解開。大家就想像成一個帶鎖的盒子和一把鑰匙的關系吧。這個特性用來加密和簽名。 加密的過程好像是把自己的盒子寫上自己的地址發的全世界都是,誰都可以免費要一個。誰要給你寄信就把信放到盒子里面鎖上,然后寄給你。寄件人和收件人都很放心,因為路途上沒有任何人(包括寄件人)可以打開盒子了。世界上能夠知道信的內容就只有你和寄信的人。 簽名的過程也很容易理解。就是寫著你名字的鑰匙發的滿世界都是,誰都可以免費拿一個。而這把鑰匙能打開的盒子只有你有,誰都不給。如果有人得到了一個盒子,拿你發的鑰匙可以打開,盒子里的東西一定是你發的,因為這把鑰匙能夠打開的盒子,這個世界上只有你有,你無法抵賴。 區塊鏈世界用了這個精妙設計的公鑰私鑰體系,但是不是用來加密,主要用于簽名。你手里面握著私鑰,打死你也不說的私鑰。而你的地址,就是那個滿世界皆知的公鑰。鑰匙信息可以被公鑰打開,則說明一定是知道私鑰的人加密的。所以任何的交易一旦用你的私鑰加密了,收到的人驗證一下用你的公鑰可以解密,那就認為是你授權的操作。 錢包地址的生成 比特幣世界幾個關鍵的信息是按照這個順序生成的:先生成私鑰,再由私鑰算出公鑰,再由公鑰經過一系列哈希算出錢包地址。 私鑰 ---> 公鑰 --> 錢包地址 上面的推導次序是單向的,反向不可能。就是說從錢包地址無法得到公鑰,從公鑰無法得到私鑰。 比特幣的公鑰變形出來的錢包地址,可以想象成用戶名,這全世界都可以知道;私鑰可以想象成密碼,這個只有自己可以知道。 私鑰是一切的開端 私鑰一個大于零,小于2的256次方的一個任意數字①。你就隨便挑吧。挑中了這就是你的了。比如,你可以任性的把私鑰設置成這樣:
就是數字1。好記吧?(千萬別真的真么做。我舉著個例子就是為了演示用一個大家能猜到的私鑰是多么危險) 然后通過橢圓曲線函數,就可以對應的公鑰②: 0479BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8 然后經過一系列讓人眼花繚亂的哈希,最終形成比特幣地址如下: 1EHNa6Q4Jz2uvNExL497mE43ikXhwF6kZm 私鑰就像《阿里巴巴和四十大盜》的故事里面的“芝麻開門”。世界上任何人只要知道“芝麻開門”這個咒語,就可以在那座大山里面找到那個山洞并且打開大門。比特幣的世界就是這樣無情。一個人是否擁有一個賬戶,不看他是誰,就是看他是不是知道那個秘密。四十大盜知道咒語可以拿寶貝,阿里巴巴知道也可以拿。至于這個山洞里面有沒有金銀財寶是另外一件事情了。 既然所有看這篇文章的人都知道了這個地址的私鑰(數字1),我們就共同擁有了這個地址里面的錢,任何一個人都可以花里面的全部的錢。 在比特幣的世界,雖然無法知道地址背后的人是誰,但這個地址歷史上所有的交易都是公開信息。很多網站和工具可以讓你查詢。來,讓我們來查詢一下這個賬戶,看看咱們有多少錢 :-) 真可惜,余額為零。這個并不驚訝。 但讓我驚訝是,這個地址從2011年到最近的2018年3月9日,居然有過1201筆交易,總共收到過7.8個比特幣,即便按照最近跳樓的幣價,也是24萬塊錢人民幣呢。這期間任何一個時間點,這個地址里的錢,就是放在大馬路上任何人都可隨手拿走的錢。多危險呀! 所以所有的錢包軟件都是盡量的生成一個越隨機越好的私鑰。好在隨機生成的私鑰足夠安全。有多安全呢?我們的大腦是無法理解256位私鑰到底能存多大的數字。這么說吧,2的256次方大約是10的78次方,也就是10后面78個零。而現在人類觀測到的全宇宙的所有的原子才10的78到80次方左右。也就是說私鑰的可能性大約是全宇宙的原子數那么多。從整個宇宙中隨機找出一個原子給你,這是你的私鑰,你覺得和別人沖突,或者被別人猜中的可能性有多少? 錢到底存在哪里? 首先,錢不存在錢包里。 很多錢包軟件可以顯示余額,完成交易,但錢不在錢包里。錢包唯一記錄就是一個私鑰 ③,大多數的私鑰不像例子里面那么容易猜,看起來就是亂碼。如果誰有本事背的下來這個密碼,其實你就不需要任何錢包。有些工具允許你交易的時候直接輸入私鑰就可以了。 那錢存在哪里呢? 錢的數量存在區塊鏈上,而區塊鏈的鏈表結構存在成千上萬的電腦上。如果你下載一個比特幣的客戶端,同步以后有大約100多G的數據。里面包含了從第一筆交易到現在快10年的所有數據。所以回答這個問題,錢并不存在在任何地方(不存在一種刻著中本聰頭像的紙幣或金幣),錢的余額存在無數的電腦共同維護的一個賬本里。 密碼和助記詞 既然唯一重要的是私鑰,為什么很多錢包還需要密碼呢?這是一個雙重保護。把私鑰明文的存在電腦硬盤或手機上不是個好主意,對于黑客甚至是親近的朋友拿到硬件一個簡單的搜索就能找到錢包文件。所以大多數錢包是把私鑰再用一個密碼加密一下,然后只存儲加密過的私鑰。沒有密碼就無法容易的訪問私鑰。因為人類起的密碼就那么8-10位常常是有規律的文字,其安全性遠低于機器生成的256位的私鑰,但也總比沒有好。但千萬不要以為這個密碼就是你的比特幣或以太幣密碼。它僅僅是是一個保護密碼的密碼。丟了存私鑰的文件,有密碼也沒有用了。 還有一個大家使用錢包中經常遇到的,就是錢包幫你生成一串12個單詞的句子,讓你把這個句子抄下來保存好。比如這樣的:
這是什么呢?和私鑰又是什么關系呢? 它叫助記詞(mnemonic code),其實就跟以前地下工作者用的密碼本一樣,也跟“A for alpha, B for Brave, C for Charlie ”的原理類似。,BIP39(Bitcoin Improvement Proposal 39)定義了2048個單詞的列表,每個單詞都有編號,比如
然后把這些數字按照一些復雜的算法拼起來就可以還原出來私鑰了 ④。 現有錢包的問題 如上就是比特幣等的錢包,私鑰,地址等的現有運作方式。但問題是很明顯的: 密碼不可改。密碼改了,公鑰就變了,地址就變了,也就是另外一個錢包了。密碼一旦泄露,也沒有辦法改變。 密碼忘了。如果你的私鑰忘了怎么辦?無解。忘了就是忘了。沒有找回密碼功能。大量早年的比特幣都隨著一次不小心的電腦格式化消失了。嚴格的說,那些比特幣沒有消失,我們還能看到它們就在自己曾經擁有的那個地址里面,但我們就像忘記密碼的四十大盜,只能看不能花了。此事現在無解。 假裝不記得密碼。典型例子就是離婚的時候,夫妻雙方有一大筆財產在比特幣里,一方堅持說把私鑰弄丟了,法官無法證明這個人是真的忘了還是假的。另外的情況就是有些公司宣稱被黑客偷走了比特幣,而沒有任何人可以證明小偷是另有其人還是就是自己。 這些問題都需要未來的創新來解決。 總結 前面幾篇文章介紹了區塊鏈的一些最基本的技術,從鏈表,哈希,挖礦等 到 智能合約,代幣(Token)等,還有本文的錢包,私鑰和地址等。 我花時間先談技術的本意不是為了證明技術多重要,而是通過抽絲剝繭來幫助大家理解區塊鏈的底層技術是多么的簡潔,容易理解。希望這可以緩解很多人的區塊鏈焦慮。因為從底層來說,技術沒有什么復雜,但是設計的非常精妙,而且像互聯網底層技術一樣實用。 接下來,我想我會把視野更多的放到技術背后的商業和哲學的層面了。畢竟,區塊鏈對于世界的影響,不是技術本身,而是它對于生產關系,對于價值傳遞等等的巨大改變。這里面牽扯到代幣經濟(Token Economy),代幣促進的網絡效應,ICO,區塊鏈應用等等好多的內容。如果感興趣可以訂閱公眾號以后一起學習交流。
|
|