github.com/mavryk-network/mvgo@v1.19.9/codec/reveal.go (about)

     1  // Copyright (c) 2020-2022 Blockwatch Data Inc.
     2  // Author: alex@blockwatch.cc
     3  
     4  package codec
     5  
     6  import (
     7  	"bytes"
     8  	"strconv"
     9  
    10  	"github.com/mavryk-network/mvgo/mavryk"
    11  )
    12  
    13  // Reveal represents "reveal" operation
    14  type Reveal struct {
    15  	Manager
    16  	PublicKey mavryk.Key `json:"public_key"`
    17  }
    18  
    19  func (o Reveal) Kind() mavryk.OpType {
    20  	return mavryk.OpTypeReveal
    21  }
    22  
    23  func (o Reveal) MarshalJSON() ([]byte, error) {
    24  	buf := bytes.NewBuffer(nil)
    25  	buf.WriteByte('{')
    26  	buf.WriteString(`"kind":`)
    27  	buf.WriteString(strconv.Quote(o.Kind().String()))
    28  	buf.WriteByte(',')
    29  	o.Manager.EncodeJSON(buf)
    30  	buf.WriteString(`,"public_key":`)
    31  	buf.WriteString(strconv.Quote(o.PublicKey.String()))
    32  	buf.WriteByte('}')
    33  	return buf.Bytes(), nil
    34  }
    35  
    36  func (o Reveal) EncodeBuffer(buf *bytes.Buffer, p *mavryk.Params) error {
    37  	buf.WriteByte(o.Kind().TagVersion(p.OperationTagsVersion))
    38  	o.Manager.EncodeBuffer(buf, p)
    39  	buf.Write(o.PublicKey.Bytes())
    40  	return nil
    41  }
    42  
    43  func (o *Reveal) DecodeBuffer(buf *bytes.Buffer, p *mavryk.Params) (err error) {
    44  	if err = ensureTagAndSize(buf, o.Kind(), p.OperationTagsVersion); err != nil {
    45  		return
    46  	}
    47  	if err = o.Manager.DecodeBuffer(buf, p); err != nil {
    48  		return
    49  	}
    50  	if err = o.PublicKey.DecodeBuffer(buf); err != nil {
    51  		return
    52  	}
    53  	return
    54  }
    55  
    56  func (o Reveal) MarshalBinary() ([]byte, error) {
    57  	buf := bytes.NewBuffer(nil)
    58  	err := o.EncodeBuffer(buf, mavryk.DefaultParams)
    59  	return buf.Bytes(), err
    60  }
    61  
    62  func (o *Reveal) UnmarshalBinary(data []byte) error {
    63  	return o.DecodeBuffer(bytes.NewBuffer(data), mavryk.DefaultParams)
    64  }