TMT观察网_独特视角观察TMT行业

當你說智能合約,你說的到底是什么(EOS篇)區塊鏈

巴比特資訊 2018-08-13 03:35
分享到:
導讀

和比特幣把UTXO記錄在區塊鏈上一樣,EOS也把所有的行為數據記錄在了區塊鏈上,唯一不同的是,EOS是一個智能合約平臺,它不僅支持轉賬合約,現在你能看到的CPU、Bandwidth抵押、RAM人機交易市場、投票等都在其范疇之內。

雖然智能合約(Smart Contract)這個詞現在已經很流行了,但如果你問我到底什么是智能合約?我還真不能馬上給出準確的答案,為此,我查看了 wikipedia 上關于 Smart Contract 的詞條 (http://t.cn/RVQQ1Ja):

A smart contract is a computer protocol intended to digitally facilitate, verify, or enforce the negotiation or performance of a contract. Smart contracts allow the performance of credible transactions without third parties. These transactions are trackable and irreversible.

Proponents of smart contracts claim that many kinds of contractual clauses may be made partially or fully self-executing, self-enforcing, or both. The aim of smart contracts is to provide security that is superior to traditional contract law and to reduce other transaction costs associated with contracting.

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

你相信合約就行了,不需要第三方參與

它是可追蹤的,不可逆的

它是可以自動執行的

不要小看這幾點特性,智能合約的普及,可以讓人們在交易過程中更為透明,你和一個陌生人交易,不會再是一次博弈的關系,而是多次博弈,因為所有的交易記錄都是可追蹤的,試想以下,如果你在和別人交易時,事先就知道今后還會和這個人交易,你會選擇合作還是背叛?當然是合作。所以,相比于傳統的合約,智能合約可以減少交易成本(Transaction cost (http://t.cn/RDjUw0D)),從而整體的提升社會效率。

什么是 EOS 智能合約

在 EOSIO 開發者文檔 (http://t.cn/RDjUT09) 中,有這么一段描述

A real-world contract, simply stated, is an agreement governing outcomes for actions, given a set of inputs. A contract can range from formal legal contracts (e.g., a financial transaction) to something as simple as the “rules” of a game. Typical actions can be things such as fund transfers (in the case of a financial contract) or game moves (in the case of a game contract).

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

An EOSIO Smart Contract is software registered on the blockchain and executed on EOSIO nodes, that implements the semantics of a “contract” whose ledger of action requests are being stored on the blockchain.

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個行為:

create:用于創建新的 token

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

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

同時,和應用程序提供的接口(interface)一樣,你需要將所有的行為暴露出去,這樣使用者才可以進行調用。EOSIO 為每個合約提供了統一的行為入口——apply 函數,你可以把它理解為 WebService 中的路由(routing),同時,為了方便開發,EOSIO 提供了一個宏,你只需要添加一行代碼,就可以實現 apply 功能。

以上代碼將 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 上下文,不同合約之間的上下文是隔離的,不會互相影響。

2

以上,是你寫一個 EOS 智能合約的要點,如果你讀了這些內容后,覺得寫一個智能合約不是什么難事兒,那么這篇文章的目的就達到了,下一步,你應該就可以閱讀 contracts/eosio.token  下的代碼了。

總結一下,這篇文章主要講述了什么是智能合約,EOS 智能合約具體又指什么,以及寫一個 EOS 智能合約的關鍵,它們是:

實現既定合約中包含的行為,將行為暴露給外部;

學會使用 multi_index 數據庫接口。

合約 智能 行為 EOSIO contract
分享到:

1.TMT觀察網遵循行業規范,任何轉載的稿件都會明確標注作者和來源;
2.TMT觀察網的原創文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創的行為TMT觀察網或將追究責任;
3.作者投稿可能會經TMT觀察網編輯修改或補充。


專題報道

主站蜘蛛池模板: 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | 超声波焊接机_超音波熔接机_超声波塑焊机十大品牌_塑料超声波焊接设备厂家 | 胶原检测试剂盒,弹性蛋白检测试剂盒,类克ELISA试剂盒,阿达木单抗ELISA试剂盒-北京群晓科苑生物技术有限公司 | PC阳光板-PC耐力板-阳光板雨棚-耐力板雨棚,厂家定制[优尼科板材] | 在线钠离子分析仪-硅酸根离子浓度测定仪-油液水分测定仪价格-北京时代新维测控设备有限公司 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | MVR蒸发器厂家-多效蒸发器-工业废水蒸发器厂家-康景辉集团官网 | 蚂蚁分类信息系统 - PHP同城分类信息系统 - MayiCMS | 不锈钢散热器,冷却翅片管散热器厂家-无锡市烨晟化工装备科技有限公司 | 电杆荷载挠度测试仪-电杆荷载位移-管桩测试仪-北京绿野创能机电设备有限公司 | 网站建设,北京网站建设,北京网站建设公司,网站系统开发,北京网站制作公司,响应式网站,做网站公司,海淀做网站,朝阳做网站,昌平做网站,建站公司 | 森旺-A级防火板_石英纤维板_不燃抗菌板装饰板_医疗板 | 浙江建筑资质代办_二级房建_市政_电力_安许_劳务资质办理公司 | 杭州网络公司_百度SEO优化-外贸网络推广_抖音小程序开发-杭州乐软科技有限公司 | 万博士范文网-您身边的范文参考网站Vanbs.com | 骨密度检测仪_骨密度分析仪_骨密度仪_动脉硬化检测仪专业生产厂家【品源医疗】 | 铁艺,仿竹,竹节,护栏,围栏,篱笆,栅栏,栏杆,护栏网,网围栏,厂家 - 河北稳重金属丝网制品有限公司 山东太阳能路灯厂家-庭院灯生产厂家-济南晟启灯饰有限公司 | hc22_hc22价格_hc22哈氏合金—东锜特殊钢 | 硬齿面减速机_厂家-山东安吉富传动设备股份有限公司 | 橡胶膜片,夹布膜片,橡胶隔膜密封,泵阀设备密封膜片-衡水汉丰橡塑科技公司网站 | 玻璃钢型材-玻璃钢风管-玻璃钢管道,生产厂家-[江苏欧升玻璃钢制造有限公司] | ◆大型吹塑加工|吹塑加工|吹塑代加工|吹塑加工厂|吹塑设备|滚塑加工|滚塑代加工-莱力奇塑业有限公司 | 扫地车厂家-山西洗地机-太原电动扫地车「大同朔州吕梁晋中忻州长治晋城洗地机」山西锦力环保科技有限公司 | 全国冰箱|空调|洗衣机|热水器|燃气灶维修服务平台-百修家电 | 武汉创亿电气设备有限公司_电力检测设备生产厂家 | ALC墙板_ALC轻质隔墙板_隔音防火墙板_轻质隔墙材料-湖北博悦佳 | sus630/303cu不锈钢棒,440C/430F/17-4ph不锈钢研磨棒-江苏德镍金属科技有限公司 | 高清视频编码器,4K音视频编解码器,直播编码器,流媒体服务器,深圳海威视讯技术有限公司 | 锡膏喷印机-全自动涂覆机厂家-全自动点胶机-视觉点胶机-深圳市博明智控科技有限公司 | 不锈钢列管式冷凝器,换热器厂家-无锡飞尔诺环境工程有限公司 | 杭州月嫂技术培训服务公司-催乳师培训中心报名费用-产后康复师培训机构-杭州优贝姆健康管理有限公司 | 喷播机厂家_二手喷播机租赁_水泥浆洒布机-河南青山绿水机电设备有限公司 | 真空包装机-诸城市坤泰食品机械有限公司 | 彩超机-黑白B超机-便携兽用B超机-多普勒彩超机价格「大为彩超」厂家 | 123悬赏网_发布悬赏任务_广告任务平台 | 超声波焊接机_超音波熔接机_超声波塑焊机十大品牌_塑料超声波焊接设备厂家 | 高低温万能试验机-复合材料万能试验机-馥勒仪器 | 苏州伊诺尔拆除公司_专业酒店厂房拆除_商场学校拆除_办公楼房屋拆除_家工装拆除拆旧 | 山东石英砂过滤器,除氟过滤器「价格低」-淄博胜达水处理 | 上海盐水喷雾试验机_两厢式冷热冲击试验箱-巨怡环试 | 阁楼货架_阁楼平台_仓库仓储设备_重型货架_广州金铁牛货架厂 |