區(qū)塊鏈作為一種新型的技術(shù)組合,其分布式、不可篡改、不可抵賴等特點(diǎn)帶來了一種全新的信用模式,正在引起各領(lǐng)域?qū)ξ磥響?yīng)用前景的無限憧憬。2016年11月13日,由CIO時代學(xué)院、中國新一代IT產(chǎn)業(yè)推進(jìn)聯(lián)盟主辦,CIO時代網(wǎng)承辦的“首屆中國區(qū)塊鏈應(yīng)用論壇”在北大中關(guān)新園成功舉行。本次活動的主題為:區(qū)塊鏈技術(shù)及應(yīng)用前景。本次活動吸引了眾多專家、金融及互聯(lián)網(wǎng)行業(yè)代表、各屆CIO班學(xué)員們等近兩百名業(yè)界人士的關(guān)注和參加。北京航空航天大學(xué)數(shù)字社會和區(qū)塊鏈實(shí)驗(yàn)室主任蔡維德在活動上發(fā)表了題為《區(qū)塊鏈的核心技術(shù)及發(fā)展趨勢》的主題演講。以下為演講實(shí)錄:
各位領(lǐng)導(dǎo)、各位專家,早上好!今天我跟大家分享區(qū)塊鏈一些新的發(fā)展,主要講的偏于技術(shù)。這是我在北大CIO講的第四次了,越講越技術(shù)。
區(qū)塊鏈技術(shù)簡介
首先講一下什么叫區(qū)塊鏈?區(qū)塊鏈?zhǔn)请y以篡改、可追溯的分布式帳本。區(qū)塊鏈看起來很簡單,其實(shí)很難。有人說他兩天就可以做一個區(qū)塊鏈,但是如果把區(qū)塊鏈拿來做應(yīng)用的話,特別是把它提升成有用的應(yīng)用,卻是一件非常難的事情。區(qū)塊鏈核心代碼只有幾千行,卻可以使十幾個人工作一年,還是無法解決很多技術(shù)問題。
區(qū)塊鏈的定義:塊子鏈、多獨(dú)立拷貝,拜占庭容錯協(xié)議。注意一下P2P網(wǎng)絡(luò)不在里面。
區(qū)塊鏈還分有公有鏈和許可鏈。公有鏈和許可鏈的技術(shù)、需求、架構(gòu)差異非常大。公有鏈的問題常常不是許可鏈的問題。所以如果大家不看清楚會被混淆視聽,把公有鏈的問題當(dāng)成許可鏈的問題。左邊是公有鏈的挖礦機(jī),右邊是許可鏈所用的服務(wù)器,差異非常大。
三代區(qū)塊鏈
區(qū)塊鏈還分三代,我從2016年三月一直講到現(xiàn)在,可是感覺還有一些東西沒有講清楚。第一代區(qū)塊鏈, 比特幣是代表。比特幣是數(shù)字貨幣應(yīng)用而不是平臺,公有鏈 (全網(wǎng)記帳),是一個公開帳本,雖然有加密,但是帳本是全公開的。帳本不完整,因?yàn)橹挥涗洑v史信息,賬戶余額不記載。賬戶只能用一次,用P2P網(wǎng)絡(luò)逃避監(jiān)管,所以速度極慢,而且擴(kuò)展性基本不行。
第二代區(qū)塊鏈,以太坊是代表。Vitalik (以太坊創(chuàng)始人)發(fā)現(xiàn)比特幣有很多問題,所以他做了幾個很大的貢獻(xiàn): 1) 把以太坊轉(zhuǎn)型變成一個平臺,而不只是一個數(shù)字貨幣應(yīng)用。2) 以太坊有完整的帳本。這在區(qū)塊鏈上面是一個很大的進(jìn)步。3) 在以太坊平臺上加上“鏈上代碼”,俗稱“智能合約”。但現(xiàn)在連他自己也承認(rèn),智能合約第一不智能,第二不是合約。所以“智能合約”這名詞就變成了一種誤導(dǎo),應(yīng)該稱之為“鏈上代碼”,“鏈上代碼”就把數(shù)字貨幣應(yīng)用變成了很意思的平臺。所以以太坊是在比特幣上面有非常大的進(jìn)步,但是以太坊又局限于ICO (initial coin offering),他想發(fā)幣一下子成為百萬富翁,所以他局限于公有鏈上面。所以以太坊速度很慢而且擴(kuò)展性很難。Vitalik出的白皮書已經(jīng)說了兩年以太坊能擴(kuò)展, 可是到今天還是做不出來,因?yàn)橐蕴坏募軜?gòu)(公有鏈)的限制。 2015年就有人說,以太坊擴(kuò)展性可能是一輩子都做不出來的問題。是但到底是不是一輩子做不出來的問題? 起碼非常難。
第三代區(qū)塊鏈, 北航鏈?zhǔn)谴?。北航鏈不是一個應(yīng)用,基本上是一個平臺,系統(tǒng),許可鏈 (只有被許可的節(jié)點(diǎn)可以記賬)。北航鏈有一個隱私的完整的帳本,帳本是不公開的,是用系統(tǒng)工程發(fā)展的區(qū)塊鏈。
我在11月5號在昆明演講,都是中國軟件工程教授在下面聽。如果以軟件工程來看比特幣跟以太坊,它們違背了軟件工程的原則:
比特幣機(jī)器加的越多,速度越慢。這是共識的機(jī)制的結(jié)果?一個平臺,機(jī)器一直加進(jìn)去,速度卻會越來越慢,這根本就是違背軟件工程的原則!一個平臺加機(jī)器,速度越快,才是正常。
區(qū)塊鏈常常是個萬能鏈,所有東西都在一條鏈上,這是違背軟件工程的原則!軟件工程說一個軟件(一條鏈)只做一件事。
如果我們是個軟件工程師、系統(tǒng)工程師,該怎么樣設(shè)計一個區(qū)塊鏈? 如此這樣就開拓了很多思想,所以是用工程方式設(shè)立一個平臺,這個平臺可以讓大家二次開發(fā),而且是快速的開發(fā),變成一個有用的應(yīng)用。所以第三代區(qū)塊鏈速度快、擴(kuò)展性強(qiáng),成為一個特性。
區(qū)塊鏈?zhǔn)情_啟一個新的軟件、數(shù)據(jù)庫、云技術(shù)
我在2016年7月21號在北京演講時提出這個概念。這個新的軟件工程是因?yàn)槲以诮衲?月開始為中國中央電視臺 (CCTV)設(shè)計一個大型的應(yīng)用發(fā)現(xiàn)的。當(dāng)時我設(shè)計應(yīng)用時就發(fā)現(xiàn)有許多問題是以前從來沒有碰到過,因?yàn)榈谝晃矣懈咚俚膮^(qū)塊鏈,第二中央電視臺有很多系統(tǒng)上的需求,而這種系統(tǒng)上的需求是以前教科書都沒有碰到的,所以我就發(fā)覺需要一個新的軟件工程。
有人說區(qū)塊鏈?zhǔn)欠植际綌?shù)據(jù)庫,可是它的分布式數(shù)據(jù)庫又跟傳統(tǒng)分布式數(shù)據(jù)庫不一樣,有人說區(qū)塊鏈?zhǔn)窃?,但是區(qū)塊鏈云跟普通云又不一樣,所以區(qū)塊鏈技術(shù)是一種新的學(xué)科出現(xiàn):一個新的軟件工程、新的軟件技術(shù),新的數(shù)據(jù)庫技術(shù)、新的云技術(shù)。
“雙鏈架構(gòu)”解決“全能一條鏈”的問題
2015年初,歐洲銀行聯(lián)盟提出的一個區(qū)塊鏈方案“萬能一條鏈”,就是把所有的金融機(jī)構(gòu)都連在一條鏈上面,鏈上作交易清算結(jié)算, 收到很多注意。 上面的圖是日本在今年3月發(fā)表的萬能一條鏈的實(shí)驗(yàn)。在萬能一條鏈上面,需要極大的計算力。我今年9月的時候在北京演講,做了一個計算,如果是只有150個機(jī)構(gòu),幾億個賬戶,每一秒要達(dá)到上交所的速度,每一個節(jié)點(diǎn)需要100臺的天河計算機(jī)才能做到。150個節(jié)點(diǎn),每個結(jié)點(diǎn)都要100個天河計算機(jī),那就是1萬5千臺天河,這是極大的計算力!這事實(shí)上是不可能的。首先天河是非常貴的,而且消耗能量是非常大的。另外,在萬能一條鏈上,隱私也沒有保障,每一個節(jié)點(diǎn)都可以看到別的節(jié)點(diǎn)上所有的賬戶。
所以2016年3月我在英國牛津發(fā)表一篇文章 (“A System View of Financial Blockchains”),把一個萬能一條鏈變成賬戶鏈 (ABC)以及交易鏈 (TBC),當(dāng)我們把賬戶鏈和交易鏈分開的時候,賬戶鏈就可以做很多優(yōu)化,交易鏈也可以做很多優(yōu)化,隱私也可以有保障。另外這樣可以節(jié)省大量計算能力,不需要用天河計算機(jī),用普通的服務(wù)器就可以,這就是我們發(fā)明的雙鏈架構(gòu)。
負(fù)載均衡的區(qū)塊鏈云
另外把這萬能一條鏈變成ABC或TBC之后,又可以變成一種可以負(fù)載均衡,可以分(并行計算),又可以合(串行計算),這就是“區(qū)塊鏈云”的概念。而區(qū)塊鏈云跟傳統(tǒng)的云概念不一樣,傳統(tǒng)云是一個計算中心,大數(shù)據(jù),計算可以“分”,可以“合”,這是負(fù)載均衡 (load balancing)的機(jī)制。 但是傳統(tǒng)區(qū)塊鏈?zhǔn)遣荒芊郑?不能合, 不能負(fù)載均衡的。
但是有ABC和 TBC后,區(qū)塊鏈可以分, 可以合, 可以有擴(kuò)展性。只要加服務(wù)器, 區(qū)塊鏈速度就能增快。例如說一個鏈一秒跑一萬次,那么兩套就可以一秒跑兩萬次,三套就可以跑三萬次,四套就變四萬次。這樣的話區(qū)塊鏈的速度的問題就可以解決,用擴(kuò)展性來解決。這是我們的發(fā)明。
CCTV (中央電視臺)微電影系統(tǒng)設(shè)計上的實(shí)際問題
我在做CCTV微電影的平臺時候就發(fā)掘,需要有一種新軟件工程方法。
我在2015年演講時說,我說區(qū)塊鏈可能幾十個節(jié)點(diǎn)就夠了,結(jié)果有些人說,絕對不夠,要很多(》 1000)節(jié)點(diǎn)才可以。等我真正做系統(tǒng)的時候,我問需要多少節(jié)點(diǎn),說“越少越好”。因?yàn)槊總€節(jié)點(diǎn)很貴?。?/div>
所以在烏托邦的時候,我們要偉大的理想,說區(qū)塊鏈要有幾千個節(jié)點(diǎn)。等到2016年真正做區(qū)塊鏈的時候, 卻是越少越好, 因?yàn)橐″X不要烏托邦!
但是省錢,安全性就會損。所以說安全、性能、費(fèi)用,用戶的感受,支付、制定性,這些都會影響到區(qū)塊鏈的設(shè)計。
區(qū)塊鏈設(shè)計就受這些事情的影響而不止在于做支付,而且很快的這件事情是說什么數(shù)據(jù)放在區(qū)塊鏈上,
有人說所有數(shù)據(jù)都要放在區(qū)塊鏈上。真的嗎?那是非常貴的!
那么所有應(yīng)用是不是都放在區(qū)塊鏈上 (鏈上待碼)?真的嗎?那是非常貴的!
在區(qū)塊鏈上面的應(yīng)用是非常貴的。事情在我們講或者聽的時候很容易,但是真正做的時候會遇到很多的困難、必須做很多的決定。而且有些是受外界限制,有些受系統(tǒng)控制,有些是受軟件控制。烏托邦的系統(tǒng)在現(xiàn)實(shí)是不存在的。
那么說需要幾條鏈,如果不是萬能一條鏈的話,那就可以是很多鏈?當(dāng)時設(shè)計時有個團(tuán)隊要五個鏈,我打電話說必須減到三條鏈,他們抗議。給我講一大堆理由,我說一條鏈可能要300萬,五個鏈就要1500萬,有1500萬嗎?如果有就做五條。我當(dāng)時算的是一條鏈300萬,當(dāng)然現(xiàn)在會有變化。我們沒有這么大金費(fèi),所以從5條鏈變3條鏈。
有人說我們設(shè)計要像關(guān)系數(shù)據(jù)庫一樣,一個表一個鏈,真的嗎?真的是瘋狂了!30 到50 鏈?這是不可能的。
還有功能應(yīng)該放哪里?放應(yīng)用上還是放鏈上代碼上面?這有很多因素需要考慮。
央視系統(tǒng)上的計算法律的問題
如果今天給中央電視微電影臺設(shè)計一個傳統(tǒng)系統(tǒng),這套系統(tǒng)可以很快做出來,從用戶點(diǎn)擊,有控制中心??墒侨绻俏覀円鲆粋€區(qū)塊鏈的應(yīng)用而且有法律的效應(yīng),這樣的系統(tǒng)是不夠的。因?yàn)樽鳛閰^(qū)塊鏈上的數(shù)據(jù)需要當(dāng)證據(jù)用的。當(dāng)證據(jù)用的時候,不是說有區(qū)塊鏈就把問題解決了。有區(qū)塊鏈只是起步,還需要設(shè)計。有區(qū)塊鏈,問題才開始,例如安全、費(fèi)用、性能多少,這是我花腦筋想的問題。
傳統(tǒng)區(qū)塊鏈系統(tǒng)設(shè)計圖
比如說電子證據(jù)要有以下特性:
1)及時性:數(shù)據(jù)是不是及時收集的?如果數(shù)據(jù)是一天以后才收的,放在區(qū)塊鏈上也沒人信,法庭上也沒人承認(rèn)。
2) 過程性:不能只是單一數(shù)據(jù),要有過程數(shù)據(jù)。
3) 不能篡改性。
所以單單把一些數(shù)據(jù)庫變成區(qū)塊鏈,問題仍然存在!因?yàn)樗鼪]有及時性,不曉得什么時候數(shù)據(jù)從控制中心到達(dá)區(qū)塊鏈;它整個事情只有一道的信息,缺乏過程性。
新區(qū)塊鏈系統(tǒng)設(shè)計圖
這是為央視所設(shè)計的??梢钥吹竭@里有三條區(qū)塊鏈鏈,一個交易鏈,兩個賬戶鏈,這個系統(tǒng)我們已經(jīng)做出來了。用戶進(jìn)來的時候直接先到交易區(qū)塊鏈,所以一開始就是及時數(shù)據(jù),然后放微電影的時候先到區(qū)塊鏈然后再到用戶,所以有過程數(shù)據(jù),然后及時分賬,所以這樣就足夠成為電子證據(jù)的一種系統(tǒng),這樣區(qū)塊鏈系統(tǒng)才能真正有用。
高速區(qū)塊鏈應(yīng)用接口 (JBCC)和技術(shù)輸出到國外
另外,北航、北大、和清華大學(xué)一同推出了JBCC (Java Blockchain Connector),因?yàn)槲覀兛磪^(qū)塊鏈不只是數(shù)字貨幣或者其他應(yīng)用,我們把區(qū)塊鏈當(dāng)做系統(tǒng)平臺,那么區(qū)塊鏈就應(yīng)該有個公開的接口,所以推出了JBCC。
有了JBCC之后,要做一個示范系統(tǒng)通常只要一個禮拜就能完成?,F(xiàn)在我們的區(qū)塊鏈已經(jīng)做出來了,而且是高速區(qū)塊鏈。我們準(zhǔn)備要部署在中國四間高校做教學(xué)研究所用。第一個部署在山東齊魯工業(yè)大學(xué)經(jīng)管學(xué)院。讓學(xué)生學(xué)習(xí),老師研究區(qū)塊鏈軟件工程和技術(shù)。
今天英國人對央視計劃高速區(qū)塊鏈技術(shù)感興趣,想把這個技術(shù)輸出到歐美。
熊貓央行數(shù)字貨幣模型 (CBDC)
剛才姚司長講到央行數(shù)字貨幣模型,實(shí)際上使用TBC、ABC的概念還可以做一個相當(dāng)完整的央行數(shù)字貨幣模型“熊貓”, 這可能是世界上第2個央行數(shù)字貨幣模型 (英國RSCoin 是第一個央行數(shù)字貨幣模型)。這個熊貓模型有很好的擴(kuò)展性。例如說新設(shè)一家銀行,原來有兩家銀行,那么新銀行自己先做一個ABC,選擇加入幾個TBC,一下子一個更改過的央行數(shù)字貨幣系統(tǒng)就完成了。
我們知道工商銀行在中國是最大的,可能一個ABC解決不了,它可以把一個ABC變成兩個ABC。TBC也可以分裂成好幾個TBC,而且是可以“動態(tài)”組成的,所以我們把傳統(tǒng)靜態(tài)的區(qū)塊鏈系統(tǒng)變成新的動態(tài)區(qū)塊鏈系統(tǒng)。
我從來就是把區(qū)塊鏈當(dāng)做一種學(xué)問、當(dāng)作一個系統(tǒng),而不只是一個數(shù)字貨幣應(yīng)用,如果以系統(tǒng)觀念來做的話,很多事情都可以做起來。
區(qū)塊鏈數(shù)據(jù)庫
很多人說區(qū)塊鏈?zhǔn)且粋€數(shù)據(jù)庫,可是區(qū)塊鏈跟傳統(tǒng)數(shù)據(jù)庫有非常大的差別,因?yàn)閭鹘y(tǒng)數(shù)據(jù)庫做事務(wù) (transaction)的時候,是每筆交易單獨(dú)處理的??墒菂^(qū)塊鏈系統(tǒng)是幾千, 幾萬筆交易一起處理的,這就有非常大的差異。
另外在傳統(tǒng)的數(shù)據(jù)庫里面有讀 (read) 跟寫 (write),讀是比較無害的可以并行,寫的時候是麻煩的不能并行。可是區(qū)塊鏈系統(tǒng),平常的“讀”可能是“寫”。在央視系統(tǒng),有人點(diǎn)視頻,它只是“讀”視頻,可是區(qū)塊鏈應(yīng)用里是記錄一個點(diǎn)評、播放,這就變成“寫”。比如說以前天津爆炸的時候,一下子間有4億人觀看這個視頻,所以在一秒之內(nèi)可能有幾萬人在點(diǎn)視頻,而我們必須要追蹤,所以一下之間在一個鏈里面有幾萬個同一個數(shù)據(jù)“寫”上來。在傳統(tǒng)數(shù)據(jù)庫這必須停住 (因?yàn)椴荒懿⑿校?可是區(qū)塊鏈數(shù)據(jù)庫必須處理 (并行寫?。?。
區(qū)塊鏈寫的模型跟傳統(tǒng)數(shù)據(jù)庫寫的模型不一樣,就是必須同時讓許多并行的寫 (concurrent writes),所以它是一種新的數(shù)據(jù)庫模型。這個在傳統(tǒng)數(shù)據(jù)庫是大逆不道,完全不對的??墒茄胍曄到y(tǒng)出現(xiàn)這個問題,而且我們必須處理,事實(shí)上這還是有辦法解決的。
所以說區(qū)塊鏈?zhǔn)菙?shù)據(jù)庫,可是真正用區(qū)塊鏈做數(shù)據(jù)庫的時候就有很多的問題。
鏈上代碼
很多人說“智能合約”解決很多問題,也非常尊崇“智能合約”。但是“智能合約”只是一個“鏈上代碼”。
如果我們看以太坊鏈上代碼模型,在建每一塊的時侯,要完成鏈上代碼的執(zhí)行??墒窃谖宜龅膬商状笮拖到y(tǒng),一個是央視,一個是給金融機(jī)構(gòu)所做的系統(tǒng),就發(fā)覺太坊的鏈上代碼模型根本不行,因?yàn)樗麄円逆溕洗a是長時間的。多長呢?幾個月。比如說股票交易,股票掉到50塊的時候就買,這指令可能要待三個月,那鏈上代碼(合約)就必須執(zhí)行三個月!
以太坊鏈上代碼執(zhí)行模型圖
所以“鏈上代碼”的語義必須改變, 因?yàn)楝F(xiàn)在鏈上代碼在每次建塊時要完成。
就算有的不需要這么長時間的,一分鐘好了,可是一分鐘在計算機(jī)里面是光年,是非常長的。在高速區(qū)塊鏈上,一秒鐘就可以有幾塊建立,每一塊可以有幾萬個交易,鏈上可以有幾千萬個賬號,這樣太坊鏈上代碼模型根本是不夠的。
而且每一次建塊都要查詢哪個鏈上代碼需要執(zhí)行,一個大型系統(tǒng)一秒鐘可能有10萬個鏈上代碼要執(zhí)行 (10萬是個很小的數(shù)字, 一個鏈可以有千萬個帳戶, 10萬/千萬是很小的比例),但是執(zhí)行10萬鏈上代碼需要花很多時間。在高速區(qū)塊鏈上,建塊是非??斓?,而且有多塊同時在建立 (并行的結(jié)果),每一次建塊需要做大量查詢。如果是用傳統(tǒng)思維, 用機(jī)器來解決,必須有天河計算機(jī)才行。這真是Mission impossible “不可能的任務(wù)”!
我們可以在系統(tǒng)里面解決這問題。鏈上代碼可以做, 但是應(yīng)用功能盡量放在應(yīng)用上,盡量不要放在鏈上代碼,能放在應(yīng)用就放在應(yīng)用上。不要追求鏈上代碼,因?yàn)檫@可能使系統(tǒng)慢下來。
第二,大部分鏈上代碼都不應(yīng)該需要被查詢才執(zhí)行,應(yīng)該立刻就知道是哪些代碼需要執(zhí)行。
第三,每一個鏈上代碼都只能夠處理自己的賬戶或者是少數(shù)相關(guān)的賬戶。
而且大多數(shù)的鏈上代碼計算都應(yīng)該非常簡單,稍微難一點(diǎn),這個鏈上代碼就可能使整套系統(tǒng)的延遲甚至停滯,很多問題就會出現(xiàn)。
有人說把區(qū)塊鏈做起來,把計算放在偉大的“智能合約”上,問題就能解決。事實(shí)上一放進(jìn)去,很多問題會出現(xiàn)。
如果要一種長時間的“鏈上代碼”,那中間數(shù)據(jù)必須放在很多在塊里面, 不是一塊。一個“鏈上代碼”的結(jié)果是由許多塊所集成的,那就需要有一個新“鏈上代碼”的語義,這就產(chǎn)生一個新的軟件工程研究問題。北大郁蓮老師在這問題上有研究。
今天很多學(xué)者專家在這邊,做系統(tǒng)的人就發(fā)覺很多問題是需要克服的。
我就講到這里,謝謝大家!
第三十四屆CIO班招生
國際CIO認(rèn)證培訓(xùn)
首席數(shù)據(jù)官(CDO)認(rèn)證培訓(xùn)
責(zé)編:蔡維德
免責(zé)聲明:本網(wǎng)站(http://www.www.gypb.net/)內(nèi)容主要來自原創(chuàng)、合作媒體供稿和第三方投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進(jìn)一步核實(shí),并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
本網(wǎng)站刊載的所有內(nèi)容(包括但不僅限文字、圖片、LOGO、音頻、視頻、軟件、程序等)版權(quán)歸原作者所有。任何單位或個人認(rèn)為本網(wǎng)站中的內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實(shí)內(nèi)容時,請及時通知本站,予以刪除。