區塊鏈 > 技術 > 正文

什么是智能合約 如何開發EOS 智能合約

區塊鏈數字貨幣板塊文章「什么是智能合約 如何開發EOS 智能合約」,本文約有1377個文字,大小約為6KB,預計閱讀時間4分鐘請您欣賞。櫻花區塊鏈門戶資訊網薈萃眾多優秀文章精選,如果想要瀏覽更多相關區塊鏈數字貨幣,可以關注本文結尾推薦的優秀文章內容。本站區塊鏈資訊雖然不乏優秀之作,但僅為大家參考使用,希望能對關注區塊鏈的人有所幫助。

  雖然智能合約(Smart Contract)這個詞現在已經很流行了,但如果你問我到底什么是智能合約?我還真不能馬上給出準確的答案。

什么是智能合約 如何開發EOS 智能合約

  可以看到,所謂智能合約中的智能,其實和人工智能中的智能(Intelligence)還是有很大的區別,之所以稱之為智能合約,也許是因為它比傳統的合約要先進,主要體現在以下幾個方面。

 

  不要小看這幾點特性,智能合約的普及,可以讓人們在交易過程中更為透明,你和一個陌生人交易,不會再是一次博弈的關系,而是多次博弈,因為所有的交易記錄都是可追蹤的,試想以下,如果你在和別人交易時,事先就知道今后還會和這個人交易,你會選擇合作還是背叛?當然是合作。

  一、什么是EOS智能合約

  真實世界的合約,簡單來說,是一組協議,給予其輸入一定的行為,它會產生相應的結果。從正規的法律合同(如金融交易)到簡單的游戲「規則」都屬于合約的范疇。典型的行為可以是轉賬(金融合約)或玩家的移動(游戲合約)。

  EOSIO智能合約軟件注冊在區塊鏈上,并在EOSIO節點上執行,它實現了「合約」的語義,并將合約的請求行為存儲在區塊鏈上,即請求賬本。

  EOS 定義的智能合約包含兩個要素:代表合約的程序和執行合約時的行為。同時,閱讀上面這段文字時,你很可能會把它和比特幣系統對應起來,其實比特幣是智能合約的一個特例:它只定義了轉賬合約,即接收UTXO(Unspent Transaction Output)、驗證簽名及創建新的UTXO;而該合約也只有一個行為--轉賬(發送UTXO)。

  和比特幣把UTXO 記錄在區塊鏈上一樣,EOS 也把所有的行為數據記錄在了區塊鏈上,唯一不同的是,EOS 是一個智能合約平臺,它不僅支持轉賬合約,現在你能看到的CPU、Bandwidth 抵押、RAM 人機交易市場、投票等都在其范疇之內,可以看到智能合約平臺是非常具有想象力的,它提供了多樣性,即便如此,它仍然由最基本的因素組成:代表合約的程序和執行合約的行為。從這個角度來看,EOS 仍然只是比特幣的擴展,所以在學習中,牢記這兩個要素,有助于在學習的過程中不至于迷失。

  二、如何開發EOS 智能合約

  開發EOS 智能合約,你需要完成該合約對應的程序,并將其上傳到EOS 平臺上,計算機語言方面,目前智能合約只能用C++開發,并將其編譯成WebAssembly兼容的可執行程序,因為Go語言將支持WebAssembly,所以未來你也可以使用Golang來寫智能合約,除此之外,也有開發者正在將EOS 接入JavaScript虛擬機和Python虛擬機,所以在不久的將來,開發智能合約將不再受C++這座大山的限制。

  即便現在只能使用C++語言開發,要實現一個EOS 智能合約也并不復雜,實際上你只需要開發該合約所提供的行為即可,從這個角度來講,合約和行為的關系,就好比WebService和其提供的Interface 之間的關系。假設目前eosio.token這個合約不存在,需要你來實現它,你會怎么做?eosio.token這個合約主要完成了EOSIO 平臺中各種token 的創建、發行和轉賬功能,所以你應該首先定義其具備的3個行為:

  1、create:用于創建新的token

  2、issue:用于發行token,有點像銀行印鈔的功能

  3、transfer:讓用戶之間可以進行轉賬

  同時,和應用程序提供的接口(interface)一樣,你需要將所有的行為暴露出去,這樣使用者才可以進行調用。EOSIO 為每個合約提供了統一的行為入口--apply函數,你可以把它理解為WebService 中的路由。

  以上代碼將create、issue和transfer三個行為都暴露到了外部。也就是說,使用者要執行該合約,首先進入的是apply函數,然后根據具體的行為,再進入到不同的create、issue或transfer中運行。

  為了完成eosio.token智能合約,我們已經實現了其所具備的行為,以及將這些行為通過apply函數暴露到外部,根據EOSIO 對智能合約的定義,這里似乎少了點什么,的確,在實現的過程中,我們遺漏了最為關鍵的步驟:將用戶請求智能合約的行為存儲到區塊鏈上。

  大家都知道區塊鏈是一種時間序列的鏈表式數據庫,即它是一種以交易為單位、按照時間的順序、以鏈表形式存儲的數據結構,鏈表的特點是檢索困難,所以通常區塊鏈系統都會配備一個KV 數據庫來加速檢索,EOSIO 也不例外,它提供一個仿boost:multi_index(Boost是擴展C++的強大的功能庫)的數據結構,也叫multi_index數據庫,這種數據庫相比傳統的KV 數據庫來說,優勢在于它可以對同一份數據建多級索引,檢索效率更高。

  在EOSIO 中,multi_index數據庫除了幫助加速檢索外,它還是智能合約寫區塊鏈的橋梁,所以要寫好智能合約,對multi_index的學習是必不可少的,相信你也猜到了,multi_index使用的資源就是EOSIO 系統中最重要的--RAM,更加說明了它的重要性。

  下面這張圖很好的說明了EOS 處理智能合約的流程,從上至下,系統會依次執行每個合約,從左至右,對每個合約,系統會為其分配一個apply上下文,不同合約之間的上下文是隔離的,不會互相影響。

  

什么是智能合約 如何開發EOS 智能合約

 

  以上,是你寫一個EOS 智能合約的要點,如果你讀了這些內容后,覺得寫一個智能合約不是什么難事兒,那么這篇文章的目的就達到了。

  總結一下,這篇文章主要講述了什么是智能合約,EOS 智能合約具體又指什么,以及寫一個EOS 智能合約的關鍵,它們是:實現既定合約中包含的行為,將行為暴露給外部學會使用multi_index數據庫接口。

以上便是櫻花區塊鏈給大家分享的關于「什么是智能合約 如何開發EOS 智能合約」http://www.406016.tw/qkljs/jishu_744.html的相關信息了,希望能幫助到大家,更多區塊鏈相關內容,敬請關注櫻花區塊鏈!

猜你喜歡

全球穩定幣與金融穩定

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

原文地址:

pc蛋蛋在线开奖工具