比原項(xiàng)目倉庫:
成都創(chuàng)新互聯(lián)主營安居網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app軟件開發(fā)公司,安居h5微信小程序搭建,安居網(wǎng)站營銷推廣歡迎安居等地區(qū)企業(yè)咨詢
Github地址:https://github.com/Bytom/bytom
Gitee地址:https://gitee.com/BytomBlockchain/bytom
在比原鏈上發(fā)行資產(chǎn)比較方便快捷,使用節(jié)點(diǎn)的dashboard圖形界面操作就可以,先在 “資產(chǎn)”一欄新建資產(chǎn)
新建完資產(chǎn),需要上鏈,否則區(qū)塊不認(rèn)識(shí)你這個(gè)資產(chǎn),那么在交易中的高級(jí)交易進(jìn)行issue,點(diǎn)擊Add action,總共三個(gè)action分別是 Issue、Control with address、Spend from account
輸入賬戶的密碼,等待交易確認(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è)簡單的比較數(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)行編譯
編譯后會(huì)返回一個(gè)status 成功或者失敗,和一串 data,都是為json格式的數(shù)據(jù),主要需要 data里面的 program,即是該編譯完成的合約程序,在部署合約時(shí)需要用到。
部署合約其實(shí)就是 發(fā)起交易,在交易中帶上合約程序。通過api發(fā)起交易主要有三個(gè)步驟,先 build → sign → submit,分別對(duì)應(yīng)的api是 build-transaction、sign-transaction、submit-transaction。
build-transaction 返回的數(shù)據(jù),全部需要用到,即是 data 的所有數(shù)據(jù),對(duì)該打包好的數(shù)據(jù)進(jìn)行簽名,需要?jiǎng)?chuàng)建賬號(hào)的密鑰密碼。
如果簽名成功的話,要看返回的json里面有個(gè)sign_complete字段,此字段為true才代表成功,方可進(jìn)行submit-transaction。
獲取 sign-transaction 簽名成功返回的 raw_transaction 字段數(shù)據(jù),進(jìn)行提交交易。
如果提交成功的話,會(huì)返回交易哈希即tx_id,可以通過 get-transaction 獲取該交易的詳情。
在此合約就部署完成啦,對(duì)應(yīng)數(shù)量的資產(chǎn)也已經(jīng)被鎖在合約里面了,等待解鎖合約,解鎖成功的人可以獲得合約里的資產(chǎn)。
通過 list-unspent-outputs 獲取未花費(fèi)的合約詳情,在解鎖合約的時(shí)候也需要用到這個(gè) unspent-output id。
這里的id 可以在 get-transaction 的outputs 中找到,在outputs中找到 control_program 為剛才部署的合約program,則此筆交易的id就是這個(gè)合約的unpsent-output。
根據(jù)以上獲得的unspent-output來解鎖合約,其實(shí)解鎖合約也是發(fā)起交易,和發(fā)布合約不同的是不需要編譯,只需要build、sign、submit即可。build這里比較不一樣,筆者解鎖合約時(shí)在此處踩過太多的坑~~
根據(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)系筆者哦@小胖子