溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Bytom資產(chǎn)發(fā)行與部署合約教程

發(fā)布時(shí)間:2020-08-14 09:27:07 來源:網(wǎng)絡(luò) 閱讀:294 作者:比原鏈Bytom 欄目:編程語(yǔ)言

比原項(xiàng)目倉(cāng)庫(kù):

Github地址:https://github.com/Bytom/bytom

Gitee地址:https://gitee.com/BytomBlockchain/bytom

發(fā)行資產(chǎn)

在比原鏈上發(fā)行資產(chǎn)比較方便快捷,使用節(jié)點(diǎn)的dashboard圖形界面操作就可以,先在 “資產(chǎn)”一欄新建資產(chǎn)
Bytom資產(chǎn)發(fā)行與部署合約教程

新建完資產(chǎn),需要上鏈,否則區(qū)塊不認(rèn)識(shí)你這個(gè)資產(chǎn),那么在交易中的高級(jí)交易進(jìn)行issue,點(diǎn)擊Add action,總共三個(gè)action分別是 IssueControl with address、Spend from account
Bytom資產(chǎn)發(fā)行與部署合約教程
Bytom資產(chǎn)發(fā)行與部署合約教程
Bytom資產(chǎn)發(fā)行與部署合約教程

輸入賬戶的密碼,等待交易確認(rèn),一旦確認(rèn)成功資產(chǎn)就會(huì)發(fā)到剛才指定的地址上??梢灾话l(fā)一個(gè)地址,也可以發(fā)到多個(gè)地址,添加多個(gè)Control with address 即可。

編譯合約

編譯合約通過api進(jìn)行編譯,準(zhǔn)備好postman或者其他可以post的工具,筆者使用的是postman。
筆者看了官方的多個(gè)合約模版,于是準(zhǔn)備部署一個(gè)簡(jiǎn)單的比較數(shù)字大小的合約。即是編譯合約時(shí)會(huì)指定數(shù)值,如果解鎖合約的人帶上大于此數(shù)值則可以獲得合約里的資產(chǎn)。
筆者的合約代碼如下:

contract equals(target:Integer) locks value{
    clause reveal(current:Integer){
        verify current >= target 
        unlock value
    }
}

寫好了合約代碼,接下來通過 compile 的api 對(duì)合約進(jìn)行編譯
Bytom資產(chǎn)發(fā)行與部署合約教程

編譯后會(huì)返回一個(gè)status 成功或者失敗,和一串 data,都是為json格式的數(shù)據(jù),主要需要 data里面的 program,即是該編譯完成的合約程序,在部署合約時(shí)需要用到。
Bytom資產(chǎn)發(fā)行與部署合約教程

部署合約

部署合約其實(shí)就是 發(fā)起交易,在交易中帶上合約程序。通過api發(fā)起交易主要有三個(gè)步驟,先 build → sign → submit,分別對(duì)應(yīng)的api是 build-transaction、sign-transaction、submit-transaction。

build-transaction

Bytom資產(chǎn)發(fā)行與部署合約教程

sign-transaction

build-transaction 返回的數(shù)據(jù),全部需要用到,即是 data 的所有數(shù)據(jù),對(duì)該打包好的數(shù)據(jù)進(jìn)行簽名,需要?jiǎng)?chuàng)建賬號(hào)的密鑰密碼。
Bytom資產(chǎn)發(fā)行與部署合約教程

如果簽名成功的話,要看返回的json里面有個(gè)sign_complete字段,此字段為true才代表成功,方可進(jìn)行submit-transaction。

submit-transaction

獲取 sign-transaction 簽名成功返回的 raw_transaction 字段數(shù)據(jù),進(jìn)行提交交易。
Bytom資產(chǎn)發(fā)行與部署合約教程

如果提交成功的話,會(huì)返回交易哈希即tx_id,可以通過 get-transaction 獲取該交易的詳情。
在此合約就部署完成啦,對(duì)應(yīng)數(shù)量的資產(chǎn)也已經(jīng)被鎖在合約里面了,等待解鎖合約,解鎖成功的人可以獲得合約里的資產(chǎn)。

獲取部署好的合約unspent-output

通過 list-unspent-outputs 獲取未花費(fèi)的合約詳情,在解鎖合約的時(shí)候也需要用到這個(gè) unspent-output id。
這里的id 可以在 get-transaction 的outputs 中找到,在outputs中找到 control_program 為剛才部署的合約program,則此筆交易的id就是這個(gè)合約的unpsent-output。
Bytom資產(chǎn)發(fā)行與部署合約教程

解鎖合約

build-transaction

根據(jù)以上獲得的unspent-output來解鎖合約,其實(shí)解鎖合約也是發(fā)起交易,和發(fā)布合約不同的是不需要編譯,只需要build、sign、submit即可。build這里比較不一樣,筆者解鎖合約時(shí)在此處踩過太多的坑~~
Bytom資產(chǎn)發(fā)行與部署合約教程

根據(jù)以上的參數(shù)進(jìn)行build-transaction即可,注意value需要轉(zhuǎn)為十六進(jìn)制??!如果符號(hào)合約條件即可解鎖成功,否則區(qū)塊確認(rèn)解鎖合約的交易時(shí)會(huì)失敗。

sign-transaction和submit-transaction 參考部署合約的就可以,完全是一樣的。到此,發(fā)布和解鎖合約就全部完成啦。學(xué)會(huì)了嗎,快去實(shí)踐哦,有問題也可以聯(lián)系筆者哦@小胖子

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI