前文說了智能合約是編寫在區(qū)塊鏈上的一套圖靈完備的數(shù)字合約,那么什么是圖靈完備呢并巍?今天我們就了解一下什么是圖靈完備。
1,圖靈是誰
圖靈就是艾倫·麥席森·圖靈(Alan Mathison Turing忠蝗,1912年6月23日-1954年6月7日),英國數(shù)學(xué)家速种、邏輯學(xué)家,被稱為計(jì)算機(jī)科學(xué)之父棋傍,人工智能之父。圖靈對于人工智能的發(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)算的過程進(jìn)行抽象兢仰,由一個(gè)虛擬的機(jī)器替代人們進(jìn)行數(shù)學(xué)運(yùn)算忆矛。
簡單理解圖靈機(jī)就是指一個(gè)抽象的機(jī)器,它有一條無限長的紙帶亚兄,紙帶分成了一個(gè)一個(gè)的小方格礼旅,每個(gè)方格有不同的顏色。有一個(gè)機(jī)器頭在紙帶上移來移去龄坪。機(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)行移動热某。
3.圖靈完備
圖靈完備就是指程序員編寫的各種代碼語言蔬捷,再加上一種運(yùn)算規(guī)則妥粟,能再圖靈機(jī)這種虛擬機(jī)中完美的運(yùn)算脓钾,這些編程語言就叫圖靈完備握截。圖靈完備的代表是以太坊畜眨,以太坊這個(gè)用區(qū)塊鏈的方式連接了全球所有的機(jī)器胞四,組成了一個(gè)強(qiáng)大的硬件基礎(chǔ)约巷,在以太坊系統(tǒng)中氓癌,設(shè)置了虛擬計(jì)算程序疲迂。以太坊做了一個(gè)內(nèi)置了多種編程語言的區(qū)塊鏈協(xié)議,這些編程語言都是圖靈完備的,可以支持條件分支、循環(huán)歹叮、跳轉(zhuǎn)、函數(shù)調(diào)用等復(fù)雜的運(yùn)算邏輯,理論上可以在以太坊區(qū)塊鏈上運(yùn)行任意的應(yīng)用糟红。
由于圖靈完備語言最顯著的一個(gè)特點(diǎn)是支持循環(huán)揍鸟,循環(huán)就是程序能不斷執(zhí)行下去。那么在區(qū)塊鏈支撐的分布式環(huán)境下,礦工如何判斷一個(gè)程序何時(shí)結(jié)束呢?根據(jù)圖靈計(jì)算理論,證明一個(gè)程序終止是不可能證明出來的即圖靈停機(jī)問題,所以這種“智能合約”語言需要保證所寫出的程序不能存在死循環(huán)。這也是為什么以太坊語言會加入gas(汽油)的原因冀瓦,通過加入gas,程序每個(gè)運(yùn)算過程都會消耗一定成本,從而不會無限制地執(zhí)行下去唧领。