1. 創(chuàng)業(yè)頭條
  2. 前沿領(lǐng)域
  3. 區(qū)塊鏈
  4. 正文

BAIC佰客云公鏈發(fā)布智能合約開發(fā)說明書!

 2018-08-24 17:55  來源:互聯(lián)網(wǎng)  我來投稿 撤稿糾錯(cuò)

  域名預(yù)訂/競價(jià),好“米”不錯(cuò)過

BAIC佰客云公鏈?zhǔn)侵荚谕七M(jìn)物聯(lián)網(wǎng)及AI之間數(shù)據(jù)互聯(lián)、交易結(jié)算、智能合約的去中心化區(qū)塊鏈技術(shù)平臺(tái),也是目前唯一一家實(shí)際落地,支持IOT設(shè)備上鏈的物聯(lián)網(wǎng)公鏈。已于本月正式上線。

目前已經(jīng)有包括智能手環(huán)、智能牙刷、智能燉盅等多個(gè)設(shè)備上鏈支持。BAIC公鏈?zhǔn)侵荚谕七M(jìn)物聯(lián)網(wǎng)及AI設(shè)備間數(shù)據(jù)交易、物物支付、智能合約的去中心化區(qū)塊鏈技術(shù)平臺(tái),也允許開發(fā)者在其協(xié)議頂端創(chuàng)建IOT級(jí)別的去中心化應(yīng)用(DAPP)。BAIC公鏈希望可以幫助越來越多的IOT數(shù)據(jù)上鏈,為全球用戶打開物聯(lián)網(wǎng)數(shù)字新資產(chǎn)的大門。本日BAIC佰客云公鏈正式對外發(fā)布智能合約開發(fā)說明書,以供開發(fā)者參考。

1. 概述

本文對BAIC公鏈的智能合約開發(fā)的相關(guān)知識(shí)做簡要說明,為智能合約開發(fā)提供示例說明。

2. 所需知識(shí)背景

2.1. C/C++

BAIC區(qū)塊鏈平臺(tái)使用Web Assembly(WASM)執(zhí)行開發(fā)者提供的應(yīng)用代碼。目前最成熟的用于構(gòu)建應(yīng)用及WASM代碼編譯的工具鏈?zhǔn)莄lang/llvm及其C/C++編譯器。從應(yīng)用的高性能特性和安全需求出發(fā),C++將成為智能合約開發(fā)的最佳語言。

2.2. 開發(fā)環(huán)境

BAIC智能合約開發(fā)需要在特定的平臺(tái)環(huán)境中開發(fā),開發(fā)者至少熟悉其中一個(gè)開發(fā)環(huán)境。 BAIC支持的開發(fā)環(huán)境:

Ubuntu 16.10 或更高

MacOS Sierra 或更高

3. 環(huán)境搭建

開發(fā)BACI智能合約,開發(fā)環(huán)境平臺(tái)需要安裝的軟件包:

v 安裝C++ /boost庫

v 安裝Clang編譯器

v 安裝BAIC官方軟件包baic-sdk

軟件包安裝完成后設(shè)置環(huán)境變量即可。

4. 智能合約開發(fā)

本節(jié)詳細(xì)描述BAIC智能合約的運(yùn)作機(jī)制和開發(fā)過程,包括智能合約的代碼編寫、代碼編譯、可執(zhí)行文件生成、文件格式描述等。

4.1. 合約開發(fā)基礎(chǔ)

4.1.1. 通信模型

BAIC智能合約通過action及共享內(nèi)存數(shù)據(jù)庫相互通信。異步通信導(dǎo)致的spam問題將由資源限制算法來解決。通信模型Inline保證執(zhí)行當(dāng)前的transaction或unwind;無論成功或失敗都會(huì)有通知。Inline 操作的scopes和authorities和原來的transaction一樣。

4.1.2. action vs transaction

一個(gè)action代表單個(gè)操作, 一個(gè)transaction是一個(gè)或多個(gè)action的集合。合約和賬戶通過action通信。action可以單個(gè)地發(fā)送,如果希望一次執(zhí)行批處理也可以集合起來發(fā)送。

4.1.3. action名的限定

action的類型實(shí)際上是base32編碼的64位整數(shù)。所以action名的最多10個(gè)字符,并且限制在字母a-z,A-Z, 0-9, 以及'_' 中。

4.1.4. transaction確認(rèn)

獲得一個(gè)transaction哈希并不等于transaction完成,它只表示該節(jié)點(diǎn)無報(bào)錯(cuò)地接受了,而其他區(qū)塊生產(chǎn)者很可能也會(huì)接受它。但要確認(rèn)該transaction,你需要在transaction歷史中查看含有該transaction的區(qū)塊數(shù)。

4.1.5. 技術(shù)限制

transaction需要在1 ms內(nèi)執(zhí)行。 transaction的執(zhí)行時(shí)間需要在*小于等于1ms否則transaction將會(huì)失敗。

最大 30 tps。 目前根據(jù)測試公網(wǎng)設(shè)置,每個(gè)賬戶最多每秒可發(fā)布30個(gè)transactions。

4.2. 智能合約文件

4.2.1. HPP

HPP是包含CPP文件所引用的變量、常量、函數(shù)的頭文件。

4.2.2. CPP

CPP文件是包含合約功能的源文件。

從代碼中可以看到創(chuàng)建的合約(example)將繼承一個(gè)基礎(chǔ)合約baic::contract,這個(gè)合約是baic基礎(chǔ)合約,所有的開發(fā)的合約都要繼承這個(gè)合約。

在類中添加方法,作為action操作。例如上面的類中action1/action2方法就是合約的action操作。

BAIC_ABI這個(gè)宏是替開發(fā)者實(shí)現(xiàn)了 apply 函數(shù),使得開發(fā)者可以專注于業(yè)務(wù)邏輯。 開發(fā)人員只需要在宏中指定合同中的代碼和操作名稱,并且所有底層C代碼映射邏輯都由宏生成。在第一個(gè)參數(shù)中填入合約名稱(如example),第二個(gè)參數(shù)是action名稱(如(action1)(action2)。

4.2.3. WASM

想要部署到BAIC區(qū)塊鏈上的任何程序都需要先編譯成WASM格式。這是區(qū)塊鏈目前能接受的格式。

一旦您完成了CPP文件的開發(fā),您可以用clang工具將它編譯成一個(gè)文本版本的WASM 文件。

簡要的生成過程如下:實(shí)際使用中要添加相關(guān)參數(shù),具體見示例代碼。

1. 把源文件編譯成bc字節(jié)碼

$ clang -c example.cpp -o example.bc

2. 把多個(gè)bc字節(jié)碼鏈接成一個(gè)linked.bc文件

$ llvm-link -only-needed -o example.linked.bc example.bc

3. 通過linked.bc文件生成二進(jìn)制s文件

$ llc -o example.s example.linked.bc

4. 將s文件轉(zhuǎn)成wast文件

$ baic-s2wast -o example.wast -s 16384 example.s

5. 將wast文件編譯成wasm文件

$ baic-wast2wasm example.wast example.wasm -n

6. 生成abi文件

$ baic-abigen -destination-file=example.abi -verbose=0 example.hpp

4.2.4. ABI

Application Binary Interface (ABI)是一個(gè)基于JSON的描述文件,是關(guān)于轉(zhuǎn)換JSON和二進(jìn)制格式的用戶actions的。ABI還描述了如何將數(shù)據(jù)庫狀態(tài)和JSON的互相轉(zhuǎn)換。一旦您通過ABI描述了您的合約,開發(fā)者和用戶就能夠用JSON和您的合約無縫交互了。生成abi過程見上文。

5. 智能合約演示

5.1. 示例代碼 本節(jié)中,我們將一步步地構(gòu)建一個(gè)example合約。開始前,先完成上文的所有步驟。

示例代碼中 action1 和 action2 都是一個(gè)動(dòng)作,一個(gè)動(dòng)作表示單個(gè)操作,而一個(gè)交易是一個(gè)或多個(gè)動(dòng)作的集合。合約和賬戶以動(dòng)作的形式進(jìn)行交流。動(dòng)作可以單獨(dú)發(fā)送,也可以組合的形式發(fā)送。

5.2. 部署步驟

附件

合約開發(fā)示例也可以參照baic-sdk包中的test示例。合約部署詳細(xì)流程參照BAIC區(qū)塊鏈智能合約部署流程。BAIC官方網(wǎng)址:www.baic.io

申請創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!

相關(guān)文章

  • 從Statter公鏈的全生態(tài)應(yīng)用場景出發(fā)探索STT的潛力

    通過創(chuàng)新應(yīng)用場景,推動(dòng)其生態(tài)系統(tǒng)的發(fā)展和貨幣的流通是每一個(gè)項(xiàng)目的必修課。StatterNetwork作為一個(gè)有著強(qiáng)大技術(shù)支撐的元宇宙項(xiàng)目,其主網(wǎng)幣STT不僅僅局限于簡單的價(jià)值儲(chǔ)存和交易媒介,而是廣泛的應(yīng)用在全生態(tài)和跨鏈生態(tài)中。本文將深入探討STT的主要應(yīng)用場景與價(jià)值。1.二級(jí)市場交易作為Statte

  • 亞洲區(qū)塊鏈學(xué)會(huì)會(huì)長:用戶破2億 波場TRON成全球最快增速公鏈

    近日,亞洲區(qū)塊鏈學(xué)會(huì)會(huì)長蔡志川博士發(fā)表了題為《波場TRON——數(shù)字未來之航,領(lǐng)航區(qū)塊鏈新時(shí)代》的文章指出,隨著新時(shí)代的來臨,區(qū)塊鏈技術(shù)和數(shù)字化經(jīng)營成為企業(yè)家升級(jí)的新引擎,孫宇晨和其創(chuàng)辦的波場TRON在過去幾年里發(fā)展迅速,尤其是在2023年,通過持續(xù)努力、技術(shù)創(chuàng)新和開放合作,波場TRON將繼續(xù)引領(lǐng)行業(yè)

    標(biāo)簽:
    區(qū)塊鏈應(yīng)用
  • 螞蟻鏈位列中國BaaS市場第一 核心技術(shù)自主可控

    9月4日,國際權(quán)威研究機(jī)構(gòu)IDC發(fā)布“中國BaaS廠商市場份額,2022”報(bào)告。報(bào)告顯示,螞蟻集團(tuán)憑借螞蟻鏈以26.6%的市場占有率位居第一,騰訊云、華為云以16.3%、11.4%分列二三位。據(jù)了解,這是螞蟻鏈連續(xù)三年中國BaaS市場第一,據(jù)了解,螞蟻鏈?zhǔn)菄鴥?nèi)代表性的區(qū)塊鏈廠商,技術(shù)完全自主研發(fā)。其

    標(biāo)簽:
    區(qū)塊鏈技術(shù)
  • 護(hù)航區(qū)塊鏈生態(tài)安全,成都鏈安一直在行動(dòng)

    2023年7月20日,成都鏈安創(chuàng)始人&CEO楊霞教授受邀在新一代信息技術(shù)安全與WEB3.0安全專題峰會(huì)上發(fā)表“區(qū)塊鏈安全態(tài)勢與技術(shù)研究”主題演講。成都鏈安楊霞教授首先介紹了全球區(qū)塊鏈安全態(tài)勢,指明目前全球區(qū)塊鏈安全事件層出不窮、居高不下,同時(shí),區(qū)塊鏈、虛擬貨幣也被一些不法分子用來從事非法活動(dòng),監(jiān)管面

    標(biāo)簽:
    區(qū)塊鏈技術(shù)
  • 美酒鏈數(shù)字酒證,打開酒類收藏新方式

    李先生是一位酒品收藏家,他對白酒的熱愛無與倫比,用心收集了許多珍貴的酒品。但是,他的收藏之旅卻遭遇到了一次大打擊。李先生為了慶祝自己生日,決定品嘗自己收藏了20年的白酒。激動(dòng)之下,他打開珍藏的白酒,只想品味一口歷經(jīng)歲月的美酒。然而,想不到的是,香氣撲鼻之際,他發(fā)現(xiàn)嘴中的味道與記憶中的完全不同。心情一

    標(biāo)簽:
    區(qū)塊鏈應(yīng)用
  • 成都鏈安榮登《嘶吼2023網(wǎng)絡(luò)安全產(chǎn)業(yè)圖譜》區(qū)塊鏈安全榜單

    成都鏈安上榜《嘶吼2023網(wǎng)絡(luò)安全產(chǎn)業(yè)圖譜》2023年7月10日,嘶吼安全產(chǎn)業(yè)研究院聯(lián)合國家網(wǎng)絡(luò)安全產(chǎn)業(yè)園區(qū)(通州園)正式發(fā)布《嘶吼2023網(wǎng)絡(luò)安全產(chǎn)業(yè)圖譜》。成都鏈安憑借自身技術(shù)實(shí)力以及在區(qū)塊鏈安全行業(yè)廣泛的品牌影響力,榮登《嘶吼2023網(wǎng)絡(luò)安全產(chǎn)業(yè)圖譜》區(qū)塊鏈安全賽道榜單。這也是成都鏈安連續(xù)第二

    標(biāo)簽:
    網(wǎng)絡(luò)安全

編輯推薦