比特幣是如何運作的?

比特幣

一直以來,金融交易系統(tǒng)都是建立在信任基礎之上的。需要一個可信機構,來認證每個人擁有的財富值,認證每筆交易的正確性。不能你個人說自己有多少錢就有多少錢。不能隨隨便便拿走別人的錢。不能謊稱自己給過別人多少錢。交易系統(tǒng)要需要足夠的個人身份信息來確認一個賬戶的所有者,比如銀行肯定得知道哪個賬戶屬于哪個人。

而比特幣卻顛覆了這兩點。

  • 比特幣系統(tǒng)不需要信任機構作為中心。
  • 比特幣系統(tǒng)具有不可追蹤性,即不能根據賬戶地址而逆推出所有者身份。

數學和密碼學概念

公鑰和私鑰

這是非對稱密碼學的基礎。公鑰讓所有人知道,私鑰只讓自己知道。非對稱密碼適用于加密系統(tǒng)和認證系統(tǒng)中。

加密系統(tǒng)的使用場景是:在公開場合有人想給我說私事兒,所有人都能聽到這話,但希望只有我能聽得懂這話。

在加密系統(tǒng)中,公鑰對明文進行加密,產生密文。私鑰對密文進行解密,恢復回明文。公鑰被任何人知道。如果有人想跟我說悄悄話,那么他拿著公鑰把一份數據加密,然后廣播出去,其他人都能收到密文但不能解出明文。只有唯一擁有私鑰的我可以解密。

認證系統(tǒng)的使用場景是:我經常在公開場合發(fā)布通告,但有人會冒充我的身份發(fā)通告,我希望大家能有辦法辨別出那些通告真的是我發(fā)出的。

在認證系統(tǒng)中,私鑰對數據進行加密,產生一個簽名字符串。公鑰結合原數據和簽名字符串進行解密。當有人收到通告后,使用公鑰對通告里的原數據和簽名進行驗證,如果能夠計算成功,說明簽名是使用我的私鑰生成的,則認為這真的是我發(fā)出的通告。

ECDSA 橢圓曲線簽名算法

使用橢圓曲線密碼(ECC)對數字簽名算法(DSA)的模擬。
和大多數的簽名算法的原理類似,使用私鑰進行簽名,使用公鑰進行驗證。
使用過程就是:

創(chuàng)建CngKey對象
生成密鑰CngKey.Create
可以從秘鑰中導出公鑰,從密鑰中導出私鑰
使用私鑰,對數據字符串簽名
使用公鑰,結合原數據字符串和簽名串進行驗證

比特幣協(xié)議使用該算法對交易進行簽名。

摘要算法

摘要算法又可以叫哈希算法,又可以叫散列算法。它是一種精心設計的數學函數y=f(x)。輸入一個值x到函數,得到一個值y。這很容易。但對于逆運算,給你一個值a,問你f(?)=a,這比登天還難,你只能遍歷世上所有的數進行嘗試。典型的摘要算法有MD5,SHA256等。

數學工作量證明

比特幣設計了需要極大計算量的題目,需要足夠的工作量才能得到結果。工作量大意味著需要足夠的時間。想要縮短時間,必須加大計算機的計算能力。

而對這一計算問題求解正確與否的驗證過程是很快的。

比特幣協(xié)議中的題目大致是要尋找一個隨機數,使得這個數字與新區(qū)塊的交易信息一起輸入SHA256摘要算法后產生的數字前n位都是0,其中n是參數,來控制這道題的難度。由于摘要算法具有不可逆性,很明顯這道題只能一個一個試,直到試出合理的解。而驗證解的正確性非??臁?/p>

計算機系統(tǒng)概念

Client/Server架構系統(tǒng)

客戶端/服務器架構 和 瀏覽器/服務器架構 一直以來是絕大多數網絡系統(tǒng)的架構??蛻舳宋挥趥€人的機器上,其功能簡單,主要的數據來源是通過訪問服務器獲得到的;服務器位于機構組織假設的專有服務器上,其實現了復雜的功能,來為每一個客戶端提供數據。

這是一對多的網絡系統(tǒng)。從安全角度去看,中心服務器不僅僅是數據提供者,還是仲裁者??蛻舳耸切湃畏掌魈峁┑臄祿托畔⒌?。客戶端有好人有壞人,壞人會想辦法欺騙服務器,要么冒充好人客戶端去跟服務器接觸,要么偽造假數據欺騙服務器。因此服務器要保證自己絕對可信、安全,清正廉潔且有能力鑒別真?zhèn)巍?/p>

P2P架構系統(tǒng)

peer-to-peer架構是創(chuàng)新式的網絡系統(tǒng)架構,去中心化,不要中心服務器來服務大眾。所有系統(tǒng)中的成員都是一樣的角色即客戶端。典型的P2P系統(tǒng)有電驢、BT種子下載以及比特幣網絡。

對于這樣的系統(tǒng),單個客戶端所需要的數據必然是從其他客戶端得到的。那么從安全角度看,需要網絡協(xié)議解決的問題有:

  • 怎么判斷一個信息是真是假?大家都是普通老百姓,我該相信誰?
  • 怎么讓所有客戶端所掌握的信息是同步且一致的?怎么防止大家手頭的消息不一致?

比特幣系統(tǒng)和協(xié)議

比特幣系統(tǒng)

  • 典型的點對點系統(tǒng),沒有中心服務server節(jié)點,任何節(jié)點都是client。
  • 廣播系統(tǒng),任何人發(fā)出的消息都是廣播給所有人的。
  • 以賬單作為比特幣系統(tǒng)的單元,任何交易都是交易賬單,任何人都可以看到所有的交易賬單;任何賬戶的資產都是由賬單計算出來的。
  • 所有賬單公開,也就意味著所有賬戶的資產情況都是公開透明的。但你無法知道一個賬戶是屬于誰的。
  • 每個人都可以記賬,然后將這個賬單廣播出去。
  • 一筆交易賬單上的信息:交易時間,付款人,收款人,交易金額。
  • 一個人比特幣賬戶是一個公鑰。
  • 比特幣目前設定的最小交易單位是 0.00000001 比特幣。

比特幣協(xié)議

區(qū)塊(Block)

一個區(qū)塊含有比特幣系統(tǒng)一筆交易的記錄。

區(qū)塊還是一個具有數學工作量證明的單元,可以理解為區(qū)塊內含有一個超難解的數學題的答案。

根據比特幣協(xié)議的設計,區(qū)塊的總數是有限的,2100萬個。但比特幣的最小單位是可以無限小的。

一個區(qū)塊還應包括新出生比特幣的交易,它是特殊的交易(沒有付款人),收款人是計算出該區(qū)塊的礦工。

區(qū)塊鏈(Blockchain)

區(qū)塊鏈是一串使用密碼學方法產生的數據塊。它一個按時間順序排列的比特幣交易公共記錄。塊鏈由所有比特幣用戶共享。它被用來驗證比特幣交易的永久性并防止一筆錢付給多個人。

比特幣系統(tǒng)中的礦工們會努力計算一筆交易對應的數學題,首次計算出正確解的人才有資格將自己生成的這個區(qū)塊加入到區(qū)塊鏈中去。

區(qū)塊鏈存在于每個用戶的機器里,所有在線機器的區(qū)塊鏈都是一樣的,也就是說每個人都存有所有賬戶的所有記錄。

比特幣賬戶地址

比特幣的地址是由用戶的公開密鑰經過 SHA-256 散列運算后,再通過 RIPEMD-160 散列運算而得,其長度固定為 160 個比特(bits)。

比特幣賬戶公鑰

公開密鑰是可以通過私密密鑰推算出的。

比特幣賬戶私鑰

私鑰就是賬戶保險柜鑰匙。掌握私密密鑰就等于掌握其對應地址中存放的比特幣。

總財富的增加方式 - 挖礦

交易是不能使比特幣總數增加的,在系統(tǒng)建立之時,比特幣的總數應該為0。新的人民幣是中國人民銀行印出來的,那么比特幣是如何增多的呢?

挖礦是比特幣協(xié)議中最重要也最匪夷所思的概念。為什么叫挖礦呢?因為這一點上比特幣有點像黃金。我們知道黃金是貨幣,那么黃金是如何新增呢?那就是去荒郊野外挖金礦了。

新出世的比特幣也是通過“挖礦”產生的。并且挖礦事件很“消耗精力”的事情。在比特幣協(xié)議里,挖到一粒黃金像是解一道超級難的數學方程,求解很難。對于一個解,代入方程進去可以很快判斷這個解是對是錯。

  • 挖礦這件事本身是計算機做的數學計算難題,需要極大的計算量來尋找一個計算題答案。
  • 挖礦這件事實際上是在對某筆比特幣交易進行確認。
  • 挖礦這件事的結果出了對別人的比特幣交易進行了確認,而且挖礦者可以獲得若干新出世的比特幣。
  • 當有一筆交易廣播出去等待認證,就會有許多礦工進行這個數學計算,有的礦工算得快,有的算的慢,最先算出答案的礦工會廣播出去自己的答案,表明自己是第一名。這個時候接到這個答案的節(jié)點都會去確認這個答案是否正確。如果正確的話,那其他礦工就可以停止工作了,本次解題的第一名已經確認出現了。
  • 比特幣交易是有手續(xù)費的,所以礦工除了獲得新出世的比特幣之外還會獲得手續(xù)費。

協(xié)議對挖礦的設計

和挖金礦不同,比特幣挖礦的難度是協(xié)議中設計好的。為了保證區(qū)塊產生的速度維持在大約每十分鐘一個,比特幣協(xié)議要保證挖礦數學題的難度能夠自動調整,總使得礦工第一名能在十分鐘計算出答案。

早期的時候,礦工的數量比較少,礦工的整體計算水平都不高,所以題目不能設計的太難。而當越來越多的人加進來當礦工時,礦工的整體計算水平變得很高,題目就會調整的很難。因此,對于全體礦工來講,每一次挖礦第一名的出現時間是基本一致的。但是對于礦工個人來講,挖礦的難度在不斷增長。

由于比特幣總值是有限的,所以不能允許無窮無盡的通過挖礦來新增比特幣,所以協(xié)議設定的挖礦所得新幣數目會逐漸減少。

該設計也使得新幣是按照約定速率而產生的。

比特幣如何交易

  • 收錢只需要地址就可以了。這使得別人不知道你是誰就可以給你付款。
  • 花錢是需要私鑰的。這使得別人不能劃走你的錢。

交易一定是付款人發(fā)起的。付款人用私鑰簽名這筆交易,大家用公鑰認證這筆交易是否真的是你本人發(fā)起的。你將這筆賬單廣播給所有人,礦工收到之后就開始給你這筆賬單計算區(qū)塊。等到有礦工計算生成新區(qū)塊,并且得到大家的認可之后,新區(qū)塊就會被加入到區(qū)塊鏈中。

怎么確保一份交易賬單真實有效?

如何在一個沒有信任中心的系統(tǒng)中認證一個事情的真假?這里有個假定,就是好人比壞人多,即整個系統(tǒng)內百分之五十以上的人會嚴格遵守比特幣協(xié)議的規(guī)則。比特幣對交易是由礦工來確認的,也就是說我們認為好礦工比壞礦工多,對于錯誤的賬單,好礦工都是會拒絕的。那么壞人就無法進行偽造、篡改。

比特幣的交易認證包含兩個事情:一是各路礦工對新區(qū)塊數學難題的求解,一是全體同志對求解出答案的礦工的答案進行驗證。

挖礦的難度設計出了一個基本固定的十分鐘時間,當你提出一筆交易,接下來這十分鐘時間內比特幣系統(tǒng)對你的這筆交易申請進行驗證,看看你是不是有這筆錢。礦工們會努力進行求解,第一個算得結果的人會把結果廣播出去,讓大家來評判對錯,如果對的話,大家就會認可這筆交易。

賬單的確認實際上是在試圖向區(qū)塊鏈添加新的區(qū)塊,也就是要計算出新的區(qū)塊。

如何防止壞人偽造他人身份?

通過非對稱密碼簽名,當礦工發(fā)現這個賬單不是付款人合法簽名的賬單,自然會拒掉。

如何防止本人制造虛假賬單?

如果是是不依賴于你自己以前的賬面為基礎而進行的交易賬單,那肯定和別人計算出的解不同,不會被大家認可。
如果你想要反悔以前你的某次付款,那計算量更是比登天還難。

比特幣有沒有偽鈔?

比特幣系統(tǒng)的財富全部是依賴交易賬單計算的,區(qū)塊鏈中的交易面額都是真鈔,挖礦得到的進賬交易也是真鈔,所以就不存在偽鈔這個概念了。

比特幣的神秘發(fā)明人

比特幣的發(fā)明人一直是個迷。2009年一個網名叫中本聰的人在密碼學郵件列表里發(fā)了一篇論文,講述了這種不依賴于信任關系的金融交易系統(tǒng),隨后中本聰開發(fā)了第一款比特幣系統(tǒng)。可是沒人知道他的真實身份,他有意隱藏自己的一切身份信息。無數技術牛人試圖通過各種方式尋找這個天才黑客數學家的線索,都沒能如愿。

目前來講,我們不知道他是一個人還是一個團隊,不知道他所在的地區(qū)和時區(qū),只知道他精通英語、數學、計算機。

經濟學問題

這篇文章主要是從技術角度來認識比特幣系統(tǒng)和比特幣協(xié)議的設計,并沒有從經濟學角度去評判比特幣的優(yōu)劣。而從經濟學理論來認識比特幣,一定是又一番內容。

為什么比特幣會有價值?

騰訊接收Q幣充會員,人們愿意用人民幣去兌換Q幣,于是Q幣就具有了價值。當越來越多的人認為比特幣有價值,加上比特幣稀缺且難以獲得,人們愿意用它來支付和交易其他貨幣,于是比特幣就有了價值。

比特幣的價格是怎么定的?

這應該是經濟學基礎。比特幣的價格是由比特幣的數量和其內的流通法定貨幣共同決定的。比如當前比特幣的總數為100萬個,當前世界上人們總共用了100萬美元去買比特幣,那么當前1個比特幣的價格就是1美元。也就是說,越多人用真錢去買入比特幣,比特幣的價格就會越高。

比特幣和螺旋式通貨緊縮

通貨緊縮和當前我國的通貨膨脹情況相反。指的是物價水平下降,貨幣的購買力上漲,于是人們認為錢在升值,更傾向于存錢而不是消費或投資,于是市場交易率下降,企業(yè)利潤下降。這又反過來導致國民收入下降,產生惡性循環(huán)。

比特幣的總量有限,價格如果一直上漲,就會出現通貨緊縮。比特幣購買力一直升高,人們傾向于存著比特幣不花,構成通縮。

參考資料

官網

比特幣wiki

中本聰wiki

最原始論文

比特幣協(xié)議說明

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 一、快速術語檢索 比特幣地址:(例如:1DSrfJdB2AnWaFNgSbv3MZC2m74996JafV)由一串...
    不如假如閱讀 16,568評論 4 87
  • 以下為金馬老師《精通比特幣》解讀的文稿整理。 第一章 介紹 1.1 什么是比特幣 (1)比特幣是一個區(qū)塊鏈實現 (...
    夢之郎閱讀 13,787評論 6 61
  • 一看到一篇文章,只是從一本書中摘取一個章節(jié)出來,加入自己的語言組成了一篇如何把文字寫生動的文章,閱讀點贊量極大,兩...
    菜心昕閱讀 314評論 0 1
  • 每個人都隔三差五的犯著錯 大錯小錯錯中錯 有時是你傷害到我 然后我又變成了報復你的那一個 但是我們也會原諒 仿佛身...
    Grassash閱讀 264評論 0 0
  • 溫暖的春天過去了,而春天的繼承人炎熱的夏天已經來了,在這里,我們就開始觀察炎熱的夏天吧! 夏天到了我很惋惜,因...
    卓卓2閱讀 240評論 0 0

友情鏈接更多精彩內容