Securely store API keys and credentials for Newton Protocol PolicyData oracles
PolicyData oracles often need access to API keys and credentials to fetch external data. Newton Protocol’s Privacy Layer encrypts these secrets so they are never exposed on-chain or to unauthorized parties.
Prepare your secrets as a JSON object matching your PolicyData’s schema
Upload via RPC using newt_storeEncryptedSecrets
Operators decrypt during task evaluation to run your WASM oracle
Secrets are validated against the on-chain schema (secretsSchemaCid) defined on your PolicyData contract.
The developer-facing encryption SDK for client-side secret encryption is in active development. For guidance on encrypting and uploading secrets, contact product@magicnewton.com.
Your WASM oracle accesses secrets at runtime through the Newton execution environment. Secrets are decrypted by operators and passed to your WASM component automatically — you do not need to handle decryption in your code.
Copy
Ask AI
// In your WASM oracle (policy.js)import { fetch as httpFetch } from "newton:provider/http@0.1.0";export function run(wasm_args) { // The Newton runtime injects decrypted API keys into the execution environment const response = httpFetch({ url: "https://api.example.com/data", method: "GET", headers: [["Authorization", `Bearer ${getSecret("API_KEY")}`]], body: null, }); if (response.tag === "err") { return JSON.stringify({ error: response.val }); } const body = new TextDecoder().decode(new Uint8Array(response.val.body)); return JSON.stringify(JSON.parse(body));}