比特幣的執行機制是怎樣的?

買賣虛擬貨幣

簡介

alice跟bob離的很遠,她想買bob的羊駝襪子。作為回報,她想付給bob一美元。一元鈔票只是一片紙,非常容易製作(對於那些能夠製造的人),但是在現實生活中被人們接受用來交換有價值的產品和服務,比如alice想買的襪子。alice能夠做的簡單事情就是把一美元放進信封郵寄給bob,然後等待bob把襪子寄給她。
另外一種方法是alice把錢“電匯”給bob。要做到這些,首先她把她的鈔票給一個叫銀行的組織,銀行負責安全的儲存alice的鈔票,然後返回alice一個書寫的承諾(被稱作銀行結單)。任何時候,只要她願意,她能夠到銀行取回她儲存在銀行的相同數量的鈔票。因為這些錢仍然屬於alice,她有資格用這些錢來做她想做的任何事,另外銀行(像大部分銀行)會收取一小筆費用,作為把鈔票轉給bob的服務費。銀行可以派一個人拿著alice的鈔票(或者換成了嶄新的鈔票,如果alice的鈔票比較破舊)到bob家裡交給bob,但是,一般情況,是透過alice的銀行賬戶直接轉到bob的帳號再通知他們兩人。下次bob將在賬單中看到,或者,如果他比較急迫,下次他會聯絡銀行詢問他在銀行中擁有多少錢。
因為銀行有很多顧客,並且銀行需要花錢僱傭員工與人們交談和簽署文件,所以最近銀行已經開始使用機器(比如atms)和網路服務來代替付費的員工和顧客互動。這些機器被設計成用來處理顧客想要對他/她的錢進行的操作,以及顧客可能操作的的範圍(比如,atms能夠處理現金)。最後,大部分時間,很少有人來處理這種事務。人們能夠一直知道銀行安全儲存的金錢裡面有多少是他們的,並且,他們信任他們在銀行賬單上和他們電腦螢幕上看到的金錢數量,他們任何時候可以從銀行得到的相應的鈔票。他們確信,他們能夠像接受紙幣一樣接受這些數字(這類似於當初人們開始像接受金銀一樣接受紙幣)。
儘管如此,事實上,機器的使用並沒有改變這種系統的結構,這種結構基於一箇中心權威機構(銀行)負責儲存使用者賬戶資訊。每個人不得不依靠這個權威機構的誠實(比如,說到他們總共保管了多少金錢,或者至少保持多少紙幣可供所有著可用)。同樣,每個人不得不在這個機構提供他/她的真實姓名來認證他們的身份,從而被允許取回他們的鈔票或者轉賬給別人。
bitcoin是一個擁有一種叫做bitcoin貨幣並且能夠自由轉移的系統,它使用一種類似與線上銀行介面的方式,但是是匿名的並且不需要依賴一箇中心權威機構來決定真偽。這些bitcoin需要消耗真實的資源(cpu時間和電力)來生產,所以它們是有價值的,它們不能夠被重複使用,也不會消失,除非這些bitcoin所有者的電腦被非法訪問。

怎樣預防盜竊?

為了保證偷聽者,比如eve,不能夠透過使用別人的名字建立一個交易來存取其他人的bitcoin,我們使用公共金鑰系統來生成數字簽名。在這個系統中,每個人,比如alice和bob擁有一個儲存在安全錢包中的公開/私有金鑰對。僅僅擁有私有key的使用者可以簽署文件,比如用來簽署他轉移一些bitcoin給某人的交易,但是每個人都能夠使用他的公共key來驗證這個簽名。
bob把公共key傳送給alice
alice新增bob的公共key和她希望轉賬的數量到這個交易中
alice使用她的私密key簽署這個交易
現在,任何知道alice和bob公共key的人都確認,alice同意轉移這個數量的bicoin給bob,因為除了alice沒有其他人擁有alice的私密key。alice不會愚蠢到把她的私密key給別人,否則,別人就可以使用她的名字來簽署交易、從她的餘額中轉移資金。
稍後,當bob想轉移同樣的coin給charley,他要做同樣的事情:接收charley的公共key,新增新的交易到交易鏈中並且使用他(bob)的私有key簽署。但是隻有bob能夠這樣做,因為只有bob擁有這個私有key,這個key被需要用來簽署交易,並且這是唯一在交易鏈中匹配bob公共key的私有key。
eve不能夠透過把bob的公共key替換成她自己的來改變這些coin的擁有者,因為alice使用自己的私有key簽署過轉賬給bob的交易,來宣告這些屬於她自己的coin現在屬於bob,並且alice的私有key對eve來說是秘密。所以如果charley承認這些最初的coin是在alice手中,稍候她將同樣接受這些coin被轉移給bob了,而現在bob轉移同樣的coin給他。


怎樣防止重複使用?

這是我們怎樣保證alice不能複製coin,並且不能把它用在多個交易上(這是bitcoin最主要的創新)
交易的詳細資訊被髮送給所有的人,或者儘可能多傳送到其他電腦上。
一個包含所有交易記錄並且持續增長的blocks鏈,被所有的電腦共同維護(每臺電腦擁有一個完整的複製)。
交易的blocks必須是合法的,並且必須包含勞動的證據(網路每10分鐘產生一個block),才會被這個記錄連結受。
blocks使用一種方式連結起來,如果任何一個被修改,所有後面的blocks必須被重新計算
當這個鏈出現多個合法的分支時,只有那個最長的分支被接受並被延續下去。
當bob看到他的交易被包含在一個block上,而這個block在那個唯一的最長並且增長最快的block鏈(透過有意義的計算增長)上時,他就能確信alice發起的交易已經被網路上的計算機接受,並且被永久記錄下來防止alice使用同樣的coin再建立一個交易。
理論上,alice能夠努力生成欺騙性的blocks,這些blocks上不存在她以前使用過的coin,她嘗試把這些blocks傳送給每個人,作為這個coin仍然屬於她的證據。然而,以前alice簽署過的交易已經發布過,並且被髮送給了在bitcoin網路中很大數量的計算機,包含它的一個block已經被某人生成(否則,這個coin的第一個接收者不會確認它)。因為生成一個合法的block被設計成需要很長的時間,alice的速度競爭不過所有的其他電腦。bob會從其他人收到更多的blocks,alice單獨永遠生成不了這些blocks,並且一些更新的blocks將會包含alice以前的交易,讓bob知道alice已經把她的coin花費出去了。alice能夠移除她的交易的唯一方法是創造一個平行的block鏈,這些block鏈必須比所有其他人已經生成的鏈更長並且不包含她的交易,因為僅有最長的鏈被接受。為了保持最長,它同時不得不增長比其它的鏈更快,這樣才能阻止block生成器把alice的交易新增到鏈中。為了做到這些,alice必須可以永久的控制網路上大部分的cpu資源;這種事我們認為沒有單個的人或組織可以做到。因此,只要控制大部分cpu的人不跟alice合作,她的交易將永久的被記錄並且她將不能用同樣的coin建立另一個交易。

怎樣保證匿名性?

bitcoin"帳號"不需要關聯姓名並且不需要跟某個個體對應。每個餘額簡單的關聯一個隨機生成的公開/私有金鑰對並且這些錢屬於擁有這個私有key並且能夠使用它來簽署交易的人。這些使用這些keys簽署的交易同樣不需要包含姓名。
一個bitcoin地址就是一個公開key,看起來像這樣:
14ippjcajb6bwejbimphks5z8hebqsznld
每個人可以擁有很多這樣的地址,每個地址擁有自己的餘額,這樣使確定哪個人擁有這些錢更困難。為了保護他的隱私,bob甚至能夠為每個獨立的交易生成一個新的公開/私有金鑰對。這樣david從charley收到的coin將不能確定誰是在這個交易列表中第二個擁有的人(不詢問charley的情況下)。


貨幣的製造

正如上面說的,bob和charley需要驗證從alice發出的原始coin是合法的。alice不能簡單的及時憑空生成coins,因為一個coin的出現是一個需要被其他人接受的交易。
根據當前的軟體,新coins是這樣被慢慢引入:每臺生成一個的block的電腦獲得50btc,這個block被允許放一個交易,獲得的金錢不需要從某個地方獲得。這個金錢是對那些付出計算生成block的人的激勵。然而,根據目前協定,每過四年,生成一個block的獎勵降低一半。意味著,在2013年的同一時刻,絕大多數cpus將不再接受那些把50btc新增到金錢數量中的blocks,並且他們僅僅接受那些新增一半數量的blocks。同樣的事情將會發生在2017,2021,2025年等,除非不同的bitcoin客戶端軟體普遍出現在網路上。
因為激勵最終會慢慢變少,對alice來說另一種獲取bitcoins的方式是當他生成blocks的時候接受交易費。在每個bicoins的轉移中,這裡有一個自願支付的交易費,這個數量是可以選擇的,由那個發出金錢的人支付。這個金錢付給付出勞動生成包含這個交易的block的人,需要這個block這個交易才會被接受。因為alice可以自由的包含任意交易的集合,她可以只選擇包含那個最高交易費的交易。如果每個人都這樣做,最後,取決於交易的總量,對於一筆交易的最低交易費在blocks鏈中將會產生。


總結

可以訪問bitcoin block explorer這個網站,實際的體驗一下這個系統。 這個網站向你展示blocks鏈中最新的blocks。block鏈包含所有發生在這個系統中已經被接受的歷史交易記錄。 注意下在最後一個小時多少blocks被產生,應該大約6個。同時注意最後一個小時交易的數量和轉移的總量(最後一次我檢查是大約64和15k)。 這將讓你瞭解這個系統的活躍度。
下一步,詳細瞭解這些blocks中的一個。 首先注意到這個block的hash值以一串0開頭,這個表示製造它有多難。 生成這個block的計算機不得不執行在許多臨時的值(同時在block的頁面中列出來了)直到發現一個可以生成這串0 下一個需要注意的是標記為previous block的這行,每個block在它前面會包含它的hash值,這是block鏈的組成結構。 現在看一下這個block包含的所有交易。第一個交易是生成這個block的計算機的收益。它包含一個固定數量的憑空產生的金額,以及可能包含這個block中的其它交易的交易費。
詳細瞭解這些交易的任何一個,你將發現它是由多個進來和出去的資金組成。 事實上,這裡可能有不止一個進來和出去的資金,允許這個系統用任何可能的方式把資金連線或者拆分成需要的部分金額(常常是分)。 每個進來的資金來自於一個以前的某個地址的交易(你同樣可以詳細瞭解) 並且每一個出去的資金被轉移給某人,並且組成未來交易的一部分(如果它已經發生了,你同樣可以進去詳細瞭解)。
最後你可以詳細瞭解任何一個地址並且知道哪些公開的資訊可以看到。
為了得到一個對bitcoin系統活躍度的印象,你也許喜歡訪問監控網站bitcoin watch和bitcoin monitor。開始是關於交易數量和大小的一般性統計資料,然後是實時的採用視覺化的方式展示bitcoin系統中發生的活動。

免責聲明:

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

推荐阅读

;