feat: improved ecdsa private key parsing

This commit is contained in:
hatskier
2022-07-18 00:35:56 +02:00
parent 64d08a5769
commit 5951988f3b
7 changed files with 16 additions and 8 deletions

View File

@@ -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";

View File

@@ -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

View File

@@ -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=
```

View File

@@ -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=
```

View File

@@ -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)

View File

@@ -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=
```

View File

@@ -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")),
},
});