Switchboard On Demand Oracle - Gateway Docker镜像是Switchboard去中心化预言机网络的核心组件,用于实现链下数据源与链上智能合约的双向通信。该镜像封装了按需数据请求处理、数据源集成、数据验证及***交互逻辑,提供标准化接口供智能合约调用,支持外部数据的按需获取、验证与上链,是连接Web2数据源与Web3智能合约的关键中间件。
bash# 拉取最新稳定版镜像 docker pull switchboardlabs/on-demand-oracle-gateway:latest # 拉取指定版本(推荐生产环境使用固定版本) docker pull switchboardlabs/on-demand-oracle-gateway:v1.2.0
bashdocker run -d \ --name oracle-gateway \ -p 8080:8080 \ -e ORACLE_PRIVATE_KEY="0x***abcdef..." \ # 预言机节点私钥(用于数据签名) -e ***_NETWORK="***-mainnet" \ # 目标***网络 -e DATA_SOURCE_WHITELIST="[***]" \ # 数据源白名单 -e LOG_LEVEL="INFO" \ # 日志级别 -v /host/path/config:/app/config \ # 挂载自定义配置文件(可选) switchboardlabs/on-demand-oracle-gateway:latest
yamlversion: '3.8' services: oracle-gateway: image: switchboardlabs/on-demand-oracle-gateway:v1.2.0 container_name: oracle-gateway restart: always ports: - "8080:8080" # 数据请求接口端口 - "9090:9090" # Prometheus监控端口 environment: - ORACLE_PRIVATE_KEY=${ORACLE_PRIVATE_KEY} # 从宿主机环境变量注入,避免硬编码 - ***_NETWORK="***-mainnet" - DATA_SOURCE_CONFIG_PATH="/app/config/datasources.yaml" - REQUEST_QUEUE_SIZE=1000 - LOG_LEVEL="INFO" - CACHE_TTL=30 # 重复请求缓存时间(秒) volumes: - ./config:/app/config # 挂载本地配置目录(包含数据源定义、验证规则) - ./logs:/app/logs # 挂载日志目录(持久化存储) networks: - oracle-network networks: oracle-network: driver: bridge
| 环境变量名 | 必选 | 默认值 | 说明 |
|---|---|---|---|
ORACLE_PRIVATE_KEY | 是 | - | 预言机节点私钥(用于数据签名,需对应***网络地址格式) |
***_NETWORK | 是 | - | 目标***网络,支持值:***-mainnet/***-devnet/***-fuji |
DATA_SOURCE_CONFIG_PATH | 否 | /app/default-config.yaml | 数据源配置文件路径(若挂载自定义配置需指定) |
PORT | 否 | 8080 | 数据请求接口端口 |
METRICS_PORT | 否 | 9090 | Prometheus监控指标暴露端口 |
LOG_LEVEL | 否 | INFO | 日志级别,支持:DEBUG/INFO/WARN/ERROR |
REQUEST_QUEUE_SIZE | 否 | 500 | 请求队列最大容量,超过则拒绝新请求 |
CACHE_TTL | 否 | 0 | 重复请求缓存时间(秒),0表示不缓存 |
MAX_CONCURRENT_REQUESTS | 否 | 100 | 最大并发请求数,防止数据源过载 |
数据源及验证规则需通过YAML配置文件定义(默认路径/app/default-config.yaml,可通过DATA_SOURCE_CONFIG_PATH自定义)。示例配置如下:
yaml# datasources.yaml示例 datasources: - name: "coingecko-price" # 数据源名称(唯一标识) type: "http" # 类型:http/websocket/postgres url: "[***]" method: "GET" timeout: 3000 # 超时时间(毫秒) headers: # 自定义请求头 - key: "Accept" value: "application/json" params: # 默认请求参数 ids: "***,***" vs_currencies: "usd" validation: # 数据验证规则 type: "json_schema" # 支持json_schema/script(自定义脚本) schema: # JSON Schema验证规则 type: "object" properties: ***: type: "object" properties: usd: {type: "number", minimum: 0} required: ["***"] ***: rpc_url: "[***]" # ***节点RPC地址(优先于默认网络) confirmations: 2 # 数据上链所需确认数
| 端口 | 用途 | 说明 |
|---|---|---|
| 8080 | 数据请求接口 | 接收智能合约/客户端的数据请求 |
| 9090 | Prometheus监控指标 | 暴露监控指标(如请求成功率、响应时间) |
| 8443 | HTTPS接口(可选) | 启用TLS时的加密通信端口(需挂载证书) |
网络要求:容器需访问以下外部服务:
bash# 实时查看日志 docker logs -f oracle-gateway # 查看ERROR级别日志 docker logs oracle-gateway | grep "ERROR"
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 数据签名失败 | 私钥格式错误或与网络不匹配 | 检查ORACLE_PRIVATE_KEY是否对应目标链格式 |
| 数据源请求超时 | 数据源不可用或网络隔离 | 验证数据源URL可访问性,检查容器网络连接 |
| 智能合约未收到数据 | ***节点RPC连接失败 | 检查***.rpc_url配置,测试RPC连通性 |
| 高并发下请求被拒绝 | 队列容量不足 | 调大REQUEST_QUEUE_SIZE环境变量 |
v1.2.0),避免直接使用latest来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429