github.com/mavryk-network/mvgo@v1.19.9/codec/smart_rollup_recover_bond.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 // SmartRollupRecoverBond represents "smart_rollup_recover_bond" operation 14 type SmartRollupRecoverBond struct { 15 Manager 16 Rollup mavryk.Address `json:"rollup"` 17 Staker mavryk.Address `json:"staker"` 18 } 19 20 func (o SmartRollupRecoverBond) Kind() mavryk.OpType { 21 return mavryk.OpTypeSmartRollupRecoverBond 22 } 23 24 func (o SmartRollupRecoverBond) MarshalJSON() ([]byte, error) { 25 buf := bytes.NewBuffer(nil) 26 buf.WriteByte('{') 27 buf.WriteString(`"kind":`) 28 buf.WriteString(strconv.Quote(o.Kind().String())) 29 buf.WriteByte(',') 30 o.Manager.EncodeJSON(buf) 31 buf.WriteString(`,"rollup":`) 32 buf.WriteString(strconv.Quote(o.Rollup.String())) 33 buf.WriteString(`,"staker":`) 34 buf.WriteString(strconv.Quote(o.Staker.String())) 35 buf.WriteByte('}') 36 return buf.Bytes(), nil 37 } 38 39 func (o SmartRollupRecoverBond) EncodeBuffer(buf *bytes.Buffer, p *mavryk.Params) error { 40 buf.WriteByte(o.Kind().TagVersion(p.OperationTagsVersion)) 41 o.Manager.EncodeBuffer(buf, p) 42 buf.Write(o.Rollup.Hash()) // 20 byte only 43 buf.Write(o.Staker.Encode()) 44 return nil 45 } 46 47 func (o *SmartRollupRecoverBond) DecodeBuffer(buf *bytes.Buffer, p *mavryk.Params) (err error) { 48 if err = ensureTagAndSize(buf, o.Kind(), p.OperationTagsVersion); err != nil { 49 return 50 } 51 if err = o.Manager.DecodeBuffer(buf, p); err != nil { 52 return 53 } 54 o.Rollup = mavryk.NewAddress(mavryk.AddressTypeSmartRollup, buf.Next(20)) 55 err = o.Staker.Decode(buf.Next(21)) 56 return 57 } 58 59 func (o SmartRollupRecoverBond) MarshalBinary() ([]byte, error) { 60 buf := bytes.NewBuffer(nil) 61 err := o.EncodeBuffer(buf, mavryk.DefaultParams) 62 return buf.Bytes(), err 63 } 64 65 func (o *SmartRollupRecoverBond) UnmarshalBinary(data []byte) error { 66 return o.DecodeBuffer(bytes.NewBuffer(data), mavryk.DefaultParams) 67 }