前文說(shuō)了智能合約是編寫(xiě)在區(qū)塊鏈上的一套圖靈完備的數(shù)字合約,那么什么是圖靈完備呢?今天我們就了解一下什么是圖靈完備。
1,圖靈是誰(shuí)
圖靈就是艾倫·麥席森·圖靈(Alan Mathison Turing,1912年6月23日-1954年6月7日),英國(guó)數(shù)學(xué)家、邏輯學(xué)家,被稱為計(jì)算機(jī)科學(xué)之父,人工智能之父。圖靈對(duì)于人工智能的發(fā)展有諸多貢獻(xiàn),提出了一種用于判定機(jī)器是否具有智能的試驗(yàn)方法,即圖靈實(shí)驗(yàn),至今,每年都有試驗(yàn)的比賽。此外,圖靈提出的著名的圖靈機(jī)模型為現(xiàn)代計(jì)算機(jī)的邏輯工作方式奠定了基礎(chǔ)。
2.圖靈機(jī)
圖靈機(jī),又稱圖靈計(jì)算、圖靈計(jì)算機(jī),是由數(shù)學(xué)家艾倫·麥席森·圖靈提出的一種抽象計(jì)算模型,即將人們使用紙筆進(jìn)行數(shù)學(xué)運(yùn)算的過(guò)程進(jìn)行抽象,由一個(gè)虛擬的機(jī)器替代人們進(jìn)行數(shù)學(xué)運(yùn)算。
簡(jiǎn)單理解圖靈機(jī)就是指一個(gè)抽象的機(jī)器,它有一條無(wú)限長(zhǎng)的紙帶,紙帶分成了一個(gè)一個(gè)的小方格,每個(gè)方格有不同的顏色。有一個(gè)機(jī)器頭在紙帶上移來(lái)移去。機(jī)器頭有一組內(nèi)部狀態(tài),還有一些固定的程序。在每個(gè)時(shí)刻,機(jī)器頭都要從當(dāng)前紙帶上讀入一個(gè)方格信息,然后結(jié)合自己的內(nèi)部狀態(tài)查找程序表,根據(jù)程序輸出信息到紙帶方格上,并轉(zhuǎn)換自己的內(nèi)部狀態(tài),然后進(jìn)行移動(dòng)。

3.圖靈完備
圖靈完備就是指程序員編寫(xiě)的各種代碼語(yǔ)言,再加上一種運(yùn)算規(guī)則,能再圖靈機(jī)這種虛擬機(jī)中完美的運(yùn)算,這些編程語(yǔ)言就叫圖靈完備。圖靈完備的代表是以太坊,以太坊這個(gè)用區(qū)塊鏈的方式連接了全球所有的機(jī)器,組成了一個(gè)強(qiáng)大的硬件基礎(chǔ),在以太坊系統(tǒng)中,設(shè)置了虛擬計(jì)算程序。以太坊做了一個(gè)內(nèi)置了多種編程語(yǔ)言的區(qū)塊鏈協(xié)議,這些編程語(yǔ)言都是圖靈完備的,可以支持條件分支、循環(huán)、跳轉(zhuǎn)、函數(shù)調(diào)用等復(fù)雜的運(yùn)算邏輯,理論上可以在以太坊區(qū)塊鏈上運(yùn)行任意的應(yīng)用。
由于圖靈完備語(yǔ)言最顯著的一個(gè)特點(diǎn)是支持循環(huán),循環(huán)就是程序能不斷執(zhí)行下去。那么在區(qū)塊鏈支撐的分布式環(huán)境下,礦工如何判斷一個(gè)程序何時(shí)結(jié)束呢?根據(jù)圖靈計(jì)算理論,證明一個(gè)程序終止是不可能證明出來(lái)的即圖靈停機(jī)問(wèn)題,所以這種“智能合約”語(yǔ)言需要保證所寫(xiě)出的程序不能存在死循環(huán)。這也是為什么以太坊語(yǔ)言會(huì)加入gas(汽油)的原因,通過(guò)加入gas,程序每個(gè)運(yùn)算過(guò)程都會(huì)消耗一定成本,從而不會(huì)無(wú)限制地執(zhí)行下去。