Files
proto/p/state/chain_id_node_id.go
2026-01-10 01:59:02 -08:00

38 lines
854 B
Go

// Copyright (C) 2019-2025, Lux Industries, Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package state
import (
"fmt"
"github.com/luxfi/ids"
)
// chainIDNodeID = [chainID] + [nodeID]
const chainIDNodeIDEntryLength = ids.IDLen + ids.NodeIDLen
var errUnexpectedChainIDNodeIDLength = fmt.Errorf("expected chainID+nodeID entry length %d", chainIDNodeIDEntryLength)
type chainIDNodeID struct {
chainID ids.ID
nodeID ids.NodeID
}
func (s *chainIDNodeID) Marshal() []byte {
data := make([]byte, chainIDNodeIDEntryLength)
copy(data, s.chainID[:])
copy(data[ids.IDLen:], s.nodeID[:])
return data
}
func (s *chainIDNodeID) Unmarshal(data []byte) error {
if len(data) != chainIDNodeIDEntryLength {
return errUnexpectedChainIDNodeIDLength
}
copy(s.chainID[:], data)
copy(s.nodeID[:], data[ids.IDLen:])
return nil
}