Help us shape the future of Go! Take the 2026 Go Developer Survey

message

package
v1.17.1 Latest Latest
Warning

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

Go to latest
Published: Sep 22, 2025 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 (
	ErrInvalidNetID  = errors.New("invalid net 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 net conversion ID from the provided net 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 {
	NetID                 ids.ID                 `serialize:"true" json:"netID"`
	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(
	netID 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 net 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 net 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 {
	NetID          ids.ID                              `serialize:"true" json:"netID"`
	ManagerChainID ids.ID                              `serialize:"true" json:"managerChainID"`
	ManagerAddress types.JSONByteSlice                 `serialize:"true" json:"managerAddress"`
	Validators     []SubnetToL1ConversionValidatorData `serialize:"true" json:"validators"`
}

type SubnetToL1ConversionValidatorData

type SubnetToL1ConversionValidatorData 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