區(qū)塊鏈常用名詞解釋|區(qū)塊鏈知識普及
【51CTO.com原創(chuàng)稿件】
區(qū)塊鏈從小圈子走向大眾視野,雖早已人人皆知,但其實相當(dāng)一部分人對涉及到區(qū)塊鏈的一些名詞是不了解的;下面帶大家認(rèn)識一些常見的名字,比如錢包,哈希等等。
區(qū)塊鏈相關(guān)(About BlockChain):
區(qū)塊鏈其實就是一種鏈表結(jié)構(gòu),鏈表中的元素就是一個區(qū)塊,每一個區(qū)塊結(jié)構(gòu)如下:
· timestamp: 每個區(qū)塊產(chǎn)的生時間戳
· nonce: 與區(qū)塊頭的hash值共同證明計算量(工作量)
· data: 區(qū)塊鏈上存儲的數(shù)據(jù)皆
· prevHash: 上一個區(qū)塊的hash
· hash: 該個區(qū)塊鏈的hash,由上述幾個屬性進行哈希計算而得
區(qū)塊鏈本質(zhì)上來說一種分布式的交易賬本,所有用戶都在本地存有完整賬本信息。當(dāng)有用戶想改變某一個區(qū)塊信息,由于區(qū)塊 hash 的計算過程使用了 prevHash 作為參數(shù),那么該區(qū)塊后的所有區(qū)塊,都會變得不合法,需要重新計算 hash ,想讓系統(tǒng)承認(rèn)這個更改,必須同步更改 51% 的用戶的賬本信息,所以篡改區(qū)塊鏈上的賬本信息十分困難,這就保證了它的安全性。
工作量證明(PoW)
上面提到,挖礦的過程中,礦工必須更快的計算出一個 nonce,那這個 nonce 是如何計算呢?nonce 是一個整數(shù)值,一般先把區(qū)塊頭信息后面加上nonce得到的字符串,進行 SHA256 哈希運算,得到的結(jié)果如果開頭0的個數(shù)小于設(shè)定的難度值,則驗證不通過,把 nonce 值加1重復(fù)上述操作,直到計算出來的 nonce 滿足得到的哈希值開頭0的個數(shù)不小于設(shè)定的難度值。而nonce的值,就是挖礦過程中工作量的證明。在工作量證明中,一個成員要想成為領(lǐng)導(dǎo)者并選擇下一個要添加到區(qū)塊鏈的區(qū)塊,他們必須要找到解決一個特定數(shù)學(xué)問題的方法;而能首先解決上述問題的成員是擁有最大計算能力的成員。這些成員也被稱為礦工。每當(dāng)一個數(shù)學(xué)問題被解決的時候,礦工就會獲得一些貨幣獎勵,而整個系統(tǒng)機制為了鼓勵更多礦工參與進來,會給參與挖礦的每個礦工一定代幣的獎勵。回到工作證明中,其他節(jié)點會通過檢查區(qū)塊的散列是否小于預(yù)設(shè)數(shù)字來驗證區(qū)塊的有效性。
股權(quán)證明(PoS)
在繼續(xù)之前,讓我把領(lǐng)導(dǎo)者選舉(選擇下一個區(qū)塊的成員)比喻為抽獎:
在抽獎中,如果Bob比Alice有更多的票,他就更有可能獲勝。
與此類似:在工作量證明中,如果Bob比Alice擁有更多的計算能力和能量,從而可以輸出更多的工作 — — 他就更有可能獲勝(開采下一個區(qū)塊)。
再一次,類似的:在股權(quán)證明中,如果Bob比Alice擁有更多股權(quán),他就更有可能獲勝(“開采”下一個區(qū)塊)。
股權(quán)證明去掉了工作量證明對于能源和計算能力的要求,并用股權(quán)替代。股權(quán)就是在一段時間內(nèi)成員愿意鎖定的貨幣數(shù)量。作為回報,他們有和他們的股權(quán)成比例的機會成為下一個領(lǐng)導(dǎo)者,并選擇下一個區(qū)塊?,F(xiàn)在有一些幣種只用股權(quán)證明如Nxt和Blackcoin。
礦工(minner)與挖礦(mining)
挖礦本質(zhì)上是一組節(jié)點(礦機)使用他們的計算資源去創(chuàng)建一個包含有效交易的區(qū)塊的過程,參與這個過程的節(jié)點(礦機)被稱為礦工。一個礦工想要提交一個區(qū)塊到區(qū)塊鏈上,就必須更快的計算出一個nonce,nonce 和 區(qū)塊頭信息能共同證明,一個區(qū)塊是有效的。
錢包(Wallet)
錢包本質(zhì)是一個包含私鑰的文件。通常會包含一個軟件客戶端,錢包的地址,是由私鑰計算出來的,也就是公鑰。每一次交易,發(fā)送方必須要提供私鑰,才能把該公鑰地址下所擁有的代幣轉(zhuǎn)帳到其他公鑰地址,所以私鑰決定了比特幣的所有權(quán)。這里要注意一點,一個錢包地址擁有多少代幣,不是存儲在私鑰里,而是存在區(qū)塊鏈上,區(qū)塊鏈上有著所有歷史交易賬目,可以根據(jù)賬目計算出每個地址所擁有的代幣。
區(qū)塊鏈目前最火的兩個應(yīng)用就是比特幣系統(tǒng)和以太坊系統(tǒng),這兩個系統(tǒng)都是公共區(qū)塊鏈平臺,都有自己自己的虛擬貨幣(比特幣 和 以太坊)。但是他們是有很多區(qū)別的,
比特幣(Bitcoin)
最原始的加密貨幣,它使用未使用的事務(wù)輸出(UTXO)模型作為分類帳。它使用簡單的 POW 算法猜測隨機字符串,這個字符串與最后一個事務(wù)區(qū)塊組合的 SHA-256 哈希值在數(shù)值上應(yīng)該小于一個小的閾值。
成功猜到答案的參與者等于是“挖到了一個區(qū)塊”,并且該區(qū)塊中包含的交易被添加到分類帳中。這樣可以形成一種非常簡單的確定共識的方法——參與者只需同意最長鏈應(yīng)被視為挖掘下一個交易區(qū)塊的基礎(chǔ)。比特幣不是為了智能合約而設(shè)計的。因此,可用的功能非常有限,由此產(chǎn)生的功能絕對不是圖靈完備的,而是比特幣的大多數(shù)分析都會忽略它。因此,最終的系統(tǒng)純粹是安全加密的分類帳。除了使用加密簽名來驗證交易的來源之外,它沒有身份語義,并且是完全無信任的。
以太坊(Etherum)
以太坊的分類記帳也是參考了一些比特幣的設(shè)計模型,但模擬了單個全局虛擬機的狀態(tài),而不是使用 UTXO 模型。以太坊相比比特幣的關(guān)鍵創(chuàng)新是增加了圖靈完備的智能合約能力。以太坊虛擬機(EVM)——一種專門用于在具有智能合約的分布式賬本環(huán)境中使用的虛擬機。在以太坊中,程序狀態(tài)是私有的,屬于單個合約地址,并且通過一系列 EVM 字節(jié)碼指令進行修改,這些指令就是智能合約的內(nèi)容。然后,通過聚合每個合約地址的程序狀態(tài)來得到整體的全局狀態(tài)。以太坊網(wǎng)絡(luò)中所有完整的節(jié)點都遵循這個模型規(guī)則。它們可以在自己的機器上為任意合約地址狀態(tài)計算系統(tǒng)狀態(tài),只要它們使用了相同的交易(構(gòu)成以太坊模型中的輸入數(shù)據(jù)),就會得到相同的結(jié)果。
但是由于以太坊使用了全局一致性算法,并且具有全局最新區(qū)塊的概念,因此以太坊虛擬機的總體交易處理速率受區(qū)塊生成速率的限制。為以太坊網(wǎng)絡(luò)添加更多硬件和計算能力并不能使其更快或更強大,只是增強了防篡改性。
使用圖靈完備的智能合約可以在網(wǎng)絡(luò)上添加額外的功能,而不需要所有參與者都知道它們。例如,以太坊網(wǎng)絡(luò)因此可以發(fā)布在以太坊虛擬機中作為附加狀態(tài)的軟件代幣。這構(gòu)成了所謂的初始數(shù)字貨幣發(fā)行(Initial Coin Offering,ICO)的基礎(chǔ)。
從表面上看,EVM 類似于 JVM 和其他類似的環(huán)境,但在一些重要方面進行了不同的設(shè)計。特別是 EVM 字節(jié)碼的設(shè)計使得對編譯代碼的靜態(tài)分析變得更加困難。對于需要高度透明性和可驗證性的執(zhí)行環(huán)境而言,這并不是一個賣點。底層 EVM 環(huán)境也不是特別人性化的編程環(huán)境,所以出現(xiàn)了一些可以編譯為 EVM 字節(jié)碼的高級語言。其中,最著名的是 Solidity。受更多主流編程語言(如 JavaScript 和 Java)的啟發(fā),Solidity 語言還融入了可以與以太坊區(qū)塊鏈發(fā)生交互的新特性。
從某種程度上說,以太坊是其自身成功的犧牲品。它作為 ICO 的首選平臺導(dǎo)致了 2018 年初 ETH(以太坊代幣)的價格走高。因為以太坊團隊本身擁有大量的這種加密貨幣,導(dǎo)致了很多主要參與者對既得利益的極大興趣,并希望能夠?qū)⑵渥儸F(xiàn)。
【51CTO原創(chuàng)稿件,合作站點轉(zhuǎn)載請注明原文作者和出處為51CTO.com】






















