All checks were successful
deploy / deploy (push) Successful in 22s
Proof: The funded NEAR Intents operator path should have a stable configured withdrawal destination for the active assets so exits do not depend on retyping recipient addresses. Assumptions: Active asset withdrawal destinations are long-lived operator settings and can safely live in runtime config; actual withdrawals still require explicit unfreeze and operator action. Still fake: Strategy and executor remain disarmed, no live trade quote has been submitted, and the live withdrawal transaction itself has not been exercised yet.
331 lines
9.1 KiB
YAML
331 lines
9.1 KiB
YAML
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: unrip-config
|
|
namespace: unrip
|
|
data:
|
|
PROJECT_NAME: unrip
|
|
PROJECT_NAMESPACE: unrip
|
|
NEAR_INTENTS_WS_URL: wss://solver-relay-v2.chaindefuser.com/ws
|
|
NEAR_INTENTS_RPC_URL: https://solver-relay-v2.chaindefuser.com/rpc
|
|
NEAR_INTENTS_BRIDGE_RPC_URL: https://bridge.chaindefuser.com/rpc
|
|
NEAR_INTENTS_VERIFIER_CONTRACT: intents.near
|
|
NEAR_RPC_URL: https://rpc.fastnear.com
|
|
NEAR_INTENTS_PAIR_FILTER: nep141:btc.omft.near->nep141:gnosis-0x420ca0f9b9b604ce0fd9c18ef134c705e5fa3430.omft.near
|
|
NEAR_INTENTS_ACCOUNT_ID: unrip-dev.near
|
|
TRADING_BTC_ASSET_ID: nep141:btc.omft.near
|
|
TRADING_BTC_SYMBOL: BTC
|
|
TRADING_BTC_DECIMALS: "8"
|
|
TRADING_BTC_CHAIN: btc:mainnet
|
|
TRADING_BTC_WITHDRAW_ADDRESS: ""
|
|
TRADING_EURE_ASSET_ID: nep141:gnosis-0x420ca0f9b9b604ce0fd9c18ef134c705e5fa3430.omft.near
|
|
TRADING_EURE_SYMBOL: EURe
|
|
TRADING_EURE_DECIMALS: "18"
|
|
TRADING_EURE_CHAIN: "eth:100"
|
|
TRADING_EURE_WITHDRAW_ADDRESS: "0x6C40267e03A97B2132e7a7d3159C88534eBEfdFb"
|
|
NEAR_INTENTS_CONTROL_API_ENABLED: "true"
|
|
NEAR_INTENTS_CONTROL_HOST: 0.0.0.0
|
|
NEAR_INTENTS_CONTROL_PORT: "8081"
|
|
MARKET_REFERENCE_CONTROL_HOST: 0.0.0.0
|
|
MARKET_REFERENCE_CONTROL_PORT: "8082"
|
|
INVENTORY_SYNC_CONTROL_HOST: 0.0.0.0
|
|
INVENTORY_SYNC_CONTROL_PORT: "8083"
|
|
LIQUIDITY_MANAGER_CONTROL_HOST: 0.0.0.0
|
|
LIQUIDITY_MANAGER_CONTROL_PORT: "8084"
|
|
HISTORY_WRITER_CONTROL_HOST: 0.0.0.0
|
|
HISTORY_WRITER_CONTROL_PORT: "8085"
|
|
STRATEGY_ENGINE_CONTROL_HOST: 0.0.0.0
|
|
STRATEGY_ENGINE_CONTROL_PORT: "8086"
|
|
TRADE_EXECUTOR_CONTROL_HOST: 0.0.0.0
|
|
TRADE_EXECUTOR_CONTROL_PORT: "8087"
|
|
KAFKA_BROKERS: redpanda.unrip.svc.cluster.local:9092
|
|
KAFKA_CLIENT_ID: unrip
|
|
KAFKA_TOPIC_RAW_NEAR_INTENTS_QUOTE: raw.near_intents.quote
|
|
KAFKA_TOPIC_NORM_SWAP_DEMAND: norm.swap_demand
|
|
KAFKA_TOPIC_REF_MARKET_PRICE: ref.market_price
|
|
KAFKA_TOPIC_STATE_INTENT_INVENTORY: state.intent_inventory
|
|
KAFKA_TOPIC_OPS_LIQUIDITY_ACTION: ops.liquidity_action
|
|
KAFKA_TOPIC_DECISION_TRADE_DECISION: decision.trade_decision
|
|
KAFKA_TOPIC_CMD_EXECUTE_TRADE: cmd.execute_trade
|
|
KAFKA_TOPIC_EXEC_TRADE_RESULT: exec.trade_result
|
|
KAFKA_CONSUMER_GROUP_HISTORY: history-writer-v1
|
|
KAFKA_CONSUMER_GROUP_INVENTORY: inventory-sync-v1
|
|
KAFKA_CONSUMER_GROUP_STRATEGY: strategy-engine-v1
|
|
KAFKA_CONSUMER_GROUP_EXECUTOR: trade-executor-v1
|
|
EXECUTOR_STATE_DIR: /var/lib/unrip/executor-state
|
|
LIQUIDITY_STATE_DIR: /var/lib/unrip/liquidity-state
|
|
MARKET_REFERENCE_REFRESH_MS: "5000"
|
|
MARKET_REFERENCE_COINGECKO_REFRESH_MS: "15000"
|
|
MARKET_REFERENCE_MAX_AGE_MS: "30000"
|
|
MARKET_REFERENCE_KRAKEN_TICKER_URL: https://api.kraken.com/0/public/Ticker?pair=XBTEUR
|
|
MARKET_REFERENCE_COINGECKO_URL: https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=eur
|
|
INVENTORY_SYNC_REFRESH_MS: "15000"
|
|
LIQUIDITY_REFRESH_MS: "30000"
|
|
STRATEGY_GROSS_THRESHOLD_PCT: "2"
|
|
STRATEGY_INITIAL_ARMED: "false"
|
|
STRATEGY_MAX_NOTIONAL_EURE: "5"
|
|
STRATEGY_PRICE_MAX_AGE_MS: "30000"
|
|
STRATEGY_INVENTORY_MAX_AGE_MS: "30000"
|
|
EXECUTOR_INITIAL_ARMED: "false"
|
|
EXECUTOR_RESPONSE_TIMEOUT_MS: "10000"
|
|
LIQUIDITY_WITHDRAWALS_FROZEN: "true"
|
|
---
|
|
apiVersion: v1
|
|
kind: PersistentVolumeClaim
|
|
metadata:
|
|
name: executor-state
|
|
namespace: unrip
|
|
spec:
|
|
accessModes: ["ReadWriteOnce"]
|
|
resources:
|
|
requests:
|
|
storage: 5Gi
|
|
---
|
|
apiVersion: v1
|
|
kind: PersistentVolumeClaim
|
|
metadata:
|
|
name: liquidity-state
|
|
namespace: unrip
|
|
spec:
|
|
accessModes: ["ReadWriteOnce"]
|
|
resources:
|
|
requests:
|
|
storage: 5Gi
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: near-intents-ingest
|
|
namespace: unrip
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: near-intents-ingest
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: near-intents-ingest
|
|
app.kubernetes.io/part-of: unrip
|
|
spec:
|
|
imagePullSecrets:
|
|
- name: unrip-registry-creds
|
|
containers:
|
|
- name: app
|
|
image: ghcr.io/example/unrip:bootstrap
|
|
imagePullPolicy: IfNotPresent
|
|
command: ["node", "src/apps/near-intents-ingest.mjs"]
|
|
ports:
|
|
- name: control-api
|
|
containerPort: 8081
|
|
envFrom:
|
|
- configMapRef:
|
|
name: unrip-config
|
|
- secretRef:
|
|
name: unrip-secrets
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: market-reference-ingest
|
|
namespace: unrip
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: market-reference-ingest
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: market-reference-ingest
|
|
app.kubernetes.io/part-of: unrip
|
|
spec:
|
|
imagePullSecrets:
|
|
- name: unrip-registry-creds
|
|
containers:
|
|
- name: app
|
|
image: ghcr.io/example/unrip:bootstrap
|
|
imagePullPolicy: IfNotPresent
|
|
command: ["node", "src/apps/market-reference-ingest.mjs"]
|
|
ports:
|
|
- name: control-api
|
|
containerPort: 8082
|
|
envFrom:
|
|
- configMapRef:
|
|
name: unrip-config
|
|
- secretRef:
|
|
name: unrip-secrets
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: liquidity-manager
|
|
namespace: unrip
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: liquidity-manager
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: liquidity-manager
|
|
app.kubernetes.io/part-of: unrip
|
|
spec:
|
|
imagePullSecrets:
|
|
- name: unrip-registry-creds
|
|
containers:
|
|
- name: app
|
|
image: ghcr.io/example/unrip:bootstrap
|
|
imagePullPolicy: IfNotPresent
|
|
command: ["node", "src/apps/liquidity-manager.mjs"]
|
|
ports:
|
|
- name: control-api
|
|
containerPort: 8084
|
|
envFrom:
|
|
- configMapRef:
|
|
name: unrip-config
|
|
- secretRef:
|
|
name: unrip-secrets
|
|
volumeMounts:
|
|
- name: liquidity-state
|
|
mountPath: /var/lib/unrip/liquidity-state
|
|
volumes:
|
|
- name: liquidity-state
|
|
persistentVolumeClaim:
|
|
claimName: liquidity-state
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: inventory-sync
|
|
namespace: unrip
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: inventory-sync
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: inventory-sync
|
|
app.kubernetes.io/part-of: unrip
|
|
spec:
|
|
imagePullSecrets:
|
|
- name: unrip-registry-creds
|
|
containers:
|
|
- name: app
|
|
image: ghcr.io/example/unrip:bootstrap
|
|
imagePullPolicy: IfNotPresent
|
|
command: ["node", "src/apps/inventory-sync.mjs"]
|
|
ports:
|
|
- name: control-api
|
|
containerPort: 8083
|
|
envFrom:
|
|
- configMapRef:
|
|
name: unrip-config
|
|
- secretRef:
|
|
name: unrip-secrets
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: history-writer
|
|
namespace: unrip
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: history-writer
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: history-writer
|
|
app.kubernetes.io/part-of: unrip
|
|
spec:
|
|
imagePullSecrets:
|
|
- name: unrip-registry-creds
|
|
containers:
|
|
- name: app
|
|
image: ghcr.io/example/unrip:bootstrap
|
|
imagePullPolicy: IfNotPresent
|
|
command: ["node", "src/apps/history-writer.mjs"]
|
|
ports:
|
|
- name: control-api
|
|
containerPort: 8085
|
|
envFrom:
|
|
- configMapRef:
|
|
name: unrip-config
|
|
- secretRef:
|
|
name: unrip-secrets
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: strategy-engine
|
|
namespace: unrip
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: strategy-engine
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: strategy-engine
|
|
app.kubernetes.io/part-of: unrip
|
|
spec:
|
|
imagePullSecrets:
|
|
- name: unrip-registry-creds
|
|
containers:
|
|
- name: app
|
|
image: ghcr.io/example/unrip:bootstrap
|
|
imagePullPolicy: IfNotPresent
|
|
command: ["node", "src/apps/strategy-engine.mjs"]
|
|
ports:
|
|
- name: control-api
|
|
containerPort: 8086
|
|
envFrom:
|
|
- configMapRef:
|
|
name: unrip-config
|
|
- secretRef:
|
|
name: unrip-secrets
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: trade-executor
|
|
namespace: unrip
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: trade-executor
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: trade-executor
|
|
app.kubernetes.io/part-of: unrip
|
|
spec:
|
|
imagePullSecrets:
|
|
- name: unrip-registry-creds
|
|
containers:
|
|
- name: app
|
|
image: ghcr.io/example/unrip:bootstrap
|
|
imagePullPolicy: IfNotPresent
|
|
command: ["node", "src/apps/trade-executor.mjs"]
|
|
ports:
|
|
- name: control-api
|
|
containerPort: 8087
|
|
envFrom:
|
|
- configMapRef:
|
|
name: unrip-config
|
|
- secretRef:
|
|
name: unrip-secrets
|
|
volumeMounts:
|
|
- name: executor-state
|
|
mountPath: /var/lib/unrip/executor-state
|
|
volumes:
|
|
- name: executor-state
|
|
persistentVolumeClaim:
|
|
claimName: executor-state
|