本發(fā)明涉及區(qū)塊鏈技術(shù)領(lǐng)域,具體涉及一種基于區(qū)塊鏈的智能合約實(shí)現(xiàn)方法。
背景技術(shù):
合約,指兩方面或幾方面在辦理某事時(shí),為了確定各自的權(quán)利和義務(wù)而訂立的共同遵守的條文。
傳統(tǒng)合約是寫在紙上的,簽字蓋章之后才會(huì)生效,合約的執(zhí)行過程由很多控制協(xié)議構(gòu)成,控制協(xié)議包括表格賬單等記錄的保存以及記錄的審核與協(xié)商,記錄的審核與協(xié)商通常需要第三方的參與,而合約的執(zhí)行效能只能通過法律、武力保證。
隨著信息技術(shù)的發(fā)展,通過計(jì)算機(jī)、互聯(lián)網(wǎng)和密碼理論等技術(shù)減少合約指定、控制及執(zhí)行的成本逐漸成為一種新的發(fā)展趨勢(shì)。1997年,nickszabo引入“智能合約”的概念:智能合約把合約條款嵌入到軟、硬件中,通過協(xié)議與用戶接口來促進(jìn)合約的執(zhí)行,它是我們?cè)诨ヂ?lián)網(wǎng)中形成安全、數(shù)字化關(guān)系的關(guān)鍵。也就是說,在計(jì)算機(jī)界里,合約是通過代碼的形式實(shí)現(xiàn)的。數(shù)字化的合約,存在著是否有效、容易被否認(rèn)、可能會(huì)被篡改及被黑客攻擊的風(fēng)險(xiǎn),因此數(shù)字化的合約始終可信度不高。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)上述現(xiàn)有技術(shù),本發(fā)明目的在于提供一種基于區(qū)塊鏈的智能合約實(shí)現(xiàn)方法。
為達(dá)到上述目的,本發(fā)明采用的技術(shù)方案如下:
一種基于區(qū)塊鏈的智能合約執(zhí)行方法,包括以下步驟:
步驟1、對(duì)于兩個(gè)及兩個(gè)以上有數(shù)據(jù)共享需求的用戶,根據(jù)每個(gè)用戶自身需要制定一份合約,合約用于明確各方的權(quán)利和義務(wù),并通過編程語言獲得電子化合約,由參與合約制定的各個(gè)用戶對(duì)電子化合約進(jìn)行數(shù)字簽名,獲得有效合約,簽名用以保證合約的有效性,實(shí)現(xiàn)智能合約制定;
步驟2、有效合約通過p2p的方式在區(qū)塊鏈中擴(kuò)散,區(qū)塊鏈中參與該有效合約制定的各個(gè)節(jié)點(diǎn)都收到一份有效合約并保存在對(duì)應(yīng)的區(qū)塊中,對(duì)應(yīng)的區(qū)塊中除了包含本體信息之外,還包含有效合約記錄及與有效合約記錄對(duì)應(yīng)的時(shí)間戳,實(shí)現(xiàn)智能合約在區(qū)塊鏈網(wǎng)絡(luò)中存入;
步驟3、設(shè)置有效合約定期檢查自動(dòng)機(jī)狀態(tài),逐條遍歷有效合約內(nèi)包含的狀態(tài)機(jī)、事務(wù)和觸發(fā)條件,當(dāng)事務(wù)滿足觸發(fā)條件,利用驗(yàn)證節(jié)點(diǎn)首先對(duì)事務(wù)進(jìn)行簽名驗(yàn)證,此處簽名用于確保事務(wù)的有效性,當(dāng)驗(yàn)證節(jié)點(diǎn)通過簽名驗(yàn)證之后執(zhí)行事務(wù),實(shí)現(xiàn)智能合約自動(dòng)執(zhí)行。
上述方法中,所述的步驟3,包括以下步驟:
步驟3.1、由用戶發(fā)起數(shù)據(jù)共享請(qǐng)求后產(chǎn)生相應(yīng)的事務(wù),并把用戶的操作記錄在對(duì)應(yīng)的區(qū)塊中;
步驟3.2、檢查有效合約狀態(tài)機(jī)的執(zhí)行狀態(tài),遍歷有效合約找到該事務(wù)對(duì)應(yīng)的觸發(fā)條件;
步驟3.3、當(dāng)該事務(wù)滿足觸發(fā)條件時(shí),通過驗(yàn)證節(jié)點(diǎn)對(duì)該事務(wù)進(jìn)行簽名認(rèn)證;
步驟3.3.1、當(dāng)事務(wù)通過簽名驗(yàn)證后,向數(shù)據(jù)庫(kù)發(fā)起對(duì)應(yīng)請(qǐng)求并返回用戶所需要的數(shù)據(jù),即該事務(wù)被系統(tǒng)成功執(zhí)行并通知用戶;
步驟3.3.2、若該事務(wù)不能通過驗(yàn)證節(jié)點(diǎn)的驗(yàn)證,則用戶發(fā)起的數(shù)據(jù)共享請(qǐng)求失敗,即該事務(wù)執(zhí)行失敗,系統(tǒng)返回相應(yīng)的狀態(tài)并通知用戶;
步驟3.4、在執(zhí)行過程中,由有效合約對(duì)事務(wù)實(shí)時(shí)監(jiān)督是否出現(xiàn)違背合約操作,若出現(xiàn)違背合約操作,則中止事務(wù)的執(zhí)行并將該狀態(tài)返回給用戶。
上述方法中,所述的步驟1,還包括在制定合約前,有數(shù)據(jù)共享需求的用戶在區(qū)塊鏈中進(jìn)行賬戶注冊(cè),注冊(cè)后由對(duì)應(yīng)賬戶接收區(qū)塊鏈所分配的一對(duì)公鑰和私鑰。
上述方法中,所述的步驟1,其中參與合約制定的各個(gè)用戶都是通過各自賬戶的私鑰對(duì)電子化合約進(jìn)行簽名,以確保合約的有效性。
上述方法中,所述的步驟2,其中當(dāng)有效合約通過p2p方式擴(kuò)散到區(qū)塊鏈中時(shí),由區(qū)塊鏈中的驗(yàn)證節(jié)點(diǎn)對(duì)有效合約進(jìn)行驗(yàn)證,當(dāng)一半以上驗(yàn)證節(jié)點(diǎn)通過驗(yàn)證并達(dá)成共識(shí)之后有效合約被存儲(chǔ)到對(duì)應(yīng)的區(qū)塊中。
一種基于區(qū)塊鏈的智能合約系統(tǒng),包括
智能合約指定模塊,接收由用戶合約所轉(zhuǎn)化的電子化合約;
智能合約存入模塊,接收智能合約指定模塊所傳輸?shù)挠行Ш霞s;
智能合約自動(dòng)執(zhí)行模塊,遍歷檢查由智能合約存入模塊存儲(chǔ)于區(qū)塊中的有效合約所包含的狀態(tài)機(jī)、事務(wù)和觸發(fā)條件且由檢查結(jié)果選擇地執(zhí)行事務(wù)。
上述方案中,所述的智能合約自動(dòng)執(zhí)行模塊包括智能合約執(zhí)行狀態(tài)機(jī)、用于存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)庫(kù)、用戶發(fā)起數(shù)據(jù)共享請(qǐng)求和驗(yàn)證節(jié)點(diǎn);所述的智能合約執(zhí)行狀態(tài)機(jī),接收由用戶發(fā)起數(shù)據(jù)共享請(qǐng)求生成的事務(wù)且遍歷有效合約找出事務(wù)對(duì)應(yīng)的觸發(fā)條件;
所述的驗(yàn)證節(jié)點(diǎn),接收智能合約執(zhí)行狀態(tài)機(jī)所反饋的觸發(fā)條件滿足情況且由滿足情況選擇地對(duì)事務(wù)簽名驗(yàn)證;
所述的數(shù)據(jù)庫(kù),接收驗(yàn)證節(jié)點(diǎn)所簽名驗(yàn)證事務(wù)的驗(yàn)證狀態(tài)且由驗(yàn)證狀態(tài)選擇地對(duì)發(fā)起數(shù)據(jù)共享請(qǐng)求的用戶返回?cái)?shù)據(jù)。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果:
基于區(qū)塊鏈的智能合約系統(tǒng)給我們帶來了一個(gè)去中心化的、不可篡改的、高可靠性的系統(tǒng);
不可篡改性,使得用戶不用擔(dān)心合約內(nèi)容會(huì)被更改;
高可靠性,使得用戶不用擔(dān)心系統(tǒng)在條件被滿足時(shí)合約不會(huì)被執(zhí)行;
去中心化給用戶帶來全網(wǎng)備份,完備的記錄完全可以支持事后審計(jì);
公正的規(guī)則與程序,用戶不需要去相信簽訂合約的對(duì)方,只需要相信區(qū)塊鏈系統(tǒng)能完成剩下的事就可以了。
附圖說明
圖1為本發(fā)明的總體架構(gòu)示意圖;
圖2為本發(fā)明實(shí)施例示意圖。
具體實(shí)施方式
本說明書中公開的所有特征,或公開的所有方法或過程中的步驟,除了互相排斥的特征和/或步驟以外,均可以以任何方式組合。
下面結(jié)合附圖對(duì)本發(fā)明做進(jìn)一步說明:
一種基于區(qū)塊鏈的智能合約實(shí)現(xiàn)方法,該方法包括智能合約制定步驟、智能合約存入?yún)^(qū)塊鏈網(wǎng)絡(luò)步驟和智能合約自動(dòng)執(zhí)行步驟。
所述智能合約制定步驟包括:
兩個(gè)及兩個(gè)以上有數(shù)據(jù)共享需求的用戶,根據(jù)自身需要制定一份合約,明確各方的權(quán)利和義務(wù),并通過編程語言將其電子化,合約制定各方對(duì)其進(jìn)行數(shù)字簽名保證其有效性。
所述智能合約存入?yún)^(qū)塊鏈網(wǎng)絡(luò)步驟包括:
合約通過p2p的方式在區(qū)塊鏈網(wǎng)中擴(kuò)散,參與合約制定的各個(gè)節(jié)點(diǎn)都會(huì)收到一份并保存在對(duì)應(yīng)的區(qū)塊中。區(qū)塊除了包含它原有的信息之外,還應(yīng)該包含智能合約記錄及其相應(yīng)的時(shí)間戳。
所述智能合約自動(dòng)執(zhí)行步驟包括:
智能合約定期檢查自動(dòng)機(jī)狀態(tài),逐條遍歷合約內(nèi)包含的狀態(tài)機(jī)、事務(wù)和觸發(fā)條件。一旦事務(wù)滿足觸發(fā)條件,驗(yàn)證節(jié)點(diǎn)會(huì)首先對(duì)事務(wù)進(jìn)行簽名驗(yàn)證以確保事務(wù)的有效性,當(dāng)驗(yàn)證節(jié)點(diǎn)通過驗(yàn)證之后事務(wù)將會(huì)被自動(dòng)執(zhí)行。
在本發(fā)明中,有數(shù)據(jù)共享需求的用戶都是區(qū)塊鏈的注冊(cè)賬戶,區(qū)塊鏈會(huì)給對(duì)應(yīng)賬戶返回一對(duì)公鑰和私鑰。
在本發(fā)明中,合約制定者都是通過各自的私鑰對(duì)電子化后的合約進(jìn)行簽名,以確保合約的有效性。
在本發(fā)明中,智能合約通過p2p方式擴(kuò)散到區(qū)塊鏈網(wǎng)絡(luò)中時(shí),區(qū)塊鏈中的驗(yàn)證節(jié)點(diǎn)會(huì)對(duì)它進(jìn)行驗(yàn)證,當(dāng)一半以上驗(yàn)證節(jié)點(diǎn)通過驗(yàn)證達(dá)成共識(shí)之后智能合約才會(huì)被存儲(chǔ)到對(duì)應(yīng)的區(qū)塊中。
在本發(fā)明中,智能合約執(zhí)行模塊包括智能合約執(zhí)行狀態(tài)機(jī)、存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)庫(kù)(即區(qū)塊)及用戶發(fā)起的事件請(qǐng)求(即事務(wù))及驗(yàn)證節(jié)點(diǎn)四個(gè)模塊。具體執(zhí)行步驟如下:
(1)用戶a向系統(tǒng)發(fā)起數(shù)據(jù)共享請(qǐng)求,則產(chǎn)生1個(gè)相應(yīng)的事務(wù),并把用戶a的操作記錄在對(duì)應(yīng)的區(qū)塊中;
(2)系統(tǒng)檢查智能合約狀態(tài)機(jī)的執(zhí)行狀態(tài),遍歷合約找到該事務(wù)對(duì)應(yīng)的觸發(fā)條件;
(3)該事務(wù)滿足觸發(fā)條件時(shí),系統(tǒng)會(huì)通過驗(yàn)證節(jié)點(diǎn)對(duì)該事務(wù)進(jìn)行簽名認(rèn)證,確保事務(wù)的有效性;
(4)當(dāng)事務(wù)通過驗(yàn)證后,系統(tǒng)就會(huì)向數(shù)據(jù)庫(kù)發(fā)起對(duì)應(yīng)請(qǐng)求并返回用戶a所需要的數(shù)據(jù),即該事務(wù)會(huì)被系統(tǒng)成功執(zhí)行并通知用戶a;
(5)若該事務(wù)不能通過驗(yàn)證節(jié)點(diǎn)的驗(yàn)證,則用戶a發(fā)起的請(qǐng)求失敗,即該事務(wù)執(zhí)行失敗,系統(tǒng)會(huì)返回相應(yīng)的狀態(tài)并通知用戶a;
(6)事務(wù)在執(zhí)行過程中也將一直受智能合約的監(jiān)督,一旦執(zhí)行過程出現(xiàn)違背合約的操作,事務(wù)將會(huì)中止執(zhí)行并將該狀態(tài)返回給用戶a。
實(shí)施例1
參見圖2,a用戶和b用戶之間有數(shù)據(jù)共享需求時(shí),a用戶和b用戶首先共同制定一份智能合約,并通過變成將其電子化,雙方在用自己的私鑰進(jìn)行簽名后將智能合約存到a和b對(duì)應(yīng)的區(qū)塊中,并在相應(yīng)區(qū)塊記錄對(duì)應(yīng)的時(shí)間戳。當(dāng)a用戶向b用戶共享一份數(shù)據(jù)時(shí),這是1次“數(shù)據(jù)共享行為”作為一個(gè)事務(wù)傳入?yún)^(qū)塊鏈中,當(dāng)該事務(wù)滿足智能合約觸發(fā)條件時(shí),驗(yàn)證節(jié)點(diǎn)通過對(duì)該事務(wù)進(jìn)行驗(yàn)證,驗(yàn)證通過后,該事務(wù)將會(huì)自動(dòng)執(zhí)行,否則,該事務(wù)會(huì)由于不滿足驗(yàn)證條件不會(huì)被執(zhí)行。例如:a用戶和b用戶制定的智能合約其中一條為:a用戶向b用戶共享的數(shù)據(jù),b用戶只有打開、編輯及指定時(shí)間范圍內(nèi)操作的權(quán)限。當(dāng)該合約被存儲(chǔ)在雙方對(duì)應(yīng)的區(qū)塊后,b用戶對(duì)a用戶發(fā)起數(shù)據(jù)共享請(qǐng)求,當(dāng)滿足智能合約觸發(fā)條件后,驗(yàn)證節(jié)點(diǎn)對(duì)其進(jìn)行驗(yàn)證,一旦驗(yàn)證通過,b用戶能夠順利操作a用戶共享給它的數(shù)據(jù),但這個(gè)操作將一直被智能合約所監(jiān)督。b用戶只能對(duì)a用戶共享給他的數(shù)據(jù)進(jìn)行打開、編輯并且在指定時(shí)間內(nèi)操作。一旦超出對(duì)應(yīng)時(shí)間范圍,b用戶對(duì)該數(shù)據(jù)的所有操作權(quán)限將被收回。若b用戶對(duì)該數(shù)據(jù)進(jìn)行合約之外的操作,如:復(fù)制,則b用戶也將因違反智能合約而失去對(duì)該數(shù)據(jù)的操作權(quán)限。b用戶對(duì)該數(shù)據(jù)所有的操作行為都將被記錄在對(duì)應(yīng)的區(qū)塊之中。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何屬于本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。