国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Bytom信息上鏈教程

Yangder / 1919人閱讀

摘要:那如何實現(xiàn)信息上鏈呢使用特殊的操作,這個操作可以進行銷毀資產(chǎn)的操作,但因為其可以附帶信息,所以就可以實現(xiàn)信息上鏈的功能。好了,通過以上的個步驟,我們就可以借助比原鏈實現(xiàn)信息上鏈。

比原項目倉庫:

Github地址:https://github.com/Bytom/bytom

Gitee地址:https://gitee.com/BytomBlockchain/bytom

用比原鏈(Bytom)實現(xiàn)信息上鏈

很多了解比原鏈的都知道,比原鏈?zhǔn)菍W⑿畔⒑蛿?shù)字資產(chǎn)在鏈上交互和流轉(zhuǎn)的公鏈項目,信息上鏈不是比原鏈核心能力,所以并沒有在錢包端做一個功能入口,但是比原鏈提供了相關(guān)的接口可以將一些信息寫到鏈上去。
那如何實現(xiàn)信息上鏈呢?使用特殊的Retire操作,這個操作可以進行銷毀資產(chǎn)的操作,但因為其可以附帶信息,所以就可以實現(xiàn)信息上鏈的功能。

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

首先確保自己在本地已經(jīng)搭建好了比原的節(jié)點,如果你還沒有搭建好節(jié)點,請參考開發(fā)文檔:https://docs.bytom.io/mydoc_b...

確保自己賬戶是有足夠BTM測試幣,如果沒有可以去比原鏈水龍頭領(lǐng)取BTM測試幣,領(lǐng)取地址:

http://test.blockmeta.com/fau...

發(fā)行自己的資產(chǎn),參考:http://8btc.com/forum.php?mod...

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

請求build-transaction接口:

請求參數(shù):

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

請求參數(shù):

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

請求參數(shù):

 
 {
 "raw_transaction": "0701dfd5c8d505020160015e560352e415b41be7648b2241ffdabf56259bc618525f62ac123dce32002110f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0989fe3020001160014adb6632c5b10c6d5b6f97b8d1250f6e409e11c01630240c7004022db674ff2961b540d4edab846d550429ae9a92311ba375a4f452331422961fdcde3bf79631755dd12df409e24a849158d4aeab919cab81520fb7d1e02204f089176a5bca95ec9227b8a87dfec947c59453805bf46d3f5a18f8032255b5a0161015f560352e415b41be7648b2241ffdabf56259bc618525f62ac123dce32002110f0608037f96e8d1613d900c67a0730cc90e2a03311fb7d091588f7eb551a6103cd9cc5b191f3190101160014dcfd9b78c24260823e318153665d511d6c4ecb1b6302406b75ef5a9decfa31d4f5ae06e0fb14ca507ba4a03715874d1d831516945121573b9b858e4d7527d209c1f89f74e0aa4c4e38afd098cbadaff31b9107167099012067512f9250f559699e32c72c8af29096b1556af145f6ecc0c306e6acc88bbfaa03013dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0ebbcde02011600147a9baebd37dba3f14960624ed8e6ca3cc9d5f73800013e608037f96e8d1613d900c67a0730cc90e2a03311fb7d091588f7eb551a6103cdb8c4b191f31901160014f0370fdf7a7bec7b34cc62fd5291071a3dc3d9b0000147608037f96e8d1613d900c67a0730cc90e2a03311fb7d091588f7eb551a6103cd6401246a2277656c636f6d65efbc8ce6aca2e8bf8ee69da5e588b0e58e9fe5ad90e4b896e7958c00"
  }

響應(yīng)參數(shù):

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

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

參考代碼:

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

//本地測試網(wǎng)節(jié)點
//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接口返回的參數(shù):", value)

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

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

}

//send post request
func SendTransactionRetire(params *TransactionParams, port   string) (v interface{}, err error) {
//以本地測試網(wǎng)節(jié)點連接
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
}

上面的代碼只是build-transaction一個步驟,另外sign-transaction和submit-transaction請求需要自己去組織參數(shù)進行請求。請求完submit-transaction 獲得返回的交易hash,去區(qū)塊鏈瀏覽器上查看自己的上鏈信息,區(qū)塊鏈瀏覽器地址:http://52.82.46.157:8082/。

好了,通過以上的4個步驟,我們就可以借助比原鏈實現(xiàn)信息上鏈。如果你有什么疑問或者不明白,請在我們的社區(qū)聯(lián)系我們,https://github.com/Bytom/bytom。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/24384.html

相關(guān)文章

  • Bytom資產(chǎn)發(fā)行與部署合約教程

    摘要:筆者看了官方的多個合約模版,于是準(zhǔn)備部署一個簡單的比較數(shù)字大小的合約。部署合約部署合約其實就是發(fā)起交易,在交易中帶上合約程序。到此,發(fā)布和解鎖合約就全部完成啦。 發(fā)行資產(chǎn) 在比原鏈上發(fā)行資產(chǎn)比較方便快捷,使用節(jié)點的dashboard圖形界面操作就可以,先在 資產(chǎn)一欄新建資產(chǎn)showImg(https://segmentfault.com/img/bVbhq1s?w=1044&h=892...

    Cruise_Chan 評論0 收藏0
  • Bytom猜謎合約使用指南

    摘要:結(jié)語當(dāng)前猜謎合約提供了體驗版本,有興趣的朋友可以做一個口令紅包,簡化一下用戶操作和體驗。 準(zhǔn)備工作: 1、安裝全節(jié)點錢包V1.0.5以上并同步完成; 2、已經(jīng)發(fā)行一種資產(chǎn),發(fā)行資產(chǎn)的方法具體見文章《如何在Bytom上發(fā)布資產(chǎn)?》 3、準(zhǔn)備好一些BTM作為手續(xù)費; 設(shè)置謎語(鎖定資產(chǎn)): 1、打開錢包,點擊Equity合約按鈕; showImg(https://segmentfault....

    mzlogin 評論0 收藏0
  • Bytom交易說明(UTXO用戶自己管理模式)

    摘要:比原項目倉庫地址地址該部分主要針對用戶自己管理私鑰和地址,并通過來構(gòu)建和發(fā)送交易。其中創(chuàng)建單簽地址參考代碼進行相應(yīng)改造為創(chuàng)建多簽地址參考代碼進行相應(yīng)改造為找到可花費的找到可花費的,其實就是找到接收地址或接收是你自己的。 比原項目倉庫: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlock...

    RyanQ 評論0 收藏0
  • 比原鏈合約入門教程

    摘要:比原項目倉庫地址地址一合約簡述是的一種智能合約語言,是一門聲明性謂詞語言。詳細說明請參考官方合約相關(guān)介紹。編譯合約,返回結(jié)果便是可鎖定的合約。三解鎖合約流程合約交易被區(qū)塊打包成功之后,可以查看具體的合約交易內(nèi)容,找到對應(yīng)的。 比原項目倉庫: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBl...

    brianway 評論0 收藏0
  • Bytom交易說明(賬戶管理模式)

    摘要:簽名失敗只需將簽名的交易數(shù)據(jù)用正確的密碼重新簽名即可,無需再次構(gòu)建交易提交交易接口,代碼提交交易的輸入請求格式如下對應(yīng)源代碼的請求對象如下結(jié)構(gòu)字段說明如下簽名完成之后的交易信息。 該部分主要針對用戶使用bytom自帶的賬戶模式發(fā)送交易 1、構(gòu)建交易 API接口 build-transaction,代碼api/transact.go#L120 以標(biāo)準(zhǔn)的非BTM資產(chǎn)轉(zhuǎn)賬交易為例,資產(chǎn)ID為...

    AlphaWatch 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<