比原項目倉庫:git
Github地址:https://github.com/Bytom/bytomgithub
Gitee地址:https://gitee.com/BytomBlockchain/bytomjson
在比原鏈上發行資產比較方便快捷,使用節點的dashboard圖形界面操做就能夠,先在 **「資產」**一欄新建資產 api
新建完資產,須要上鍊,不然區塊不認識你這個資產,那麼在交易中的高級交易進行issue,點擊Add action,總共三個action分別是 Issue、Control with address、Spend from account 工具
輸入帳戶的密碼,等待交易確認,一旦確認成功資產就會發到剛纔指定的地址上。能夠只發一個地址,也能夠發到多個地址,添加多個Control with address 便可。post
編譯合約經過api進行編譯,準備好postman或者其餘能夠post的工具,筆者使用的是postman。 筆者看了官方的多個合約模版,因而準備部署一個簡單的比較數字大小的合約。便是編譯合約時會指定數值,若是解鎖合約的人帶上大於此數值則能夠得到合約裏的資產。 筆者的合約代碼以下:ui
contract equals(target:Integer) locks value{ clause reveal(current:Integer){ verify current >= target unlock value } }
寫好了合約代碼,接下來經過 compile 的api 對合約進行編譯 3d
編譯後會返回一個status 成功或者失敗,和一串 data,都是爲json格式的數據,主要須要 data裏面的 program,便是該編譯完成的合約程序,在部署合約時須要用到。 code
部署合約其實就是 發起交易,在交易中帶上合約程序。經過api發起交易主要有三個步驟,先 build → sign → submit,分別對應的api是 build-transaction、sign-transaction、submit-transaction。blog
build-transaction 返回的數據,所有須要用到,便是 data 的全部數據,對該打包好的數據進行簽名,須要建立帳號的密鑰密碼。
若是簽名成功的話,要看返回的json裏面有個sign_complete字段,此字段爲true才表明成功,方可進行submit-transaction。
獲取 sign-transaction 簽名成功返回的 raw_transaction 字段數據,進行提交交易。
若是提交成功的話,會返回交易哈希即tx_id,能夠經過 get-transaction 獲取該交易的詳情。 在此合約就部署完成啦,對應數量的資產也已經被鎖在合約裏面了,等待解鎖合約,解鎖成功的人能夠得到合約裏的資產。
經過 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 參考部署合約的就能夠,徹底是同樣的。到此,發佈和解鎖合約就所有完成啦。學會了嗎,快去實踐哦,有問題也能夠聯繫筆者哦 小胖子