mirror of
https://github.com/luxfi/node.git
synced 2026-07-27 03:39:39 +00:00
Thirty platformvm files migrated. Every codec.Manager / codec.Registry / linearcodec / wrappers / zapcodec reference inside vms/platformvm now flows through node/vms/pcodecs, completing wave 2D of the codec rip (#101). zero direct luxfi/codec imports remain anywhere in node/vms outside vms/pcodecs/{pcodecs.go,pcodecsmock/manager.go}. Codec construction sites (singletons preserved for external API compatibility — wallet, indexer, network — pcodecs is the construction layer only): platformvm/txs/codec.go — V0+V1 linearcodec + V2 zapcodec via pcodecs.NewLinearCodec / NewZAPCodec / NewDefaultManager / NewMaxInt32Manager helpers platformvm/block/codec.go — v1 + v0 read-only + GenesisCodec via pcodecs helpers platformvm/warp/codec.go — Codec via pcodecs.NewMaxIntManager platformvm/warp/message/codec.go — Codec via pcodecs.NewMaxIntManager platformvm/warp/payload/codec.go — Codec via pcodecs.NewManager platformvm/state/metadata_codec.go — MetadataCodec via pcodecs Production code typed through pcodecs: platformvm/txs/{tx,initial_state,operation}.go — codec.Manager → pcodecs.Manager platformvm/txs/fee/complexity.go — wrappers.{LongLen,IntLen,ShortLen, ByteLen} + codec.VersionSize → pcodecs.{LongLen,IntLen,ShortLen, ByteLen,VersionSize} platformvm/state/{state,codec_helpers,metadata_validator}.go — pcodecs.Manager / pcodecs.Registry / pcodecs.{VersionSize,LongLen,IntLen, BoolLen} platformvm/block/{parse,v0/block}.go — pcodecs.Manager + LinearCodec + Errs platformvm/metrics/metrics.go — wrappers.Errs → pcodecs.Errs platformvm/vm.go — codec.Registry / linearcodec.NewDefault → pcodecs.Registry / pcodecs.NewLinearCodec Tests: platformvm/block/codec_multiversion_test.go — codec.ErrUnknownVersion → pcodecs platformvm/state/{codec_helpers,metadata_validator, metadata_delegator,state_v0_codec}_test.go — codec sentinel errors → pcodecs; linearcodec.NewDefault / codec.NewDefaultManager → pcodecs helpers platformvm/txs/{fee/complexity,tx_fuzz}_test.go — pcodecs.VersionSize / NewLinearCodec / Packer platformvm/warp/{message,unsigned_message}_test.go — pcodecs.ErrUnknownVersion platformvm/warp/message/payload_test.go — pcodecs.ErrUnknownVersion platformvm/warp/payload/{addressed_call,hash,payload}_test.go — pcodecs.ErrUnknownVersion Build: go build ./vms/... Tests: go test ./vms/platformvm/... — all green. Pre-existing failures in vms/xvm (TestTxAcceptAfterParseTx, TestIssueImportTx, TestIssueNFT, TestIssueProperty, TestVerifyFxUsage) are unrelated to wave 2D — they fail on the baseline branch without any change to xvm. Independent fix. Wave 2D complete: - Components: 8 files migrated - Proposervm: 9 files migrated - EVM: 5 files migrated - XSVM: 2 files migrated - RPCchainvm: 1 file migrated - XVM: 18 files migrated - Platformvm: 30 files migrated -- Total: 73 files migrated to pcodecs. vms/pcodecs is the single canonical construction site.
48 lines
1.6 KiB
Go
48 lines
1.6 KiB
Go
// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
|
|
// See the file LICENSE for licensing terms.
|
|
|
|
package warp
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/luxfi/node/vms/pcodecs"
|
|
)
|
|
|
|
const CodecVersion = 0
|
|
|
|
var Codec pcodecs.Manager
|
|
|
|
func init() {
|
|
Codec = pcodecs.NewMaxIntManager()
|
|
lc := pcodecs.NewLinearCodec()
|
|
|
|
// CRITICAL: RegisterType order is the on-chain wire format. linearcodec
|
|
// assigns a monotonically increasing typeID per call. Reordering ANY of
|
|
// these lines is a hard fork. New types must be appended ONLY.
|
|
//
|
|
// typeID 0x00 → BitSetSignature
|
|
// typeID 0x01 → CoronaSignature
|
|
// typeID 0x02 → EncryptedWarpPayload
|
|
// typeID 0x03 → HybridBLSCoronaSignature (renamed from HybridBLSRTSignature)
|
|
// typeID 0x04 → TeleportMessage
|
|
// typeID 0x05 → TeleportTransferPayload
|
|
// typeID 0x06 → TeleportAttestPayload
|
|
err := errors.Join(
|
|
// Warp 1.0: Classical BLS signatures
|
|
lc.RegisterType(&BitSetSignature{}),
|
|
// Warp 1.5: Quantum-safe signatures
|
|
lc.RegisterType(&CoronaSignature{}), // Recommended: Corona-only (LWE-based threshold)
|
|
lc.RegisterType(&EncryptedWarpPayload{}), // ML-KEM + AES-256-GCM encryption
|
|
lc.RegisterType(&HybridBLSCoronaSignature{}), // Deprecated: BLS+Corona hybrid
|
|
// Teleport: Cross-chain bridging protocol
|
|
lc.RegisterType(&TeleportMessage{}), // High-level bridge message wrapper
|
|
lc.RegisterType(&TeleportTransferPayload{}), // Asset transfer payload
|
|
lc.RegisterType(&TeleportAttestPayload{}), // Attestation payload
|
|
Codec.RegisterCodec(CodecVersion, lc),
|
|
)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|