????????區(qū)塊鏈這么高大上的東西长酗,如何為我們所用呢?難道要我們每個(gè)公司需要開(kāi)發(fā)一個(gè)完整的區(qū)塊鏈桐绒,來(lái)實(shí)現(xiàn)他們的相關(guān)業(yè)務(wù)么花枫?要知道開(kāi)發(fā)一個(gè)完整的區(qū)塊鏈難度是非常大的刻盐,需要解決很多的問(wèn)題。要是這樣的話(huà)劳翰,區(qū)塊鏈對(duì)于普通人和普通企業(yè)還有什么用處敦锌?看看現(xiàn)在區(qū)塊鏈的情況,其實(shí)是解決了這個(gè)問(wèn)題的佳簸。用什么方法來(lái)解決的呢乙墙?那就是“智能合約”。
????????智能合約生均,因?yàn)橛小爸悄堋倍职硖耄妥詭А安幻饔X(jué)厲”的光環(huán)。這么潮的東西马胧,怎么就成了比特幣之外汉买,幾乎所有基礎(chǔ)鏈的標(biāo)配了呢?用一個(gè)通俗的說(shuō)法來(lái)說(shuō)佩脊,區(qū)塊鏈如何搭建了公路蛙粘,而智能合約如同公路上跑的一輛輛的車(chē)。有公路而沒(méi)有車(chē)威彰,那么公路建來(lái)就沒(méi)有一點(diǎn)用處出牧,而有車(chē)卻沒(méi)有公路,那么車(chē)也就失去了存在的意義歇盼。
????????今天我們就來(lái)聊聊這個(gè)神乎其神的東西——智能合約舔痕。
????????首先來(lái)看看智能合約在百度上的解釋“是一種旨在以信息化方式傳播、驗(yàn)證或執(zhí)行合同的計(jì)算機(jī)協(xié)議豹缀。智能合約允許在沒(méi)有第三方的情況下進(jìn)行可信交易伯复,這些交易可追蹤且不可逆轉(zhuǎn)⌒象希”
????????這個(gè)解釋里面有這么幾點(diǎn)边翼,1:計(jì)算機(jī)協(xié)議 2:允許沒(méi)有第三方的情況下 3:可信交易 4:可追蹤
????????這4點(diǎn)可以說(shuō)是智能合約的特點(diǎn),從這4點(diǎn)來(lái)看鸣剪,我們?cè)俸蛥^(qū)塊鏈結(jié)合起來(lái)组底,就很好理解了——
????????智能合約,就是一段代碼筐骇,這個(gè)代碼可以在沒(méi)有第三方參與的情況下進(jìn)行可信的交易债鸡,而且能夠?qū)⒔灰仔畔?xiě)入到區(qū)塊鏈中,因?yàn)閰^(qū)塊鏈?zhǔn)强勺粉櫟摹?/p>
????????這樣理解铛纬,智能合約就沒(méi)有什么神秘的地方了厌均。它就是代碼。這個(gè)代碼可以在某些事件發(fā)生的時(shí)候會(huì)自動(dòng)的執(zhí)行告唆,并將執(zhí)行結(jié)果上區(qū)塊鏈棺弊。
????????看吧它一點(diǎn)也不神秘晶密,不就是我們碼農(nóng)寫(xiě)的代碼么?不就是將結(jié)果提交給區(qū)塊鏈么模她?一點(diǎn)也不神秘稻艰。
????????接下來(lái)我們來(lái)簡(jiǎn)單聊聊目前最為主流的區(qū)塊鏈2.0的智能合約,聊聊它是如何部署的侈净?如何執(zhí)行的尊勿?
????????首先我們來(lái)說(shuō)一下智能合約的發(fā)布過(guò)程吧:
????????第一步:用戶(hù)A按照智能合約的編寫(xiě)要求編寫(xiě)并發(fā)布一個(gè)智能合約,以太坊將這個(gè)智能合約當(dāng)做一次交易來(lái)進(jìn)行處理畜侦,并把這次交易發(fā)送給隨機(jī)用戶(hù)B元扔。
????????第二步:用戶(hù)B檢測(cè)這個(gè)智能合約是否合法性(主要指交易是否有效、合約格式是否正確旋膳、交易的簽名是否合法以及發(fā)布這個(gè)合約的賬戶(hù)上面在自己的節(jié)點(diǎn)(機(jī)器)上是否有足夠的費(fèi)用等等)澎语。
? ? ? ? ? ? ? ? 1)如果不合法,則返回失敗验懊。
? ? ? ? ? ? ? ? 2)如果合法擅羞,用戶(hù)B就將這個(gè)交易放在一個(gè)交易池里面,并向其它的節(jié)點(diǎn)(機(jī)器)轉(zhuǎn)發(fā)鲁森。
????????第三步:其它的節(jié)點(diǎn)(機(jī)器)也做和用戶(hù)B一樣的動(dòng)作。
????????這樣振惰,這個(gè)交易就可以全網(wǎng)廣播了歌溉。
????????第四步:得到記賬權(quán)的節(jié)點(diǎn),創(chuàng)建合約賬戶(hù)骑晶,并在這個(gè)合約賬戶(hù)的空間里面部署這個(gè)合約痛垛,并進(jìn)行全網(wǎng)廣播,廣播的時(shí)候會(huì)帶有這個(gè)合約的地址桶蛔。
????????第五步:其它節(jié)點(diǎn)(機(jī)器)得到這個(gè)區(qū)塊后匙头,從交易池里面把發(fā)布這個(gè)合約的交易刪除,同時(shí)同步區(qū)塊仔雷,將合約部署到自己的本地蹂析。
????????這樣一來(lái),網(wǎng)絡(luò)中的所有節(jié)點(diǎn)(機(jī)器)在本地都擁有了這個(gè)智能合約碟婆,而且智能合約的地址都是相同的电抚。
????????下來(lái)我們?cè)賮?lái)說(shuō)明一次轉(zhuǎn)賬交易:張三轉(zhuǎn)100塊錢(qián)給李四。
這個(gè)時(shí)候竖共,張三蝙叛、李四、智能合約公给,就形成了三方借帘。
現(xiàn)在來(lái)看看整個(gè)過(guò)程是怎么樣的:
????????第一步:張三調(diào)用智能合約接口(如同將自己的100塊錢(qián)交給第三方一樣)蜘渣。
????????第二步:智能合約檢查,張三里面是否存在100塊錢(qián)(如同第三方驗(yàn)資一樣)肺然,這里自然會(huì)出現(xiàn)兩個(gè)結(jié)果:
? ? ? ? ? ? 1):如果張三賬號(hào)中沒(méi)有100塊錢(qián)蔫缸,那么這筆交易就到此為止,以失敗而告終狰挡。
? ? ? ? ? ? 2):如果張三賬號(hào)中有100塊錢(qián)捂龄,那么智能合約繼續(xù)運(yùn)行。
????????第三步:智能合約從張三賬號(hào)中減去100塊錢(qián)加叁。
????????第四步:智能合約向李四賬號(hào)中添加100塊錢(qián)倦沧。
????????第五步:智能合約將這個(gè)信息廣播給所有的節(jié)點(diǎn)。
????????上面兩個(gè)過(guò)程就是發(fā)布智能合約以及智能合約如何運(yùn)行的邏輯它匕,不管以太坊的使用的solidity展融,還是EOS使用的C++,它們的邏輯都是這樣的豫柬。
????????今天大概給大家說(shuō)了一下什么是智能合約告希、智能合約是如何發(fā)布的、智能合約是如何運(yùn)行的烧给。通過(guò)今天的內(nèi)容燕偶,希望能夠幫助大家說(shuō)清楚什么是智能合約,解開(kāi)智能合約的神秘面紗础嫡。