好書試閱

第2講 你聽說過價值1億美元的披薩嗎?
上一講裡,我們比較了比特幣和Q幣的相同與不同之處,可能有一點讓你留下了深刻印象——一枚比特幣的價格達到了人民幣5萬元。但是,如果我們把時間軸拉長,在10年前,比特幣剛剛誕生時面臨的卻是一個無人問津的場面。
下面跟大家分享一個真實的故事:用1萬枚比特幣購買披薩的來龍去脈。
2010年5月18日中午12點35分,一位網名為拉斯洛(Laszlo)的程式設計師在比特幣論壇(Bitcoin Forum)發了一個求助貼文,大致內容是:「我喜歡吃披薩,希望能使用1萬枚比特幣來換取披薩,披薩可以是商店購買的,也可以是你自製的,但是我需要你將披薩送到我的家門口。」
當天下午,在拉斯洛發出請求的6小時後,他才收到一位網友關於詢問郵寄披薩地址的回覆。然而,在拉斯洛回信後,這個網友卻再也沒有了回音。
雖然用1萬枚比特幣換披薩的這個文章在論壇上陸陸續續的得到了很多網友的圍觀,但文章發出去3天了,並沒有什麼具體的進展,有的只是一些人對於拉斯洛行為的嘲諷。拉斯洛為此回文:「是沒有人想幫我買披薩嗎?我提供的比特幣金額是不是太低了?」
在拉斯洛發出這個回文後不久,一位使用者留言稱:「在美國,使用信用卡進行線上預訂是一件十分便捷的事情,如果你餓了,應該考慮用其他方式來購買披薩。」面對「為何使用1萬枚比特幣來購買披薩」的疑問,拉斯洛回答:「我只是覺得,如果我可以用比特幣支付披薩,那是一件很有意思的事情。」
在經歷4天的等待後,5月22日下午7點17分,拉斯洛發出了一個交易成功的貼文:「我只想報告,我成功的用1萬枚比特幣購買了披薩!」
至此,這項以1萬枚比特幣來換取披薩的壯舉,也最終在經歷4天零6小時42分後畫上了完滿的句號。
按照比特幣約10,000美元的單價來計算,當年拉斯洛相當於花費了1億美元,約合人民幣7億元來購買披薩,而這披薩也因此被稱為史上最貴的披薩。
可能你會問,為什麼當時沒有人願意接受比特幣作為支付方式?我們現在能熟練使用銀行轉帳、微信轉帳或支付寶轉帳等,如果用比特幣支付,應該也很方便吧?這個問題其實就要討論到比特幣的轉帳和交易環節,它可能比你想像的要複雜一些。
在日常生活中,我們都有自己的銀行帳戶,轉帳是在銀行帳戶之間進行的。同樣的道理,比特幣轉帳就是把比特幣從一個比特幣位址轉移到另一個比特幣位址上的過程。
比特幣位址是一串由字母和數字組成的26~34位的字符串,第一次看到它,很多人會以為是亂碼。其實,比特幣位址就是個人比特幣帳戶,相當於個人的銀行提款卡卡號。在下載支援比特幣的數位錢包,或者在數位資產的交易平臺註冊帳號後,都可以獲得個人比特幣位址。
但是,比特幣轉帳是沒有固定第三方進行確認的。比特幣是一種點對點的電子現金系統,更直接的說,是一個節點對另一個節點交易。每筆交易由發起方向周圍的網路節點進行廣播,節點收到之後,再廣播給自己周圍的節點,最終擴散至全網。如果想要轉帳比特幣給別人,你需要在比特幣錢包或交易平臺中輸入你的比特幣位址、接收方位址、轉帳金額和手續費金額,確定支付後,交易資訊會在比特幣網路進行全網廣播。比特幣礦工每隔10分鐘,會將比特幣網路中沒有被記帳的交易打包進一個區塊,這就完成了一次交易確認,此時,比特幣才會轉到對方帳戶。
需要說明的是,比特幣轉帳也是需要手續費的,但這筆手續費是交易者付給礦工的費用,目的是激勵礦工競爭記帳,為比特幣網路正常運轉提供足夠的算力,從而確保比特幣網路的安全。
不過,比特幣轉帳的手續費並不高。以銀行間轉帳手續費為例,它一般是按照轉帳金額的一定比例收取,如跨行轉帳手續費約為5‰;異地轉帳的手續費為1‰到1%不等;跨國轉帳除了支付以上手續費外,每筆還須支付人民幣50~200元的電匯費。
而區塊鏈本身是全球化的,沒有跨國的概念,且區塊鏈資產之間的轉帳手續費與轉帳金額無關,它是按照字節進行收費。以比特幣轉帳為例,一筆普通交易約占250字節,手續費約為0.001~0.0015個比特幣(幾十元人民幣)。
講過比特幣轉帳和交易的原理後,相信你可能仍會嘀咕:「哎,還需要下載錢包,還需要註冊帳戶,帳戶居然還是一堆數字和字母組成的字符串,這也難怪比特幣剛誕生時,說服一個人接收比特幣換取兩份披薩有那麼多困難。」但俗話說,萬事開頭難,一個新生事物從興起到逐漸被接受,的確需要一個漫長的過程。如今,很多人在開發技術和工具,提高比特幣支付和使用的便捷性,相信過不了多久,大家用比特幣支付時,會像微信、支付寶一樣方便。
回過頭來,再說說當時用比特幣交易天價披薩的兩位仁兄,他們現在過得還好嗎?
買到「天價披薩」的程式設計師拉斯洛,如今37歲了,依然在佛羅里達州一家線上零售公司做程式設計師,這和他8年前花費1萬比特幣購買披薩時的職業完全一致。他在2018年5月接受採訪時曾說:「在今天看來,也許人們覺得我很愚蠢,但當時的情況非常好。我認為沒有人能夠知道它會像現在這樣起飛,所以我並不後悔交換1萬枚比特幣來換取披薩。」而接收了1萬枚比特幣的那位熱心網友傑瑞米(Jeremy),他並沒有把1萬枚比特幣這筆天價的財富一直留在手中,他後來回憶說:「我當時把這筆25美元的投資變成了一場價值幾百美元的旅行,並在最多時曾擁有4萬枚比特幣。」但經歷過此番事件後,傑瑞米從一個其他行業的普通人,變成了一名加密數位貨幣的愛好者,並且樂在其中。
不管怎麼說,披薩事件成了很多人眼中比特幣第一次擁有價值的起點,拉斯洛和傑瑞米因為參與了1萬枚比特幣換取披薩,而被永遠寫入了比特幣發展的歷史。後來,每年的5月22日被很多人稱為「比特幣披薩日」。
透過本節課程,你一定對比特幣的交易和轉帳機制有了一些新的認識,如果感興趣,可以試著創建一個比特幣錢包。也許,若干年後回憶起來,這會是你開啟加密數位世界的一個新的起點,值得永久紀念。
第12講 從《九陰真經》到區塊鏈的加密算法
和許多新事物一樣,區塊鏈技術是經過了長久的技術累積,才首先透過比特幣來到了世人面前。構成區塊鏈技術最為核心、也是歷史最悠久的學科,可能就是密碼學了。
現如今,收快遞成為一件稀鬆平常的事情,很多人每年要收幾十甚至上百個包裹。中國的雙十一銷售額每年都刷新紀錄,2019年超過了人民幣4,000億元,更不用說這幾年外送的興起,為人們提供了用餐的方便。這些包裹和外送單都是透過物流公司和快遞員,最終到達收貨地址。
對於地址,不知道大家有沒有思考過其中的學問。所有的收件地址,都是按照一定規則來填寫的,一般是市、區縣、街道、門牌號碼,再加上收件人的名字和聯絡電話,這一連串資訊就能保證快遞員將範圍逐級縮小,然後將貨物準確送到我們手中。而英國的每個郵編都能準確定位到每棟建築,它的規則是城市的字母縮寫、區號,最後加上街道的編號,有點像是替汽車發牌照。
無論是填寫收貨地址的規則,還是郵編的規則,最終生成的都是一個具有唯一指向的地址。在比特幣網路中,每個帳戶也有一個唯一位址,因此也需要一套對應的規則,這個規則在電腦領域被稱為哈希算法,同時也被稱為散列算法。哈希算法的目的就是透過一套規則,生成一個具有固定長度的結果。這個結果被稱為哈希值。
就像從公司去機場可以開車、坐計程車、坐地鐵,對於一個生成哈希值的任務,也存在多種可行的哈希算法。那麼應該選擇哪種哈希算法呢?好的哈希算法要具備如下三個特點:
(1)必須能快速計算出結果,但是倒推困難。
(2)只要原始內容發生一點變化,哈希值的變化就很大。
(3)不同的原始內容很難得到相同的哈希值。
要滿足這三點要求,可用的哈希算法其實就不多了。尤其是第一條,隨著計算能力的不斷提高,破解哈希算法變得相對容易了,破解時間也縮短了。
比特幣在生成帳戶位址時,使用的哈希算法是SHA-256,SHA是安全哈希算法的英文字母縮寫,是由美國國家安全局研發的(沒錯,就是在「稜鏡計畫」事件中史諾登〔Edward Snowden〕工作的部門),256是其在該系列算法中的代號。
具備了這三個特點的哈希算法,算出來的哈希值在一定程度上具備了原始內容的特徵,因此也可以被稱為「指紋」。就像人的指紋可以用來解鎖手機一樣,哈希值也可以用來對原始內容進行識別。
但是,這僅僅是針對一塊資料的哈希計算,對於比特幣這種超級區塊鏈,它的區塊總數馬上就要超過60萬了。對於如此大量的資料,如果直接對原始資料做哈希運算,再進行比較,會耗費很長時間。
在《紅樓夢》中,曹雪芹透過賈、史、王、薛四大家族的故事,展現了人生百態。《紅樓夢》中出場人物近千,讀者很容易就被錯綜複雜的人物關係搞糊塗了,但是卻不難記住這四大家族的姓氏是賈、史、王、薛。因為在大家庭中長大,除了有父母,還有許多親戚,賈寶玉和賈璉是堂兄弟,賈寶玉和薛蟠是表兄弟,所有的親人關係構成了一個大族譜。假如在一個家族中,每一對夫妻只生一個孩子,再將這張族譜倒過來,也就是將子女放在上邊,父母放在下邊,所得到的「金字塔」就具有了雜湊樹的形狀。
就像在族譜中的距離可以表示血緣關係的遠近,雜湊樹最大的優點是可以大大減少資料的傳輸量以及計算的複雜程度:只要有一個區塊的內容發生了變化,最頂部的哈希值就會發生變化,就可以判斷兩棵雜湊樹是相同還是不同,從而判斷這兩棵樹所對應的資料相同或不同。使用雜湊樹,可以快速對資料做完整性驗證。比特幣在支付過程中就使用了雜湊樹的原理。
區塊鏈作為一種複雜技術,為了防止從帳戶位址倒推原始內容,除了要使用哈希算法,還要使用加密手法。
在小說《射鵰英雄傳》中,九陰真經就是被加密過的,加密的方法是先將梵語翻譯成漢語,再用漢語將讀音標注出來。因此只有懂得這兩種語言的人才能破解經文。雖然經過華山論劍一番爭鬥,全真派得到了九陰真經,但是沒人能破解。最後是郭靖將古怪繞口的經文強行背了下來,機緣巧合之下,透過一燈大師將它破解的。
替九陰真經加密的方法,在密碼學中被稱為加密算法。僅僅有加密算法,對原文的保護力度還不夠。如果使用特定的工具才能操作加密算法,就像必須用鑰匙才能打開鎖一樣,加密的等級又可以得到提高。類似的,密碼學中使用的「工具」就是密鑰。在鑰匙和鎖的例子中,上鎖和開鎖使用的鑰匙相同,這就是典型的對稱加密。除此之外,旅行箱上使用的一種鎖叫海關鎖,我們可以使用自己的鑰匙鎖上箱子,海關人員卻可以利用海關鑰匙打開和鎖上所有人的旅行箱。自己的鑰匙在密碼學中稱為私鑰,海關人員的鑰匙被稱為公鑰,開箱和鎖箱的過程稱為非對稱加密。比特幣密碼學中的私鑰和公鑰要遠比這個例子複雜,最重要的區別是,公鑰是透過私鑰生成的。
正如海關鎖的例子,私鑰和公鑰都可以對資訊進行加密,也可以彼此解密。也就是說,一對私鑰和公鑰,用私鑰加密之後可以用公鑰解密,用公鑰加密之後也可以用私鑰解密。
按照字面意思也很好理解,私鑰肯定就是只能讓自己一個人知道,而公鑰是可以告訴別人的。
此時,假如我們想要對一段訊息加密,如果是用私鑰加密的,那麼理論上所有拿到和私鑰對應的公鑰的人,都可以將訊息解密。所以,用私鑰進行加密是沒有實際意義的。要對訊息進行加密,就一定要使用公鑰進行加密,當加密內容傳到了正確的人手中,自然就可以用私鑰解密了。
那麼,私鑰加密的意義是什麼呢?因為私鑰是只有真正的主人才知道,假如我用自己的私鑰對一個文件進行了加密,只要有人能用公鑰將這個文件解密成功,他就能判斷對文件加密的人一定是我。這種情況下,用來加密的私鑰就可以作為簽名來使用,可以用來判斷某個使用者的身分。就像家裡的大門鑰匙,家庭成員每人都有一把,只要能用鑰匙將門打開(當然不包括特務使用的特殊鑰匙),肯定就是一家人。
講到現在,我們已經知道了區塊是什麼,區塊鏈是什麼,也知道了區塊鏈是如何透過加密手法去提高安全性的。那麼,究竟是什麼將它們串聯起來,並保持正常運轉的呢?下一講將詳細講解。
金石堂門市 全家便利商店 ok便利商店 萊爾富便利商店 7-11便利商店
World wide
活動ing