以比特幣為例理解區(qū)塊鏈工作過程
以比特幣網(wǎng)絡(luò)為例驻右,可以具體看其中如何使用了區(qū)塊鏈技術(shù)。
首先,比特幣客戶端發(fā)起一項(xiàng)交易摔敛,廣播到比特幣網(wǎng)絡(luò)中并等待確認(rèn)。網(wǎng)絡(luò)中的節(jié)點(diǎn)會(huì)將一些收到的等待確認(rèn)的交易記錄打包在一起(此外還要包括前一個(gè)區(qū)塊頭部的哈希值等信息)全封,組成一個(gè)候選區(qū)塊马昙。然后,試圖找到一個(gè)nonce串(隨機(jī)串)放到區(qū)塊里刹悴,使得候選區(qū)塊的哈希結(jié)果滿足一定條件(比如小于某個(gè)值)行楞。這個(gè)nonce串的查找需要一定的時(shí)間去進(jìn)行計(jì)算嘗試。
一旦節(jié)點(diǎn)算出來滿足條件的nonce串土匀,這個(gè)區(qū)塊在格式上就被認(rèn)為是“合法”了子房,就可以嘗試在網(wǎng)絡(luò)中將它廣播出去。其他節(jié)點(diǎn)收到候選區(qū)塊恒削,進(jìn)行驗(yàn)證池颈,發(fā)現(xiàn)確實(shí)符合約定條件了尾序,就承認(rèn)這個(gè)區(qū)塊是一個(gè)合法的新區(qū)塊,并添加到自己維護(hù)的區(qū)塊鏈上躯砰。當(dāng)大部分節(jié)點(diǎn)都將區(qū)塊添加到自己維護(hù)的區(qū)塊鏈結(jié)構(gòu)上時(shí)每币,該區(qū)塊被網(wǎng)絡(luò)接受,區(qū)塊中所包括的交易也就得到確認(rèn)琢歇。
當(dāng)然兰怠,在實(shí)現(xiàn)上還會(huì)有很多額外的細(xì)節(jié)。這里面比較關(guān)鍵的步驟有兩個(gè):一個(gè)是完成對(duì)一批交易的共識(shí)(創(chuàng)建區(qū)塊結(jié)構(gòu))李茫;一個(gè)是新的區(qū)塊添加到區(qū)塊鏈結(jié)構(gòu)上揭保,被大家認(rèn)可,確保未來無法被篡改魄宏。
針對(duì)區(qū)塊鏈應(yīng)用的這些特點(diǎn)秸侣,是否可以設(shè)計(jì)出一些特殊的針對(duì)性的數(shù)據(jù)庫呢?
LevelDB宠互、RocksDB等鍵值數(shù)據(jù)庫味榛,具備很高的隨機(jī)寫和順序讀、寫性能予跌,以及相對(duì)較差的隨機(jī)讀的性能搏色,被廣泛應(yīng)用到了區(qū)塊鏈信息存儲(chǔ)中。但目前來看券册,面向區(qū)塊鏈的數(shù)據(jù)庫技術(shù)仍然是需要突破的技術(shù)難點(diǎn)之一频轿,特別是如何支持更豐富語義的操作。
大膽預(yù)測(cè)烁焙,未來將可能出現(xiàn)更具針對(duì)性的“塊數(shù)據(jù)庫”(BlockDB)航邢,專門服務(wù)類似區(qū)塊鏈這樣的新型數(shù)據(jù)業(yè)務(wù),其中每條記錄將包括一個(gè)完整的區(qū)塊信息骄蝇,并天然地跟歷史信息進(jìn)行關(guān)聯(lián)翠忠,一旦寫入確認(rèn)則無法修改。所有操作的最小單位將是一個(gè)塊乞榨。為了實(shí)現(xiàn)這種結(jié)構(gòu),需要原生支持高效的簽名和加解密處理当娱。
不少公鏈代幣設(shè)計(jì)中沒有加入身份的概念吃既,不過這在技術(shù)人的角度來看,只是算是一個(gè)需求跨细,而不是數(shù)字貨幣本身存在的缺陷鹦倚。
這是個(gè)feature 不是bug!
換句話說冀惭,在特定場(chǎng)景下震叙,也許需要實(shí)現(xiàn)這個(gè)功能掀鹅。
點(diǎn)對(duì)點(diǎn) vs 中心化
數(shù)字貨幣的發(fā)行主體通常是項(xiàng)目發(fā)起方,并且會(huì)在白皮書中定義好數(shù)字貨幣的發(fā)行過程媒楼;在主網(wǎng)上線以后乐尊,所有的代幣會(huì)根據(jù)一開始設(shè)計(jì)好的發(fā)行過程緩慢釋放到市場(chǎng),這個(gè)過程其實(shí)就是大家喜聞樂見的“挖礦”過程划址。
end