Keys and Secrets
When a Task Node executes tasks, some keys and secrets are injected and made accessible to the task executable by using the process.argv()
property. These keys and secrets are command-line arguments that have been passed into the NodeJS Child process.
These keys and secrets include:
// TASK_NAME
// TASK_ID
// EXPRESS_PORT
// NODE_MODE
// MAIN_ACCOUNT_PUBKEY
// SECRET_KEY
// K2_NODE_URL
// SERVICE_URL
// STAKE
How Does This Work?
The NodeJS child_process.fork()
method is used to spawn a new Node.js process and a ChildProcess
object is returned.
The fork()
method accepts the following three arguments:
modulePath
β Astring
for a JavaScript file to execute on the child process (required)args
β Anarray
ofstring
to pass as the child process argumentsoptions
β Anobject
that you want to pass to the child process
fork("file.js", ["argument"], options);
The second argument passed to the fork()
method will be accepted by the child process as command-line arguments, which you can retrieve in a Koii Task using the process.argv()
property:
const TASK_NAME = process.argv[2];
const TASK_ID = process.argv[3];
const EXPRESS_PORT = process.argv[4];
const NODE_MODE = process.argv[5];
const MAIN_ACCOUNT_PUBKEY = process.argv[6];
const SECRET_KEY = process.argv[7];
const K2_NODE_URL = process.argv[8];
const SERVICE_URL = process.argv[9];
const STAKE = Number(process.argv[10]);
If you're using the k2-task-template to create a task, you should see the keys and secrets already retrieved in the init.js
file:
const express = require('express');
const TASK_NAME = process.argv[2];
const TASK_ID = process.argv[3];
const EXPRESS_PORT = process.argv[4];
const NODE_MODE = process.argv[5];
const MAIN_ACCOUNT_PUBKEY = process.argv[6];
const SECRET_KEY = process.argv[7];
const K2_NODE_URL = process.argv[8];
const SERVICE_URL = process.argv[9];
const STAKE = Number(process.argv[10]);
const app = express();
console.log('SETTING UP EXPRESS', NODE_MODE);
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(EXPRESS_PORT, () => {
console.log(`${TASK_NAME} listening on port ${EXPRESS_PORT}`);
});
module.exports = {
app,
NODE_MODE,
TASK_ID,
MAIN_ACCOUNT_PUBKEY,
SECRET_KEY,
K2_NODE_URL,
SERVICE_URL,
STAKE
};
Last updated