mirror of
https://github.com/luxfi/bridge.git
synced 2026-09-24 00:26:46 +00:00
chain routes: /v1/bc -> /v1/chain
luxd serves chain routes under /v1/chain, and the node, cli and sdk releases already ship it. The deployed gateways still answer the old prefix, so remote reads break until they are redeployed; the estate moves together rather than sitting half converted. Lines that record an observation - a probe, a status code, a past release - keep the prefix they were written against, as do URLs on hosts that are not ours. Avalanche endpoints move to /ext/bc, which is the path that host serves.
This commit is contained in:
@@ -60,7 +60,7 @@
|
||||
"42161": "https://arb1.arbitrum.io/rpc",
|
||||
"8453": "https://mainnet.base.org",
|
||||
"137": "https://polygon-rpc.com",
|
||||
"43114": "https://api.avax.network/v1/chain/C/rpc"
|
||||
"43114": "https://api.avax.network/ext/bc/C/rpc"
|
||||
},
|
||||
"api": {
|
||||
"graphql": "https://api.lux.exchange/v1/graphql",
|
||||
|
||||
@@ -308,10 +308,10 @@ const RPC_URLS: Record<string, string> = {
|
||||
ETHEREUM_SEPOLIA: 'https://rpc.sepolia.org',
|
||||
BASE_MAINNET: 'https://mainnet.base.org',
|
||||
BASE_SEPOLIA: 'https://sepolia.base.org',
|
||||
LUX_MAINNET: 'https://api.lux.network/v1/bc/C/rpc',
|
||||
LUX_TESTNET: 'https://api.lux-test.network/v1/bc/C/rpc',
|
||||
ZOO_MAINNET: 'https://api.zoo.network/v1/bc/C/rpc',
|
||||
ZOO_TESTNET: 'https://api.zoo-test.network/v1/bc/C/rpc',
|
||||
LUX_MAINNET: 'https://api.lux.network/v1/chain/C/rpc',
|
||||
LUX_TESTNET: 'https://api.lux-test.network/v1/chain/C/rpc',
|
||||
ZOO_MAINNET: 'https://api.zoo.network/v1/chain/C/rpc',
|
||||
ZOO_TESTNET: 'https://api.zoo-test.network/v1/chain/C/rpc',
|
||||
BSC_MAINNET: 'https://bsc-dataseed.binance.org',
|
||||
BSC_TESTNET: 'https://data-seed-prebsc-1-s1.binance.org:8545',
|
||||
POLYGON_MAINNET: 'https://polygon-rpc.com',
|
||||
|
||||
@@ -710,12 +710,12 @@ export async function handlerUtilaPayoutAction(swapId: string) {
|
||||
|
||||
// rpc urls — Zoo is an L2 subnet on Lux, NOT the Z-chain
|
||||
const rpcs: Record<string, string> = {
|
||||
'LUX_MAINNET': 'https://api.lux.network/v1/bc/C/rpc',
|
||||
'LUX_TESTNET': 'https://api.lux-test.network/v1/bc/C/rpc',
|
||||
'LUX_DEVNET': 'https://api.lux-dev.network/v1/bc/C/rpc',
|
||||
'ZOO_MAINNET': 'https://api.zoo.network/v1/bc/C/rpc',
|
||||
'ZOO_TESTNET': 'https://api.zoo-test.network/v1/bc/C/rpc',
|
||||
'ZOO_DEVNET': 'https://api.zoo-dev.network/v1/bc/C/rpc'
|
||||
'LUX_MAINNET': 'https://api.lux.network/v1/chain/C/rpc',
|
||||
'LUX_TESTNET': 'https://api.lux-test.network/v1/chain/C/rpc',
|
||||
'LUX_DEVNET': 'https://api.lux-dev.network/v1/chain/C/rpc',
|
||||
'ZOO_MAINNET': 'https://api.zoo.network/v1/chain/C/rpc',
|
||||
'ZOO_TESTNET': 'https://api.zoo-test.network/v1/chain/C/rpc',
|
||||
'ZOO_DEVNET': 'https://api.zoo-dev.network/v1/chain/C/rpc'
|
||||
}
|
||||
const rpc = rpcs[swap?.destination_network?.internal_name as string]
|
||||
console.log(">> payout details", {
|
||||
|
||||
@@ -11,12 +11,12 @@ const MAX_SWAP_AGE_HOURS = 72
|
||||
// RPC endpoints for verifying transfers on-chain
|
||||
// Zoo is an L2 subnet on Lux, NOT the Z-chain (ZK VM)
|
||||
const RPC_URLS: Record<string, string> = {
|
||||
LUX_MAINNET: "https://api.lux.network/v1/bc/C/rpc",
|
||||
LUX_TESTNET: "https://api.lux-test.network/v1/bc/C/rpc",
|
||||
LUX_DEVNET: "https://api.lux-dev.network/v1/bc/C/rpc",
|
||||
ZOO_MAINNET: "https://api.zoo.network/v1/bc/C/rpc",
|
||||
ZOO_TESTNET: "https://api.zoo-test.network/v1/bc/C/rpc",
|
||||
ZOO_DEVNET: "https://api.zoo-dev.network/v1/bc/C/rpc",
|
||||
LUX_MAINNET: "https://api.lux.network/v1/chain/C/rpc",
|
||||
LUX_TESTNET: "https://api.lux-test.network/v1/chain/C/rpc",
|
||||
LUX_DEVNET: "https://api.lux-dev.network/v1/chain/C/rpc",
|
||||
ZOO_MAINNET: "https://api.zoo.network/v1/chain/C/rpc",
|
||||
ZOO_TESTNET: "https://api.zoo-test.network/v1/chain/C/rpc",
|
||||
ZOO_DEVNET: "https://api.zoo-dev.network/v1/chain/C/rpc",
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -38,11 +38,11 @@ var estate = []struct {
|
||||
asset string
|
||||
endpoint string
|
||||
}{
|
||||
{"LUX_MAINNET", 96369, "LUX", "https://api.lux.network/v1/bc/C/rpc"},
|
||||
{"ZOO_MAINNET", 200200, "ZOO", "https://api.zoo.network/v1/bc/C/rpc"},
|
||||
{"HANZO_MAINNET", 36963, "AI", "https://api.hanzo.network/v1/bc/C/rpc"},
|
||||
{"PARS_MAINNET", 494949, "PARS", "https://api.pars.network/v1/bc/C/rpc"},
|
||||
{"OSAGE_MAINNET", 1872, "OSG", "https://api.osage.network/v1/bc/C/rpc"},
|
||||
{"LUX_MAINNET", 96369, "LUX", "https://api.lux.network/v1/chain/C/rpc"},
|
||||
{"ZOO_MAINNET", 200200, "ZOO", "https://api.zoo.network/v1/chain/C/rpc"},
|
||||
{"HANZO_MAINNET", 36963, "AI", "https://api.hanzo.network/v1/chain/C/rpc"},
|
||||
{"PARS_MAINNET", 494949, "PARS", "https://api.pars.network/v1/chain/C/rpc"},
|
||||
{"OSAGE_MAINNET", 1872, "OSG", "https://api.osage.network/v1/chain/C/rpc"},
|
||||
}
|
||||
|
||||
// Custody on an EVM chain is the same secp256k1 key at the same address, so
|
||||
|
||||
@@ -16,7 +16,7 @@ import (
|
||||
// (built atop the validator quorum's consensus) is the source of truth
|
||||
// for pending / in-flight / completed bridge requests. This local
|
||||
// store is a cache so the daemon's HTTP API can answer reads quickly
|
||||
// without round-tripping to /v1/bc/B/rpc for every request.
|
||||
// without round-tripping to /v1/chain/B/rpc for every request.
|
||||
//
|
||||
// ON CONFLICT, B-CHAIN WINS. Run `bridge --resync-swaps` to rebuild
|
||||
// the local cache from authoritative chain state. The daemon refuses
|
||||
|
||||
+1
-1
@@ -326,7 +326,7 @@ services:
|
||||
# fine for low-volume soak; pin to a private provider (Alchemy /
|
||||
# Infura / Quicknode) before high-volume cutover so rate limits
|
||||
# don't drop deposit-watcher polls.
|
||||
- BRIDGE_SOURCE_RPC_OVERRIDES=ETHEREUM_MAINNET=https://eth.llamarpc.com,LUX_MAINNET=https://api.lux.network/v1/bc/C/rpc,ARBITRUM_MAINNET=https://arb1.arbitrum.io/rpc,OPTIMISM_MAINNET=https://mainnet.optimism.io,BASE_MAINNET=https://mainnet.base.org,POLYGON_MAINNET=https://polygon-rpc.com,BSC_MAINNET=https://bsc-dataseed.binance.org,AVAX_MAINNET=https://api.avax.network/ext/bc/C/rpc
|
||||
- BRIDGE_SOURCE_RPC_OVERRIDES=ETHEREUM_MAINNET=https://eth.llamarpc.com,LUX_MAINNET=https://api.lux.network/v1/chain/C/rpc,ARBITRUM_MAINNET=https://arb1.arbitrum.io/rpc,OPTIMISM_MAINNET=https://mainnet.optimism.io,BASE_MAINNET=https://mainnet.base.org,POLYGON_MAINNET=https://polygon-rpc.com,BSC_MAINNET=https://bsc-dataseed.binance.org,AVAX_MAINNET=https://api.avax.network/ext/bc/C/rpc
|
||||
volumes:
|
||||
# Networks + tokens config. Read-only mount so an accidental write
|
||||
# inside the container can't corrupt the operator-checked source-
|
||||
|
||||
+1
-1
@@ -263,7 +263,7 @@ services:
|
||||
# Source-chain RPC overrides. Holesky's publicnode default is
|
||||
# geo-blocked from many hosts; drpc is reliable. Override per
|
||||
# chain if you hit rate limits.
|
||||
- BRIDGE_SOURCE_RPC_OVERRIDES=ETHEREUM_SEPOLIA=https://ethereum-sepolia-rpc.publicnode.com,LUX_TESTNET=https://api.lux-test.network/v1/bc/C/rpc,BASE_SEPOLIA=https://sepolia.base.org,HOLESKY_TESTNET=https://holesky.drpc.org
|
||||
- BRIDGE_SOURCE_RPC_OVERRIDES=ETHEREUM_SEPOLIA=https://ethereum-sepolia-rpc.publicnode.com,LUX_TESTNET=https://api.lux-test.network/v1/chain/C/rpc,BASE_SEPOLIA=https://sepolia.base.org,HOLESKY_TESTNET=https://holesky.drpc.org
|
||||
volumes:
|
||||
# YAML-driven SPA picker config (networks + tokens + limits).
|
||||
# Mounted read-only — the k8s deployment uses a ConfigMap for
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// Package bchain is a JSON-RPC client for the Lux BridgeVM (b-chain).
|
||||
//
|
||||
// This is the Go port of `pkg/bridge/src/app/lib/bridge-rpc.ts`. Talks to
|
||||
// the BridgeVM JSON-RPC interface (`${nodeUrl}/v1/bc/B/rpc`) and, when
|
||||
// configured, the ThresholdVM interface (`${nodeUrl}/v1/bc/T/rpc`) for
|
||||
// the BridgeVM JSON-RPC interface (`${nodeUrl}/v1/chain/B/rpc`) and, when
|
||||
// configured, the ThresholdVM interface (`${nodeUrl}/v1/chain/T/rpc`) for
|
||||
// MPC signature retrieval.
|
||||
//
|
||||
// Trust model matches the TS client: the JSON-RPC node is untrusted
|
||||
@@ -178,7 +178,7 @@ type BridgeSignature struct {
|
||||
// material itself; b-chain is the membership + epoch ledger.
|
||||
//
|
||||
// The methods land on the same JSON-RPC endpoint as bridge_getInfo (the
|
||||
// BridgeVM RPC at `${nodeUrl}/v1/bc/B/rpc`), not on ThresholdVM. They
|
||||
// BridgeVM RPC at `${nodeUrl}/v1/chain/B/rpc`), not on ThresholdVM. They
|
||||
// are read-only — the bridge never proposes a rotation; node operators
|
||||
// do that out-of-band via BridgeVM governance.
|
||||
|
||||
@@ -296,7 +296,7 @@ const DefaultTimeout = 10 * time.Second
|
||||
// the ThresholdVM (t-chain). Safe for concurrent use.
|
||||
type Client struct {
|
||||
// BridgeRPCURL is the BridgeVM JSON-RPC endpoint
|
||||
// (e.g. https://node.lux.network/v1/bc/B/rpc). Required.
|
||||
// (e.g. https://node.lux.network/v1/chain/B/rpc). Required.
|
||||
BridgeRPCURL string
|
||||
|
||||
// ThresholdRPCURL is the ThresholdVM JSON-RPC endpoint. Optional;
|
||||
@@ -334,8 +334,8 @@ func New(nodeURL string, timeout time.Duration) *Client {
|
||||
nodeURL = "http://127.0.0.1:9650"
|
||||
}
|
||||
return &Client{
|
||||
BridgeRPCURL: nodeURL + "/v1/bc/B/rpc",
|
||||
ThresholdRPCURL: nodeURL + "/v1/bc/T/rpc",
|
||||
BridgeRPCURL: nodeURL + "/v1/chain/B/rpc",
|
||||
ThresholdRPCURL: nodeURL + "/v1/chain/T/rpc",
|
||||
Timeout: timeout,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -497,10 +497,10 @@ func TestThresholdCall_NotConfigured(t *testing.T) {
|
||||
|
||||
func TestNew_DerivesURLs(t *testing.T) {
|
||||
c := New("https://api.lux-test.network", 0)
|
||||
if c.BridgeRPCURL != "https://api.lux-test.network/v1/bc/B/rpc" {
|
||||
if c.BridgeRPCURL != "https://api.lux-test.network/v1/chain/B/rpc" {
|
||||
t.Errorf("BridgeRPCURL: %q", c.BridgeRPCURL)
|
||||
}
|
||||
if c.ThresholdRPCURL != "https://api.lux-test.network/v1/bc/T/rpc" {
|
||||
if c.ThresholdRPCURL != "https://api.lux-test.network/v1/chain/T/rpc" {
|
||||
t.Errorf("ThresholdRPCURL: %q", c.ThresholdRPCURL)
|
||||
}
|
||||
if c.Timeout != 0 {
|
||||
@@ -510,7 +510,7 @@ func TestNew_DerivesURLs(t *testing.T) {
|
||||
|
||||
func TestNew_DefaultsToLocalhost(t *testing.T) {
|
||||
c := New("", 5*time.Second)
|
||||
if c.BridgeRPCURL != "http://127.0.0.1:9650/v1/bc/B/rpc" {
|
||||
if c.BridgeRPCURL != "http://127.0.0.1:9650/v1/chain/B/rpc" {
|
||||
t.Errorf("expected localhost default, got %q", c.BridgeRPCURL)
|
||||
}
|
||||
if c.Timeout != 5*time.Second {
|
||||
|
||||
@@ -64,13 +64,13 @@ var rpcURLs = map[string]string{
|
||||
"ETHEREUM_SEPOLIA": "https://rpc.sepolia.org",
|
||||
"BASE_MAINNET": "https://mainnet.base.org",
|
||||
"BASE_SEPOLIA": "https://sepolia.base.org",
|
||||
"LUX_MAINNET": "https://api.lux.network/v1/bc/C/rpc",
|
||||
"LUX_TESTNET": "https://api.lux-test.network/v1/bc/C/rpc",
|
||||
"ZOO_MAINNET": "https://api.zoo.network/v1/bc/C/rpc",
|
||||
"HANZO_MAINNET": "https://api.hanzo.network/v1/bc/C/rpc",
|
||||
"PARS_MAINNET": "https://api.pars.network/v1/bc/C/rpc",
|
||||
"OSAGE_MAINNET": "https://api.osage.network/v1/bc/C/rpc",
|
||||
"ZOO_TESTNET": "https://api.zoo-test.network/v1/bc/C/rpc",
|
||||
"LUX_MAINNET": "https://api.lux.network/v1/chain/C/rpc",
|
||||
"LUX_TESTNET": "https://api.lux-test.network/v1/chain/C/rpc",
|
||||
"ZOO_MAINNET": "https://api.zoo.network/v1/chain/C/rpc",
|
||||
"HANZO_MAINNET": "https://api.hanzo.network/v1/chain/C/rpc",
|
||||
"PARS_MAINNET": "https://api.pars.network/v1/chain/C/rpc",
|
||||
"OSAGE_MAINNET": "https://api.osage.network/v1/chain/C/rpc",
|
||||
"ZOO_TESTNET": "https://api.zoo-test.network/v1/chain/C/rpc",
|
||||
"BSC_MAINNET": "https://bsc-dataseed.binance.org",
|
||||
"BSC_TESTNET": "https://data-seed-prebsc-1-s1.binance.org:8545",
|
||||
"POLYGON_MAINNET": "https://polygon-rpc.com",
|
||||
|
||||
@@ -66,13 +66,13 @@ var rpcURLs = map[string]string{
|
||||
"ETHEREUM_SEPOLIA": "https://rpc.sepolia.org",
|
||||
"BASE_MAINNET": "https://mainnet.base.org",
|
||||
"BASE_SEPOLIA": "https://sepolia.base.org",
|
||||
"LUX_MAINNET": "https://api.lux.network/v1/bc/C/rpc",
|
||||
"LUX_TESTNET": "https://api.lux-test.network/v1/bc/C/rpc",
|
||||
"ZOO_MAINNET": "https://api.zoo.network/v1/bc/C/rpc",
|
||||
"HANZO_MAINNET": "https://api.hanzo.network/v1/bc/C/rpc",
|
||||
"PARS_MAINNET": "https://api.pars.network/v1/bc/C/rpc",
|
||||
"OSAGE_MAINNET": "https://api.osage.network/v1/bc/C/rpc",
|
||||
"ZOO_TESTNET": "https://api.zoo-test.network/v1/bc/C/rpc",
|
||||
"LUX_MAINNET": "https://api.lux.network/v1/chain/C/rpc",
|
||||
"LUX_TESTNET": "https://api.lux-test.network/v1/chain/C/rpc",
|
||||
"ZOO_MAINNET": "https://api.zoo.network/v1/chain/C/rpc",
|
||||
"HANZO_MAINNET": "https://api.hanzo.network/v1/chain/C/rpc",
|
||||
"PARS_MAINNET": "https://api.pars.network/v1/chain/C/rpc",
|
||||
"OSAGE_MAINNET": "https://api.osage.network/v1/chain/C/rpc",
|
||||
"ZOO_TESTNET": "https://api.zoo-test.network/v1/chain/C/rpc",
|
||||
"BSC_MAINNET": "https://bsc-dataseed.binance.org",
|
||||
"BSC_TESTNET": "https://data-seed-prebsc-1-s1.binance.org:8545",
|
||||
"POLYGON_MAINNET": "https://polygon-rpc.com",
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
// Naming: the boss calls it "m-chain" in the broader sense ("proxy to
|
||||
// b-chain and m-chain"). The MPC keygen API is HTTP (port 9800 internal
|
||||
// k8s service `http://mpc-node-0.mpc-node-headless.lux-mpc.svc:9800`),
|
||||
// not a JSON-RPC chain endpoint — those live at `/v1/bc/T/rpc` and
|
||||
// not a JSON-RPC chain endpoint — those live at `/v1/chain/T/rpc` and
|
||||
// are handled by internal/bchain's ThresholdRPCURL path. Both belong
|
||||
// to the m-chain "layer" by the boss's vocabulary.
|
||||
//
|
||||
|
||||
@@ -43,13 +43,13 @@ var defaultEndpoints = map[string]string{
|
||||
"ETHEREUM_SEPOLIA": "https://rpc.sepolia.org",
|
||||
"BASE_MAINNET": "https://mainnet.base.org",
|
||||
"BASE_SEPOLIA": "https://sepolia.base.org",
|
||||
"LUX_MAINNET": "https://api.lux.network/v1/bc/C/rpc",
|
||||
"LUX_TESTNET": "https://api.lux-test.network/v1/bc/C/rpc",
|
||||
"ZOO_MAINNET": "https://api.zoo.network/v1/bc/C/rpc",
|
||||
"HANZO_MAINNET": "https://api.hanzo.network/v1/bc/C/rpc",
|
||||
"PARS_MAINNET": "https://api.pars.network/v1/bc/C/rpc",
|
||||
"OSAGE_MAINNET": "https://api.osage.network/v1/bc/C/rpc",
|
||||
"ZOO_TESTNET": "https://api.zoo-test.network/v1/bc/C/rpc",
|
||||
"LUX_MAINNET": "https://api.lux.network/v1/chain/C/rpc",
|
||||
"LUX_TESTNET": "https://api.lux-test.network/v1/chain/C/rpc",
|
||||
"ZOO_MAINNET": "https://api.zoo.network/v1/chain/C/rpc",
|
||||
"HANZO_MAINNET": "https://api.hanzo.network/v1/chain/C/rpc",
|
||||
"PARS_MAINNET": "https://api.pars.network/v1/chain/C/rpc",
|
||||
"OSAGE_MAINNET": "https://api.osage.network/v1/chain/C/rpc",
|
||||
"ZOO_TESTNET": "https://api.zoo-test.network/v1/chain/C/rpc",
|
||||
"BSC_MAINNET": "https://bsc-dataseed.binance.org",
|
||||
"BSC_TESTNET": "https://data-seed-prebsc-1-s1.binance.org:8545",
|
||||
"POLYGON_MAINNET": "https://polygon-rpc.com",
|
||||
|
||||
@@ -40,7 +40,7 @@ data:
|
||||
- slug: lux
|
||||
name: Lux Network
|
||||
chain_id: 96369
|
||||
rpc_url: http://lux-c-chain:9650/v1/bc/C/rpc
|
||||
rpc_url: http://lux-c-chain:9650/v1/chain/C/rpc
|
||||
subgraphs:
|
||||
- name: bridge
|
||||
schema: bridge
|
||||
|
||||
@@ -813,8 +813,8 @@ metadata:
|
||||
namespace: lux-bridge
|
||||
data:
|
||||
config.yaml: |
|
||||
lux_rpc: https://api.lux.network/v1/bc/C/rpc
|
||||
zoo_rpc: https://api.zoo.network/v1/bc/C/rpc
|
||||
lux_rpc: https://api.lux.network/v1/chain/C/rpc
|
||||
zoo_rpc: https://api.zoo.network/v1/chain/C/rpc
|
||||
opnet_rpc: https://opnet.lux.network/rpc
|
||||
teleporter_address: ""
|
||||
lux_chain_id: 96369
|
||||
|
||||
@@ -41,6 +41,6 @@ adapter:
|
||||
|
||||
watcher:
|
||||
plugin: lux_warp_watcher
|
||||
rpc_url: "https://api.lux.network/v1/bc/C/rpc"
|
||||
rpc_url: "https://api.lux.network/v1/chain/C/rpc"
|
||||
poll_interval_ms: 2000 # ~2s C-Chain block time
|
||||
start_block: 0
|
||||
|
||||
@@ -91,7 +91,7 @@ type Config struct {
|
||||
// RPC URLs and contract addresses must be overridden.
|
||||
func DefaultConfig() Config {
|
||||
return Config{
|
||||
LuxRPCURL: "https://api.lux.network/v1/bc/C/rpc",
|
||||
LuxRPCURL: "https://api.lux.network/v1/chain/C/rpc",
|
||||
BlockPollInterval: DefaultBlockPollInterval,
|
||||
BackingInterval: DefaultBackingInterval,
|
||||
ConfirmationDepth: 6,
|
||||
|
||||
@@ -162,7 +162,7 @@ func TestValidateAcceptsValidThreshold(t *testing.T) {
|
||||
func validConfig() Config {
|
||||
cfg := DefaultConfig()
|
||||
cfg.SourceRPCURL = "http://opnet:3000"
|
||||
cfg.LuxRPCURL = "https://api.lux.network/v1/bc/C/rpc"
|
||||
cfg.LuxRPCURL = "https://api.lux.network/v1/chain/C/rpc"
|
||||
cfg.TeleporterAddr = "0xdead"
|
||||
cfg.SourceBridgeAddr = "0xbeef"
|
||||
cfg.SignerKeyPath = "/dev/null"
|
||||
|
||||
@@ -15,8 +15,8 @@ describe('createBridgeRPCClient default endpoints', () => {
|
||||
bridgeRpcUrl: string
|
||||
thresholdRpcUrl: string
|
||||
}
|
||||
expect(c.bridgeRpcUrl).toBe(`${nodeUrl}/v1/bc/B/rpc`)
|
||||
expect(c.thresholdRpcUrl).toBe(`${nodeUrl}/v1/bc/T/rpc`)
|
||||
expect(c.bridgeRpcUrl).toBe(`${nodeUrl}/v1/chain/B/rpc`)
|
||||
expect(c.thresholdRpcUrl).toBe(`${nodeUrl}/v1/chain/T/rpc`)
|
||||
})
|
||||
|
||||
it('leaves no /ext anywhere in the defaults', () => {
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
//
|
||||
// Direct, decentralized path: instead of the legacy Express REST backend at
|
||||
// bridge-api.lux.network, this talks straight to the Lux node's BridgeVM
|
||||
// JSON-RPC interface at `${nodeUrl}/v1/bc/B/rpc`. MPC signing rounds run
|
||||
// through the matching ThresholdVM interface (`/v1/bc/T/rpc`), handled by
|
||||
// JSON-RPC interface at `${nodeUrl}/v1/chain/B/rpc`. MPC signing rounds run
|
||||
// through the matching ThresholdVM interface (`/v1/chain/T/rpc`), handled by
|
||||
// `@luxfi/threshold` (see lib/mpc-session.ts).
|
||||
//
|
||||
// This file is a focused port of the original 1227-line client at
|
||||
@@ -130,7 +130,7 @@ export interface FeeEstimate {
|
||||
// =============================================================================
|
||||
|
||||
export interface BridgeRPCClientOptions {
|
||||
/** B-Chain (BridgeVM) JSON-RPC URL, e.g. `https://node.lux.network/v1/bc/B/rpc`. */
|
||||
/** B-Chain (BridgeVM) JSON-RPC URL, e.g. `https://node.lux.network/v1/chain/B/rpc`. */
|
||||
bridgeRpcUrl: string
|
||||
/** Optional T-Chain (ThresholdVM) JSON-RPC URL. */
|
||||
thresholdRpcUrl?: string
|
||||
@@ -338,8 +338,8 @@ export function createBridgeRPCClient(opts: {
|
||||
}): BridgeRPCClient {
|
||||
const nodeUrl = opts.nodeUrl ?? 'http://127.0.0.1:9650'
|
||||
const init: BridgeRPCClientOptions = {
|
||||
bridgeRpcUrl: opts.bridgeRpcUrl ?? `${nodeUrl}/v1/bc/B/rpc`,
|
||||
thresholdRpcUrl: opts.thresholdRpcUrl ?? `${nodeUrl}/v1/bc/T/rpc`,
|
||||
bridgeRpcUrl: opts.bridgeRpcUrl ?? `${nodeUrl}/v1/chain/B/rpc`,
|
||||
thresholdRpcUrl: opts.thresholdRpcUrl ?? `${nodeUrl}/v1/chain/T/rpc`,
|
||||
...(opts.timeoutMs !== undefined ? { timeoutMs: opts.timeoutMs } : {}),
|
||||
}
|
||||
return new BridgeRPCClient(init)
|
||||
|
||||
@@ -321,7 +321,7 @@ export interface BridgeFChainConfig {
|
||||
export interface BridgeRpcConfig {
|
||||
/**
|
||||
* B-Chain (BridgeVM) JSON-RPC URL, e.g.
|
||||
* `https://node.lux.network/v1/bc/B/rpc`. When set, drives the primary
|
||||
* `https://node.lux.network/v1/chain/B/rpc`. When set, drives the primary
|
||||
* data path (estimate fee / submit request / get status).
|
||||
*/
|
||||
bchainUrl?: string
|
||||
|
||||
@@ -1225,7 +1225,7 @@
|
||||
"managed_accounts": [],
|
||||
"nodes": [
|
||||
{
|
||||
"url": "https://ava-mainnet.public.blastapi.io/v1/chain/C/rpc"
|
||||
"url": "https://ava-mainnet.public.blastapi.io/ext/bc/C/rpc"
|
||||
}
|
||||
],
|
||||
"created_date": "2023-05-29T13:19:19.214392+00:00"
|
||||
|
||||
@@ -10,7 +10,7 @@ describe('ThresholdClient', () => {
|
||||
|
||||
beforeEach(() => {
|
||||
client = new ThresholdClient({
|
||||
endpoint: 'http://localhost:9650/v1/bc/T',
|
||||
endpoint: 'http://localhost:9650/v1/chain/T',
|
||||
chainId: 'test-chain',
|
||||
})
|
||||
})
|
||||
|
||||
@@ -30,7 +30,7 @@ import type {
|
||||
*
|
||||
* @example
|
||||
* ```ts
|
||||
* const client = new ThresholdClient({ endpoint: 'http://localhost:9650/v1/bc/T' })
|
||||
* const client = new ThresholdClient({ endpoint: 'http://localhost:9650/v1/chain/T' })
|
||||
*
|
||||
* // Generate key by chain (auto-selects protocol)
|
||||
* const keygen = await client.keygen({ keyId: 'my-key', chain: 'ethereum' })
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
* import { ThresholdClient } from '@luxfi/threshold'
|
||||
*
|
||||
* const client = new ThresholdClient({
|
||||
* endpoint: 'http://localhost:9650/v1/bc/T'
|
||||
* endpoint: 'http://localhost:9650/v1/chain/T'
|
||||
* })
|
||||
*
|
||||
* // Generate key for Ethereum (auto-selects CGGMP21 protocol)
|
||||
|
||||
Reference in New Issue
Block a user