您的位置:首頁 > 區(qū)塊鏈 >

維基鏈智能合約采用Lua作為編碼語言 核心功能由C/C++開發(fā)

2019-07-01 15:38:29 來源: WICC維基鏈

智能合約是一種旨在以信息化方式傳播、驗證或執(zhí)行合同的計算機(jī)協(xié)議。基于區(qū)塊鏈技術(shù)實現(xiàn)的智能合約,支持可編程合約,具有去中心化、不可篡

智能合約是一種旨在以信息化方式傳播、驗證或執(zhí)行合同的計算機(jī)協(xié)議?;趨^(qū)塊鏈技術(shù)實現(xiàn)的智能合約,支持可編程合約,具有去中心化、不可篡改、過程透明可追蹤等優(yōu)點(diǎn),是由合約制定者在鏈下構(gòu)建的一套以數(shù)字形式定義的共識,發(fā)布至鏈上存儲,并于鏈上執(zhí)行。任意用戶通過私鑰簽名以提供必要的身份證明成為共識參與者,其執(zhí)行的過程是原子性的,獲得的結(jié)果也是冥等的。

實現(xiàn)合約框架的方式

作為承載DApp的最重要基石,維基鏈智能合約框架采用Lua語言作為合約的編碼語言。Lua語言具有輕量、可拓展等特性,在游戲開發(fā)、獨(dú)立應(yīng)用腳本和數(shù)據(jù)庫插件方面都已被大量地應(yīng)用。維基鏈核心功能均由C/C++開發(fā),而Lua代碼可以很容易的被C/C++ 代碼調(diào)用,也可以反過來調(diào)用C/C++的函數(shù)。所以這款學(xué)習(xí)成本低、兼容性好又具備高性能和安全的語言是構(gòu)建智能合約框架很好的編程語言。

框架使用的Lua5.3版本的虛擬機(jī),在虛擬機(jī)層設(shè)計了一個mylib函數(shù)庫以開放接口給合約層調(diào)用,其遵循了Lua標(biāo)準(zhǔn)函數(shù)庫的設(shè)計方式。與常見的Lua虛擬機(jī)不同,智能合約的代碼會在鏈上所有的節(jié)點(diǎn)包括礦工節(jié)點(diǎn)和觀察者節(jié)點(diǎn)上執(zhí)行,因此智能合約虛擬機(jī)不支持大部分Lua標(biāo)準(zhǔn)函數(shù)庫:

維基鏈智能合約框架在具備區(qū)塊鏈特性的基礎(chǔ)上,還有以下特點(diǎn):內(nèi)部貨幣系統(tǒng)、去中心化部署及運(yùn)行、代碼風(fēng)格自由且透明,通過JsonRpc接口或區(qū)塊瀏覽器還可以查看每筆合約交易的輸入、輸出信息。

mylib庫的功能

mylib庫是合約與外部環(huán)境交互的唯一接口,包含計算、驗證、查詢、資產(chǎn)管理及數(shù)據(jù)存儲等基礎(chǔ)功能,主要由以下這些接口實現(xiàn):

具體的使用方法,大家可以在維基鏈開發(fā)者中心文檔(見文末)內(nèi)查詢到。

如何開發(fā)智能合約

開始開發(fā)前,你需要學(xué)習(xí)Lua的基本語法,錢包節(jié)點(diǎn)的搭建和JsonRpc的使用以及mylib的各函數(shù)的使用方式,還需要注意智能合約框架存在以下限制:

a. 每個合約代碼需要在合約代碼頭部引入mylib庫;

b. 合約代碼總長度限制在64KB;

c. 合約參數(shù)總長度限制在4096字節(jié);

d. 合約數(shù)據(jù)庫存儲的Key和Value長度均限制在500字節(jié)。

對于合約參數(shù),在虛擬機(jī)啟動后會以Byte數(shù)組(表)的方式存放在全局變量contract中。目前的最佳實踐是將合約參數(shù)進(jìn)行類似Protobuf方式的編碼,你可以參考在開發(fā)者文檔中心里WRC20代幣的智能合約。不管是以何種方式傳遞參數(shù)給智能合約,你都需要自行設(shè)計編碼工具和合約代碼內(nèi)的解碼函數(shù)。

現(xiàn)在,維基鏈官方提供了在線合約編輯器,你可以很方便地在瀏覽器中開發(fā)、調(diào)試和發(fā)布你的智能合約。社區(qū)也有一些編解碼的工具和優(yōu)秀的合約模板庫供使用參考。

優(yōu)化升級

維基鏈核心開發(fā)團(tuán)隊仍持續(xù)地優(yōu)化智能合約框架,將Gas計算的范圍和價格調(diào)整的更合理,豐富鏈上mylib庫的功能,增加鏈下的智能合約調(diào)試開發(fā)工具,也有對其他的語言如Solidity和WebAsambly進(jìn)行兼容的計劃。(維基鏈)

關(guān)鍵詞: 維基鏈 Lua 編碼語言

精選 導(dǎo)讀

募資55億港元萬物云啟動招股 預(yù)計9月29日登陸港交所主板

萬科9月19日早間公告,萬物云當(dāng)日啟動招股,預(yù)計發(fā)行價介乎每股47 1港元至52 7港元,預(yù)計9月29日登陸港交所主板。按發(fā)行1 167億股計算,萬

發(fā)布時間: 2022-09-20 10:39
管理   2022-09-20

公募基金二季度持股情況曝光 隱形重倉股多為高端制造業(yè)

隨著半年報披露收官,公募基金二季度持股情況曝光。截至今年二季度末,公募基金全市場基金總數(shù)為9794只,資產(chǎn)凈值為269454 75億元,同比上

發(fā)布時間: 2022-09-02 10:45
資訊   2022-09-02

又有上市公司宣布變賣房產(chǎn) 上市公司粉飾財報動作不斷

再有上市公司宣布變賣房產(chǎn)。四川長虹25日稱,擬以1 66億元的轉(zhuǎn)讓底價掛牌出售31套房產(chǎn)。今年以來,A股公司出售房產(chǎn)不斷。根據(jù)記者不完全統(tǒng)

發(fā)布時間: 2022-08-26 09:44
資訊   2022-08-26

16天12連板大港股份回復(fù)深交所關(guān)注函 股份繼續(xù)沖高

回復(fù)交易所關(guān)注函后,大港股份繼續(xù)沖高。8月11日大港股份高開,隨后震蕩走高,接近收盤時觸及漲停,報20 2元 股。值得一提的是,在7月21日

發(fā)布時間: 2022-08-12 09:56
資訊   2022-08-12

萬家基金再添第二大股東 中泰證券擬受讓11%基金股權(quán)

7月13日,中泰證券發(fā)布公告,擬受讓齊河眾鑫投資有限公司(以下簡稱齊河眾鑫)所持有的萬家基金11%的股權(quán),交易雙方共同確定本次交易的標(biāo)的資

發(fā)布時間: 2022-07-14 09:39
管理   2022-07-14

央行連續(xù)7日每天30億元逆回購 對債市影響如何?

央行12日再次開展了30億元逆回購操作,中標(biāo)利率2 10%。這已是央行連續(xù)7日每天僅進(jìn)行30億元的逆回購縮量投放,創(chuàng)下去年1月以來的最低操作規(guī)

發(fā)布時間: 2022-07-13 09:38
資訊   2022-07-13

美元指數(shù)創(chuàng)近20年新高 黃金期貨創(chuàng)出逾9個月新低

由于對美聯(lián)儲激進(jìn)加息的擔(dān)憂,美元指數(shù)11日大漲近1%創(chuàng)出近20年新高。受此影響,歐美股市、大宗商品均走弱,而黃金期貨創(chuàng)出逾9個月新低。美

發(fā)布時間: 2022-07-13 09:36
資訊   2022-07-13

美股三大股指全線下跌 納斯達(dá)克跌幅創(chuàng)下記錄以來最大跌幅

今年上半年,美股持續(xù)回落。數(shù)據(jù)顯示,道瓊斯指數(shù)上半年下跌15 3%,納斯達(dá)克綜合指數(shù)下跌29 5%,標(biāo)普500指數(shù)下跌20 6%。其中,納斯達(dá)克連續(xù)

發(fā)布時間: 2022-07-04 09:51
推薦   2022-07-04

融資客熱情回升 兩市融資余額月內(nèi)增加超344億元

近期A股走強(qiáng),滬指6月以來上漲4%,融資客熱情明顯回升。數(shù)據(jù)顯示,截至6月16日,兩市融資余額1 479萬億元,月內(nèi)增加344 67億元,最近一個半

發(fā)布時間: 2022-06-20 09:41
資訊   2022-06-20

4個交易日凈買入超百億元 北向資金持續(xù)流入A股市場

北向資金凈流入態(tài)勢延續(xù)。繼6月15日凈買入133 59億元后,北向資金6月16日凈買入44 52億元。自5月27日至今,除6月13日以外,北向資金累計凈

發(fā)布時間: 2022-06-17 09:37
推薦   2022-06-17