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