GKC智能合約簡介

推荐 2020-04-25 18:59:14 16
一、什麼是智能合約?

智能合約這個術語已經在過去數十年被用於描述不同領域的事物。

在20世紀90年代,密碼學家Nick Szabo定義了這個術語,並把它定義為“一系列承諾,通過數位化形式定義,包括一組協議和在協議中的各方執行的其他承諾”。

在這裏,我們將智能合約指代那些不可改變的電腦程式,以確定性的方式運行在GKC的虛擬機上,也就是我們常說的GKC去中心化世界電腦。

拆解這個定義:

第一、電腦程式

簡單的說,智能合約就是電腦程式,在這個上下文中,合約這個詞並沒有任何法律上相關的含義

第二、不可改變

一旦部署之後,智能合約的代碼就不可更改。不同於傳統的軟體,更改智能合約的唯一辦法就是部署一個新的實例

第三、確定性的

對於觸發智能合約執行的交易上下文,或執行時的GKC區塊鏈狀態,智能合約執行結果的輸出對於每一個運行或調用它的人來說都是一樣的。

第四、GKC虛擬機上下文

智能合約運行在一個非常有限的執行環境中,它們可以訪問自己的狀態,調用合約交易的上下文資訊,以及有關最近區塊的資訊

第五、去中心化的世界電腦

EVM作為每一個以GKC節點的本地實例運行,但是因為所有EVM都是運行在相同的初始狀態,並且會輸出完全相同的最終狀態,所以整個系統就是一臺世界電腦。

 

二、智能合約的生命週期

(1)關於合約實例地址

智能合約通常採用高級編程語言編寫。但是為了在GKC虛擬機上運行,這些代碼必須編譯為EVM可以執行的底層位元組碼。編譯完成後,這些代碼會通過一個特殊的合約創建交易部署到區塊鏈上,這個特殊交易的目標地址是被稱為合約創建地址。

每一個合約實例都通過GKC地址來表示,這個地址由合約的創建交易在創建帳戶和亂數時生成。合約實例地址可以在交易中用作收款地址,向合約地址發送GKC,或者通過地址調用合約實例中的函數。請注意,不同於外部帳戶,對於新建的智能合約實例,並沒有與之關聯的私鑰。作為合約創建者,也可不會收到一個合約帳戶的私鑰,因為它並不存在,我們可以認為,智能合約就是自己的主人。

(2)關於合約調用

需要注意,合約只有在被交易調用時才會執行。GKC上所有合約的執行,歸根結底,都是由來自外部帳戶所創建的交易所觸發的。一個合約可以調用另一個合約,然後一層層的在合約之間不斷調用,但是這個執行鏈條中的第一個合約的執行,一定是外部帳戶所創建的交易觸發的。

智能合約永遠不會“自動運行”,或者“在後臺運行”。在沒有交易觸發執行的情況下,合約永遠處在等待調用的狀態。另外還需要注意的是,任何情況下智能合約的“併發執行”都是沒有意義的:GKC全世界节点可以被認為是一臺單線程的超级電腦。

(3)合約實例的刪除

合約實例的代碼是不能被更改的。然而,合約實例可以被刪除,從它的地址把代碼和合約實例的內部狀態(存儲)清空,讓這個地址變成一個空帳戶。合約實例被清空後,任何向這個地址發起的交易都不會引發任何代碼的執行,因為這個地址對應的合約實例已經沒有代碼可以執行了。

要刪除合約實例,需要執行名為SELFDESTRUCT的EVM位元組碼。這個操作會產生負的gas消耗 ,也就是會提供gas退款,這也會激勵人們通過刪除存儲狀態的方式釋放資源。

當然了,刪除合約並不會清除這個合約之前交易的歷史記錄,因為區塊鏈本身是不可變的。

 

三、關於GKC高級編程語言

EVM是一個運行位元組碼這種特殊形式機器碼的虛擬機,類似運行X86_64指令集的電腦CPU.

當然了,可以直接使用位元組碼開發智能合約,但是EVM位元組碼對於程式員來說非常的難讀和難懂。因此,大多數開發者使用高級編程語言編寫智能合約,然後通過編譯器轉化為EVM位元組碼。

智能合約運行在一個高度隔離並且機器簡單的執行環境(EVM)中,大多數常見的用戶介面、操作系統介面和硬體介面在EVM環境中都不復存在,另外跟 EVM相關的一系列系統參數和函數也需要在編程語言中有所體現和支持。

總體而言呢,編程語言可分為兩類:聲明式的和指令式的,也對應成為函數式的和過程式的。在聲明式的編程語言中,我們通過編寫函數來表示程式的邏輯,但是不體現出程式的執行過程。聲明式編程語言包括Haskell和SQl。指令式編程語言與之相反,是指程式員編寫一組包含了邏輯和執行流程的指令。指令式編程語言包括C++和Java。有些編程語言是混合式的,包括Lisp、JavaScript和Python。

儘管指令式程式代碼更容易編寫和閱讀,大多數程式員也都在使用但卻很難編寫那些按部就班執行的代碼。程式的任何部分都有可能改變狀態,這使得我們很難推斷程式的執行,並為非預期的副作用和錯誤引入了許多機會。聲明式程式也許更難編寫,但避免了副作用,從而更容易理解(和控制)程式的行為方式——程式的每個部分都是相互獨立的,降低了理解程式的難度。

四、GKC合約的應用程式二進位介面

在電腦軟體中,應用程式二進位介面(Application Binary Interface,ABI),是指兩個程式模組之間的介面,通常一個在操作系統層面,一個在用戶程式層面。ABI定義了數據結構和函數如何在機器指令中被訪問。需要注意,這並不是我們常說的API, API 定義了高級的、供程式員閱讀和使用的源代碼介面。ABI 是向機器指令層面編碼和解碼並傳送數據的主要方式。

在GKC中,ABI 用來編碼合約中對EVM的調用和從交易中獲取數據的調用。ABI的目的是定義合約中哪一個函數可以被調用,並且描述這個函數接收的參數和返回的數據。合約ABI 使用JSON格式表示



五、GKC智能合約的應用

對比智能合約和傳統合約,傳統合約受到諸如主客觀、經濟成本、適用範圍、執行力度和執行時間等因素的影響,而智能合約便可以在很大程度上解決這些因素的影響。智能合約的主要特點可以簡單地概括為:去中心化、智能高效(自動執行、無人為干預)、準確、低成本。

眾所周知,區塊鏈最大的特質就是去中心化,在不信任中創造出信任。基於區塊鏈的智能合約是將合約以數位化的形式寫入到區塊鏈中,在區塊鏈優秀特性的加持下自然的具備了去中心化的特點,合約內容公開透明、條理清晰且不可篡改,編程語言就是規束合約的法律條文,交易雙方可完全放心的進行交易。

智能合約的整個產生和執行過程都是可追溯、不可篡改的。一旦觸發合約就會立即執行,自動按照合約規範進行操作。整個過程智能高效,短時間快速完成更是體現了它的準確和經濟。

      得益於良好的系統設計,GKC 的智能合約平臺相比傳統平臺有更高的安全性、 更高的TPS 。本平臺不光可以發行TOKEN ,更可以開發各種在ETH 上無法實現的超級複雜的DAPP ;比如去中心化的P2P 金融平臺、去中心化交易所等等、充分滿足了用戶對高度安全、高度公平、高度去中心化的強烈需求。歡迎有開發經驗的朋友來GKC 智能合約平臺共商大計、共同發展、共創輝煌!


TAG:
推荐文章
GKC智能合約簡介 16
GKC上線AUEX.CASH了!! 20
DMC超級引流生態鏈团队在线火爆招募中!!!