@xorddotcom/shield
Version:
p align="center" > <img src="https://xord.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F283b98b7-fdae-4e5a-acaf-248242084e4a%2FICON.png?table=block&id=5306223c-a4f7-45d1-9f54-b9a5f4004cd6&spaceId=49976899-64a1-40f
115 lines • 4.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.logSignals = exports.circomLog = exports.log = void 0;
const chalk = require("chalk");
const binfileutils_1 = require("@iden3/binfileutils");
const witness_1 = require("./witness");
// @ts-ignore
const ffjavascript_1 = require("ffjavascript");
const utils_1 = require("./utils");
const TYPES = {
info: "info",
error: "error",
success: "success",
warning: "warning",
normal: "normal",
};
const COLORS = {
[TYPES.info]: {
text: chalk.blue,
background: chalk.black.bgBlue,
},
[TYPES.success]: {
text: chalk.green,
background: chalk.black.bgGreen,
},
[TYPES.error]: {
text: chalk.red,
background: chalk.black.bgRed,
},
[TYPES.warning]: {
text: chalk.yellow,
background: chalk.black.bgYellow,
},
[TYPES.normal]: {
text: chalk.white,
background: chalk.black.white,
},
};
const log = (message = "", type = TYPES.info) => {
const colorType = COLORS[type];
console.log(`${colorType.text(message)}\n`);
};
exports.log = log;
const circomLog = (message = "") => {
console.log(chalk.yellow.bold(`CIRCUIT LOG:`), chalk.blue.bold(`${message}\n`));
};
exports.circomLog = circomLog;
const logSignals = async (r1cs, wtnsFile, symFile, jsonInputs) => {
if (r1cs) {
const { fd: fdWtns, sections: sectionsWtns } = await (0, binfileutils_1.readBinFile)(wtnsFile, "wtns", 2, 1 << 25, 1 << 23);
const { n8 } = await (0, witness_1.readWtnsHeader)(fdWtns, sectionsWtns);
const buffWitness = await (0, binfileutils_1.readSection)(fdWtns, sectionsWtns, 2);
let outputPrefixes = {};
let lastPos = 0;
let dec = new TextDecoder("utf-8");
for (let i = 0; i < symFile.length; i++) {
if (symFile[i] === 0x0a) {
let line = dec.decode(symFile.slice(lastPos, i));
let wireNo = +line.split(",")[0];
if (wireNo <= r1cs.nOutputs) {
outputPrefixes[wireNo] =
line.split(",")[3].replace("main.", "") + " = ";
}
lastPos = i;
}
}
if (r1cs.nOutputs > 0) {
let outputSignals = {};
let outputIndex = 1;
for (; outputIndex <= r1cs.nOutputs; outputIndex++) {
const b = buffWitness.slice(outputIndex * n8, outputIndex * n8 + n8);
const outputPrefix = outputPrefixes[outputIndex] || "";
try {
outputSignals[outputPrefix.replace("=", "").trim()] =
ffjavascript_1.Scalar.fromRprLE(b).toString();
}
catch (err) {
outputSignals[outputPrefix.replace("=", "").trim()] = "0";
}
}
if (Object.keys(outputSignals).length !== 0) {
console.log(chalk.cyan(`\nOutput Signals:\n`));
console.table(outputSignals);
}
else {
console.log(chalk.yellow(`No output signal found:\n`));
}
}
const sortedSignals = Object.keys(jsonInputs).sort();
let inputSignals = {};
for (const key of sortedSignals) {
if (Object.prototype.hasOwnProperty.call(jsonInputs, key)) {
const element = jsonInputs[key];
if (typeof element === "object") {
inputSignals = { ...inputSignals, ...(0, utils_1.arrayLogger)("matrix", element) };
}
else {
inputSignals[key] = jsonInputs[key];
}
}
else {
}
}
if (Object.keys(jsonInputs).length !== 0) {
console.log(chalk.cyan(`\nInput Signals:\n`));
console.table(inputSignals);
}
else {
console.log(chalk.yellow(`No input signal found:\n`));
}
await fdWtns.close();
}
};
exports.logSignals = logSignals;
//# sourceMappingURL=logger.js.map