比特幣學習筆記——————1、比特幣簡介

FLy_鵬程萬里發表於2018-06-12


1.1 什麼是比特幣

比特幣是由一系列概念和技術作為基礎構建的數字貨幣生態系統。狹義的“比特幣”代表系統中的貨幣單位,用於儲存和傳輸價值。使用者主要通過網際網路使用比特幣系統,當然其他網路也可以使用。比特幣協議以各種開源軟體的形式實現,這些軟體可以在膝上型電腦、智慧手機等多種裝置上執行,讓使用者方便地接入比特幣系統。

比特幣可以做傳統貨幣能做的所有事,例如買賣商品、給個人或組織匯款、貸款。使用者可以在專門的交易所裡買賣比特幣或兌換其他貨幣。在一定意義上,比特幣才是網際網路貨幣的完美形態。因為它具有快捷、安全、無國界的特性。

不同於傳統貨幣,比特幣是完全虛擬的。它不但沒有實體,本質上也沒有一種虛擬物品代表比特幣。比特幣隱含在收發幣的轉賬記錄中。使用者只要有證明其控制權的金鑰,用金鑰解鎖,就可以傳送比特幣。這些金鑰通常儲存在計算機的數字錢包裡。擁有金鑰是使用比特幣的唯一條件,這讓控制權完全掌握在每個人手中。

比特幣是一個分散式的點對點網路系統。因此沒有“中央”伺服器,也沒有中央發行機構。比特幣是通過“挖礦”產生的,挖礦就是驗證比特幣交易的同時參與競賽來解決一個數學問題。任何參與者(比如執行一個完整協議棧的人)都可以做礦工,用他們的電腦算力來驗證和記錄交易。平均每10分鐘就有人能驗證過去這10分鐘發生的交易,他將會獲得新幣作為工作回報。本質上,挖礦把央行的貨幣發行和結算功能進行分散式,用全球化的算力競爭來取代對中央發行機構的需求。

比特幣系統包含調節挖礦難度的協議。挖礦——在比特幣網路中成功寫入一個區塊交易——的難度是動態調整的,保證不管有多少礦工(多少CPU)挖礦,平均每10分鐘只有一個礦工成功。

比特幣協議還規定,每四年新幣的開採量減半,同時限制比特幣的最終開採總量為2,100萬枚。這樣,流通中的比特幣數量非常接近一條曲線,並將在2140年比特幣將達到2,100萬枚。由於比特幣的開採速度隨時間遞減,從長期來看,比特幣是一種通貨緊縮貨幣。此外,不能通過“印刷”新比特幣來實現“通貨膨脹”。

比特幣是一種協議、一種網路、一種分散式計算創新的代名詞。比特幣是這種創新的首次實際應用。作為一個開發者,我看比特幣之於貨幣就像看到當年的網際網路,一個通過分散式計算來傳播價值和保障數字資產所有權的網路。比起初識比特幣,這裡將知無不言。

在本章中,我們從一些主要概念和術語入手,告訴你如何獲取軟體並使用比特幣進行簡單的交易。接下來的章節,我們會逐步講解比特幣背後的技術細節,分析比特幣網路和比特幣協議的內部執行機制。

比特幣誕生之前的數字貨幣

切實可行的數字貨幣的出現是與密碼學發展息息相關的。基本的挑戰在於,當一個人考慮到用位元來代表可以兌換商品和服務的價值時,接受數字貨幣也就不足為奇。任何接受數字貨幣的人都面臨的兩個基本問題是:

  1. 我能相信這錢是真實可信的,而不是偽造的嗎?
  2. 我能確定沒人說這筆錢是他們的,而不是我的嗎?(又名“雙重支付”問題)

紙幣的發行機構不斷的利用日益複雜的紙張和列印技術來遏制造假問題。實物貨幣很容易解決雙重支付問題,因為同一張紙幣不可能會同時出現在兩個不同的地方。當然,傳統貨幣也經常數字化儲存和數字化傳輸。在這些情況下,假幣和雙重支付問題是被中央權威機構的處理方式是清除所有的電子交易記錄,該中央權威在流通中持有一種全球通貨觀。對於數字貨幣來說,不能有效利用祕製油墨印刷技術或條形全息圖,密碼學為使用者所主張的合法性價值提供了信任的基礎。具體地來說,加密數字簽名能夠使一個使用者簽署一項能夠提供其資產所有權證明的數字資產或數字交易。採用適當的結構,數字簽名也可以用於解決雙重支付的問題。

在20世紀80年代後期,當密碼學開始越來越廣泛地使用並被理解時,許多研究人員開始嘗試使用密碼學來建立數字通貨。這些早期的數字通貨專案發行的數字貨幣,通常倚靠一種國家通貨或像黃金一樣的貴金屬。

雖然這些早期的數字通貨成型了,他們卻是中心化的,因此,他們很容易遭受到政府和黑客的攻擊。早期的數字通貨使用了一箇中央結算所來處理所有的定期交易,就像一個傳統的銀行系統。不幸的是,在大多數情況下,這些新興的數字貨幣成為了政府擔憂的目標,最終從法律程式上消失了。另一些則是在發行這些數字貨幣的母公司突然違約時頹然失敗了。為了堅定的抵制對手的介入,無論這些對手是合法的政府或是犯罪分子,去中心化的數字貨幣需要的是避免單節點攻擊。比特幣正是這樣的系統,設計完全去中心化,不被任何中央政權或中央點控制,這樣的貨幣系統是不會遭受攻擊,也不會變得腐敗。

比特幣代表了數十年的密碼學和分散式系統的巔峰之作,這是一個獨特而強大的組合,彙集了四個關鍵的創新點。比特幣由這些構成:

▷ 一個去中心化的點對點網路(比特幣協議) 
▷ 一個公共的交易賬簿(區塊鏈) 
▷ 一個去中心化的數學的和確定性的貨幣發行(分散式挖礦) 
▷ 一個去中心化的交易驗證系統(交易指令碼)

1.2 比特幣發展史

2008年,一位化名為中本聰的人,在一篇名為《比特幣:一個點對點的電子現金系統》的論文中首先提出了比特幣。中本聰結合以前的多個數字貨幣發明,如B-money和HashCash,建立了一個完全去中心化的電子現金系統,不依賴於通貨保障或是結算交易驗證保障的中央權威。關鍵的創新是利用分散式計算系統(稱為“工作量證明”演算法)每隔10分鐘進行一次的全網“選拔”,能夠使去中心化的網路同步交易記錄。這個能優雅的解決雙重支付問題,即一個單一的貨幣單位可以使用兩次。此前,雙重支付問題是數字貨幣的一個弱點,並通過一箇中央結算機構清除所有交易來處理。

根據中本聰發表的一篇涉及比特幣網路執行的論文,比特幣網路自從被許多其他的程式設計師修訂之後,於2009年啟動。分散式計算,為比特幣提供了成倍增長的安全性和韌性,現在超過了世界頂級超級電腦的聯合處理能力。根據比特幣兌美元匯率,比特幣的總市場估值為50至100億美元。目前從全網來看,比特幣處理的最大交易額為1.5億美元,這筆交易及時處理和轉賬,沒有繳納任何手續費。

中本聰在2011年4月退出公眾視野,將比特幣程式碼開發與網路建設的重任留給了欣欣向榮的社群成員。而“中本聰”究竟是誰,時至今日仍然是未解之謎。然而,比特幣系統的執行,既不依賴於中本聰,也不依賴於其他任何人——比特幣系統依賴於完全透明的數學原理。這項發明本身就是開創性的,它已經蔓延到了分散式計算、經濟學、計量經濟學領域。

一個分散式計算問題的解決方案

中本聰的此項發明,對“拜占庭將軍”問題也是一個可行的解決方案,這是一個在分散式計算中未曾解決的問題。簡單來說,這個問題包括了試圖通過在一個不可靠、具有潛在威脅的網路中,通過資訊交流來達成一個行動協議共識。中本聰的解決方案是使用工作量證明的概念在沒有中央信任機構下達成共識,這代表了分散式計算的科學突破,並已經超越了貨幣廣泛的適用性。它可以用來達成去中心化的網路共識來公正選舉、彩票、資產登記,以及數字化公證等等。

1.3 比特幣的應用、使用者和他們的故事

比特幣是一項技術,但它所傳遞的貨幣從實質上來說,是一種人與人之間價值交換的基礎語言。讓我們通過他們的故事,來看看使用比特幣的人和一些最常用的通貨和協議。我們將會反覆用到這些貫穿本書的故事,以此來說明現實生活中數字貨幣的用途,以及他們是如何通過比特幣的各種技術使之成為可能的。

北美低價零售 
Alice住在北加州的舊金山灣區。她已經從她的科技迷朋友口中得知了比特幣,想要開始使用它。我們會跟進她的故事,來了解比特幣,獲取一些,並在帕洛阿爾託的Bob家咖啡店用比特幣購買一杯咖啡。這個故事會從零售的消費者角度向我們介紹比特幣軟體,交易平臺,以及基本的交易。

北美高價零售 
Carol是一位舊金山藝術畫廊的主人。她出售昂貴的油畫來換取比特幣。這個故事將介紹高額商品的零售商們所面臨的“51%”攻擊的風險。

離岸合同服務 
Bob是帕洛阿爾託一家咖啡店的老闆,正在建設一個新網站。他曾與一個住在印度班加羅爾的網站開發者Gopesh簽訂了協議。Gopesh已同意比特幣支付。這個故事將研究使用比特幣進行海外購、合約服務,以及國際電匯。

慈善捐贈 
Eugenia是菲律賓一家兒童慈善機構的董事。最近,她發現了比特幣,並希望利用它來和一個全新的國內外捐助群體接洽,以此為她的慈善募捐。她還研究如何使用比特幣快速優化資金配置。這個故事將會演示用比特幣來進行跨幣種跨國界的全球融資,展示慈善組織所使用的公開透明賬簿。

進口/出口 
Mohammed是杜拜一位電子進口商。他試著用比特幣來進行快捷支付,進口美國和中國的電子產品到阿聯酋。這個故事將示範用比特幣來支付大型企業間實物商品的國際收支。

比特幣挖礦 
Jing是上海一名計算機工程專業的學生。他建了一個用來挖比特幣的礦機,使用他的專業技能來為自己創收。這個故事將審查基於比特幣的“工業”:用於確保比特幣網路安全和發行新貨幣的特殊裝置。

這些故事都是根據真實行業內的真實人物原型來的,他們正在用比特幣創造新市場,創造新產業,用比特幣這個新興事物來解決全球經濟問題。

1.4 入門

加入比特幣網路並開始使用通貨,所有使用者需要做的就是下載應用程式或使用線上應用程式。因為比特幣是一個標準,也有許多執行比特幣的客戶端軟體。還有一個標準客戶端,也稱為中本聰客戶端,這是由一個開發團隊管理的一個開源專案,源自於中本聰編寫的初始客戶端。

比特幣客戶端的三種主要形式是:

完整客戶端 
一個完整客戶端,或稱“全節點”,是儲存所有比特幣交易的整個交易歷史(由每一個使用者完成的每一筆交易,曾經所有的每一筆)的客戶端,管理使用者的錢包,並可以在比特幣網路上直接開始交易。這類似於一個獨立的電子郵件伺服器,因為它處理著協議的各個方面,而不依賴於任何其它的伺服器或第三方服務。

輕量級客戶端 
一個輕量級客戶端儲存使用者的錢包,但需要依賴第三方伺服器才能進行比特幣交易,才能接入比特幣網路。輕量級客戶端不儲存所有交易的完整副本,因此必須信賴第三方的伺服器來獲取交易確認。這就類似於一個獨立的電子郵件客戶端,能夠通過郵箱伺服器來訪問一個郵箱,因為它在網路交流中依賴於一個第三方伺服器。

線上客戶端 
線上客戶端通過網頁瀏覽器在第三方伺服器上訪問和儲存該使用者的錢包。這類似於線上郵件,因為它完全依賴於第三方伺服器。

移動客戶端

智慧手機的移動客戶端,例如基於Android系統,既可以作完整客戶端執行,也可作為輕量級客戶端或線上客戶端。一些移動客戶端是與線上客戶端或桌面客戶端同步的,提供跨多個裝置但有一個共同的資金源的多平臺錢包。

比特幣客戶端的選擇,取決於使用者想要管理資金的數目。一個完整的客戶端將為使用者提供最高階的管理和獨立性。這樣錢包的備份和安全責任就轉移到了使用者身上。另一種選擇是線上客戶端,其設定和使用是最簡單的,但線上客戶端的取捨還在於需衡量第三方介入的風險,因為安全性和控制權是由使用者和網頁服務商所共同承擔的。如果一個線上錢包服務遭受了損失,就像已發生過的那樣,使用者們可能會失去所有的資金。反過來看,如果使用者的一個完整客戶端沒有進行適當的備份,他們可能會因為電腦的操作失誤而丟失他們的資金。

這本書的目的在於,我們將演示各種可下載的比特幣客戶端的使用方法,從原版客戶端(中本聰客戶端)到線上錢包。一些案例將使用到原版客戶端,除了作為一個完整的客戶端以外,也會公開錢包的API,網路和交易服務。如果您計劃進入比特幣系統探索程式設計的話,將會需要原版客戶端。

1.4.1 快速入門

我們在“1.3 比特幣的應用、使用者和他們的故事 ”一節中介紹了Alice,她並不是技術性使用者,最近才從一個朋友那聽說了比特幣。她通過瀏覽比特幣官方網站bitcoin.org開始了自己的比特幣之旅,在官網上,她發現了很多種可供選擇的比特幣客戶端。她根據官網提供的建議,選擇了輕量級的Multibit客戶端。

Alice通過官網bitcoin.org上提供的連結,在她的電腦裡下載安裝了Multibit客戶端。目前Multibit電腦客戶端有WindowsWindows, Mac OS 和 Linux版本。


比特幣錢包必須由一個密碼或密令來保護。有許多試圖破解弱密碼的潛在威脅,所以要注意謹慎設定一個不會被輕易破解的密碼。密碼應使用大小寫字母、數字和符號的組合,避免出現生日、球隊名字等個人資訊。避免使用任何能在字典裡輕易找到的詞語,不管這個詞語是什麼語言的。如果條件允許,可以利用密碼生成器生成一個完全隨機的12位以上的密碼。請記住:比特幣是一種隨時能被轉移到世界其他任何地方的貨幣。如果不加以妥善保管,會很容易被偷走。

Alice下載並安裝了Multibit客戶端後,開啟程式就會出現一個歡迎介面,如圖1-1所示:


圖1-1 Multibit比特幣客戶端的歡迎介面

Multibit客戶端會自動為Alice生成一個錢包和一個全新的比特幣地址,點選圖1-2所示的請求標籤即可看到。


圖1-2 Multibit客戶端請求標籤中Alice的新比特幣地址

介面中最重要的是Alice的比特幣地址。類似於電子郵件的地址,Alice可以分享這個地址,這樣任何人都可以通過這個地址直接將比特幣傳送到的新錢包裡。介面上看起來一長串的字母和數字就是地址:

1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK。

地址旁是一個二維碼。這個二維碼是可以被智慧手機攝像頭掃描到該錢包地址的條形碼,即視窗右邊黑白相間的方塊。通過點選比特幣地址或二維碼旁邊的複製按鈕,Alice可以將它們分別複製到剪貼簿。點選二維碼可以將其放大,便於智慧手機掃描。

Alice也可以列印出這個地址二維碼給別人,這樣就不用打一長串字母和數字了。

比特幣地址以數字1或3開頭。類似於電子郵件地址,這些地址可以分享給其他的比特幣的使用者,這樣他們就可以直接通過這些地址傳送比特幣到你的錢包裡。不同於電郵地址的是,你可以任意地建立新的比特幣地址,這些地址都能成功地將資金轉到你的錢包。錢包是多個地址和解鎖資金金鑰的簡單集合。每筆交易你都可以使用不同的地址,這有利於提高隱私的安全性。使用者可建立地址的數量幾乎不受限制。

現在Alice已經準備好開始使用她的新比特幣錢包了。

1.4.2 獲取你的第一枚比特幣

現在你還無法在銀行或是外幣兌換處買到比特幣。截至2014年,在大多數國家,購買比特幣還是相當困難的。你可以去一些專門的通貨交易所,購買比特幣或是出售比特幣換取當地貨幣,交易所是以線上通貨市場的方式來運營。包括以下幾種:

Bitstamp 
一個歐洲通貨市場,通過電匯方式,支援包括歐元、美元在內的多幣種交易。

Coinbase 
美國比特幣錢包,也是買家和賣家進行比特幣交易的一個平臺。 Coinbase允許使用者通過ACH系統來連線美國支票賬戶,這樣易於購買和出售比特幣。

這一類的數字加密貨幣交易所,在國家貨幣和加密貨幣夾縫中求生存。因此,會受各國法規和國際法規的制約,而且往往會具體到某單個國家或經濟區,並只限於該地區的國家貨幣。你所選擇的貨幣交易所,只限於你使用的本國貨幣,也只能是在你國範圍內合法運營的交易所。類似於在銀行開戶,用此類服務來設定這些必要的賬戶需要花費數日或數週的時間,因為他們需要各種形式來了解你的客戶,確認交易將符合反洗錢法。一旦你擁有了交易所的一個賬戶,你就可以像用代理賬戶購買出售外幣一樣的,更快捷地購買或出售比特幣了。

bitcoin charts是提供價格索引的站點,一個包括數十家貨幣交易所其他市場資料的站點,在這裡你可以找到更完整的資料。

新使用者有以下四種方法來獲取比特幣:

▷ 找個有比特幣的朋友,直接向他購買一些。很多比特幣使用者都是這樣開始的。 
▷ 利用localbitcoins.com這樣的分類服務網站來尋找你所在地區的賣家,使用現金進行面對面的線下交易。 
▷ 出售某種產品或服務來換取比特幣。如果你是個程式設計師,可以出售你的程式設計技能。 
▷ 使用你所在地區的比特幣ATM機。利用CoinDesk裡的線上地圖來找到你附近的比特幣取款機。

Alice是經朋友介紹認識比特幣的,所以在等待加州通貨市場上的賬號被驗證和啟用的同時,她輕而易舉的就獲取了她的第一枚比特幣。

1.4.3 傳送和接收比特幣

Alice已經建立好她的比特幣錢包,準備接收資金了。她的錢包程式隨機生成了一個私鑰(關於私鑰的詳細介紹見“4.1.3 私鑰“)和對應的比特幣地址。這時,她的比特幣地址還未在全網公佈,也未在在任何比特幣系統中“登記”。她的比特幣地址只是一串數字,對應一個她可以掌控的資金私鑰。在該地址和賬戶之間還沒有任何交易產生,也沒有任何關聯。直到這個地址接收到在比特幣賬簿(區塊鏈)中公佈過的一筆交易時,才會成為眾多可能“有效”的比特幣地址之一。一旦該地址接受了一筆交易,就會變成全網所知的地址之一,Alice就可以在公開賬簿中查詢餘額了。

Alice和Joe約在當地的一個飯店裡會面,正是Joe把比特幣介紹給了Alice的。這樣Alice就可以用美金向Joe換取一些比特幣,讓Joe傳送一些比特幣到她的賬戶裡。她帶來了列印版的比特幣地址和錢包二維碼。從安全形度來說,比特幣地址沒什麼特別機密的。她可以在任何地方公佈自己的地址,而不用擔心帳戶安全。

Alice只想兌換10美元的比特幣,免得在這項新技術上冒險花太多錢。所以她給了Joe 10美元和她地址的列印件,這樣Joe就可以給她傳送等值的比特幣了。

接下來Joe需要弄清楚匯率,以便於傳送給Alice相應數額的比特幣。有很多應用和網站都會提供當前的市場匯率,下列是一些最流行的:

Bitcoin Charts 
Bitcoin Chart 是一個市場資料服務網站,顯示了全球眾多交易所的比特幣市場匯率,以當地不同的匯率來進行結算。

Bitcoin Average 
Bitcoin Average是一個提供每個幣種的交易量加權平均價格的簡單檢視網站。

ZeroBlock 
ZeroBlock是一個免費的安卓和iOS應用程式,可以顯示不同交易所的比特幣價格。(見圖1-3)

Bitcoin Wisdom 
另一個市場資料索引服務站。


圖1-3 ZeroBlock,一款基於安卓和iOS系統的比特幣市場匯率應用程式

Joe使用上述的程式或網站中的其中一個,查到比特幣的價格約為每個比特幣價值100美元左右。按照這個匯率,Alice給了他10美元,作為交換,他應當給Alice 0.1個比特幣,即10,000,000聰。

Joe查到一個市場價後,開啟自己的手機錢包應用,選擇“傳送”比特幣。


圖1-4 Blockchain 手機錢包的比特幣傳送介面

例如,如果是在蘋果手機上使用Blockchain手機錢包,他會看見螢幕上要求輸入:

▷ 對方的收款地址 
▷ 需要傳送的比特幣數量

在比特幣地址的輸入欄,有一個看起來像二維碼的小圖示。Joe可以用他的智慧手機攝像頭掃描條形碼,而不用再輸入Alice的比特幣地址(1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK)了,不用再打出這個又長又繁瑣的地址。Joe輕擊二維碼圖示,啟動智慧手機的攝像頭,然後掃描Alice帶來的二維碼列印版。手機錢包程式會填好比特幣地址,Joe可以通過比較這個地址和Alice列印的地址中的幾個數字,來確認已正確地掃描。

接著Joe輸入了交易的比特幣金額,0.1比特幣。他仔細檢查,確保已經輸入了正確的金額,因為他馬上要傳送這些錢了,任何一點點的小失誤都會導致傳送到錯誤的地址。最後,他按下了傳送鍵來完成這筆交易。Joe的手機錢包會建立一筆交易,將Joe的錢包裡的0.10比特幣傳送到Alice提供的地址,利用Joe的私鑰來簽名這筆交易。這就公告了比特幣全網,Joe已經授權允許從他的一個地址轉賬比特幣到Alice的新地址。由於交易是通過P2P網路協議傳輸,它會迅速在整個比特幣網路傳播。不到一秒鐘,網路中大多數連線良好的節點都會收到該交易資訊,並首次公佈Alice的地址。

如果Alice手邊有智慧手機或膝上型電腦,她也能看到這筆交易。比特幣賬簿—一個不斷膨脹的檔案記錄,記載了每一筆曾發生過的比特幣交易—是公開的,意味著她可以檢視所有曾經使用該地址的記錄,可以檢視是否有人朝這個賬戶傳送了比特幣。她只要在blockchain.info網站的搜尋框中,輸入她自己的地址,就可以輕而易舉的知曉了。網頁會顯示出該地址所有的交易記錄。Joe點選傳送後,0.10比特幣會很快轉到她的錢包裡,如果Alice正看這個頁面,她就會發現網頁更新了這筆新交易資訊。

確認

起初,Alice的地址會顯示Joe發出這筆的交易為“未確認”,這意味著這筆交易已經被廣播到網路,但是尚未列入比特幣交易記錄賬簿,即區塊鏈中。總的來說,交易必須由一個礦工“開採”,交易是包括在區塊中的。當新區塊建立時,大約十分鐘左右,該區域內的交易就會被全網接受為“已確認”,區塊中的比特幣也都能使用。交易可以立即被其他人看到,但只有當其被包含在新開採的區塊中,才是“被信任的”。

現在Alice可以自由支配她所有的0.10個比特幣了,感覺很是自豪。在下一章中,我們將看看她第一次使用比特幣支付,並會更細緻地瞭解交易和廣播的相關技術。


相關文章