中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Bytom信息上鏈的方法是什么

發布時間:2021-12-20 16:40:41 來源:億速云 閱讀:151 作者:iii 欄目:互聯網科技

這篇文章主要講解了“Bytom信息上鏈的方法是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Bytom信息上鏈的方法是什么”吧!

很多了解比原鏈的都知道,比原鏈是專注信息和數字資產在鏈上交互和流轉的公鏈項目,信息上鏈不是比原鏈核心能力,所以并沒有在錢包端做一個功能入口,但是比原鏈提供了相關的接口可以將一些信息寫到鏈上去。 那如何實現信息上鏈呢?使用特殊的Retire操作,這個操作可以進行銷毀資產的操作,但因為其可以附帶信息,所以就可以實現信息上鏈的功能。

請往下看,也用postman請求演示,然后用golang寫了一個接口的demo, 在用golang代碼實現之前,我們先要做一些準備工作。

  • 首先確保自己在本地已經搭建好了比原的節點

  • 確保自己賬戶是有足夠BTM測試幣

  • 發行自己的資產

  • 信息上鏈的本質就是其實就是創建并發送一筆交易,我們都知道通過api發起交易主要有三個步驟,先 build → sign → submit,分別對應的api是 build-transaction、sign-transaction、submit-transaction。用postman請求過程如下:

請求build-transaction接口:

Bytom信息上鏈的方法是什么

請求參數:

{
"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接口:

Bytom信息上鏈的方法是什么

請求參數:

{
"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接口:

Bytom信息上鏈的方法是什么

請求參數:

 {
 "raw_transaction": "0701dfd5c8d505020160015e560352e415b41be7648b2241ffdabf56259bc618525f62ac123dce32002110f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0989fe3020001160014adb6632c5b10c6d5b6f97b8d1250f6e409e11c01630240c7004022db674ff2961b540d4edab846d550429ae9a92311ba375a4f452331422961fdcde3bf79631755dd12df409e24a849158d4aeab919cab81520fb7d1e02204f089176a5bca95ec9227b8a87dfec947c59453805bf46d3f5a18f8032255b5a0161015f560352e415b41be7648b2241ffdabf56259bc618525f62ac123dce32002110f0608037f96e8d1613d900c67a0730cc90e2a03311fb7d091588f7eb551a6103cd9cc5b191f3190101160014dcfd9b78c24260823e318153665d511d6c4ecb1b6302406b75ef5a9decfa31d4f5ae06e0fb14ca507ba4a03715874d1d831516945121573b9b858e4d7527d209c1f89f74e0aa4c4e38afd098cbadaff31b9107167099012067512f9250f559699e32c72c8af29096b1556af145f6ecc0c306e6acc88bbfaa03013dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0ebbcde02011600147a9baebd37dba3f14960624ed8e6ca3cc9d5f73800013e608037f96e8d1613d900c67a0730cc90e2a03311fb7d091588f7eb551a6103cdb8c4b191f31901160014f0370fdf7a7bec7b34cc62fd5291071a3dc3d9b0000147608037f96e8d1613d900c67a0730cc90e2a03311fb7d091588f7eb551a6103cd6401246a2277656c636f6d65efbc8ce6aca2e8bf8ee69da5e588b0e58e9fe5ad90e4b896e7958c00"
  }

響應參數:

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


用上面返回的tx_id去比原的瀏覽器中去查看交易詳情,就可以查看到我們上傳的數據

Bytom信息上鏈的方法是什么

參考代碼:

package main

import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)

//build-transaction params
//https://bytom.github.io/mydoc_RPC_call.cn.html#build-transaction
type BytomAccount struct {
AccountId string `json:"account_id"`
Amount    int    `json:"amount"`
AssetId   string `json:"asset_id"`
//Arbitrary string `json:"arbitrary"`
Type string `json:"type"`
}
type BytomAccount1 struct {
AccountId string `json:"account_id"`
Amount    int    `json:"amount"`
AssetId   string `json:"asset_id"`
Arbitrary string `json:"arbitrary"`
Type      string `json:"type"`
}

type BaseTransaction struct{}

type TransactionParams struct {
BaseTransaction *BaseTransaction `json:"base_transaction"`
Actions         []interface{}    `json:"actions"`
Ttl             int              `json:"ttl"`
TimeRange       int              `json:"time_range"`
}

//sign-transaction params
//https://bytom.github.io/mydoc_RPC_call.cn.html#build-transaction
type Transaction struct {
}

type SignParams struct {
Password    string      `json:"password"`
Transaction Transaction `json:"transaction"`
}

//submit-transaction
//https://bytom.github.io/mydoc_RPC_call.cn.html#build-transaction
type SubmitParams struct {
RawTransaction string `json:"raw_transaction"`
}
type SubmitResponse struct {
TxId string `json:"tx_id"`
}

func main() {

account1, account2, account3 := BytomAccount{}, BytomAccount{}, BytomAccount1{}
account1.AccountId = "0KTCS3R5G0A02"
account1.Amount = 10000000
account1.AssetId = "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
account1.Type = "spend_account"

account2.AccountId = "0KTCS3R5G0A02"
account2.Amount = 100
account2.AssetId = "608037f96e8d1613d900c67a0730cc90e2a03311fb7d091588f7eb551a6103cd"
account2.Type = "spend_account"

account3.AccountId = "0KTCS3R5G0A02"
account3.Amount = 100
account3.AssetId = "608037f96e8d1613d900c67a0730cc90e2a03311fb7d091588f7eb551a6103cd"
account3.Arbitrary = "77656c636f6d65efbc8ce6aca2e8bf8ee69da5e588b0e58e9fe5ad90e4b896e7958c"
account3.Type = "retire"

//var array
var actions []interface{}
//append three params
array_actions := append(actions, account1, account2, account3)
transaction_params := &TransactionParams{}
transaction_params.Actions = array_actions
transaction_params.Ttl = 0
transaction_params.TimeRange = 1521625823

//本地測試網節點
//build-transaction
port := "http://127.0.0.1:9888/build-transaction"
value, err := SendTransactionRetire(transaction_params, port)
if err != nil {
	fmt.Println("err:", err)
}

fmt.Println("build-transaction接口返回的參數:", value)

//sign-transaction
//...........

//submit-transaction
//...........

}

//send post request
func SendTransactionRetire(params *TransactionParams, port   string) (v interface{}, err error) {
//以本地測試網節點連接
ParamsStr, err := json.Marshal(params)
if err != nil {
	return nil, 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)
if err != nil {
	panic(err)
}
defer resp.Body.Close()

var bodyBytes []byte
if resp.StatusCode == 200 {
	bodyBytes, err = ioutil.ReadAll(resp.Body)
	if err != nil {
		return nil, err
	}
}

return string(bodyBytes), nil
}

感謝各位的閱讀,以上就是“Bytom信息上鏈的方法是什么”的內容了,經過本文的學習后,相信大家對Bytom信息上鏈的方法是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴安县| 黄梅县| 韶山市| 巩留县| 那曲县| 庆阳市| 泸定县| 石泉县| 罗田县| 奉化市| 松原市| 区。| 京山县| 连云港市| 镇坪县| 襄樊市| 宝山区| 四川省| 海城市| 夏津县| 宝鸡市| 苏尼特左旗| 九江县| 孝昌县| 惠东县| 沁阳市| 新蔡县| 新化县| 宜城市| 济阳县| 驻马店市| 新干县| 甘南县| 锡林郭勒盟| 平江县| 营山县| 太湖县| 霍城县| 德阳市| 沽源县| 富宁县|