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  }