message

package
v1.11.13-rc.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 20, 2024 License: BSD-3-Clause Imports: 12 Imported by: 0

README

P-Chain warp message payloads

This package defines parsing and serialization for the payloads of unsigned warp messages on the P-Chain.

These payloads are specified in ACP-77, and are expected as part of the payload field of an AddressedCall message, with an empty source address.

Documentation

Index

Constants

View Source
const CodecVersion = 0

Variables

View Source
var (
	ErrInvalidSubnetID = errors.New("invalid subnet ID")
	ErrInvalidWeight   = errors.New("invalid weight")
	ErrInvalidNodeID   = errors.New("invalid node ID")
	ErrInvalidOwner    = errors.New("invalid owner")
)
View Source
var ErrNonceReservedForRemoval = errors.New("maxUint64 nonce is reserved for removal")
View Source
var ErrWrongType = errors.New("wrong payload type")

Functions

func Initialize

func Initialize(p Payload) error

func SubnetToL1ConversionID

func SubnetToL1ConversionID(data SubnetToL1ConversionData) (ids.ID, error)

SubnetToL1ConversionID creates a subnet conversion ID from the provided subnet conversion data.

Types

type L1ValidatorRegistration

type L1ValidatorRegistration struct {
	ValidationID ids.ID `serialize:"true" json:"validationID"`
	// Registered being true means that validationID is currently a validator on
	// the P-chain.
	//
	// Registered being false means that validationID is not and can never
	// become a validator on the P-chain. It is possible that validationID was
	// previously a validator on the P-chain.
	Registered bool `serialize:"true" json:"registered"`
	// contains filtered or unexported fields
}

L1ValidatorRegistration reports if a validator is registered on the P-chain.

func NewL1ValidatorRegistration

func NewL1ValidatorRegistration(
	validationID ids.ID,
	registered bool,
) (*L1ValidatorRegistration, error)

NewL1ValidatorRegistration creates a new initialized L1ValidatorRegistration.

func ParseL1ValidatorRegistration

func ParseL1ValidatorRegistration(b []byte) (*L1ValidatorRegistration, error)

ParseL1ValidatorRegistration parses bytes into an initialized L1ValidatorRegistration.

func (L1ValidatorRegistration) Bytes

func (p L1ValidatorRegistration) Bytes() []byte

type L1ValidatorWeight

type L1ValidatorWeight struct {
	ValidationID ids.ID `serialize:"true" json:"validationID"`
	Nonce        uint64 `serialize:"true" json:"nonce"`
	Weight       uint64 `serialize:"true" json:"weight"`
	// contains filtered or unexported fields
}

L1ValidatorWeight is both received and sent by the P-chain.

If the P-chain is receiving this message, it is treated as a command to update the weight of the validator.

If the P-chain is sending this message, it is reporting the current nonce and weight of the validator.

func NewL1ValidatorWeight

func NewL1ValidatorWeight(
	validationID ids.ID,
	nonce uint64,
	weight uint64,
) (*L1ValidatorWeight, error)

NewL1ValidatorWeight creates a new initialized L1ValidatorWeight.

func ParseL1ValidatorWeight

func ParseL1ValidatorWeight(b []byte) (*L1ValidatorWeight, error)

ParseL1ValidatorWeight parses bytes into an initialized L1ValidatorWeight.

func (L1ValidatorWeight) Bytes

func (p L1ValidatorWeight) Bytes() []byte

func (*L1ValidatorWeight) Verify

func (s *L1ValidatorWeight) Verify() error

type PChainOwner

type PChainOwner struct {
	// The threshold number of `Addresses` that must provide a signature in
	// order for the `PChainOwner` to be considered valid.
	Threshold uint32 `serialize:"true" json:"threshold"`
	// The addresses that are allowed to sign to authenticate a `PChainOwner`.
	Addresses []ids.ShortID `serialize:"true" json:"addresses"`
}

type Payload

type Payload interface {
	// Bytes returns the binary representation of this payload.
	//
	// If the payload is not initialized, this method will return nil.
	Bytes() []byte
	// contains filtered or unexported methods
}

Payload provides a common interface for all payloads implemented by this package.

func Parse

func Parse(bytes []byte) (Payload, error)

type RegisterL1Validator

type RegisterL1Validator struct {
	SubnetID              ids.ID                 `serialize:"true" json:"subnetID"`
	NodeID                types.JSONByteSlice    `serialize:"true" json:"nodeID"`
	BLSPublicKey          [bls.PublicKeyLen]byte `serialize:"true" json:"blsPublicKey"`
	Expiry                uint64                 `serialize:"true" json:"expiry"`
	RemainingBalanceOwner PChainOwner            `serialize:"true" json:"remainingBalanceOwner"`
	DisableOwner          PChainOwner            `serialize:"true" json:"disableOwner"`
	Weight                uint64                 `serialize:"true" json:"weight"`
	// contains filtered or unexported fields
}

RegisterL1Validator adds a validator to the subnet.

func NewRegisterL1Validator

func NewRegisterL1Validator(
	subnetID ids.ID,
	nodeID ids.NodeID,
	blsPublicKey [bls.PublicKeyLen]byte,
	expiry uint64,
	remainingBalanceOwner PChainOwner,
	disableOwner PChainOwner,
	weight uint64,
) (*RegisterL1Validator, error)

NewRegisterL1Validator creates a new initialized RegisterL1Validator.

func ParseRegisterL1Validator

func ParseRegisterL1Validator(b []byte) (*RegisterL1Validator, error)

ParseRegisterL1Validator parses bytes into an initialized RegisterL1Validator.

func (RegisterL1Validator) Bytes

func (p RegisterL1Validator) Bytes() []byte

func (*RegisterL1Validator) ValidationID

func (r *RegisterL1Validator) ValidationID() ids.ID

func (*RegisterL1Validator) Verify

func (r *RegisterL1Validator) Verify() error

type SubnetToL1Conversion

type SubnetToL1Conversion struct {

	// ID of the subnet conversion. It is typically generated by calling
	// SubnetToL1ConversionID.
	ID ids.ID `serialize:"true" json:"id"`
	// contains filtered or unexported fields
}

SubnetToL1Conversion reports the summary of the subnet conversation that occurred on the P-chain.

func NewSubnetToL1Conversion

func NewSubnetToL1Conversion(id ids.ID) (*SubnetToL1Conversion, error)

NewSubnetToL1Conversion creates a new initialized SubnetToL1Conversion.

func ParseSubnetToL1Conversion

func ParseSubnetToL1Conversion(b []byte) (*SubnetToL1Conversion, error)

ParseSubnetToL1Conversion parses bytes into an initialized SubnetToL1Conversion.

func (SubnetToL1Conversion) Bytes

func (p SubnetToL1Conversion) Bytes() []byte

type SubnetToL1ConversionData

type SubnetToL1ConversionData struct {
	SubnetID       ids.ID                               `serialize:"true" json:"subnetID"`
	ManagerChainID ids.ID                               `serialize:"true" json:"managerChainID"`
	ManagerAddress types.JSONByteSlice                  `serialize:"true" json:"managerAddress"`
	Validators     []SubnetToL1ConverstionValidatorData `serialize:"true" json:"validators"`
}

type SubnetToL1ConverstionValidatorData

type SubnetToL1ConverstionValidatorData struct {
	NodeID       types.JSONByteSlice    `serialize:"true" json:"nodeID"`
	BLSPublicKey [bls.PublicKeyLen]byte `serialize:"true" json:"blsPublicKey"`
	Weight       uint64                 `serialize:"true" json:"weight"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL