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  }