// Copyright 2022 The go-ethereum Authors // This file is part of the go-ethereum library. // // The go-ethereum library is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // The go-ethereum library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with the go-ethereum library. If not, see . package types import ( "bytes" "github.com/openrelayxyz/plugeth-utils/core" "github.com/openrelayxyz/plugeth-utils/restricted/hexutil" "github.com/openrelayxyz/plugeth-utils/restricted/rlp" ) //go:generate go run github.com/fjl/gencodec -type Withdrawal -field-override withdrawalMarshaling -out gen_withdrawal_json.go //go:generate go run ../../rlp/rlpgen -type Withdrawal -out gen_withdrawal_rlp.go // Withdrawal represents a validator withdrawal from the consensus layer. type Withdrawal struct { Index uint64 `json:"index"` // monotonically increasing identifier issued by consensus layer Validator uint64 `json:"validatorIndex"` // index of validator associated with withdrawal Address core.Address `json:"address"` // target address for withdrawn ether Amount uint64 `json:"amount"` // value of withdrawal in Gwei } // field type overrides for gencodec type withdrawalMarshaling struct { Index hexutil.Uint64 Validator hexutil.Uint64 Amount hexutil.Uint64 } // Withdrawals implements DerivableList for withdrawals. type Withdrawals []*Withdrawal // Len returns the length of s. func (s Withdrawals) Len() int { return len(s) } // EncodeIndex encodes the i'th withdrawal to w. Note that this does not check for errors // because we assume that *Withdrawal will only ever contain valid withdrawals that were either // constructed by decoding or via public API in this package. func (s Withdrawals) EncodeIndex(i int, w *bytes.Buffer) { rlp.Encode(w, s[i]) }