區(qū)塊鏈技術(shù)(Blockchain technology)來(lái)源于筆名中本聰(Satoshi Nakamoto)在2008年發(fā)表的論文《比特幣:一種點(diǎn)對(duì)點(diǎn)的電子現(xiàn)金系統(tǒng)》(Bitcoin: A Peer-to-Peer Electronic Cash System)。在傳統(tǒng)的具有中心節(jié)點(diǎn)的電子現(xiàn)金系統(tǒng)中,是由中心節(jié)點(diǎn),比如銀行、支付機(jī)構(gòu)等,來(lái)驗(yàn)證電子現(xiàn)金是否被使用過(guò),從而避免一幣多付(又稱雙重支付)的問(wèn)題。比特幣是一種去中心化的點(diǎn)對(duì)點(diǎn)的網(wǎng)絡(luò),為解決一幣多付的問(wèn)題,中本聰提出了區(qū)塊鏈的概念,顧名思義,區(qū)塊鏈由區(qū)塊組成,區(qū)塊是一種數(shù)據(jù)結(jié)構(gòu),包括時(shí)間戳,交易記錄,前一個(gè)區(qū)塊的哈希值,通過(guò)這種機(jī)制,所有的區(qū)塊連在一起,形成區(qū)塊鏈。
圖1 區(qū)塊和區(qū)塊鏈
簡(jiǎn)而言之,區(qū)塊鏈?zhǔn)且环N分布式的數(shù)據(jù)庫(kù),具有去中心化、不可篡改、可以追溯等特點(diǎn),這些特點(diǎn)保證了區(qū)塊鏈節(jié)點(diǎn)的“誠(chéng)實(shí)”和“透明”,解決了信息不對(duì)稱問(wèn)題,實(shí)現(xiàn)了多個(gè)主體之間的信任協(xié)作和行動(dòng)一致。為了方便理解區(qū)塊和區(qū)塊鏈的概念,可以參考如下簡(jiǎn)化的Python代碼實(shí)現(xiàn):
class Block:
def __init__(self, index, transactions, timestamp, previous_hash, nonce=0):
self.index = index
self.transactions = transactions
self.timestamp = timestamp
self.previous_hash = previous_hash
self.nonce = nonce def compute_hash(self):
block_string = json.dumps(self.__dict__, sort_keys=True) return sha256(block_string.encode()).hexdigest()class Blockchain:
difficulty = 2
def __init__(self):
self.unconfirmed_transactions = []
self.chain = [] def create_genesis_block(self):
genesis_block = Block(0, [], 0, "0")
genesis_block.hash = genesis_block.compute_hash()
self.chain.append(genesis_block) @property
def last_block(self):
return self.chain[-1] def add_block(self, block, proof):
previous_hash = self.last_block.hash if previous_hash != block.previous_hash: return False
if not Blockchain.is_valid_proof(block, proof): return False
block.hash = proof
self.chain.append(block) return True @staticmethod
def proof_of_work(block):
block.nonce = 0
computed_hash = block.compute_hash() while not computed_hash.startswith('0' * Blockchain.difficulty):
block.nonce += 1
computed_hash = block.compute_hash() return computed_hash def add_new_transaction(self, transaction):
self.unconfirmed_transactions.append(transaction) @classmethod
def is_valid_proof(cls, block, block_hash):
return (block_hash.startswith('0' * Blockchain.difficulty) and
block_hash == block.compute_hash())
由上述代碼可見(jiàn),計(jì)算當(dāng)前區(qū)塊的哈希值時(shí),輸入變量既包括當(dāng)前區(qū)塊的時(shí)間戳、交易記錄等數(shù)據(jù),也包括上一個(gè)區(qū)塊的哈希值,如果攻擊者修改區(qū)塊鏈中的交易記錄,比如區(qū)塊1的交易記錄,則區(qū)塊1的哈希值會(huì)發(fā)生變化,因?yàn)閰^(qū)塊2的數(shù)據(jù)結(jié)構(gòu)包括區(qū)塊1的哈希值,故區(qū)塊2的哈希值也會(huì)發(fā)生變化,從而迫使攻擊者重新計(jì)算區(qū)塊2的哈希值,以此類推,余下區(qū)塊的哈希值也需要重新計(jì)算,同時(shí)為增加攻擊者計(jì)算哈希值的難度,區(qū)塊鏈還使用了工作量證明(Proof of Work)算法,比如要求哈希值的前若干個(gè)字符是0。與此同時(shí),在攻擊者計(jì)算歷史區(qū)塊的哈希值時(shí),還會(huì)不斷有新的區(qū)塊寫入,除非攻擊者掌握整個(gè)區(qū)塊鏈網(wǎng)絡(luò)中51%以上的算力,這種攻擊從時(shí)間成本和收益成本來(lái)說(shuō),將會(huì)是毫無(wú)意義的。
比特幣(數(shù)字加密貨幣的一種)是區(qū)塊鏈技術(shù)的一種應(yīng)用,二者之間的關(guān)系類似與汽車和內(nèi)燃機(jī)/電動(dòng)機(jī),每一輛汽車都裝備有內(nèi)燃機(jī)或者電動(dòng)機(jī)或者兼而有之,但內(nèi)燃機(jī)/電動(dòng)機(jī)不光用于汽車,還應(yīng)用于火車、輪船、工程機(jī)械等設(shè)備。隨著區(qū)塊鏈技術(shù)的發(fā)展,其應(yīng)用場(chǎng)景從數(shù)字貨幣逐漸向其他非金融領(lǐng)域擴(kuò)展,比如公共服務(wù)領(lǐng)域、數(shù)字版權(quán)領(lǐng)域、保險(xiǎn)領(lǐng)域、物聯(lián)網(wǎng)和物流領(lǐng)域等。
區(qū)塊鏈1.0:區(qū)塊鏈用于數(shù)字貨幣
區(qū)塊鏈2.0:區(qū)塊鏈+智能合約用于金融領(lǐng)域(貨幣、股票、債券等)
區(qū)塊鏈3.0:區(qū)塊鏈用于非金融領(lǐng)域
區(qū)塊鏈應(yīng)用領(lǐng)域的擴(kuò)展也改變了社會(huì)對(duì)于區(qū)塊鏈等同于虛擬貨幣的固有認(rèn)知,在監(jiān)管機(jī)構(gòu)對(duì)虛擬貨幣炒作和虛擬貨幣交易場(chǎng)所的打擊態(tài)度沒(méi)有絲毫改變的同時(shí),也在積極鼓勵(lì)區(qū)塊鏈技術(shù)在非金融領(lǐng)域的發(fā)展,比如2019年10月24日,中共中央政治局就區(qū)塊鏈技術(shù)發(fā)展現(xiàn)狀和趨勢(shì)進(jìn)行第十八次集體學(xué)習(xí),會(huì)上中共中央總書(shū)記習(xí)近平指出“區(qū)塊鏈技術(shù)的集成應(yīng)用在新的技術(shù)革新和產(chǎn)業(yè)變革中起著重要作用。我們要把區(qū)塊鏈作為核心技術(shù)自主創(chuàng)新的重要突破口,明確主攻方向,加大投入力度,著力攻克一批關(guān)鍵核心技術(shù),加快推動(dòng)區(qū)塊鏈技術(shù)和產(chǎn)業(yè)創(chuàng)新發(fā)展……區(qū)塊鏈技術(shù)應(yīng)用已延伸到數(shù)字金融、物聯(lián)網(wǎng)、智能制造、供應(yīng)鏈管理、數(shù)字資產(chǎn)交易等多個(gè)領(lǐng)域。目前,全球主要國(guó)家都在加快布局區(qū)塊鏈技術(shù)發(fā)展。我國(guó)在區(qū)塊鏈領(lǐng)域擁有良好基礎(chǔ),要加快推動(dòng)區(qū)塊鏈技術(shù)和產(chǎn)業(yè)創(chuàng)新發(fā)展,積極推進(jìn)區(qū)塊鏈和經(jīng)濟(jì)社會(huì)融合發(fā)展?!?/p>
區(qū)塊鏈技術(shù)具有的不可篡改、可以追溯等特點(diǎn),可以和物聯(lián)網(wǎng)技術(shù)具有的連接隨手可及、計(jì)算無(wú)處不在等特點(diǎn)結(jié)合起來(lái),以筆者在《如何從零開(kāi)始搭建面向某一行業(yè)的物聯(lián)網(wǎng)系統(tǒng)架構(gòu)》一文中描述的案例為例,我們可以把某一產(chǎn)品拆分成若干產(chǎn)品單元,然后把產(chǎn)品單元的生產(chǎn)制造過(guò)程拆分成若干工藝單元,每一個(gè)工藝單元的實(shí)現(xiàn)由各種機(jī)械設(shè)備完成,比如生產(chǎn)設(shè)備、測(cè)試設(shè)備等,工藝單元和工藝單元之間的物料轉(zhuǎn)運(yùn)由各種自動(dòng)化設(shè)備完成,比如機(jī)器人、AGV等,無(wú)論是機(jī)械還是設(shè)備,從物聯(lián)網(wǎng)的視角看來(lái)都屬于執(zhí)行機(jī)構(gòu),傳感器用于測(cè)量生產(chǎn)過(guò)程的各種狀態(tài)并作為車間控制系統(tǒng)閉環(huán)控制的輸入信號(hào)。
圖2 產(chǎn)品制造過(guò)程和物聯(lián)網(wǎng)
借助物聯(lián)網(wǎng),在某一產(chǎn)品單元生產(chǎn)完成后,可以生成該產(chǎn)品的關(guān)鍵信息,比如生產(chǎn)設(shè)備加工該產(chǎn)品時(shí)采用的工藝數(shù)據(jù),測(cè)試設(shè)備對(duì)該產(chǎn)品進(jìn)行質(zhì)檢后得到的量測(cè)數(shù)據(jù),這些數(shù)據(jù)打包成消息(比如JSON格式)。隨后該產(chǎn)品單元會(huì)經(jīng)過(guò)物流系統(tǒng)流轉(zhuǎn)到下一個(gè)地點(diǎn),借助物聯(lián)網(wǎng),可以獲得產(chǎn)品在運(yùn)輸過(guò)程中的關(guān)鍵信息,比如mRNA疫苗在運(yùn)輸途中的環(huán)境溫度數(shù)據(jù),這些數(shù)據(jù)也被打包成消息。在這種應(yīng)用場(chǎng)景下,消息即等同于上面提到的交易記錄,區(qū)塊的數(shù)據(jù)結(jié)構(gòu)包括時(shí)間戳、消息、前一個(gè)區(qū)塊的哈希值等數(shù)據(jù),而消息一旦被節(jié)點(diǎn)發(fā)布,就不可能被修改,從而可以實(shí)現(xiàn)供應(yīng)鏈端到端的全程監(jiān)控,解決商品質(zhì)量溯源、安全監(jiān)管等問(wèn)題。
圖3 物聯(lián)網(wǎng)和區(qū)塊鏈
借助智能合約,在產(chǎn)品單元從生產(chǎn)方流轉(zhuǎn)到需求方時(shí),需求方通過(guò)獲取產(chǎn)品到達(dá)前的消息即可以判斷合約條款是否被滿足(時(shí)間、日期、工藝數(shù)據(jù)、量測(cè)數(shù)據(jù)、環(huán)境數(shù)據(jù)等),若滿足條款,則生產(chǎn)方和需求方之間的合約自動(dòng)執(zhí)行。這種方式避免了供應(yīng)鏈中的每一個(gè)參與方單獨(dú)建立一套產(chǎn)品追溯系統(tǒng)和相應(yīng)的數(shù)據(jù)庫(kù),除了成本的增加,這種單獨(dú)建立的數(shù)據(jù)庫(kù)在開(kāi)放性、協(xié)作性和認(rèn)證性方面亦有所欠缺,而通過(guò)引入?yún)^(qū)塊鏈技術(shù),可以實(shí)現(xiàn)“優(yōu)化業(yè)務(wù)流程、降低運(yùn)營(yíng)成本、提升協(xié)同效率、建設(shè)可信體系”等方面的作用。
編輯:hfy
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2909文章
44671瀏覽量
373707 -
區(qū)塊鏈
+關(guān)注
關(guān)注
111文章
15562瀏覽量
106124
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論