CI/CD / render (push) Waiting to run
The primary-network chains answer to either case; one spelling beats two. /v1/chain/c/rpc, /v1/chain/p, /v1/chain/x across the estate. Co-authored-by: Hanzo AI <[email protected]>
84 lines
2.8 KiB
YAML
84 lines
2.8 KiB
YAML
# pulse on Zoo mainnet (200200) — 1 transaction every 2 seconds.
|
|
#
|
|
# Zoo's validator fleet (zood-mv, 5/5) has been healthy the whole time; the chain
|
|
# sat at 14,795 for four days purely because NOTHING sent it transactions and the
|
|
# EVM builds no empty blocks. This is the sender.
|
|
#
|
|
# Key: `chain-traffic-key` (0x1B475A4C…A2A6), funded 1,000,000 ZOO from the
|
|
# treasury EOA 0x9011 (tx 0x27b74b41…). Deliberately a low-value bot key, not the
|
|
# treasury seed — a key that signs every 2s should not hold 1.97T ZOO.
|
|
---
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: pulse-chains
|
|
namespace: zoo-mainnet
|
|
data:
|
|
# In-cluster RPC. zood-rpc:9630 fronts the mainnet fleet; pod-local
|
|
# 127.0.0.1:9630 also answers /v1/chain/c/rpc on zood-mv-0 (verified tip 14795).
|
|
chains.json: |
|
|
[
|
|
{"name":"zoo-evm","rpc":"http://zood-rpc.zoo-mainnet.svc.cluster.local:9630/v1/chain/c/rpc","key":"$TRAFFIC_KEY","weight":1,"dex":0}
|
|
]
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: pulse
|
|
namespace: zoo-mainnet
|
|
labels: {app: pulse}
|
|
spec:
|
|
selector: {app: pulse}
|
|
ports:
|
|
- {name: http, port: 8080, targetPort: 8080}
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: pulse
|
|
namespace: zoo-mainnet
|
|
labels: {app: pulse}
|
|
spec:
|
|
replicas: 1
|
|
strategy: {type: Recreate} # one sender: never two pods racing one nonce
|
|
selector:
|
|
matchLabels: {app: pulse}
|
|
template:
|
|
metadata:
|
|
labels: {app: pulse}
|
|
annotations:
|
|
prometheus.io/scrape: "true"
|
|
prometheus.io/port: "8080"
|
|
prometheus.io/path: /metrics
|
|
spec:
|
|
imagePullSecrets:
|
|
- name: ghcr-luxfi
|
|
containers:
|
|
- name: pulse
|
|
image: ghcr.io/luxfi/trader:v0.3.4
|
|
command: ["/usr/local/bin/pulse"]
|
|
# 4 concurrent sends: each WAITS for a receipt (~5-15s on a 5s-block
|
|
# chain), so a deeper queue only stacks nonces the chain cannot drain.
|
|
args: ["-config", "/etc/pulse/chains.json", "-max-inflight", "4"]
|
|
env:
|
|
- {name: PULSE_TPS, value: "0.5"} # 1 tx every 2s
|
|
- {name: PULSE_AUTOSTART, value: "true"}
|
|
- {name: PULSE_LISTEN, value: ":8080"}
|
|
- {name: PULSE_MIN_BALANCE, value: "1000000000000000000"}
|
|
- name: TRAFFIC_KEY
|
|
valueFrom:
|
|
secretKeyRef: {name: chain-traffic-key, key: TRAFFIC_KEY}
|
|
ports: [{name: http, containerPort: 8080}]
|
|
volumeMounts:
|
|
- {name: chains, mountPath: /etc/pulse}
|
|
readinessProbe:
|
|
httpGet: {path: /healthz, port: 8080}
|
|
initialDelaySeconds: 5
|
|
periodSeconds: 10
|
|
resources:
|
|
requests: {cpu: 25m, memory: 64Mi}
|
|
limits: {cpu: 500m, memory: 256Mi}
|
|
volumes:
|
|
- name: chains
|
|
configMap: {name: pulse-chains}
|