diff --git a/.jest/setEnvVars.js b/.jest/setEnvVars.js index 6f0a53d..9e6ed11 100644 --- a/.jest/setEnvVars.js +++ b/.jest/setEnvVars.js @@ -2,5 +2,5 @@ process.env.ENABLE_JSON_LOGS = false; process.env.ENABLE_PERFORMANCE_TRACKING = false; process.env.PRINT_DIAGNOSTIC_INFO = false; process.env.ARWEAVE_KEYS_JWK = JSON.stringify({ e: "e", kty: "kty", n: "n" }); -process.env.ETHEREUM_PRIVATE_KEY = +process.env.ECDSA_PRIVATE_KEY = "0x1111111111111111111111111111111111111111111111111111111111111111"; diff --git a/Dockerfile.public b/Dockerfile.public index d7920a8..00ead3a 100644 --- a/Dockerfile.public +++ b/Dockerfile.public @@ -27,7 +27,7 @@ ENV MANIFEST_REFRESH_INTERVAL=120000 ENV ARWEAVE_KEYS_FILE_PATH= ENV ARWEAVE_KEYS_JWK= ENV OVERRIDE_MANIFEST_USING_FILE=./manifests/dev.json -ENV ETHEREUM_PRIVATE_KEY= +ENV ECDSA_PRIVATE_KEY= ENV TWELVE_DATA_RAPID_API_KEY= # Exposing 8080 port for health checks diff --git a/docs/COMPILED_ORACLE_DOCS.md b/docs/COMPILED_ORACLE_DOCS.md index 90943c9..9dfc4fb 100644 --- a/docs/COMPILED_ORACLE_DOCS.md +++ b/docs/COMPILED_ORACLE_DOCS.md @@ -415,7 +415,7 @@ Env variables should be treated as **private**, especially all keys and JWKs. Th | ARWEAVE_KEYS_JWK | required if ARWEAVE_KEYS_FILE_PATH not provided | | JWK of arweave wallet (helpful with Docker) | | OVERRIDE_MANIFEST_USING_FILE | optional | | path to the manifest file, if not specified manifest is loaded from smart contract | | MANIFEST_REFRESH_INTERVAL | optional | 120000 | if manifest is loaded from smart contracts it defines how often node will check for new manifest | -| ETHEREUM_PRIVATE_KEY | required | | Ethereum private key that will be used for price data signing | +| ECDSA_PRIVATE_KEY | required | | Ethereum private key that will be used for price data signing | | TWELVE_DATA_RAPID_API_KEY | optional | | Twelve data API key which will be used to fetch prices | Check out the [.env.example](../.env.example) @@ -484,7 +484,7 @@ ENV MANIFEST_REFRESH_INTERVAL=120000 ENV ARWEAVE_KEYS_FILE_PATH= ENV ARWEAVE_KEYS_JWK= ENV OVERRIDE_MANIFEST_USING_FILE= -ENV ETHEREUM_PRIVATE_KEY= +ENV ECDSA_PRIVATE_KEY= ENV TWELVE_DATA_RAPID_API_KEY= ``` diff --git a/docs/DOCKER.md b/docs/DOCKER.md index d81061b..7114863 100644 --- a/docs/DOCKER.md +++ b/docs/DOCKER.md @@ -10,6 +10,6 @@ ENV MANIFEST_REFRESH_INTERVAL=120000 ENV ARWEAVE_KEYS_FILE_PATH= ENV ARWEAVE_KEYS_JWK= ENV OVERRIDE_MANIFEST_USING_FILE= -ENV ETHEREUM_PRIVATE_KEY= +ENV ECDSA_PRIVATE_KEY= ENV TWELVE_DATA_RAPID_API_KEY= ``` diff --git a/docs/PREPARE_ENV_VARIABLES.md b/docs/PREPARE_ENV_VARIABLES.md index 14182bd..509fed0 100644 --- a/docs/PREPARE_ENV_VARIABLES.md +++ b/docs/PREPARE_ENV_VARIABLES.md @@ -11,7 +11,7 @@ Env variables should be treated as **private**, especially all keys and JWKs. Th | ARWEAVE_KEYS_JWK | required if ARWEAVE_KEYS_FILE_PATH not provided | | JWK of arweave wallet (helpful with Docker) | | OVERRIDE_MANIFEST_USING_FILE | optional | | path to the manifest file, if not specified manifest is loaded from smart contract | | MANIFEST_REFRESH_INTERVAL | optional | 120000 | if manifest is loaded from smart contracts it defines how often node will check for new manifest | -| ETHEREUM_PRIVATE_KEY | required | | Ethereum private key that will be used for price data signing | +| ECDSA_PRIVATE_KEY | required | | Ethereum private key that will be used for price data signing | | TWELVE_DATA_RAPID_API_KEY | optional | | Twelve data API key which will be used to fetch prices | Check out the [.env.example](../.env.example) diff --git a/docs/translations/chinese/RedStone节点说明文档.md b/docs/translations/chinese/RedStone节点说明文档.md index de8d0b3..f9f2fb0 100644 --- a/docs/translations/chinese/RedStone节点说明文档.md +++ b/docs/translations/chinese/RedStone节点说明文档.md @@ -653,7 +653,7 @@ ENV MANIFEST_REFRESH_INTERVAL=120000 ENV ARWEAVE_KEYS_FILE_PATH= ENV ARWEAVE_KEYS_JWK= ENV OVERRIDE_MANIFEST_USING_FILE= -ENV ETHEREUM_PRIVATE_KEY= +ENV ECDSA_PRIVATE_KEY= ENV TWELVE_DATA_RAPID_API_KEY= ``` diff --git a/src/config.ts b/src/config.ts index ace8cb7..0f0a731 100644 --- a/src/config.ts +++ b/src/config.ts @@ -2,6 +2,7 @@ import "dotenv/config"; import { JWKInterface } from "arweave/node/lib/wallet"; import { Manifest, NodeConfig } from "./types"; import { readJSON } from "./utils/objects"; +import { ethers } from "ethers"; const DEFAULT_ENABLE_PERFORMANCE_TRACKING = "true"; const DEFAULT_ENABLE_JSON_LOGS = "true"; @@ -34,6 +35,13 @@ const parserFromString = { } return value === "true"; }, + hex(value: string): string { + const hexValue = value.startsWith("0x") ? value : `0x${value}`; + if (!ethers.utils.isHexString(hexValue)) { + throw new Error(`Invalid hex value: ${hexValue}`); + } + return hexValue; + }, }; const getOptionallyManifestData = () => { @@ -85,6 +93,6 @@ export const config: NodeConfig = Object.freeze({ }, privateKeys: { arweaveJwk: getArweaveWallet(), - ethereumPrivateKey: getFromEnv("ETHEREUM_PRIVATE_KEY"), + ethereumPrivateKey: parserFromString.hex(getFromEnv("ECDSA_PRIVATE_KEY")), }, });