
快速了解區(qū)塊鏈背后的三項基本技術(shù)
如果問十個人"什么是區(qū)塊鏈技術(shù)?",你可能會得到十種不同的答案。理解區(qū)塊鏈的最佳方法是逐步了解當(dāng)中的基本技術(shù)。
因此在本文中,我將介紹區(qū)塊鏈技術(shù)的三個主要部分:區(qū)塊鏈本身、點(diǎn)對點(diǎn)網(wǎng)絡(luò)和共識機(jī)制。一旦缺少任何一個部分,比特幣將無法存在。首先讓我們看到區(qū)塊鏈。
區(qū)塊鏈 (blockchain)
簡而言之,區(qū)塊鏈只是數(shù)據(jù)結(jié)構(gòu)化的一種方式。區(qū)塊鏈?zhǔn)欠诸愘~:記錄賬務(wù)記錄的文件。
可以把這個文件理解為一本永不會完的書。
書上的每一頁都記錄著信息,同時在底部標(biāo)有頁碼。通過頁碼,你馬上可以知道該頁面所屬的位置,比如49頁顯然位于48頁與50頁之間。
就像頁面一樣,區(qū)塊也都充滿了信息。盡管區(qū)塊沒有確切的編號,但它們附有時間戳,具有與編號相同的功能。新的區(qū)塊總是加在具有最新時間戳的區(qū)塊之后,因此形成了鏈。
區(qū)塊鏈很棒的一點(diǎn)是當(dāng)中使用了加密技術(shù),因此當(dāng)書中某一頁的信息發(fā)生改變時,我們都會注意到。該屬性使區(qū)塊鏈成為很好的數(shù)據(jù)結(jié)構(gòu),用來跟蹤記錄任何有價值的事物。
區(qū)塊鏈的用例
在比特幣的區(qū)塊鏈中,區(qū)塊包含比特幣的交易信息。區(qū)塊中記錄了誰發(fā)送給誰多少比特幣。
由于區(qū)塊鏈從一開始就被用于跟蹤所有比特幣的流向,因此通過檢查分類賬可以明確誰在某個時間擁有哪些比特幣。在任何時間內(nèi)"誰擁有多少"就是所謂區(qū)塊鏈的當(dāng)前"狀態(tài)"。
交易只有在包含到區(qū)塊中,并被添加到區(qū)塊鏈中才會發(fā)生,因此,當(dāng)一個區(qū)塊被添加到區(qū)塊鏈中時,區(qū)塊鏈的狀態(tài)就被更新。畢竟,比特幣發(fā)送了移動。
這意味著如果我想驗證某人是否真的對我做了交易,我必須能夠檢查區(qū)塊鏈的狀態(tài)。為了做到這一點(diǎn),分類帳必須是公開的。這里就需要用到點(diǎn)對點(diǎn)網(wǎng)絡(luò)。
點(diǎn)對點(diǎn)網(wǎng)絡(luò)
(peer-to-peer networks)
為了將區(qū)塊鏈作為交易數(shù)據(jù)的分類帳,我必須要檢查區(qū)塊鏈,查看是否有人對我的賬號或錢包進(jìn)行了交易。
如果區(qū)塊鏈僅存儲在一臺計算機(jī)上,并且恰好被關(guān)閉了,那么這是很煩人的。因此,區(qū)塊鏈的當(dāng)前狀態(tài)需要能夠下載、同步并能被全球的計算機(jī)所提供。
這些計算機(jī)被稱為"節(jié)點(diǎn)",它們在點(diǎn)對點(diǎn)網(wǎng)絡(luò)中運(yùn)行,用來確保區(qū)塊鏈的安全性和最新性。每個節(jié)點(diǎn)都存儲著區(qū)塊鏈完整的最新版本。每當(dāng)添加新的區(qū)塊時,所有節(jié)點(diǎn)都會更新其區(qū)塊鏈。
使用點(diǎn)對點(diǎn)網(wǎng)絡(luò)具有以下優(yōu)點(diǎn):
·可以隨時查看自己區(qū)塊鏈的狀態(tài);
·無需通過某一方查看區(qū)塊鏈的真實狀態(tài);
·無需依靠一臺服務(wù)器的安全性去確保區(qū)塊鏈?zhǔn)欠癜踩?
·不法分子必須同時攻擊數(shù)千臺計算機(jī),而不是一臺服務(wù)器;
·區(qū)塊鏈不會被刪除,因為它必須被所有節(jié)點(diǎn)刪除。
基于服務(wù)器的模型 vs 點(diǎn)對點(diǎn)網(wǎng)絡(luò)
這很重要,但以上并不意味著區(qū)塊鏈就足夠安全,能夠用于存儲或交易任何有價值的事物。
例如,如何確認(rèn)區(qū)塊鏈中的(交易)數(shù)據(jù)是正確的?如何確認(rèn)區(qū)塊中沒有無效的交易?如果存在不同版本的區(qū)塊鏈,如何確認(rèn)哪個顯示了區(qū)塊鏈的真實狀態(tài)?
這些問題能夠通過共識機(jī)制解決,這種機(jī)制是通過點(diǎn)對點(diǎn)網(wǎng)絡(luò)實現(xiàn)的。
共識機(jī)制 (consensus mechanism)
Napster公司早在1999年就使用了點(diǎn)對點(diǎn)機(jī)制。
區(qū)塊鏈在比特幣出現(xiàn)之前就已經(jīng)存在。
比特幣神秘的匿名創(chuàng)始人——中本聰,在白皮書中通過基于密碼學(xué)的共識機(jī)制,他巧妙地將兩者結(jié)合起來。共識機(jī)制允許點(diǎn)對點(diǎn)網(wǎng)絡(luò)中的節(jié)點(diǎn)一起合作,而不必相互了解或信任。
"共識算法的目的是根據(jù)特定的狀態(tài)轉(zhuǎn)換規(guī)則,考慮到安全的更新狀態(tài),其中執(zhí)行狀態(tài)轉(zhuǎn)換的權(quán)利分布在用戶中,這些用戶能夠通過算法共同進(jìn)行交易。"
——以太坊創(chuàng)始人 Vitalik Buterin
如果你還是不太懂,那么這樣理解,其實共識機(jī)制就是一系列規(guī)則,網(wǎng)絡(luò)中的節(jié)點(diǎn)通過運(yùn)行網(wǎng)絡(luò)軟件來達(dá)成一致。這些規(guī)則確保網(wǎng)絡(luò)正常工作并保持同步。
共識協(xié)議規(guī)定:
· 如何將區(qū)塊添加到區(qū)塊鏈中;
· 區(qū)塊何時被認(rèn)為是有效的;
· 如何解決沖突。
添加區(qū)塊
不同的區(qū)塊鏈添加區(qū)塊的方式各不相同。其中最廣為人知的共識機(jī)制是比特幣的工作量證明(Proof of Work )。
工作量證明的第一條規(guī)則是,平均每10分鐘會在區(qū)塊鏈中添加一個區(qū)塊。
促進(jìn)這一過程是所謂的"挖礦"。試圖在區(qū)塊鏈中鏈添加區(qū)塊的節(jié)點(diǎn)(稱為"礦工")使用計算機(jī)的計算能力嘗試解決密碼"難題"。規(guī)則規(guī)定,只有這個難題被解決時,區(qū)塊才能被添加到區(qū)塊鏈中。
解決這一難題的礦工"挖"新的區(qū)塊,并增加到區(qū)塊鏈中,同時礦工會得到網(wǎng)絡(luò)的獎勵。預(yù)定數(shù)量的新幣將被創(chuàng)建,并獎勵給礦工,以及該區(qū)塊中包含的所有交易的成本。
隨后,所有礦工將開始挖下一個區(qū)塊。
比特幣挖礦設(shè)備。為了獲得足夠的挖掘處理能力,你需要大量的GPU。
比特幣的工作量證明不是唯一的共識機(jī)制。分布式賬本中也常使用權(quán)益證明(Proof of Stake)。在基于權(quán)益證明的機(jī)制中,某人可以對他的幣進(jìn)行"下注",以便被選中從而添加下一個區(qū)塊。從某種意義上相當(dāng)于,一位賭徒說:"我用幣打賭我正確添加了這個區(qū)塊。" 如果他說謊就失去幣。
關(guān)于哪種共識機(jī)制是最好的仍存在很大的爭論。盡管如此,無論區(qū)塊是如何創(chuàng)建的,網(wǎng)絡(luò)中的其他節(jié)點(diǎn)仍需要決定該區(qū)塊是否有效。
區(qū)塊的有效性
當(dāng)?shù)V工解決這個難題并挖到區(qū)塊時,網(wǎng)絡(luò)中的所有節(jié)點(diǎn)將檢查該區(qū)塊是否有效,并將其添加到區(qū)塊鏈的副本中。節(jié)點(diǎn)首先要對有效性達(dá)成一致。只有這樣,網(wǎng)絡(luò)才會同步并更新區(qū)塊鏈的狀態(tài)。
只有當(dāng)遵循共識機(jī)制的規(guī)則時,節(jié)點(diǎn)才會將新的區(qū)塊添加到區(qū)塊鏈中。他們運(yùn)行的軟件將檢查區(qū)塊是否有效。無效的區(qū)塊將被拒絕。
當(dāng)然,區(qū)塊與其中包含的交易有效性一致。以比特幣為例,協(xié)議規(guī)定,如果首先沒從他人那兒收到比特幣,或者挖到比特幣,那么你將無法發(fā)送比特幣。
換句話說,如果發(fā)送者收到足夠的比特幣進(jìn)行交易,節(jié)點(diǎn)將檢查區(qū)塊中的所有交易。為此,需要檢查網(wǎng)絡(luò)的狀態(tài)。
假設(shè)我已收到1比特幣,我之后將其發(fā)送給Alice。接著我試圖將相同的比特幣發(fā)送給Bob。只要我的第一筆交易被添加到鏈中,所有節(jié)點(diǎn)都會更新區(qū)塊鏈,從而得出我已經(jīng)沒有那個比特幣了。那么我給Bob的交易將會被節(jié)點(diǎn)拒絕。節(jié)點(diǎn)發(fā)現(xiàn)該區(qū)塊不遵循規(guī)則時,則不會將該區(qū)塊更新到區(qū)塊鏈中。
規(guī)則還規(guī)定,交易只有在比特幣所有者的進(jìn)行數(shù)字簽名時才有效。只有錢幣的所有者才能對交易簽字。因此,只有你可以花費(fèi)你的比特幣。
如何解決沖突
在偶然的情況下,兩名礦工可能同時向區(qū)塊鏈中添加有效區(qū)塊。想象一下,一部分節(jié)點(diǎn)接受了一個有效的區(qū)塊,其他節(jié)點(diǎn)接受了另一個區(qū)塊。前者包括我與Alice的交易,后者包括我與Bob的交易?,F(xiàn)在同時存在兩種不同的區(qū)塊鏈狀態(tài)!
我們將其稱為(無意)的"分叉(fork)":區(qū)塊鏈分成兩個不同的鏈。Alice和Bob誰才收到了我的比特幣?兩條鏈中的哪一條是'真正的'區(qū)塊鏈?
通常會通過一條簡單的規(guī)則解決這個問題:最長的區(qū)塊鏈獲勝。
區(qū)塊鏈分叉的可視化
當(dāng)出現(xiàn)分叉時,一些礦工將開始在其中一條上進(jìn)行挖礦,而另一些開始在另一條上進(jìn)行挖礦。不可避免的是,一條區(qū)塊鏈將比另一條擁有更多的礦工,因此添加區(qū)塊的速度會更快。其他的礦工將換到較長的區(qū)塊鏈上,那么分叉的區(qū)塊鏈將會消亡。這對主區(qū)塊鏈沒有任何損失。
為什么會這樣?
因為礦工是以自我利益行事的經(jīng)濟(jì)行為者。礦工沒有興趣對會消亡的分叉區(qū)塊鏈進(jìn)行挖礦。分叉區(qū)塊鏈上的所有交易從未在主區(qū)塊鏈上發(fā)生,這意味著在分叉鏈上挖礦的礦工不會因為其工作而獲得獎勵。
在極少數(shù)情況下,分叉鏈上可能產(chǎn)生大量的挖礦能力。這時則需要一段時間才能確定哪條是主區(qū)塊鏈。一般認(rèn)為,在6個區(qū)塊后確認(rèn)交易是明智之舉。
區(qū)塊鏈分叉的可視化。一般不會超過5個區(qū)塊。
在區(qū)塊鏈中添加區(qū)塊需要巨大的處理能力,以及最長的區(qū)塊鏈取勝的規(guī)則,這保證了區(qū)塊鏈的安全性。攻擊網(wǎng)絡(luò)的唯一方法就是回到區(qū)塊鏈中的某個區(qū)塊,進(jìn)行分叉并從那里挖新區(qū)塊。然而要做到這一點(diǎn),攻擊者必須重新完成礦工的所有工作,并趕上主區(qū)塊鏈。如果沒有比整個礦工網(wǎng)絡(luò)更多的計算能力,這幾乎是不可能實現(xiàn)的。簡單地說,這種操作所需的電力和GPU成本非常昂貴。
原文鏈接:
https://hackernoon.com/3-steps-to-understanding-blockchain-8a285572daa3
如何掌握區(qū)塊鏈技術(shù)
區(qū)塊鏈創(chuàng)新的推動以及數(shù)字經(jīng)濟(jì)的蓬勃發(fā)展離不開人才的培育,而CDA數(shù)據(jù)分析師作為行業(yè)的領(lǐng)頭羊,緊密結(jié)合當(dāng)前區(qū)塊鏈發(fā)展實際與人才需求結(jié)構(gòu),重磅推出CDA區(qū)塊鏈學(xué)院。
掃描二維碼,進(jìn)入 CDA 區(qū)塊鏈學(xué)院,學(xué)習(xí)區(qū)塊鏈知識,選擇很多,站對未來。
掃描二維碼 加入CDA區(qū)塊鏈學(xué)院
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認(rèn)知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動態(tài)隨機(jī)一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時,“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗與 t 檢驗:差異、適用場景與實踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計學(xué)領(lǐng)域,假設(shè)檢驗是驗證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對象的 text 與 content:區(qū)別、場景與實踐指南 在 Python 進(jìn)行 HTTP 網(wǎng)絡(luò)請求開發(fā)時(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請求工具對比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點(diǎn)數(shù)據(jù)的科學(xué)計數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點(diǎn)數(shù)據(jù)時的科學(xué)計數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運(yùn)營問題、提升執(zhí)行效率的核心手段,其價值 ...
2025-09-12用 SQL 驗證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計” 與 “用戶體驗 ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅(qū)動下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當(dāng)下,精準(zhǔn)營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價值 在數(shù)據(jù)驅(qū)動決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實踐到業(yè)務(wù)價值挖掘 在數(shù)據(jù)分析場景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價值導(dǎo)向 統(tǒng)計模型作為數(shù)據(jù)分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10