github.com/mavryk-network/mvgo@v1.19.9/codec/vdf_revelation.go (about) 1 // Copyright (c) 2023 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 // VdfRevelation represents "vdf_revelation" operation 14 type VdfRevelation struct { 15 Simple 16 Solution mavryk.HexBytes `json:"solution"` 17 } 18 19 func (o VdfRevelation) Kind() mavryk.OpType { 20 return mavryk.OpTypeVdfRevelation 21 } 22 23 func (o VdfRevelation) 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.WriteString(`,"solution":`) 29 buf.WriteString(strconv.Quote(o.Solution.String())) 30 buf.WriteByte('}') 31 return buf.Bytes(), nil 32 } 33 34 func (o VdfRevelation) EncodeBuffer(buf *bytes.Buffer, p *mavryk.Params) error { 35 buf.WriteByte(o.Kind().TagVersion(p.OperationTagsVersion)) 36 buf.Write(o.Solution.Bytes()) 37 return nil 38 } 39 40 func (o *VdfRevelation) DecodeBuffer(buf *bytes.Buffer, p *mavryk.Params) (err error) { 41 if err = ensureTagAndSize(buf, o.Kind(), p.OperationTagsVersion); err != nil { 42 return 43 } 44 return o.Solution.ReadBytes(buf, 200) 45 } 46 47 func (o VdfRevelation) MarshalBinary() ([]byte, error) { 48 buf := bytes.NewBuffer(nil) 49 err := o.EncodeBuffer(buf, mavryk.DefaultParams) 50 return buf.Bytes(), err 51 } 52 53 func (o *VdfRevelation) UnmarshalBinary(data []byte) error { 54 return o.DecodeBuffer(bytes.NewBuffer(data), mavryk.DefaultParams) 55 }