@nori-zk/mina-token-bridge
Version:
Nori ethereum state settelment and nETH token bridge zkApp
37 lines • 1.96 kB
JavaScript
// Load environment variables from .env file
import 'dotenv/config';
import { Field, fetchAccount } from 'o1js';
import { Logger, LogPrinter } from 'esm-iso-logger';
import { proofConversionSP1ToPlonkPO2 } from '@nori-zk/o1js-zk-utils';
import { parseAdminBinEnv, setupNetworkAndCompile, submitAdminTx } from './utils/adminBinUtils.js';
const logger = new Logger('UpdateProofConversionPO2');
new LogPrinter('NoriTokenBridge');
// The target po2 value is baked into the repo via o1js-zk-utils.
// This script only pushes that repo-pinned value on-chain.
const targetPO2Decimal = proofConversionSP1ToPlonkPO2;
const newPO2 = Field.from(targetPO2Decimal);
const config = parseAdminBinEnv(logger, 'UpdateProofConversionPO2');
logger.log(`Target po2 value (from repo): '${targetPO2Decimal}'`);
async function updateProofConversionPO2() {
const tokenBridge = await setupNetworkAndCompile(logger, config);
// Read current on-chain state so we can log the diff and skip a no-op tx.
await fetchAccount({ publicKey: tokenBridge.address });
const onchainPO2 = await tokenBridge.proofConversionPO2.fetch();
const onchainPO2Decimal = onchainPO2 ? onchainPO2.toBigInt().toString() : 'unset';
logger.log(`Current on-chain po2 value: '${onchainPO2Decimal}'`);
if (onchainPO2Decimal === targetPO2Decimal) {
logger.log('On-chain po2 already matches the target value — nothing to do.');
return;
}
logger.log('Creating updateProofConversionPO2 transaction...');
logger.log(`Setting proofConversionPO2 to: '${targetPO2Decimal}'`);
await submitAdminTx(logger, config, async () => {
await tokenBridge.updateProofConversionPO2(newPO2);
});
logger.log('proofConversionPO2 update successful!');
}
updateProofConversionPO2().catch((err) => {
logger.fatal(`UpdateProofConversionPO2 function encountered an error.\n${String(err)}`);
process.exit(1);
});
//# sourceMappingURL=updateProofConversionPO2.js.map