如何解码恒星XDR

时间:2018-11-13 06:47:46

标签: go blockchain xdr stellar

我正在研究恒星区块链,需要解码GO语言中的恒星XDR。我知道如何使用JavaScript进行解码,但是找不到在GO中进行解码的方法。

 //JS code

 const {Transaction} = require('stellar-base')

 const parsedTx = new Transaction('tx_envelope_encoded_as_XDR')
 console.log(parsedTx)

这很好。我尝试过的但不起作用的...

//GO code

import (

   "bytes"
   "encoding/json"
   "fmt"
   "net/http"
   "github.com/stellar/go/xdr"
   "github.com/gorilla/mux"

 )

func DecodeXDR(w http.ResponseWriter, r *http.Request) {

    var OBJ model.TransactionCollectionBody
    err := json.NewDecoder(r.Body).Decode(&OBJ)
    if err != nil {
      w.WriteHeader(http.StatusBadRequest)
      json.NewEncoder(w).Encode("Error while Decoding the body")
      fmt.Println(err)

      return
    }

    // fmt.Println(OBJ)

    // lol:=xdr.Value(OBJ.XDR)

    var txe xdr.Transaction
    err = xdr.SafeUnmarshalBase64(XDRB64, &txe)
    if err != nil {
      fmt.Println(err)
    }

    fmt.Println(txe)

}

//Output
{{PublicKeyTypePublicKeyTypeEd25519 0xc042055d20} 200 2800572080062465 <nil> {MemoTypeMemoNone <nil> <nil> <nil> <nil>} [{<nil> {OperationTypeManageData <nil> <nil> <nil> <nil> <nil> <nil> <nil> <nil> <nil> 0xc042174040 <nil>}} {<nil> {OperationTypeManageData <nil> <nil> <nil> <nil> <nil> <nil> <nil> <nil> <nil> 0xc042174080 <nil>}}] {0}}

//预期输出

{类型:“付款”, 目的地:“ GCKUXI3JRJANYOF3AM35Z22FGUGYYUIEBPE5TTZ7P3G6XAEFGYZC2POM”,   资产:    资产{      代码:“博客”,      发行者:'GDOPTRADBVWJR6BMB6H5ACQTAVUS6XMT53CDNAJZLOSTIUICIW57ISMF'},   金额:“ 10”}

{类型:“付款”,   目的地:“ GCKUXI3JRJANYOF3AM35Z22FGUGYYUIEBPE5TTZ7P3G6XAEFGYZC2POM”,   资产:    资产{      代码:“博客”,      发行者:'GDOPTRADBVWJR6BMB6H5ACQTAVUS6XMT53CDNAJZLOSTIUICIW57ISMF'},   金额:“ 10”}

{类型:“付款”,   目的地:“ GCKUXI3JRJANYOF3AM35Z22FGUGYYUIEBPE5TTZ7P3G6XAEFGYZC2POM”,   资产:    资产{      代码:“博客”,      发行者:'GDOPTRADBVWJR6BMB6H5ACQTAVUS6XMT53CDNAJZLOSTIUICIW57ISMF'},   金额:“ 10”}

有人可以帮我解决这个问题吗?

0 个答案:

没有答案