為什么區(qū)塊鏈1.0不能運(yùn)行程序
大家都知道: ETH開啟了區(qū)塊鏈2.0,ETH上可以運(yùn)行DAPP。
那么,DAPP究竟是什么?在區(qū)塊鏈上運(yùn)行程序到底是怎么一回事?
在之前我們說到:BTC用區(qū)塊鏈記賬和使用UTXO,而ETH用區(qū)塊鏈運(yùn)行程序代碼和使用賬戶余額制。
區(qū)塊鏈2.0, 是可編程區(qū)塊鏈,我們可以在區(qū)塊鏈2.0上面,運(yùn)行智能合約、DAPP(分散的應(yīng)用程序),而區(qū)塊鏈1.0不行。
那么,為什么區(qū)塊鏈1.0,不能運(yùn)行程序?
因為,區(qū)塊鏈1.0使用的腳本語言,不是圖靈完備的。
什么是圖靈完備?
如果一門編程語言,給它足夠時間,它就可以用計算機(jī)完成任何計算任務(wù),解決任何計算問題,那么這門語言就是圖靈完備的。
如果需要解決任何問題,就需要運(yùn)用到——“循環(huán)”、“條件控制”等語句。
什么是循環(huán)?
循環(huán)是計算機(jī)科學(xué)領(lǐng)域的一種常見的控制流程,循環(huán)可以告訴計算機(jī)去反復(fù)執(zhí)行任務(wù)。
比如:“去幣乎,點(diǎn)贊一百萬次贊!” 點(diǎn)贊,就是任務(wù)。
循環(huán):
點(diǎn)贊
點(diǎn)贊
點(diǎn)贊
點(diǎn)贊
共計一百萬次,很快,幣乎里面所有的文章,都被愛莉莎點(diǎn)了贊。
什么是條件控制語句?
就是滿足一定條件,才執(zhí)行任務(wù)。
比如,如果這篇文章點(diǎn)贊數(shù)小于100,才點(diǎn)贊。
這里的條件就是:文章點(diǎn)贊數(shù) 《 100。任務(wù)還是點(diǎn)贊。
比特幣的腳本語言,沒有循環(huán)語句和條件控制語句。
因此,我們說:比特幣腳本語言,不是圖靈完備的。這導(dǎo)致比特幣腳本語言,有一定的局限性。
當(dāng)然,由于這些局限性,黑客就沒辦法使用這種腳本語言,寫一些死循環(huán)(會造成網(wǎng)絡(luò)癱瘓),或者一些能導(dǎo)致DOS攻擊的惡意代碼,也就避免了比特幣網(wǎng)絡(luò)受到DOS攻擊。比特幣的開發(fā)者,也認(rèn)為核心區(qū)塊鏈,不應(yīng)該具備圖靈完整性,來避免一些攻擊和網(wǎng)絡(luò)堵塞。
但是,也正是由于這些局限性,比特幣網(wǎng)絡(luò),沒有辦法運(yùn)行它復(fù)雜的程序了。
而,ETH使用的語言,具備了圖靈完整性。
打個比方:
區(qū)塊鏈1.0就像古老的電話,只有打電話接電話這種核心功能。
而區(qū)塊鏈2.0就像智能手機(jī),上面可以運(yùn)行各種各樣的APP,可以運(yùn)行游戲APP,可以運(yùn)行微信,極大地影響了人們的生活。
在區(qū)塊鏈上運(yùn)行程序,到底是啥意思?
我們知道,在電腦上運(yùn)行程序,是由CPU執(zhí)行一系列的任務(wù)。
在區(qū)塊鏈上運(yùn)行程序,是在區(qū)塊鏈網(wǎng)絡(luò)上運(yùn)行各個任務(wù)。
需要注意的是,區(qū)塊鏈網(wǎng)絡(luò)的每個節(jié)點(diǎn),都會記錄:
1. 所有交易的歷史
2. 所有智能合約的歷史
3. 所有智能合約的當(dāng)前狀態(tài)
什么是狀態(tài)?
你在淘寶上,購買一件商品,那么,會有顯示如下的狀態(tài),已下單、已出庫、已發(fā)貨,你購買的進(jìn)度,就是一個個的狀態(tài)。
在區(qū)塊鏈上運(yùn)行程序,所有節(jié)點(diǎn)會進(jìn)行同步,讓智能合約所處的狀態(tài)保持一致。
DAPP到底是什么?
DAPP是分散應(yīng)用程序(decentralized application)的縮寫,指:運(yùn)行在分散式網(wǎng)絡(luò)上的應(yīng)用。
以太坊網(wǎng)絡(luò)就像手機(jī)的IOS系統(tǒng)和Android系統(tǒng), 是平臺系統(tǒng),是底層的生態(tài)環(huán)境。
DAPP就是平臺上,衍生的各種分布式應(yīng)用,也是區(qū)塊鏈?zhǔn)澜缁A(chǔ)服務(wù)的提供方。
DAPP之于區(qū)塊鏈,就像APP之于IOS和Android。
DApp =前端+智能合約
一個DApp的前端,可以是任何語言編寫的前端代碼和用戶界面(就像一個應(yīng)用程序)。前端可以調(diào)用后端。
前端→智能合約→區(qū)塊鏈
智能合約是DAPP和區(qū)塊鏈數(shù)據(jù)庫之間的橋梁,發(fā)揮區(qū)塊鏈‘a(chǎn)pi連接器’的作用。
打個比方,Dapp就像一個‘啟用區(qū)塊鏈’的網(wǎng)站,而智能合約允許它連接到區(qū)塊鏈上。
傳統(tǒng)的Web應(yīng)用程序,使用HTML,CSS和JavaScript來渲染頁面(前端)。它還需要用API,從數(shù)據(jù)庫中獲取數(shù)據(jù)。比如,當(dāng)你打開Facebook網(wǎng)頁,該頁面會通過API來獲取你的個人信息(姓名、性別等等),并將其顯示在頁面上。結(jié)構(gòu)如下:前端→API→數(shù)據(jù)庫
而Dapp與傳統(tǒng)的Web應(yīng)用程序非常相似,前端使用完全相同的技術(shù)來渲染頁面。
一個關(guān)鍵的區(qū)別是,DAPP不使用API訪問數(shù)據(jù)庫,而是通過智能合約,訪問區(qū)塊鏈數(shù)據(jù)庫。
結(jié)構(gòu)如下:
前端→智能合約→區(qū)塊鏈
DAPP的特點(diǎn):
首先,用戶的隱私得到很好的保護(hù),信息被加密存儲于區(qū)塊鏈上。
其次,網(wǎng)絡(luò)節(jié)點(diǎn)去中心化操作,所有節(jié)點(diǎn)同步DAPP各種狀態(tài)。
第三,通過標(biāo)準(zhǔn)算法生產(chǎn)代幣,代幣根據(jù)應(yīng)用場景使用,有貢獻(xiàn)的用戶可獲得代幣獎勵。