unrip/deploy/k8s/base/unrip.yaml
philipp b4186d9715
All checks were successful
deploy / deploy (push) Successful in 22s
Add configured withdrawal defaults
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.
2026-04-02 12:38:19 +02:00

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