Fix LUXAssetID -> XAssetID and update node to v1.18.11

This commit is contained in:
Zach Kelling
2025-09-27 03:33:46 +00:00
parent 3219e51735
commit c98952ac0c
17 changed files with 83 additions and 75 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
BSD 3-Clause License
Copyright (c) 2023-2024, Lux Partners Limited. All rights reserved.
Copyright (c) 2023-2025, Lux Partners Limited. All rights reserved.
Copyright (C) 2019-2023, Lux Industries, Inc.
Redistribution and use in source and binary forms, with or without
+1 -1
View File
@@ -1,2 +1,2 @@
Copyright (C) 2021-2024, Lux Partners Limited. All rights reserved.
Copyright (C) 2021-2025, Lux Partners Limited. All rights reserved.
See the file LICENSE for licensing terms.
+2 -2
View File
@@ -28,7 +28,7 @@ var (
var engineCmd = &cobra.Command{
Use: "engine",
Short: "Manage consensus engines",
Long: `Start, stop, and manage multiple consensus engines (luxd, avalanchego, etc.)`,
Long: `Start, stop, and manage multiple consensus engines (luxd, luxd, etc.)`,
}
// startCmd starts an engine
@@ -174,7 +174,7 @@ func init() {
engineCmd.AddCommand(listEnginesCmd)
// Engine start flags
startEngineCmd.Flags().StringVar(&engineType, "type", "lux", "Engine type (lux, avalanche, geth, op)")
startEngineCmd.Flags().StringVar(&engineType, "type", "lux", "Engine type (lux, lux, geth, op)")
startEngineCmd.Flags().Uint32Var(&networkID, "network-id", 96369, "Network ID")
startEngineCmd.Flags().Uint16Var(&httpPort, "http-port", 9630, "HTTP RPC port")
startEngineCmd.Flags().Uint16Var(&stakingPort, "staking-port", 9631, "P2P staking port")
+6 -6
View File
@@ -12,7 +12,7 @@ import (
"time"
"github.com/luxfi/netrunner/engines"
_ "github.com/luxfi/netrunner/engines/avalanche"
_ "github.com/luxfi/netrunner/engines/lux"
_ "github.com/luxfi/netrunner/engines/geth"
_ "github.com/luxfi/netrunner/engines/lux"
"github.com/spf13/cobra"
@@ -139,7 +139,7 @@ func newEngineStartCmd(logger *zap.Logger) *cobra.Command {
}
// General flags
cmd.Flags().StringVarP(&engineType, "type", "t", "lux", "Engine type (lux, avalanche, geth, op, eth2)")
cmd.Flags().StringVarP(&engineType, "type", "t", "lux", "Engine type (lux, lux, geth, op, eth2)")
cmd.Flags().Uint32Var(&networkID, "network-id", 1337, "Network ID")
cmd.Flags().Uint16Var(&httpPort, "http-port", 8545, "HTTP RPC port")
cmd.Flags().Uint16Var(&wsPort, "ws-port", 8546, "WebSocket port")
@@ -204,7 +204,7 @@ func newEngineListCmd(logger *zap.Logger) *cobra.Command {
fmt.Fprintln(w, "TYPE\tDESCRIPTION\tSTATUS")
fmt.Fprintln(w, "----\t-----------\t------")
fmt.Fprintln(w, "lux\tLux primary network\t✅ Ready")
fmt.Fprintln(w, "avalanche\tAvalanche network\t✅ Ready")
fmt.Fprintln(w, "lux\tLux network\t✅ Ready")
fmt.Fprintln(w, "geth\tEthereum (Geth)\t✅ Ready")
fmt.Fprintln(w, "op\tOP Stack L2\t✅ Ready")
fmt.Fprintln(w, "eth2\tEthereum 2.0\t✅ Ready")
@@ -290,7 +290,7 @@ func newEngineTestCmd(logger *zap.Logger) *cobra.Command {
// Type-specific tests
switch engineType {
case "lux", "avalanche":
case "lux", "lux":
fmt.Printf(" 🆔 Network ID: %d\n", engine.NetworkID())
fmt.Printf(" ⛓️ Chain ID: %s\n", engine.ChainID())
case "op":
@@ -326,8 +326,8 @@ func createEngine(engineType, name, binary string) (engines.Engine, error) {
switch engineType {
case "lux":
binary = "luxd"
case "avalanche":
binary = "avalanchego"
case "lux":
binary = "luxd"
case "geth":
binary = "geth"
case "op":
+3 -3
View File
@@ -40,7 +40,7 @@ func newTestAllCmd(logger *zap.Logger) *cobra.Command {
fmt.Println("🧪 Testing all engine types...")
fmt.Println()
engineTypes := []string{"lux", "avalanche", "geth", "op", "eth2"}
engineTypes := []string{"lux", "lux", "geth", "op", "eth2"}
results := make(map[string]bool)
for _, engineType := range engineTypes {
@@ -159,8 +159,8 @@ func testEngine(ctx context.Context, logger *zap.Logger, engineType string) erro
switch engineType {
case "lux":
binary = "luxd"
case "avalanche":
binary = "avalanchego"
case "lux":
binary = "luxd"
case "geth":
binary = "geth"
case "op":
+1 -1
View File
@@ -35,7 +35,7 @@ func main() {
Use: "netrunner",
Short: "Multi-consensus blockchain orchestrator",
Long: `Netrunner is a powerful orchestration tool for running multiple blockchain
consensus engines simultaneously. It supports Lux, Avalanche, Ethereum 2.0,
consensus engines simultaneously. It supports Lux, Lux, Ethereum 2.0,
OP Stack, and more.`,
Version: fmt.Sprintf("%s (commit: %s, built: %s)", version, commit, date),
}
+37 -37
View File
@@ -1,7 +1,7 @@
// Copyright (C) 2025, Lux Industries Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package avalanche
package lux
import (
"bytes"
@@ -20,11 +20,11 @@ import (
)
func init() {
engines.Register(engines.EngineAvalanche, NewAvalancheEngine)
engines.Register(engines.EngineLux, NewLuxEngine)
}
// AvalancheEngine wraps avalanchego node management
type AvalancheEngine struct {
// LuxEngine wraps luxd node management
type LuxEngine struct {
name string
binary string
dataDir string
@@ -39,30 +39,30 @@ type AvalancheEngine struct {
chainID ids.ID
}
// NewAvalancheEngine creates a new Avalanche engine
func NewAvalancheEngine(name string, binary string) (engines.Engine, error) {
// NewLuxEngine creates a new Lux engine
func NewLuxEngine(name string, binary string) (engines.Engine, error) {
if binary == "" {
binary = "avalanchego"
binary = "luxd"
}
return &AvalancheEngine{
return &LuxEngine{
name: name,
binary: binary,
}, nil
}
func (e *AvalancheEngine) Name() string { return e.name }
func (e *AvalancheEngine) Type() engines.EngineType { return engines.EngineAvalanche }
func (e *AvalancheEngine) NetworkID() uint32 { return e.networkID }
func (e *AvalancheEngine) ChainID() ids.ID { return e.chainID }
func (e *AvalancheEngine) ParentChain() *engines.ChainInfo { return nil } // L1
func (e *LuxEngine) Name() string { return e.name }
func (e *LuxEngine) Type() engines.EngineType { return engines.EngineLux }
func (e *LuxEngine) NetworkID() uint32 { return e.networkID }
func (e *LuxEngine) ChainID() ids.ID { return e.chainID }
func (e *LuxEngine) ParentChain() *engines.ChainInfo { return nil } // L1
func (e *AvalancheEngine) Start(ctx context.Context, config *engines.NodeConfig) error {
func (e *LuxEngine) Start(ctx context.Context, config *engines.NodeConfig) error {
e.config = config
e.networkID = config.NetworkID
// Setup data directory
if config.DataDir == "" {
config.DataDir = filepath.Join(os.TempDir(), "avalanche", e.name)
config.DataDir = filepath.Join(os.TempDir(), "lux", e.name)
}
e.dataDir = config.DataDir
@@ -72,7 +72,7 @@ func (e *AvalancheEngine) Start(ctx context.Context, config *engines.NodeConfig)
// Build command arguments
args := []string{
fmt.Sprintf("--network-id=%s", getAvalancheNetwork(config.NetworkID)),
fmt.Sprintf("--network-id=%s", getLuxNetwork(config.NetworkID)),
fmt.Sprintf("--http-port=%d", config.HTTPPort),
fmt.Sprintf("--staking-port=%d", config.StakingPort),
fmt.Sprintf("--data-dir=%s", e.dataDir),
@@ -107,7 +107,7 @@ func (e *AvalancheEngine) Start(ctx context.Context, config *engines.NodeConfig)
e.process.Stderr = logFile
if err := e.process.Start(); err != nil {
return fmt.Errorf("failed to start avalanchego: %w", err)
return fmt.Errorf("failed to start luxd: %w", err)
}
e.startTime = time.Now()
@@ -118,7 +118,7 @@ func (e *AvalancheEngine) Start(ctx context.Context, config *engines.NodeConfig)
ticker := time.NewTicker(500 * time.Millisecond)
defer ticker.Stop()
timeout := time.After(60 * time.Second) // Avalanche can take longer
timeout := time.After(60 * time.Second) // Lux can take longer
for {
select {
case <-ticker.C:
@@ -130,14 +130,14 @@ func (e *AvalancheEngine) Start(ctx context.Context, config *engines.NodeConfig)
return nil
}
case <-timeout:
return fmt.Errorf("avalanchego failed to start within 60 seconds")
return fmt.Errorf("luxd failed to start within 60 seconds")
case <-ctx.Done():
return ctx.Err()
}
}
}
func (e *AvalancheEngine) Stop(ctx context.Context) error {
func (e *LuxEngine) Stop(ctx context.Context) error {
if e.process == nil || e.process.Process == nil {
return nil
}
@@ -162,7 +162,7 @@ func (e *AvalancheEngine) Stop(ctx context.Context) error {
}
}
func (e *AvalancheEngine) Restart(ctx context.Context) error {
func (e *LuxEngine) Restart(ctx context.Context) error {
if err := e.Stop(ctx); err != nil {
return err
}
@@ -170,7 +170,7 @@ func (e *AvalancheEngine) Restart(ctx context.Context) error {
return e.Start(ctx, e.config)
}
func (e *AvalancheEngine) Health(ctx context.Context) (*engines.HealthStatus, error) {
func (e *LuxEngine) Health(ctx context.Context) (*engines.HealthStatus, error) {
if e.httpClient == nil {
return &engines.HealthStatus{Healthy: false}, nil
}
@@ -195,40 +195,40 @@ func (e *AvalancheEngine) Health(ctx context.Context) (*engines.HealthStatus, er
}, nil
}
func (e *AvalancheEngine) IsRunning() bool {
func (e *LuxEngine) IsRunning() bool {
return e.process != nil && e.process.Process != nil
}
func (e *AvalancheEngine) Uptime() time.Duration {
func (e *LuxEngine) Uptime() time.Duration {
if !e.IsRunning() {
return 0
}
return time.Since(e.startTime)
}
func (e *AvalancheEngine) RPCEndpoint() string {
func (e *LuxEngine) RPCEndpoint() string {
if e.config == nil {
return ""
}
return fmt.Sprintf("http://localhost:%d", e.config.HTTPPort)
}
func (e *AvalancheEngine) WSEndpoint() string {
func (e *LuxEngine) WSEndpoint() string {
if e.config == nil {
return ""
}
// Avalanche uses same port for HTTP and WS
// Lux uses same port for HTTP and WS
return fmt.Sprintf("ws://localhost:%d/ext/bc/C/ws", e.config.HTTPPort)
}
func (e *AvalancheEngine) P2PEndpoint() string {
func (e *LuxEngine) P2PEndpoint() string {
if e.config == nil {
return ""
}
return fmt.Sprintf("localhost:%d", e.config.StakingPort)
}
func (e *AvalancheEngine) Metrics() map[string]interface{} {
func (e *LuxEngine) Metrics() map[string]interface{} {
return map[string]interface{}{
"uptime_seconds": e.Uptime().Seconds(),
"running": e.IsRunning(),
@@ -237,8 +237,8 @@ func (e *AvalancheEngine) Metrics() map[string]interface{} {
}
}
// getAvalancheNetwork converts network ID to avalanche network name
func getAvalancheNetwork(networkID uint32) string {
// getLuxNetwork converts network ID to lux network name
func getLuxNetwork(networkID uint32) string {
switch networkID {
case 1:
return "mainnet"
@@ -255,7 +255,7 @@ func getAvalancheNetwork(networkID uint32) string {
// Helper methods for RPC calls
func (e *AvalancheEngine) callRPC(ctx context.Context, endpoint string, method string, params interface{}) (json.RawMessage, error) {
func (e *LuxEngine) callRPC(ctx context.Context, endpoint string, method string, params interface{}) (json.RawMessage, error) {
reqBody := map[string]interface{}{
"jsonrpc": "2.0",
"id": 1,
@@ -304,7 +304,7 @@ func (e *AvalancheEngine) callRPC(ctx context.Context, endpoint string, method s
return result.Result, nil
}
func (e *AvalancheEngine) getNodeID(ctx context.Context) (string, error) {
func (e *LuxEngine) getNodeID(ctx context.Context) (string, error) {
result, err := e.callRPC(ctx, "/ext/info", "info.getNodeID", struct{}{})
if err != nil {
return "", err
@@ -320,7 +320,7 @@ func (e *AvalancheEngine) getNodeID(ctx context.Context) (string, error) {
return resp.NodeID, nil
}
func (e *AvalancheEngine) getBlockchainID(ctx context.Context, alias string) (ids.ID, error) {
func (e *LuxEngine) getBlockchainID(ctx context.Context, alias string) (ids.ID, error) {
result, err := e.callRPC(ctx, "/ext/info", "info.getBlockchainID", map[string]string{"alias": alias})
if err != nil {
return ids.Empty, err
@@ -336,7 +336,7 @@ func (e *AvalancheEngine) getBlockchainID(ctx context.Context, alias string) (id
return ids.FromString(resp.BlockchainID)
}
func (e *AvalancheEngine) getHealth(ctx context.Context) (bool, error) {
func (e *LuxEngine) getHealth(ctx context.Context) (bool, error) {
result, err := e.callRPC(ctx, "/ext/health", "health.health", struct{}{})
if err != nil {
return false, err
@@ -352,7 +352,7 @@ func (e *AvalancheEngine) getHealth(ctx context.Context) (bool, error) {
return resp.Healthy, nil
}
func (e *AvalancheEngine) getPeerCount(ctx context.Context) (int, error) {
func (e *LuxEngine) getPeerCount(ctx context.Context) (int, error) {
result, err := e.callRPC(ctx, "/ext/info", "info.peers", struct{}{})
if err != nil {
return 0, err
@@ -377,7 +377,7 @@ func (e *AvalancheEngine) getPeerCount(ctx context.Context) (int, error) {
return len(resp.Peers), nil
}
func (e *AvalancheEngine) getNodeVersion(ctx context.Context) (string, error) {
func (e *LuxEngine) getNodeVersion(ctx context.Context) (string, error) {
result, err := e.callRPC(ctx, "/ext/info", "info.getNodeVersion", struct{}{})
if err != nil {
return "", err
+1 -1
View File
@@ -15,7 +15,7 @@ func TestEngineTypes(t *testing.T) {
// Test that engine types are defined correctly
engines := []EngineType{
EngineLux,
EngineAvalanche,
EngineLux,
EngineGeth,
EngineOP,
EngineEth2,
+1 -1
View File
@@ -16,7 +16,7 @@ type EngineType string
const (
EngineLux EngineType = "lux"
EngineAvalanche EngineType = "avalanche"
EngineLux EngineType = "lux"
EngineGeth EngineType = "geth"
EngineOP EngineType = "op"
EngineEth2 EngineType = "eth2"
+8 -8
View File
@@ -1,6 +1,6 @@
name: multi-consensus-stack
version: 1.0.0
description: Multi-consensus architecture with Lux, Avalanche, Ethereum, and OP Stack
description: Multi-consensus architecture with Lux, Lux, Ethereum, and OP Stack
engines:
# Lux Primary Network
@@ -16,10 +16,10 @@ engines:
consensus: snowman
wait_healthy: true
# Avalanche for compatibility testing
- name: avalanche-c-chain
type: avalanche
binary: "avalanchego"
# Lux for compatibility testing
- name: lux-c-chain
type: lux
binary: "luxd"
network_id: 43114
http_port: 9650
ws_port: 9651
@@ -92,7 +92,7 @@ engines:
bridge:
type: awm
source: lux-mainnet
destination: avalanche-c-chain
destination: lux-c-chain
relayer_key: "relayer.key"
contracts:
teleporter: "0x253b2784c75e510dD0fF1da844684a1aC0aa5fcf"
@@ -107,9 +107,9 @@ networks:
- "http://localhost:9630"
- "ws://localhost:9631"
- name: avalanche
- name: lux
type: l1
engine: avalanche-c-chain
engine: lux-c-chain
chain_id: 43114
endpoints:
- "http://localhost:9650"
+3 -1
View File
@@ -15,7 +15,7 @@ require (
github.com/luxfi/log v1.1.22
github.com/luxfi/math v0.1.1
github.com/luxfi/metric v1.4.0
github.com/luxfi/node v1.18.10
github.com/luxfi/node v1.18.11
github.com/onsi/ginkgo/v2 v2.25.1
github.com/onsi/gomega v1.37.0
github.com/otiai10/copy v1.14.1
@@ -39,6 +39,7 @@ require (
github.com/Masterminds/semver/v3 v3.4.0 // indirect
github.com/Microsoft/go-winio v0.6.2 // indirect
github.com/NYTimes/gziphandler v1.1.1 // indirect
github.com/StephenButtolph/canoto v0.17.2 // indirect
github.com/VictoriaMetrics/fastcache v1.13.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/bits-and-blooms/bitset v1.24.0 // indirect
@@ -67,6 +68,7 @@ require (
github.com/ethereum/c-kzg-4844/v2 v2.1.1 // indirect
github.com/ethereum/go-bigmodexpfix v0.0.0-20250911101455-f9e208c548ab // indirect
github.com/ethereum/go-verkle v0.2.2 // indirect
github.com/fatih/structtag v1.2.0 // indirect
github.com/ferranbt/fastssz v1.0.0 // indirect
github.com/fsnotify/fsnotify v1.9.0 // indirect
github.com/getsentry/sentry-go v0.35.1 // indirect
+6
View File
@@ -10,6 +10,8 @@ github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cq
github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
github.com/StephenButtolph/canoto v0.17.2 h1:kRLJwtYk0bzdGEeEvwHaVmmDm0HFHxrS0VlVN5Hyo7U=
github.com/StephenButtolph/canoto v0.17.2/go.mod h1:IcnAHC6nJUfQFVR9y60ko2ecUqqHHSB6UwI9NnBFZnE=
github.com/VictoriaMetrics/fastcache v1.13.0 h1:AW4mheMR5Vd9FkAPUv+NH6Nhw+fmbTMGMsNAoA/+4G0=
github.com/VictoriaMetrics/fastcache v1.13.0/go.mod h1:hHXhl4DA2fTL2HTZDJFXWgW0LNjo6B+4aj2Wmng3TjU=
github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII=
@@ -129,6 +131,8 @@ github.com/ethereum/go-bigmodexpfix v0.0.0-20250911101455-f9e208c548ab h1:rvv6MJ
github.com/ethereum/go-bigmodexpfix v0.0.0-20250911101455-f9e208c548ab/go.mod h1:IuLm4IsPipXKF7CW5Lzf68PIbZ5yl7FFd74l/E0o9A8=
github.com/ethereum/go-verkle v0.2.2 h1:I2W0WjnrFUIzzVPwm8ykY+7pL2d4VhlsePn4j7cnFk8=
github.com/ethereum/go-verkle v0.2.2/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk=
github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4=
github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94=
github.com/ferranbt/fastssz v1.0.0 h1:9EXXYsracSqQRBQiHeaVsG/KQeYblPf40hsQPb9Dzk8=
github.com/ferranbt/fastssz v1.0.0/go.mod h1:Ea3+oeoRGGLGm5shYAeDgu6PGUlcvQhE2fILyD9+tGg=
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
@@ -292,6 +296,8 @@ github.com/luxfi/mock v0.1.0 h1:IwElfNu+T9sXvzFX6tudPDx1vqPuACRSRdxpD5lxW+o=
github.com/luxfi/mock v0.1.0/go.mod h1:izF+9K0gGzFC9zERn6Po37v46eLdPB+EIsDjL3GLk+U=
github.com/luxfi/node v1.18.10 h1:6hrQHbwaHbyqQeUh5HMplg7IAHFOm88Cq/IBrod0UY4=
github.com/luxfi/node v1.18.10/go.mod h1:fTB6iMiXTBR7W7xrcXKkHYwVG3ula62CEihEPXr51Bg=
github.com/luxfi/node v1.18.11 h1:387m+Rd0AMBgYoBWE3Aai/CpnxfCpjNRt3i11SBJK4k=
github.com/luxfi/node v1.18.11/go.mod h1:fTB6iMiXTBR7W7xrcXKkHYwVG3ula62CEihEPXr51Bg=
github.com/luxfi/trace v0.1.2 h1:KhRZbk2lQQmmYZjdTWcZKCYkLfu7/VUiLFIsWFKhkwg=
github.com/luxfi/trace v0.1.2/go.mod h1:4SleFc5NVbQYEfn6rYafdfxvHJ+QSdkGAIfKiICYvQE=
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
+1 -1
View File
@@ -694,7 +694,7 @@ func newWallet(
xClient := xvm.NewClient(uri, "X")
w.xWallet = x.NewWallet(xBuilder, xSigner, xClient, xBackend)
w.xChainID = xChainID
w.luxAssetID = luxState.PCTX.LUXAssetID
w.luxAssetID = luxState.PCTX.XAssetID
return &w, nil
}
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (C) 2024, Lux Industries Inc. All rights reserved.
// Copyright (C) 2025, Lux Industries Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package main
+2 -2
View File
@@ -64,14 +64,14 @@ func TestMultiEngineOrchestration(t *testing.T) {
err := host.StartEngine(ctx, "lux-1", engines.EngineLux, luxConfig)
require.NoError(t, err)
// Start Avalanche
// Start Lux
avaConfig := &engines.NodeConfig{
NetworkID: 43114,
HTTPPort: 19650,
StakingPort: 19651,
LogLevel: "info",
}
err = host.StartEngine(ctx, "ava-1", engines.EngineAvalanche, avaConfig)
err = host.StartEngine(ctx, "ava-1", engines.EngineLux, avaConfig)
require.NoError(t, err)
// Check both are running
+2 -2
View File
@@ -26,7 +26,7 @@ type StackManifest struct {
// EngineConfig defines an engine configuration
type EngineConfig struct {
Name string `yaml:"name" json:"name"`
Type string `yaml:"type" json:"type"` // lux, avalanche, geth, op, eth2
Type string `yaml:"type" json:"type"` // lux, lux, geth, op, eth2
Binary string `yaml:"binary,omitempty" json:"binary,omitempty"`
NetworkID uint32 `yaml:"network_id" json:"network_id"`
HTTPPort uint16 `yaml:"http_port,omitempty" json:"http_port,omitempty"`
@@ -91,7 +91,7 @@ func (m *StackManifest) Validate() error {
// Validate engine type
switch e.Type {
case "lux", "avalanche", "geth", "op", "eth2":
case "lux", "lux", "geth", "op", "eth2":
// Valid
default:
return fmt.Errorf("invalid engine type: %s", e.Type)
+7 -7
View File
@@ -1,6 +1,6 @@
name: lux-avalanche-bridge
name: lux-lux-bridge
version: 1.0.0
description: Lux L1 + Avalanche C-Chain with AWM bridge
description: Lux L1 + Lux C-Chain with AWM bridge
engines:
- name: lux-l1
@@ -15,8 +15,8 @@ engines:
sybil-protection-enabled: false
health-check-frequency: 2s
- name: avalanche-c
type: avalanche
- name: lux-c
type: lux
network_id: 43114
http_port: 9650
staking_port: 9651
@@ -27,7 +27,7 @@ engines:
bridge:
type: awm
source: avalanche-c
source: lux-c
destination: lux-l1
contracts:
messenger: "0x0000000000000000000000000000000000000000"
@@ -39,7 +39,7 @@ networks:
engine: lux-l1
chain_id: 96369
- name: avalanche-mainnet
- name: lux-mainnet
type: l1
engine: avalanche-c
engine: lux-c
chain_id: 43114