每日最新頭條.有趣資訊

用Emoji 表情符號,為你科普比特幣知識

編者按:比特幣越來越火,但是它到底如何運作卻成了許多人的困惑點。本文作者Tess Rinearson在“Making Money Trustworthy-Bitcoin Explained (with Emoji), Part 2”一文中生動地講述了比特幣之所以運作的兩大數據邏輯,十分簡單易懂。

在上一篇文章中,我們了解了比特幣是一種去中心化貨幣,不由任何政府或金融機構產生或擁有,並了解了散列法的原則。在這篇文章中,我們將學習比特幣開礦者如何使用散列法賺錢,以及加密技術如何讓比特幣變得可信、獨特和不可複製,它們是完全可以轉移的。

與美元一樣,比特幣的價值也在波動。但是即使價值發生波動,人們也選擇相信貨幣。當美元得到黃金的支持,人們因其可以兌換成貴重金屬而相信它。如今,人們信任美元很大程度是因為美國政府的信譽,他們信任政府會支持銀行。

比特幣系統被設計成高度信賴的樣子,但卻並非因為黃金或政府。相反,它依賴於數學,具體來說,依賴於兩種技術的巧妙運用:散列法和公鑰加密。

散列法&比特幣的區塊鏈

區塊鏈是每次比特幣交易的公開账簿。它是一個區塊序列,每個區塊包含一組比特幣交易。你可以將區塊鏈視為由一系列包裹組成,每個包裹裡麵包含有大約10分鐘內發生的交易資訊。

或者你可以把這些包裹彼此堆疊起來,其中最早期的操作事務位於底部,而最近發生的包裹位於頂部。而那些堆疊式存放的包裹則極易被破壞,從而使得干涉行為容易被發現。

每一個區塊都擁有一個獨特的散列,以一個非常大的數字(十六進製)的形式作為一個官方字元串來表示一個“指紋”。其中一個區塊的散列可能是“00000000003e95b0ac78cb961d0”。

為了讓我們的說明更加簡單和概念化,我會用表情符號代替一長串數字來表示某一散列。我們把第一個區塊散列比作一個足球,第二個區塊散列比作一條魷魚,第三個區塊散列比作一把傘。那麽,這個區塊鏈用表情式散列表示時,展示如下:

假如我的朋友伊麗莎白給了我價值5美元的比特幣,我想把它給你。當我這樣做時,交易將與其他眾多交易一起形成一個區塊並歸入進整個鏈條上。每個鏈條中的區塊知道其在序列中的位置,因為它包含有前面出現的區塊的散列。換句話說,第三個區塊不僅包含有一組交易資訊,它同時含有前一個區塊的散列值。

想象一下,比特幣系統剛剛完成三個區塊的散列(生成那個雨傘區塊鏈的散列值)。如果我付給你5美元,那麽下一個區塊就會記錄下我們的交易。而這個新生成的區塊,此時還沒有生成散列值。目前結果是什麽仍不得而知。

這就是有趣之處。智能電腦會叫“礦工們”將第四個區塊添加到區塊鏈上。第一個成功獲得新區塊散列值的礦工是勝利者,它的所有者將獲得12.5個全新比特幣作為獎勵(未來這一獎勵數量會減少)。

這就是財富被“開礦”出來的過程。一旦一個散列值被成功挖掘,它就會被迅速地分配給其他礦工,他們會對其驗證並將其添加到自己的區塊鏈副本中,然後為區塊鏈的新區塊尋找散列值的又一輪比賽就會開始。

散列法非常容易。筆電電腦能在一秒內找到數千個散列值。

但是在比特幣的世界裡,成功找到一個複合條件的散列值平均需要花費為此競爭的礦工們10分鐘的時間,因為並非每一個散列值都會有效。比特幣系統所要求的散列值比其他所有可能找到的散列值要小得多,這使得找到一個可接受的散列值十分繁瑣。

礦工們想要找到一個小散列值,唯一的辦法就是進行一遍遍地嘗試。每一次嘗試都必須不同,並且礦工們不能改變他們尋找的方式,但是能夠稍微改變他們所尋到的結果。

礦工們在一個叫“隨機數(nonce)”的幫助下做到這些,它像我在前一篇文章中提到的一隻小狗眼睛上方的單像素黑跳蚤。

想象一下,添加一個由小狗照片的散列值所產生的單像素絕非平常之事,因為在獲得散列值之前輕微改變這個數字化內容就會產生完全不可預知的結果。

一個隨機數代表一個大膽猜測,它是在不斷試錯的基礎上尋找能添加到區塊鏈上的數值,並因其能夠生成最終散列而成功。礦工們將前面所有的交易資訊促成一個新區塊,再加上之前區塊上的散列值,再加上隨機數,然後見證結果。每個礦工嘗試不同的隨機數,並希望有一個能夠成功合並到區塊中,使這個區塊散列出一個合適的小數值。事實上,成功的礦工可能嘗試過數百萬種不同的數值。

這段時間以來,通常在某礦工成功找到合適的散列值之前,整個比特幣系統內會進行千兆次嘗試。由於電腦的強大,以及礦工人數的增加,每10分鐘左右就會有一個贏家。(如果平均挖礦時間下降到10分鐘以下,比特幣系統就會自動讓目標值變得更小,從而使尋找過程變得更為複雜。)

黃金因其為一種珍貴的金屬而具有價值,獲勝的散列值則因其是一串珍貴的數字而獲得價值,它的價值在於它的品質(小數值)而使其極其稀有。礦工們在黑暗中聚集起大量石塊,並且希望自己成為第一個撞到數字的人,這個數字會產生一個符合比特幣系統嚴格要求的散列。舉例來說,這個要求可能是小於0000000003e95b0acc32ac089222的散列。那些成功的挖礦者的策略是用足夠強大的電腦進行大量猜測。

比特幣世界要求散列值低於一定的大小,讓我們繼續用表情符號進行說明,假設約束設定更友好,比如,散列值必須是一種動物。經過嘗試,礦工們的結果可能如下:

只有一種結果符合約束條件:既不是櫻花,也不是梨子,而是一隻海豚。

因為第二名礦工找到了正確的散列值,因此他將獲得獎勵。這種獎勵包括全新的比特幣,這也即是為什麽這個過程被稱為“挖礦”。礦工們在發現新的比特幣,如同之前的人們挖掘黃金一樣。

如果開礦過程發生的過快,系統就會被比特幣所淹沒,進而導致通貨膨脹。為了預防這種情況發生,比特幣軟體是用可調節邏輯編寫而成。一旦發現挖取散列太過容易,比特幣系統就會選擇更為嚴格的選擇條件。

你可以想象一下,在我們的表情式區塊鏈中,區塊被開發得過快的情形。為了解決這個問題,約束條件可能被調整為:“下一個區塊,散列值必須是動物,並且必須有爪子”。

礦工們運行他們的散列函數,獲得了以下結果:

這些結果都不符合有爪子的動物,所以礦工們需要再一次嘗試:

基於上述約束條件,第三個礦工找到了正確的答案:熊是有爪子的動物。然後,這個礦工可以將散列值與區塊內的數據一同廣播到區塊鏈世界中。由於散列函授可以快速運行,其他采礦者可以在區塊上運行散列函數,並驗證這個散列值是否滿足約束條件。之後,他們就會將區塊添加到自己的區塊鏈副本中,這意味著他們將或多或少保持同步,並開始為下一個區塊收集交易。

此時,區塊鏈的散列值顯示如下,我轉給你的5美元的交易的區塊被稱為“熊”。

公鑰密碼學

散列值只是比特幣系統所依賴的其中一個數學概念。公鑰密碼術是另一種。

研究密碼學的人們經常使用“愛麗絲”和“鮑勃”作為解釋概念的兩位角色。現在,我將用他們來幫助解釋公鑰密碼學的基本邏輯。

設想一下,愛麗絲想交給鮑勃一個裝有秘密檔案的公文包。如果愛麗絲和鮑勃有互相匹配的密鑰,事情很簡單:她可以將公文包上鎖,並用鑰匙把它鎖起來,然後將它給鮑勃。

當鮑勃收到公文包時,他會有自己的鑰匙解鎖,因為這兩把鑰匙相同,於是鮑勃會得到包中的秘密檔案。這個過程被稱為對稱密碼術。

但是通常而言,人們互相發送的秘密東西沒有對應的匹配密鑰,因為要安全傳遞密鑰並不容易。因此,如果愛麗絲有給鮑勃發送密鑰的私人且安全的方式,她同樣也可以用其來傳輸檔案。

所以,愛麗絲和鮑勃不需要共同擁有這個鎖的密鑰。而是他們彼此都有自己的鑰匙和自己的鎖,這意味著他們不需要考慮傳遞鑰匙的事情。

它是這麽運作的:

愛麗絲用鑰匙鎖起了帶有掛鎖的公文包,並將其傳遞給鮑勃。當鮑勃收到愛麗絲的公文包時,他無法解開愛麗絲的掛鎖。但是,他將其添上了自己的掛鎖。

……並將其返還給愛麗絲:

然後愛麗絲用她的鑰匙將掛鎖從公文包上摘下來:

公文包上現在只有一個掛鎖:鮑勃的。愛麗絲將公文包寄回給鮑勃:

鮑勃可以輕易打開他自己上鎖的公文包,並順利拿出裡面的檔案。

現在,愛麗絲和鮑勃不需要再秘密分享同一把鑰匙。他們只需要擁有自己的掛鎖和自己的鑰匙。

但是如果對方不是你認為的那個人呢?萬一發生了什麽奇怪的事故,比如鮑勃被一頭牛所取代了呢?

那麽接下來,將發生這些事情:

1. 愛麗絲把帶有掛鎖的公文包寄了出去。她以為寄給的是鮑勃,但是卻寄給了一頭奶牛。

2. 這頭牛,以令人驚訝的靈巧度,將它的掛鎖鎖在了公文包上,然後將其寄回給愛麗絲。

3. 愛麗絲很高興看到公文包帶著“鮑勃”(實際上是奶牛的)掛鎖回來了,她打開自己的掛鎖並將其寄送回去。

4. 這頭奶牛拿回公文包,打開了自己的鎖。

5. 牛把秘密檔案吃掉了。

沒有人希望他們的秘密被一頭牛消化掉,所以我們需要采取一個步驟來保護機密數據:鮑勃確保愛麗絲知道他的掛鎖是什麽樣子,所以當她重新拿回公文包時,能夠驗證這個新鎖是否屬於鮑勃。

事實上,鮑勃能夠複製幾個他的掛鎖,並將其公開。每個人都知道鮑勃的掛鎖是什麽樣子並不重要,因為他是唯一可以用鑰匙解鎖的人。同時,這也讓愛麗絲認出了鮑勃的鎖。她可以在打開自己的鎖之前,檢查第二個掛鎖是否真的屬於鮑勃。

如果我們需要處理的是物理掛鎖和密鑰,那麽很難做到複製和分發掛鎖。但是當我們以數字化方式進行處理的時候,我們使用的是數字密碼和數字鎖,即是數值。

掛鎖代表的數字是公開的。密鑰代表的數字是私有的。這個被稱為“私鑰”的私人數字可以用來“打開”公共鎖。

這即是公鑰密碼術。

人們小心翼翼地保護著他們的私鑰,因為私鑰可以解鎖任何相對應的公鎖。(在密碼學中,這種解鎖過程有時被稱為簽名。)而人們會廣泛散布他們的公鑰,這樣其他人就知道什麽被鎖住了。

在比特幣系統中,公共密碼學被用來證明所有權。為了討論其是如何工作,我們首先需要需要了解一些術語。在比特幣中,有私鑰、公鑰和地址。

與愛麗絲與鮑勃的秘密檔案不同,比特幣系統的密鑰並不用來加密任何東西。不存在人們需要解鎖的秘密公文包。相反,鑰匙被用來證明所有權。

在比特幣的世界裡,愛麗絲並沒有一個需要傳遞給鮑勃的秘密公文包。相反,她有一個放著掛鎖和比特幣的玻璃盒子。

為了將比特幣傳遞給鮑勃,愛麗絲必須做兩件事:

1. 愛麗絲必須把鮑勃的掛鎖放在自己的箱子裡。這很簡單,因為鮑勃的掛鎖實際上是一個公開數值。這樣,鮑勃可以通過解鎖自己的掛鎖來證明自己的所有權。

2. 愛麗絲必須證明這個盒子放置的掛鎖是她的,而不是別人的。她需要用鑰匙打開自己的掛鎖(一個不對外公開的一長列數值)。

然後,當鮑勃決定將這些比特幣傳遞給另一個人(我們暫且稱他為卡洛斯)時,他會做同樣的事情:將卡洛斯的公鎖放置其中,然後用自己的私鑰簽署交易。

在這種情況下,掛鎖到底意味著什麽?廣義地講,即是公鑰。但是比特幣協定在公鑰加密的基礎上進行變體,代替了鮑勃公鑰本身,愛麗絲可以將鮑勃的比特幣地址包含在內。比特幣地址是由公鑰延伸而來,因此就如同愛麗絲把鮑勃的掛鎖放在盒子裡一樣。實際上,單個公鑰可以生成無限多個地址。因此,如果鮑勃希望每次都使用不同的地址,他也可以這麽做。

讓我們回到我要轉給你5美元這件事情上。我把它發送到你的比特幣地址上,你的比特幣地址以數字化的方式與你的私鑰相連,那麽你將在這個地址中獲取比特幣。

為了花掉這5美元,你需要進行一個新的交易,包括一個屬於收件人的地址,然後用你的私鑰簽署。這相當於把收件人的掛鎖掛在公文包上,然後打開你的掛鎖。

使用地址的一個有趣的副作用,比特幣幾乎是匿名的。

因為你的地址上使用的是假名,所以它使用的筆名。比特幣與你的名字無關,其所需要的是你的私鑰。

所以,只要你擁有私鑰,你就能得到比特幣。你能用它做什麽呢?

(在我的下篇文章中,我們將了解比特幣和區塊鏈是如何被用來賺錢的,以及這些技術是如何支持起新的金融工具的。)

編譯組出品。編輯:郝鵬程

獲得更多的PTT最新消息
按讚加入粉絲團