首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解码恒星XDR

如何解码恒星XDR
EN

Stack Overflow用户
提问于 2018-11-13 06:47:46
回答 1查看 610关注 0票数 1

我的工作是恒星区块链,需要解码恒星XDR,这是在GO语言。我知道如何使用JavaScript进行解码,但无法在GO中找到一种方法。

代码语言:javascript
复制
 //JS code

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

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

这个很好用。我试过但不工作的东西..。

代码语言:javascript
复制
//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',{ {类型:‘支付’,目的地:资产:资产{代码:'Blog',发行者:'GDOPTRADBVWJR6BMB6H5ACQTAVUS6XMT53CDNAJZLOSTIUICIW57ISMF‘},金额:'10’}

'GCKUXI3JRJANYOF3AM35Z22FGUGYYUIEBPE5TTZ7P3G6XAEFGYZC2POM',{ {类型:‘支付’,目的地:资产:资产{代码:'Blog',发行者:'GDOPTRADBVWJR6BMB6H5ACQTAVUS6XMT53CDNAJZLOSTIUICIW57ISMF‘},金额:'10’}

'GCKUXI3JRJANYOF3AM35Z22FGUGYYUIEBPE5TTZ7P3G6XAEFGYZC2POM',{ {类型:‘支付’,目的地:资产:资产{代码:'Blog',发行者:'GDOPTRADBVWJR6BMB6H5ACQTAVUS6XMT53CDNAJZLOSTIUICIW57ISMF‘},金额:'10’}

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

EN

回答 1

Stack Overflow用户

发布于 2022-10-31 18:56:51

我想出了一个迟来的解决办法。但是为了得到你需要的东西,你可以使用这个包:

Github.com/stellar/go-xdr/xdr3

并使用以下函数。

代码语言:javascript
复制
// DecodeFrom decodes this value using the Decoder.
func (s *Value) DecodeFrom(d *xdr.Decoder) (int, error) {
    var err error
    var n, nTmp int
    (*s), nTmp, err = d.DecodeOpaque(0)
    n += nTmp
    if err != nil {
        return n, fmt.Errorf("decoding Value: %s", err)
    }
    return n, nil
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53275299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档