mirror of
https://github.com/selfxyz/self.git
synced 2026-01-14 00:58:07 -05:00
* retrieve the ofac trees from the api * remove the ofac trees from the common repo * fix ofac test * yarn nice * yarn nice * yarn nice * refactor ofac fetching
136 lines
5.2 KiB
TypeScript
136 lines
5.2 KiB
TypeScript
import { ethers } from "ethers";
|
|
import * as dotenv from "dotenv";
|
|
import { getContractAbi, getDeployedAddresses, getSavedRepo, getContractAddress, log } from "./constants";
|
|
|
|
dotenv.config();
|
|
|
|
// Configuration for which OFAC roots to update
|
|
const updateOfacRoots = {
|
|
passport: {
|
|
passportNo: true,
|
|
nameAndDob: true,
|
|
nameAndYob: true,
|
|
},
|
|
idCard: {
|
|
nameAndDob: true,
|
|
nameAndYob: true,
|
|
},
|
|
};
|
|
|
|
const NETWORK = process.env.NETWORK;
|
|
const RPC_URL = process.env.RPC_URL;
|
|
const PRIVATE_KEY = process.env.PRIVATE_KEY;
|
|
|
|
if (!NETWORK || !RPC_URL || !PRIVATE_KEY) {
|
|
throw new Error("One of the following parameters is null: NETWORK, RPC_URL, PRIVATE_KEY");
|
|
}
|
|
|
|
const repoName = getSavedRepo(NETWORK);
|
|
const deployedAddresses = getDeployedAddresses(repoName);
|
|
|
|
log.info(`Network: ${NETWORK}, Repo: ${repoName}`);
|
|
|
|
try {
|
|
const registryABI = getContractAbi(repoName, "DeployRegistryModule#IdentityRegistryImplV1");
|
|
const registryIdCardABI = getContractAbi(repoName, "DeployIdCardRegistryModule#IdentityRegistryIdCardImplV1");
|
|
|
|
async function main() {
|
|
const provider = new ethers.JsonRpcProvider(RPC_URL as string);
|
|
const wallet = new ethers.Wallet(PRIVATE_KEY as string, provider);
|
|
log.info(`Wallet address: ${wallet.address}`);
|
|
|
|
const registryAddress = getContractAddress("DeployRegistryModule#IdentityRegistry", deployedAddresses);
|
|
const registryIdCardAddress = getContractAddress("DeployIdCardRegistryModule#IdentityRegistry", deployedAddresses);
|
|
|
|
if (!registryAddress || !registryIdCardAddress) {
|
|
throw new Error("❌ Registry addresses not found in deployed_addresses.json");
|
|
}
|
|
|
|
const deployedRegistryInstance = new ethers.Contract(registryAddress, registryABI, wallet);
|
|
const deployedRegistryIdCardInstance = new ethers.Contract(registryIdCardAddress, registryIdCardABI, wallet);
|
|
|
|
log.success("Created registry contract instances");
|
|
|
|
const passportNo_smt_root = "17359956125106148146828355805271472653597249114301196742546733402427978706344";
|
|
const nameAndDob_smt_root = "7420120618403967585712321281997181302561301414016003514649937965499789236588";
|
|
const nameAndYob_smt_root = "16836358042995742879630198413873414945978677264752036026400967422611478610995";
|
|
const nameAndDob_id_smt_root = "20550865940766091336114076617084411967227963708544788410483208672684333597871";
|
|
const nameAndYob_id_smt_root = "20607501071671444315195585339157145490348308593668944037177822930025980459166";
|
|
|
|
let totalUpdates = 0;
|
|
let successfulUpdates = 0;
|
|
|
|
// Update passport registry roots based on config
|
|
log.step("Updating OFAC roots for passport registry...");
|
|
if (updateOfacRoots.passport.passportNo) {
|
|
try {
|
|
totalUpdates++;
|
|
const tx = await deployedRegistryInstance.updatePassportNoOfacRoot(passportNo_smt_root);
|
|
const receipt = await tx.wait();
|
|
log.success(`PassportNo OFAC root updated (tx: ${receipt.hash})`);
|
|
successfulUpdates++;
|
|
} catch (error) {
|
|
log.error(`Failed to update PassportNo OFAC root: ${error}`);
|
|
}
|
|
}
|
|
if (updateOfacRoots.passport.nameAndDob) {
|
|
try {
|
|
totalUpdates++;
|
|
const tx = await deployedRegistryInstance.updateNameAndDobOfacRoot(nameAndDob_smt_root);
|
|
const receipt = await tx.wait();
|
|
log.success(`NameAndDob OFAC root updated (tx: ${receipt.hash})`);
|
|
successfulUpdates++;
|
|
} catch (error) {
|
|
log.error(`Failed to update NameAndDob OFAC root: ${error}`);
|
|
}
|
|
}
|
|
if (updateOfacRoots.passport.nameAndYob) {
|
|
try {
|
|
totalUpdates++;
|
|
const tx = await deployedRegistryInstance.updateNameAndYobOfacRoot(nameAndYob_smt_root);
|
|
const receipt = await tx.wait();
|
|
log.success(`NameAndYob OFAC root updated (tx: ${receipt.hash})`);
|
|
successfulUpdates++;
|
|
} catch (error) {
|
|
log.error(`Failed to update NameAndYob OFAC root: ${error}`);
|
|
}
|
|
}
|
|
|
|
// Update ID card registry roots based on config
|
|
log.step("Updating OFAC roots for ID card registry...");
|
|
if (updateOfacRoots.idCard.nameAndDob) {
|
|
try {
|
|
totalUpdates++;
|
|
const tx = await deployedRegistryIdCardInstance.updateNameAndDobOfacRoot(nameAndDob_id_smt_root);
|
|
const receipt = await tx.wait();
|
|
log.success(`ID Card NameAndDob OFAC root updated (tx: ${receipt.hash})`);
|
|
successfulUpdates++;
|
|
} catch (error) {
|
|
log.error(`Failed to update ID Card NameAndDob OFAC root: ${error}`);
|
|
}
|
|
}
|
|
if (updateOfacRoots.idCard.nameAndYob) {
|
|
try {
|
|
totalUpdates++;
|
|
const tx = await deployedRegistryIdCardInstance.updateNameAndYobOfacRoot(nameAndYob_id_smt_root);
|
|
const receipt = await tx.wait();
|
|
log.success(`ID Card NameAndYob OFAC root updated (tx: ${receipt.hash})`);
|
|
successfulUpdates++;
|
|
} catch (error) {
|
|
log.error(`Failed to update ID Card NameAndYob OFAC root: ${error}`);
|
|
}
|
|
}
|
|
|
|
log.info(`OFAC root update summary: ${successfulUpdates}/${totalUpdates} successful`);
|
|
}
|
|
|
|
main().catch((error) => {
|
|
log.error(`Execution failed: ${error}`);
|
|
if (error.reason) log.error(`Reason: ${error.reason}`);
|
|
process.exitCode = 1;
|
|
});
|
|
} catch (error) {
|
|
log.error(`Setup failed: ${error}`);
|
|
process.exitCode = 1;
|
|
}
|