Hanzo AI 0682f6a115 zap_codec: BE-fallback read for pre-LP-023 (v1.28.x) P-chain state
Validators upgrading from luxd v1.28.x hold P-chain state written with
the pre-LP-023 BE codec version prefix. zap_codec.Unmarshal now tries
LE first; on unknown version, falls back to BE before erroring.

Behaviour:
- LE matches → use LE codec (post-Dec-25-2025 writers)
- LE unknown, BE matches → use BE codec with BE prefix, advance offset
  past VersionSize, decode body
- Both unknown → ErrUnknownVersion as before

Disambiguation is safe because registered version IDs are small (0..N
for the handful of codec generations). Palindromic byte-pair values
agree under both endianness, so the only ambiguous case is small N where
both BE and LE happen to be registered — practically impossible with
the current registry.

Also:
- ZAPActivationUnix: 0 → 1766708400 (Dec 25 2025 16:20 PST) — same as
  all other Quasar-Edition forks. Documents that LP-023 was a network
  activation, not a binary cutover.
- LegacyEnabled: defaults true unless LUXD_ENABLE_LEGACY_CODEC=0 — keeps
  legacy linearcodec path reachable for historical bytes that didn't
  migrate through the BE-fallback shim.
2026-06-06 16:55:39 -07:00
2026-02-14 05:26:23 -08:00
2026-03-11 10:35:54 -07:00

luxfi/proto

Canonical schema definitions for the Lux platform. Module path is github.com/luxfi/proto — the directory now matches (was protocol/).

Layout: ZAP + gRPC side-by-side, 1:1

Same package paths under both zap/ and pb/ (or in files suffixed _zap.go and _pb.go for thin packages). The Go build picks one or the other based on the build tag:

Default (no tag) -tags grpc
zap/<pkg>/*_zap.go (//go:build !grpc) pb/<pkg>/*_pb.go (//go:build grpc)
ZAP-native types + codecs protobuf-generated types + codecs
Zero google.golang.org/grpc in dep graph Includes google.golang.org/grpc

ZAP is the canonical wire. The protobuf path exists only for external integrations that mandate OTLP-over-gRPC. Internal Lux services use ZAP exclusively.

Consolidation policy

New schemas land here. This directory is the single source of truth for any cross-package wire definition. The scattered per-repo proto/ subdirs (see below) are legacy — they should migrate into this module when the natural rewrite happens.

Existing scattered locations (do not add to them):

Path Status
~/work/lux/p2p/proto/{zap,pb,p2p}/ legacy — to migrate
~/work/lux/node/proto/zap/ legacy — to migrate
~/work/lux/vm/proto/pb/ legacy — to migrate
~/work/lux/api/schema/proto/ legacy — to migrate

Migration cost is one import-path bump per consumer. Not blocking — fold in as those packages are touched for unrelated reasons.

Hanzo mirror

~/work/hanzo/proto follows the same pattern for the Hanzo platform. See hanzoai/proto README.

S
Description
No description provided
Readme BSD-3-Clause
59 MiB
Languages
Go 96.9%
ZAP 3.1%