Bytom信息上链的方法是什么

免费建站   2024年05月09日 21:38  

这篇文章主要讲解了“Bytom信息上链的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Bytom信息上链的方法是什么”吧!

很多了解比原链的都知道,比原链是专注信息和数字资产在链上交互和流转的公链项目,信息上链不是比原链核心能力,所以并没有在钱包端做一个功能入口,但是比原链提供了相关的接口可以将一些信息写到链上去。 那如何实现信息上链呢?使用特殊的Retire操作,这个操作可以进行销毁资产的操作,但因为其可以附带信息,所以就可以实现信息上链的功能。

请往下看,也用postman请求演示,然后用golang写了一个接口的demo, 在用golang代码实现之前,我们先要做一些准备工作。

首先确保自己在本地已经搭建好了比原的节点

确保自己账户是有足够BTM测试币

发行自己的资产

信息上链的本质就是其实就是创建并发送一笔交易,我们都知道通过api发起交易主要有三个步骤,先 build → sign → submit,分别对应的api是 build-transaction、sign-transaction、submit-transaction。用postman请求过程如下:

请求build-transaction接口:

请求参数:

{"base_transaction":null,"actions":[{"account_id":"0KTCS3R5G0A02","amount":10000000,"asset_id":"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","type":"spend_account"},{"account_id":"0KTCS3R5G0A02","amount":100,"asset_id":"608037f96e8d1613d900c67a0730cc90e2a03311fb7d091588f7eb551a6103cd","type":"spend_account"},{"account_id":"0KTCS3R5G0A02","amount":100,"asset_id":"608037f96e8d1613d900c67a0730cc90e2a03311fb7d091588f7eb551a6103cd","arbitrary":"77656c636f6d65efbc8ce6aca2e8bf8ee69da5e588b0e58e9fe5ad90e4b896e7958c","type":"retire"}],"ttl":0,"time_range":1521625823}

请求sign-transaction接口:

请求参数:

{"password":"huangxinglong123","transaction":{"allow_additional_actions":false,"local":true,"raw_transaction":"0701dfd5c8d505020160015e560352e415b41be7648b2241ffdabf56259bc618525f62ac123dce32002110f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0989fe3020001160014adb6632c5b10c6d5b6f97b8d1250f6e409e11c0101000161015f560352e415b41be7648b2241ffdabf56259bc618525f62ac123dce32002110f0608037f96e8d1613d900c67a0730cc90e2a03311fb7d091588f7eb551a6103cd9cc5b191f3190101160014dcfd9b78c24260823e318153665d511d6c4ecb1b010003013dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0ebbcde02011600147a9baebd37dba3f14960624ed8e6ca3cc9d5f73800013e608037f96e8d1613d900c67a0730cc90e2a03311fb7d091588f7eb551a6103cdb8c4b191f31901160014f0370fdf7a7bec7b34cc62fd5291071a3dc3d9b0000147608037f96e8d1613d900c67a0730cc90e2a03311fb7d091588f7eb551a6103cd6401246a2277656c636f6d65efbc8ce6aca2e8bf8ee69da5e588b0e58e9fe5ad90e4b896e7958c00","signing_instructions":[{"position":0,"witness_components":[{"keys":[{"derivation_path":["0000002c","00000099","0100000000000000","0100000000000000","4600000000000000"],"xpub":"1c03161a08a4dbb7df153815a28f733fec1ac7579f954c4834e5ce9f0ad8deb260ecb2066a8623b69aa936f5798f4dcb9572bc476f2c8171953ce054d58a759f"}],"quorum":1,"signatures":null,"type":"raw_tx_signature"},{"type":"data","value":"4f089176a5bca95ec9227b8a87dfec947c59453805bf46d3f5a18f8032255b5a"}]},{"position":1,"witness_components":[{"keys":[{"derivation_path":["0000002c","00000099","0100000000000000","0100000000000000","4700000000000000"],"xpub":"1c03161a08a4dbb7df153815a28f733fec1ac7579f954c4834e5ce9f0ad8deb260ecb2066a8623b69aa936f5798f4dcb9572bc476f2c8171953ce054d58a759f"}],"quorum":1,"signatures":null,"type":"raw_tx_signature"},{"type":"data","value":"67512f9250f559699e32c72c8af29096b1556af145f6ecc0c306e6acc88bbfaa"}]}]}}

请求submit-transaction接口:

请求参数:

{"raw_transaction":"0701dfd5c8d505020160015e560352e415b41be7648b2241ffdabf56259bc618525f62ac123dce32002110f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0989fe3020001160014adb6632c5b10c6d5b6f97b8d1250f6e409e11c01630240c7004022db674ff2961b540d4edab846d550429ae9a92311ba375a4f452331422961fdcde3bf79631755dd12df409e24a849158d4aeab919cab81520fb7d1e02204f089176a5bca95ec9227b8a87dfec947c59453805bf46d3f5a18f8032255b5a0161015f560352e415b41be7648b2241ffdabf56259bc618525f62ac123dce32002110f0608037f96e8d1613d900c67a0730cc90e2a03311fb7d091588f7eb551a6103cd9cc5b191f3190101160014dcfd9b78c24260823e318153665d511d6c4ecb1b6302406b75ef5a9decfa31d4f5ae06e0fb14ca507ba4a03715874d1d831516945121573b9b858e4d7527d209c1f89f74e0aa4c4e38afd098cbadaff31b9107167099012067512f9250f559699e32c72c8af29096b1556af145f6ecc0c306e6acc88bbfaa03013dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0ebbcde02011600147a9baebd37dba3f14960624ed8e6ca3cc9d5f73800013e608037f96e8d1613d900c67a0730cc90e2a03311fb7d091588f7eb551a6103cdb8c4b191f31901160014f0370fdf7a7bec7b34cc62fd5291071a3dc3d9b0000147608037f96e8d1613d900c67a0730cc90e2a03311fb7d091588f7eb551a6103cd6401246a2277656c636f6d65efbc8ce6aca2e8bf8ee69da5e588b0e58e9fe5ad90e4b896e7958c00"}

响应参数:

{"status":"success","data":{"tx_id":"5ef27b930646d468bbb436d3406972ff201aa63702518f777e31dd6a2147dddc"}}

用上面返回的tx_id去比原的浏览器中去查看交易详情,就可以查看到我们上传的数据

参考代码:

packagemainimport("bytes""encoding/json""fmt""io/ioutil""net/http")//build-transactionparams//https://.github.io/mydoc_RPC_call.cn.html#build-transactiontypeBytomAccountstruct{AccountIdstring`json:"account_id"`Amountint`json:"amount"`AssetIdstring`json:"asset_id"`//Arbitrarystring`json:"arbitrary"`Typestring`json:"type"`}typeBytomAccount1struct{AccountIdstring`json:"account_id"`Amountint`json:"amount"`AssetIdstring`json:"asset_id"`Arbitrarystring`json:"arbitrary"`Typestring`json:"type"`}typeBaseTransactionstruct{}typeTransactionParamsstruct{BaseTransaction*BaseTransaction`json:"base_transaction"`Actions[]interface{}`json:"actions"`Ttlint`json:"ttl"`TimeRangeint`json:"time_range"`}//sign-transactionparams//https://.github.io/mydoc_RPC_call.cn.html#build-transactiontypeTransactionstruct{}typeSignParamsstruct{Passwordstring`json:"password"`TransactionTransaction`json:"transaction"`}//submit-transaction//https://.github.io/mydoc_RPC_call.cn.html#build-transactiontypeSubmitParamsstruct{RawTransactionstring`json:"raw_transaction"`}typeSubmitResponsestruct{TxIdstring`json:"tx_id"`}funcmain(){account1,account2,account3:=BytomAccount{},BytomAccount{},BytomAccount1{}account1.AccountId="0KTCS3R5G0A02"account1.Amount=10000000account1.AssetId="ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"account1.Type="spend_account"account2.AccountId="0KTCS3R5G0A02"account2.Amount=100account2.AssetId="608037f96e8d1613d900c67a0730cc90e2a03311fb7d091588f7eb551a6103cd"account2.Type="spend_account"account3.AccountId="0KTCS3R5G0A02"account3.Amount=100account3.AssetId="608037f96e8d1613d900c67a0730cc90e2a03311fb7d091588f7eb551a6103cd"account3.Arbitrary="77656c636f6d65efbc8ce6aca2e8bf8ee69da5e588b0e58e9fe5ad90e4b896e7958c"account3.Type="retire"//vararrayvaractions[]interface{}//appendthreeparamsarray_actions:=append(actions,account1,account2,account3)transaction_params:=&TransactionParams{}transaction_params.Actions=array_actionstransaction_params.Ttl=0transaction_params.TimeRange=1521625823//本地测试网节点//build-transactionport:="http://127.0.0.1:9888/build-transaction"value,err:=SendTransactionRetire(transaction_params,port)iferr!=nil{fmt.Println("err:",err)}fmt.Println("build-transaction接口返回的参数:",value)//sign-transaction//...........//submit-transaction//...........}//sendpostrequestfuncSendTransactionRetire(params*TransactionParams,portstring)(vinterface{},errerror){//以本地测试网节点连接ParamsStr,err:=json.Marshal(params)iferr!=nil{returnnil,err}jsonStr:=bytes.NewBuffer(ParamsStr)fmt.Println(jsonStr)req,err:=http.NewRequest("POST",port,jsonStr)req.Header.Set("Content-Type","application/json")req.Header.Add("Accept","application/json")client:=&http.Client{}resp,err:=client.Do(req)iferr!=nil{panic(err)}deferresp.Body.Close()varbodyBytes[]byteifresp.StatusCode==200{bodyBytes,err=ioutil.ReadAll(resp.Body)iferr!=nil{returnnil,err}}returnstring(bodyBytes),nil}

感谢各位的阅读,以上就是“Bytom信息上链的方法是什么”的内容了,经过本文的学习后,相信大家对Bytom信息上链的方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

域名注册
购买VPS主机

您或许对下面这些文章有兴趣:                    本月吐槽辛苦排行榜

看贴要回贴有N种理由!看帖不回贴的后果你懂得的!


评论内容 (*必填):
(Ctrl + Enter提交)   

部落快速搜索栏

各类专题梳理

网站导航栏

X
返回顶部