1. 程式人生 > >BTMの發行資產到部署合約及解鎖合約

BTMの發行資產到部署合約及解鎖合約

發行資產

在比原鏈上發行資產比較方便快捷,使用節點的dashboard圖形介面操作就可以,先在 “資產”一欄新建資產

新建完資產,需要上鍊,否則區塊不認識你這個資產,那麼在交易中的高階交易進行issue,點選Add action,總共三個action分別是 IssueControl with addressSpend from account

輸入賬戶的密碼,等待交易確認,一旦確認成功資產就會發到剛才指定的地址上。可以只發一個地址,也可以發到多個地址,新增多個Control with address 即可。

編譯合約

編譯合約通過api進行編譯,準備好postman或者其他可以post的工具,筆者使用的是postman。

筆者看了官方的多個合約模版,於是準備部署一個簡單的比較數字大小的合約。即是編譯合約時會指定數值,如果解鎖合約的人帶上大於此數值則可以獲得合約裡的資產。

筆者的合約程式碼如下:

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

寫好了合約程式碼,接下來通過 compile 的api 對合約進行編譯

編譯後會返回一個status 成功或者失敗,和一串 data,都是為json格式的資料,主要需要 data裡面的 program,即是該編譯完成的合約程式,在部署合約時需要用到。

部署合約

部署合約其實就是 發起交易,在交易中帶上合約程式。通過api發起交易主要有三個步驟,先 build → sign → submit,分別對應的api是 build-transaction、sign-transaction、submit-transaction。

build-transaction

sign-transaction

build-transaction 返回的資料,全部需要用到,即是 data 的所有資料,對該打包好的資料進行簽名,需要建立賬號的金鑰密碼。

如果簽名成功的話,要看返回的json裡面有個sign_complete欄位,此欄位為true才代表成功,方可進行submit-transaction。

submit-transaction

獲取 sign-transaction 簽名成功返回的 raw_transaction 欄位資料,進行提交交易。

如果提交成功的話,會返回交易雜湊即tx_id,可以通過 get-transaction 獲取該交易的詳情。

在此合約就部署完成啦,對應數量的資產也已經被鎖在合約裡面了,等待解鎖合約,解鎖成功的人可以獲得合約裡的資產。

獲取部署好的合約unspent-output

通過 list-unspent-outputs 獲取未花費的合約詳情,在解鎖合約的時候也需要用到這個 unspent-output id。

這裡的id 可以在 get-transaction 的outputs 中找到,在outputs中找到 control_program 為剛才部署的合約program,則此筆交易的id就是這個合約的unpsent-output。

解鎖合約

根據以上獲得的unspent-output來解鎖合約,其實解鎖合約也是發起交易,和釋出合約不同的是不需要編譯,只需要build、sign、submit即可。build這裡比較不一樣,筆者解鎖合約時在此處踩過太多的坑~~

根據以上的引數進行build-transaction即可,注意value需要轉為十六進位制!!如果符號合約條件即可解鎖成功,否則區塊確認解鎖合約的交易時會失敗。

sign-transaction和submit-transaction 參考部署合約的就可以,完全是一樣的。到此,釋出和解鎖合約就全部完成啦。學會了嗎,快去實踐哦,有問題也可以聯絡筆者哦@小胖子