區塊鏈入門——關於比特幣的疑問

    說起比特幣相信大家都不陌生,畢竟在此之前從未有哪種電子貨幣像今天的比特幣那爲人熟知,以至於成爲像黃金股票等可以用來“炒”的金融產品。比特幣就像是互聯網上的一個傳奇,我們可能聽說過它有許多許多神奇的特性,而作爲像我之前對這些一竅不通的小問號,每每想起比特幣都會有許多朋友。

小問號,你是否有很多朋友?
本文旨在嘗試從各種技術的效果(功能)層面串聯,即不討論比特幣所依賴的技術的具體實現,只是說明這種技術可以起到一種什麼樣的效果(功能),以澄清一些比特幣中的概念,而不是現在的區塊鏈。

預備知識

這裏舉的例子只是爲了說明功能,與比特幣的具體實現無關

hash函數

    大家最熟悉的hash函數應該非MD5莫屬,它實在太常用了,我們知道網站數據庫中的各種賬戶密碼經常是用MD5加密的,因而我們選用MD5來說明hash函數的功能。簡單地講,hash函數就是把任何電子數據不可逆(只能暴力破解)的轉換成一串定長的數字,例如字符串"admin"經過MD5 hash以後得到"21232F297A57A5A743894A0E4A801FC3",它是一個16進制數,你也可以把它當成字符串。此外hash函數還具有一個特點,即即使稍稍改動原數據,輸出的數字將大不相同,例如我把上面的字符串改爲"Admin",生成的數字變成了"E3AFED0047B08059D0FADA10F400C1E5",注意這一特性並不會因爲輸入數據的長度而改變。因而hash函數常常被用於檢驗文件或數據在經傳輸後的完整性。

非對稱加密

    非對稱加密算法有很多,最經典的就是RSA,其典型的功能就是用來克服傳統對稱加密因爲加解密都通過同一密鑰而在通信環境中無法保證密鑰(這玩意拿啥加密?)安全傳輸的弊端。在非對稱加密體系中,公鑰是可以隨便發的,誰都可以用公鑰來加密,但只有私鑰可以解密公鑰加密的信息。與之對等的是隻有私鑰加密的信息才能被公鑰解密,這便是非對稱加密的另一種應用,即數字簽名,在私鑰不泄漏的情況下,用其加密信息就像是給信息簽名了一樣,可以證明該信息一定來自私鑰的持有者(公鑰大家都有,掏出來解密一下,成功了就說明有效)。

比特幣和區塊鏈的關係

    比特幣是中本聰爲了能實現一種像現金或者是黃金那樣可以隨時直接交易(P2P),而又可以避免因數字信息可以完美複製而導致一筆錢花n次(雙花)的問題所提出的一種數字貨幣。而爲了實現比特幣,中本聰創造了一種具體機制,而這種具體機制被人們(中本聰並沒有明確提出這個名詞)抽象成了一種框架(因爲現在的區塊鏈和比特幣所用到的還是有具體實現的區別的),稱爲區塊鏈技術,顯然這種技術不僅僅可以用來實現比特幣,還有許多其他的應用,所以纔會如此火爆。總之比特幣是區塊鏈的應用,而區塊鏈則是在比特幣誕生後被提出的。

區塊鏈爲什麼要叫區塊鏈?

    我們還僅僅是以比特幣中的區塊鏈爲例子,爲了避免雙花問題,那麼必須要把所有的交易都記錄下來,而且這筆賬必須真實可靠。而在實現這個記賬機制時,比特幣每10分鐘左右把這段時間內發生的交易信息打包成一個“區塊”(與這期間發生的交易數目沒有關係),而爲了保證真實性,這個區塊的頭部又被附上了上一個區塊的hash值和一個工作量證明的數據(也即下圖中的nonce,什麼是工作量證明下面會講),如此連續,每兩個區塊之間都通過hash值被串連起來形成了一個鏈,因而叫做區塊鏈。如果想要修改鏈中的某一筆交易(做假賬)就必須重做之後的區塊的所有工作量證明才能讓假賬得到整個網絡的信任。

區塊鏈

比特幣是怎樣一種存在形式?(比特幣是一個文件麼?)

    不記得多久以前看見一個新聞說某宅男在自己的舊電腦裏無意間發現了幾個比特幣,於是一夜暴富,從此走上人生巔峯。。。這新聞讓我當時以爲比特幣是某種文件一樣的東西。那不就可以通過複製粘貼來得到一堆麼?事實上並不是這樣,那宅男翻出來的並不是比特幣本身,而是比特幣錢包,錢包可以用一個文件保存。所謂比特幣錢包本質上是一對非對稱密鑰,用戶通過私鑰來給每一筆交易簽名,而比特幣網絡則通過公鑰來驗證交易的真實性。所以他找到了私鑰實際上就是獲得了繼續用這幾個比特幣交易的權利,也就是翻出了幾個比特幣。比特幣實際上是通過賬本體現的,錢包的餘額是通過查詢賬本而計算出的。

所謂挖礦實際上是在幹什麼?爲什麼會要那麼多顯卡,費那麼多電?

    所謂挖礦實際上就是在記賬以便維護整個比特幣網絡,防止雙花問題。那麼爲什麼挖礦可以得到比特幣呢?比特幣的機制爲了鼓勵大家參與網絡的維護,提出了一種激勵機制,即每成功封裝一個區塊則可以獲得新產生的比特幣作爲對維護者(礦工)的獎勵。那麼自然大家都想當那個可以封裝區塊的人,那麼如何確定由誰來封裝區塊呢?比特幣採用了一種所謂工作量證明的機制(PoW)即提出一個條件,只有率先滿足條件的礦工纔可以封裝區塊,那麼是什麼條件呢?比如說要找到一串數據,這串數據的hash值具有某種特點,比如和上一個區塊的hash前n位相同(只有和上一個區塊的hash有所聯繫才能起到防篡改的作用)。熟悉hash函數的童鞋馬上就會意識到這需要大量的計算,當然也不一定,或許你運氣好,隨便random一個數一hash就滿足條件了呢?(我感覺你在想peach)因而爲了求穩求快,礦工們使用大量的計算設備(顯卡)來尋找滿足條件的數據以求能夠封裝區塊進而獲得獎勵。這也就導致了大量電能的消耗。而隨着越來越多礦工加入到競爭中來,網絡的算力不斷提升,滿足條件變得更容易了,然而爲了保證10分鐘左右才封一次塊,比特幣網絡會提升滿足條件的難度(獲得新幣越來越難,做假賬也越來越難)。

只要我挖礦一定能獲得比特幣嘛?

    看了上面的介紹,答案很明顯是不一定。如果你只是隨便找了個單片機來挖礦,率先找到符合條件的工作量證明數據的可能性太小了,完全無法與礦場競爭,因而很難獲得封塊的獎勵。

爲什麼說比特幣不會通貨膨脹?

    中本聰在創立比特幣的第一個區塊時得到了50個比特幣作爲獎勵,比特幣機制規定,每滿21萬個區塊,創立新區塊的獎勵將減少一半,而且中本聰還限制了比特幣的總數爲2100萬個,因而便可以算出所有比特幣預計在2140年頒發完畢。比特幣越發越少的機制使得它不同於發幣,一般不會通貨膨脹。

爲什麼勒索病毒要使用比特幣作爲交易手段?

在這裏插入圖片描述

    我們都聽說無法通過比特幣的收款地址追查到收款人,但是還聽說過比特幣賬戶的流水信息都是公開透明的,這聽起來有點點矛盾。那麼究竟黑客是如何理由比特幣實現匿名的呢?這涉及到兩方面內容。

1.比特幣本身的機制

    比特幣網絡是一個去中心化的網絡,每個節點之間是平等的,他們共同維護整個比特幣賬本。而這些節點分散在全球各地,沒有哪一個單獨的權力機構可以控制全部的節點;其次儘管比特幣流水信息是透明的,但這僅是錢包層面的公開,比特幣賬戶僅僅是一對非對稱密鑰,不包含任何個人信息,而且可由用戶隨時生成新的錢包,錢包可以離線創建,只要有公鑰便可以向其中轉賬。在比特幣創世論文中,中本聰就建議每次交易使用一個新的錢包來避免特定錢包關聯到個人;並且正常的比特幣節點也不會儲存某次交易究竟是先有哪個ip發起的。


    但是比特幣的交易流量是不加密的,也即是說當黑客要從掛在勒索病毒上的賬戶裏把錢轉走時,這個轉賬的流量還是有可能被他所在的網絡的防火牆截獲的;並且如果有權力機構向網絡廣泛的中安插非正常的節點,該節點會記錄交易與發起者ip的對應關係以尋找大概是哪些節點總是先收到交易請求,這時匿名性也會被衰弱。因而黑客還需要採用其他的輔助匿名手段。

2.黑客採用的其他匿名手段

    從上面的介紹我們看到黑客還是需要其他手段的輔助來隱藏ip,而這時就該Tor網絡出場了,至於Tor爲什麼可以隱藏ip,這不在本文的討論範圍之內。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章