diff --git a/.claude/skills/bump-aztec-version/SKILL.md b/.claude/skills/bump-aztec-version/SKILL.md index 79e12a6b..3b87d216 100644 --- a/.claude/skills/bump-aztec-version/SKILL.md +++ b/.claude/skills/bump-aztec-version/SKILL.md @@ -93,8 +93,7 @@ When everything is green: commit, open a PR to `main`, let CI pass, merge. Then stopped matching. If `get_escrow`/derivation tests fail, diff the aztec-packages key-derivation constants/`PublicKeys` at the target ref and re-sync. Regenerate the hardcoded `get_test_vector` hashes. - **v5 wallet API.** `createSchnorrAccount(secret, salt)` → now needs a 3rd `GrumpkinScalar` signing key; - `Wallet` context types may need `EmbeddedWallet`. Deploy scripts derive the secret from the signing key - (`deriveSecretKeyFromSigningKey`). + `Wallet` context types may need `EmbeddedWallet`. - **Local wallet-internals shims hide upstream API drift.** `src/ts/test/utils.ts` casts wallets through `unknown` to a hand-written `WalletWithInternals`, so typechecking only verifies that local interface — not the real protected `BaseWallet` methods. Diff every shimmed method against both the old and target diff --git a/.env.example b/.env.example index 6cf1817d..d9ceb39c 100644 --- a/.env.example +++ b/.env.example @@ -1,6 +1,2 @@ # Aztec node URL used by JS tests and benchmarks (defaults to http://localhost:8080) NODE_URL= -# Aztec node URL used by scripts/deploy.ts (overrides the network default) -AZTEC_NODE_URL= -# Deployer signing key secret used by scripts/deploy.ts -SIGNING_KEY_SECRET= diff --git a/package.json b/package.json index f0b031eb..1541eb1a 100644 --- a/package.json +++ b/package.json @@ -20,8 +20,7 @@ "lint:prettier": "prettier '**/*.{js,ts}' --write", "format:check": "prettier --check '**/*.{js,ts}'", "bench": "NODE_NO_WARNINGS=1 aztec-benchmark --suffix _base", - "ccc": "yarn clean && yarn compile && yarn codegen", - "deploy": "NODE_NO_WARNINGS=1 tsx scripts/deploy.ts" + "ccc": "yarn clean && yarn compile && yarn codegen" }, "lint-staged": { "*.ts": "prettier --write -u" @@ -30,20 +29,15 @@ "@aztec/aztec.js": "5.2.0" }, "devDependencies": { - "@aztec/accounts": "5.2.0", - "@aztec/noir-contracts.js": "5.2.0", "@aztec/pxe": "5.2.0", "@aztec/stdlib": "5.2.0", "@aztec/wallet-sdk": "5.2.0", "@aztec/wallets": "5.2.0", "@aztec-foundation/aztec-benchmark": "5.0.1", "@types/node": "25.0.10", - "commander": "14.0.1", - "dotenv": "16.4.7", "husky": "9.1.7", "lint-staged": "16.2.7", "prettier": "3.8.0", - "tsx": "4.21.0", "typescript": "5.9.3", "vitest": "4.0.17" }, diff --git a/scripts/build-package.sh b/scripts/build-package.sh index ed7fba50..9a9cfea0 100755 --- a/scripts/build-package.sh +++ b/scripts/build-package.sh @@ -29,10 +29,6 @@ cp -r dist/artifacts/* "${EXPORT_DIR}/dist/" cp -r target "${EXPORT_DIR}/" find "${EXPORT_DIR}/target" -name '*.bak' -delete -# deployments.json is intentionally NOT shipped: the recorded addresses were generated under a -# pre-5.0 address-derivation formula and are stale. Re-add only after regenerating via -# `yarn deploy` on a current network (and regenerate on every address-affecting @aztec/* bump). - # Copy documentation cp README.md "${EXPORT_DIR}/" cp LICENSE "${EXPORT_DIR}/" diff --git a/scripts/constants.ts b/scripts/constants.ts deleted file mode 100644 index 8d2badf8..00000000 --- a/scripts/constants.ts +++ /dev/null @@ -1,7 +0,0 @@ -export const DEFAULT_SALT = 1337; - -export const NETWORK_URLS: Record = { - devnet: 'https://v4-devnet-2.aztec-labs.com', - testnet: 'https://rpc.testnet.aztec-labs.com', - 'local-network': 'http://localhost:8080', -}; diff --git a/scripts/deploy-config.ts b/scripts/deploy-config.ts deleted file mode 100644 index db450e01..00000000 --- a/scripts/deploy-config.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { AztecAddress } from '@aztec/stdlib/aztec-address'; -import { DEFAULT_SALT, NETWORK_URLS } from './constants.js'; - -export interface TokenConfig { - name: string; - symbol: string; - decimals: number; - salt: number; -} - -export interface DripperConfig { - salt: number; - existingAddress?: AztecAddress; -} - -export interface NetworkConfig { - nodeUrl: string; - name: string; -} - -export interface DeploymentConfig { - network: NetworkConfig; - deployer: { - dataDirectory: string; - }; - contracts: { - tokens: Record; - dripper: DripperConfig; - }; -} - -// Deployments are intentionally limited to development networks. A mainnet -// network entry would be a deliberate Foundation decision, not a pending task. -export type Network = 'devnet' | 'testnet' | 'local-network'; - -const TOKENS: Record = { - weth: { name: 'WETH', symbol: 'WETH', decimals: 18, salt: DEFAULT_SALT }, - dai: { name: 'DAI', symbol: 'DAI', decimals: 9, salt: DEFAULT_SALT }, - usdc: { name: 'USDC', symbol: 'USDC', decimals: 6, salt: DEFAULT_SALT }, -}; - -export function getConfig(network: Network): DeploymentConfig { - const nodeUrl = process.env.AZTEC_NODE_URL || NETWORK_URLS[network]; - - return { - network: { - nodeUrl, - name: network, - }, - deployer: { - dataDirectory: `${network}-store/`, - }, - contracts: { - tokens: TOKENS, - dripper: { salt: DEFAULT_SALT }, - }, - }; -} diff --git a/scripts/deploy.ts b/scripts/deploy.ts deleted file mode 100644 index 1bee9ea7..00000000 --- a/scripts/deploy.ts +++ /dev/null @@ -1,560 +0,0 @@ -import 'dotenv/config'; -import { Command, Option } from 'commander'; -import { PublicKeys } from '@aztec/aztec.js/keys'; -import { - getContractInstanceFromInstantiationParams, - getContractClassFromArtifact, - Contract, - type InteractionFeeOptions, - DeployOptions, -} from '@aztec/aztec.js/contracts'; -import { TxStatus } from '@aztec/aztec.js/tx'; -import { TX_ERROR_EXISTING_NULLIFIER } from '@aztec/stdlib/tx'; -import { AztecAddress } from '@aztec/aztec.js/addresses'; -import { Fr, GrumpkinScalar } from '@aztec/aztec.js/fields'; -import { SponsoredFeePaymentMethod } from '@aztec/aztec.js/fee'; -import { AccountManager, type Wallet } from '@aztec/aztec.js/wallet'; -import { NO_FROM } from '@aztec/aztec.js/account'; -import { createAztecNodeClient, type AztecNode } from '@aztec/aztec.js/node'; -import { createLogger } from '@aztec/foundation/log'; - -import { EmbeddedWallet } from '@aztec/wallets/embedded'; -import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC'; -import { SPONSORED_FPC_SALT } from '@aztec/constants'; -import { deriveSecretKeyFromSigningKey } from '@aztec/accounts/utils'; - -import { TokenContract, TokenContractArtifact } from '../src/artifacts/Token.js'; -import { DripperContract, DripperContractArtifact } from '../src/artifacts/Dripper.js'; - -import { readFileSync, writeFileSync, mkdirSync } from 'fs'; -import { fileURLToPath } from 'url'; -import { dirname, join } from 'path'; - -import { AztecAddressLike, FieldLike, type ContractArtifact } from '@aztec/aztec.js/abi'; -import { getConfig, DeploymentConfig, type Network } from './deploy-config.js'; - -const __filename = fileURLToPath(import.meta.url); -const __dirname = dirname(__filename); -let packageJson: Record; -try { - packageJson = JSON.parse(readFileSync(join(__dirname, '../package.json'), 'utf-8')); -} catch (error) { - throw new Error('Failed to read package.json: ensure the file exists and is valid JSON'); -} - -const logger = createLogger('aztec:deploy'); - -// --- Types --- - -export interface DeployedContracts { - tokens: Record; - dripper?: { contract: DripperContract; status: 'deployed' | 'existing' }; -} - -interface TokenConstructorArgs { - name: string; - symbol: string; - decimals: number; - minter: AztecAddress; - authContract: AztecAddress; -} - -interface DeploymentToken { - address: AztecAddress; - salt: FieldLike; - deployer: AztecAddress; - constructorArtifact: string; - constructorArgs: TokenConstructorArgs; -} - -interface DeploymentDripper { - address: AztecAddressLike; - salt: FieldLike; - deployer: AztecAddressLike; - constructorArtifact: string; -} - -export interface DeploymentData { - tokens: DeploymentToken[]; - dripper?: DeploymentDripper; -} - -interface DeployedContract { - contract: T; - status: 'deployed' | 'existing'; -} - -export interface DeployResult { - contracts: DeployedContracts; -} - -const UNIVERSAL_DEPLOYER = AztecAddress.ZERO; - -function getDeploymentData( - tokenAddresses: Record, - dripperAddress: AztecAddress | undefined, - config: DeploymentConfig, -): DeploymentData { - const minterAddress = dripperAddress || AztecAddress.ZERO; - - const tokens: DeploymentToken[] = Object.entries(config.contracts.tokens) - .filter(([key]) => key in tokenAddresses) - .map(([key, tokenConfig]) => ({ - address: tokenAddresses[key], - salt: tokenConfig.salt, - deployer: UNIVERSAL_DEPLOYER, - constructorArtifact: 'constructor_with_minter' as const, - constructorArgs: { - name: tokenConfig.name, - symbol: tokenConfig.symbol, - decimals: tokenConfig.decimals, - minter: minterAddress, - authContract: AztecAddress.ZERO, - }, - })); - - const result: DeploymentData = { tokens }; - - if (dripperAddress) { - result.dripper = { - address: dripperAddress, - salt: config.contracts.dripper.salt, - deployer: UNIVERSAL_DEPLOYER, - constructorArtifact: 'constructor', - }; - } - - return result; -} - -// --- CLI --- - -interface CLIOptions { - signingKey?: string; - dryRun?: boolean; - output?: string; - network: Network; -} - -export function logDeployedContracts(contracts: DeployedContracts): void { - logger.info('Deployed contracts:'); - - for (const [key, value] of Object.entries(contracts.tokens)) { - const status = value.status === 'deployed' ? '[NEWLY DEPLOYED]' : '[EXISTING]'; - logger.info(`${key}: ${value.contract.address.toString()} ${status}`); - } - - if (contracts.dripper) { - const status = contracts.dripper.status === 'deployed' ? '[NEWLY DEPLOYED]' : '[EXISTING]'; - logger.info(`dripper: ${contracts.dripper.contract.address.toString()} ${status}`); - } -} - -export interface TokenDeployParams { - name: string; - symbol: string; - decimals: number; - minter?: AztecAddress; - salt: Fr; -} - -export async function createSponsoredFeeOptions(wallet: Wallet): Promise { - logger.info('Setting up sponsored fee options...'); - - const sponsoredFPCInstance = await getContractInstanceFromInstantiationParams(SponsoredFPCContract.artifact, { - salt: new Fr(SPONSORED_FPC_SALT), - }); - - // registerContract is an idempotent upsert; no need to special-case re-registration - await wallet.registerContract(sponsoredFPCInstance, SponsoredFPCContract.artifact); - logger.info(`Registered SponsoredFPC at: ${sponsoredFPCInstance.address.toString()}`); - - const paymentMethod = new SponsoredFeePaymentMethod(sponsoredFPCInstance.address); - - return { - paymentMethod, - }; -} - -/** - * Deploys the account contract on-chain if not already deployed. - * Handles the case where the account was already deployed (existing nullifier error). - */ -async function deployAccount( - manager: AccountManager, - node: AztecNode, - feeOptions: InteractionFeeOptions, -): Promise { - const address = manager.getInstance().address; - - const existing = await node.getContract(address); - if (existing) { - logger.info(`Account contract already deployed at ${address.toString()}`); - return; - } - - logger.info(`Deploying account contract at ${address.toString()}...`); - try { - const deployMethod = await manager.getDeployMethod(); - // NO_FROM: the account contract deploys itself (no existing account mediates the tx); - // 4.2.0 replaced the AztecAddress.ZERO convention with this explicit sentinel - const result = await deployMethod.send({ fee: feeOptions, from: NO_FROM, wait: { timeout: 120 } }); - logger.info(`Account contract deployed at ${result.contract.address.toString()}`); - } catch (error: unknown) { - const msg = error instanceof Error ? error.message : String(error); - if (msg.includes(TX_ERROR_EXISTING_NULLIFIER)) { - logger.info('Account contract already deployed (nullifier exists)'); - } else { - throw error; - } - } -} - -async function checkContractDeployed(node: AztecNode, address: AztecAddress): Promise { - try { - logger.info(`Checking if contract deployed at ${address.toString()}...`); - const instance = await node.getContract(address); - if (!instance) { - logger.info(`Contract at ${address.toString()} instance not found`); - return false; - } - logger.info(`Contract instance found at ${address.toString()}`); - return true; - } catch (error) { - logger.info(`Contract at ${address.toString()} not found or not initialized: ${error}`); - return false; - } -} - -async function deployContract( - deployer: Wallet, - node: AztecNode, - artifact: ContractArtifact, - constructorArgs: unknown[], - constructorArtifact: string, - salt: Fr, - options: DeployOptions, - label: string, -): Promise<{ address: AztecAddress; status: 'deployed' | 'existing' }> { - logger.info(`Checking ${label}...`); - - const instance = await getContractInstanceFromInstantiationParams(artifact, { - constructorArgs, - salt, - publicKeys: PublicKeys.default(), - deployer: AztecAddress.ZERO, - constructorArtifact, - }); - - const isDeployed = await checkContractDeployed(node, instance.address); - - if (isDeployed) { - logger.info(`${label} already deployed at: ${instance.address.toString()}`); - - // registerContract is an idempotent upsert; no need to special-case re-registration - await deployer.registerContract(instance, artifact); - logger.debug(`${label} registered with PXE`); - - return { address: instance.address, status: 'existing' }; - } - - logger.info(`Deploying ${label}...`); - - const deployMethod = Contract.deploy(deployer, artifact, constructorArgs, constructorArtifact, { - salt, - universalDeploy: true, - }); - - // Skip re-publishing the contract class when it is already registered on-chain (e.g. the - // second and third Token deploys share the first one's class) — smaller, cheaper txs. - const contractClass = await getContractClassFromArtifact(artifact); - const classMetadata = await deployer.getContractClassMetadata(contractClass.id); - - try { - await deployMethod.send({ - ...options, - skipClassPublication: classMetadata.isContractClassPubliclyRegistered, - wait: { waitForStatus: TxStatus.PROPOSED, timeout: 120 }, - }); - } catch (error: unknown) { - const msg = - error instanceof Error - ? error.message - : error instanceof Object && 'cause' in error && error.cause instanceof Error - ? error.cause.message - : String(error); - if (msg.includes(TX_ERROR_EXISTING_NULLIFIER)) { - logger.info(`${label} already deployed (existing nullifier) at: ${instance.address.toString()}`); - return { address: instance.address, status: 'existing' }; - } - throw error; - } - - logger.info(`${label} deployed at: ${instance.address.toString()}`); - return { address: instance.address, status: 'deployed' }; -} - -export async function deployToken( - deployer: Wallet, - node: AztecNode, - params: TokenDeployParams, - options: DeployOptions, -): Promise<{ contract: TokenContract; status: 'deployed' | 'existing' }> { - const minter = params.minter || AztecAddress.ZERO; - - const result = await deployContract( - deployer, - node, - TokenContractArtifact, - [params.name, params.symbol, params.decimals, minter, AztecAddress.ZERO], - 'constructor_with_minter', - params.salt, - options, - `Token ${params.name} (${params.symbol})`, - ); - - const contract = await TokenContract.at(result.address, deployer); - return { contract, status: result.status }; -} - -export async function deployDripper( - deployer: Wallet, - node: AztecNode, - salt: Fr, - options: DeployOptions, -): Promise<{ contract: DripperContract; status: 'deployed' | 'existing' }> { - const result = await deployContract( - deployer, - node, - DripperContractArtifact, - [], - 'constructor', - salt, - options, - 'Dripper', - ); - - const contract = await DripperContract.at(result.address, deployer); - return { contract, status: result.status }; -} - -interface ComputedAddresses { - tokens: Record; - dripper: AztecAddress; -} - -async function computeContractAddresses(config: DeploymentConfig): Promise { - let dripper: AztecAddress; - if (config.contracts.dripper.existingAddress) { - dripper = config.contracts.dripper.existingAddress; - } else { - const dripperInstance = await getContractInstanceFromInstantiationParams(DripperContractArtifact, { - constructorArgs: [], - salt: new Fr(config.contracts.dripper.salt), - publicKeys: PublicKeys.default(), - deployer: AztecAddress.ZERO, - }); - dripper = dripperInstance.address; - } - - const tokens: Record = {}; - for (const [key, tokenConfig] of Object.entries(config.contracts.tokens)) { - const instance = await getContractInstanceFromInstantiationParams(TokenContractArtifact, { - constructorArgs: [tokenConfig.name, tokenConfig.symbol, tokenConfig.decimals, dripper, AztecAddress.ZERO], - salt: new Fr(tokenConfig.salt), - publicKeys: PublicKeys.default(), - deployer: AztecAddress.ZERO, - constructorArtifact: 'constructor_with_minter', - }); - tokens[key] = instance.address; - } - - return { tokens, dripper }; -} - -export async function deployContracts(options: CLIOptions, config: DeploymentConfig): Promise { - logger.info(`Deploying to ${config.network.name}...`); - logger.info(`Network: ${config.network.nodeUrl}`); - - if (options.dryRun) { - logger.info('[DRY RUN] Computing contract addresses...'); - const addresses = await computeContractAddresses(config); - const deploymentData = getDeploymentData(addresses.tokens, addresses.dripper, config); - - logger.info('[DRY RUN] Deployment data:'); - logger.info(JSON.stringify(deploymentData, null, 4)); - - if (options.output) { - const jsonOutput = JSON.stringify(deploymentData, null, 4); - mkdirSync(dirname(options.output), { recursive: true }); - writeFileSync(options.output, jsonOutput); - logger.info(`[DRY RUN] Deployment data written to ${options.output}`); - } - - return { contracts: { tokens: {} } }; - } - - const nodeUrl = config.network.nodeUrl; - - const signingKeyStr = options.signingKey || process.env.SIGNING_KEY_SECRET; - if (!signingKeyStr || signingKeyStr.trim().length === 0) { - throw new Error('Signing key is required (use --signing-key or SIGNING_KEY_SECRET env var)'); - } - const signingKey: GrumpkinScalar = GrumpkinScalar.fromHexString(signingKeyStr); - const deployerSecret = await deriveSecretKeyFromSigningKey(signingKey); - - const node = createAztecNodeClient(nodeUrl); - const isLocalNetwork = config.network.name === 'local-network'; - const wallet = await EmbeddedWallet.create(nodeUrl, { - pxe: { - proverEnabled: !isLocalNetwork, - dataDirectory: config.deployer.dataDirectory, - dataStoreMapSizeKb: 1e6, - }, - }); - logger.info('Connected to PXE'); - - try { - const nodeInfo = await node.getNodeInfo(); - logger.info(`Connected to Aztec node version: ${nodeInfo.nodeVersion}`); - - const manager = await wallet.createSchnorrAccount(deployerSecret, Fr.ZERO, signingKey); - const account = await manager.getAccount(); - logger.info(`Account created: ${account.getAddress().toString()}`); - - const sponsoredFeeOptions = await createSponsoredFeeOptions(wallet); - await deployAccount(manager, node, sponsoredFeeOptions); - - const deployOptions: DeployOptions = { - from: account.getAddress(), - fee: sponsoredFeeOptions, - }; - - logger.info(`Deploying with account: ${account.getAddress().toString()}`); - - const computedAddresses = await computeContractAddresses(config); - logger.info('\n=== Computed Contract Addresses ==='); - logger.info(`Dripper: ${computedAddresses.dripper.toString()}`); - for (const [key, addr] of Object.entries(computedAddresses.tokens)) { - logger.info(`${key.toUpperCase()}: ${addr.toString()}`); - } - logger.info('===================================\n'); - - let dripper: { contract: DripperContract; status: 'deployed' | 'existing' } | undefined; - - if (config.contracts.dripper.existingAddress) { - logger.info(`Using existing dripper at ${config.contracts.dripper.existingAddress}`); - const dripperAddress = config.contracts.dripper.existingAddress; - - const dripperInstance = await node.getContract(dripperAddress); - if (!dripperInstance) throw new Error('Dripper not found'); - - logger.info(`Dripper found at: ${dripperAddress.toString()}`); - - // registerContract is an idempotent upsert; no need to special-case re-registration - await wallet.registerContract(dripperInstance, DripperContractArtifact); - logger.debug('Dripper registered with PXE'); - - const dripperContract = await DripperContract.at(dripperAddress, wallet); - dripper = { contract: dripperContract, status: 'existing' }; - } else { - logger.info('Deploying or checking dripper contract...'); - const dripperSalt = new Fr(config.contracts.dripper.salt); - dripper = await deployDripper(wallet, node, dripperSalt, deployOptions); - } - - if (!dripper) { - throw new Error('Dripper deployment failed'); - } - - logger.info('Deploying/checking token contracts...'); - - const tokenEntries = Object.entries(config.contracts.tokens); - const deployedTokens: Record> = {}; - - for (const [key, tokenConfig] of tokenEntries) { - const result = await deployToken( - wallet, - node, - { - name: tokenConfig.name, - symbol: tokenConfig.symbol, - decimals: tokenConfig.decimals, - minter: dripper.contract.address, - salt: new Fr(tokenConfig.salt), - }, - deployOptions, - ); - - deployedTokens[key] = result; - } - - // Post-deploy verification - const postDeployInfo = await node.getNodeInfo(); - logger.info(`Post-deploy verification: node ${postDeployInfo.nodeVersion} responsive`); - - logger.info('Deployment completed successfully!'); - - const deployedContracts: DeployedContracts = { - tokens: deployedTokens, - dripper, - }; - - return { contracts: deployedContracts }; - } finally { - await wallet.stop(); - } -} - -const program = new Command(); - -program - .name('deploy') - .description('Deploy Aztec Standards contracts') - .version(packageJson.version as string) - .option( - '--signing-key ', - 'Deployer Schnorr signing key as a hex-encoded Grumpkin scalar (or use SIGNING_KEY_SECRET env var)', - ) - .option('--dry-run', 'Show configuration without deploying') - .option('--output ', 'Write deployment JSON to file') - .addOption( - new Option('-n, --network ', 'Target network') - .choices(['devnet', 'testnet', 'local-network']) - .default('devnet'), - ) - .action(async (options: CLIOptions) => { - try { - const activeConfig = getConfig(options.network); - - const result = await deployContracts(options, activeConfig); - logDeployedContracts(result.contracts); - - if (!options.dryRun) { - const tokenAddresses = Object.fromEntries( - Object.entries(result.contracts.tokens).map(([k, v]) => [k, v.contract.address]), - ); - const dripperAddress = result.contracts.dripper?.contract?.address; - const deploymentData = getDeploymentData(tokenAddresses, dripperAddress, activeConfig); - - // Always update src/deployments.json - const deploymentsPath = join(__dirname, '../src/deployments.json'); - writeFileSync(deploymentsPath, JSON.stringify(deploymentData, null, 4) + '\n'); - logger.info(`Updated ${deploymentsPath}`); - - if (options.output) { - const jsonOutput = JSON.stringify(deploymentData, null, 4); - mkdirSync(dirname(options.output), { recursive: true }); - writeFileSync(options.output, jsonOutput); - logger.info(`Deployment data written to ${options.output}`); - } - } - } catch (error) { - logger.error('Deployment failed:', error); - process.exitCode = 1; - } - }); - -if (import.meta.url === `file://${process.argv[1]}`) { - program.parseAsync(process.argv).then(() => process.exit(process.exitCode ?? 0)); -} diff --git a/src/deployments.json b/src/deployments.json deleted file mode 100644 index 7ca7a12f..00000000 --- a/src/deployments.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "tokens": [ - { - "address": "0x279166aac58e136c6fa26639053663b542658d51382e84ec77de64cd449c0ff4", - "salt": 1337, - "deployer": "0x0000000000000000000000000000000000000000000000000000000000000000", - "constructorArtifact": "constructor_with_minter", - "constructorArgs": { - "name": "WETH", - "symbol": "WETH", - "decimals": 18, - "minter": "0x095afaaab2eee145326825b0f32e4998e698b2776f1604124b59cc29aa528eab" - } - }, - { - "address": "0x147160e0fb609d5e32c776e7a1b367ce0b038431c780491d4f3af3d164818a1e", - "salt": 1337, - "deployer": "0x0000000000000000000000000000000000000000000000000000000000000000", - "constructorArtifact": "constructor_with_minter", - "constructorArgs": { - "name": "DAI", - "symbol": "DAI", - "decimals": 9, - "minter": "0x095afaaab2eee145326825b0f32e4998e698b2776f1604124b59cc29aa528eab" - } - }, - { - "address": "0x0af1b0f2e4cacc74746fc2c0ae2dc43c49d8ef781294a262ad2373d26230abd0", - "salt": 1337, - "deployer": "0x0000000000000000000000000000000000000000000000000000000000000000", - "constructorArtifact": "constructor_with_minter", - "constructorArgs": { - "name": "USDC", - "symbol": "USDC", - "decimals": 6, - "minter": "0x095afaaab2eee145326825b0f32e4998e698b2776f1604124b59cc29aa528eab" - } - } - ], - "dripper": { - "address": "0x095afaaab2eee145326825b0f32e4998e698b2776f1604124b59cc29aa528eab", - "salt": 1337, - "deployer": "0x0000000000000000000000000000000000000000000000000000000000000000", - "constructorArtifact": "constructor" - } -} diff --git a/yarn.lock b/yarn.lock index 8cae15d0..73e78d98 100644 --- a/yarn.lock +++ b/yarn.lock @@ -793,14 +793,6 @@ resolved "https://registry.yarnpkg.com/@aztec/noir-acvm_js/-/noir-acvm_js-5.2.0.tgz#9e476716cb7bf0de9b416f5c6eb50af9e8762094" integrity sha512-/dbQAYJxXTtnuqWTKUpBcJXzsUMoWxHcW2r/yGNzhT/ojY+H0TiR+MgqLc7A2EO2XvqEDJFCzH5jAhR0T0/rKQ== -"@aztec/noir-contracts.js@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@aztec/noir-contracts.js/-/noir-contracts.js-5.2.0.tgz#201dae4597f888721e46e5629b8d5e65fe7a619c" - integrity sha512-o47kPel3fRghnDBXo9ZY23Igq9fycNhf15h3zNajz7Zip9U4tRhh3PFkd2EmNVEDv17rsWOlPp7QowAo2SG2lA== - dependencies: - "@aztec/aztec.js" "5.2.0" - tslib "^2.4.0" - "@aztec/noir-noir_codegen@5.2.0": version "5.2.0" resolved "https://registry.yarnpkg.com/@aztec/noir-noir_codegen/-/noir-noir_codegen-5.2.0.tgz#53cdbb12e0970c9c0b9dca403c470809d2501cba" @@ -3005,11 +2997,6 @@ commander@13.1.0: resolved "https://registry.yarnpkg.com/commander/-/commander-13.1.0.tgz#776167db68c78f38dcce1f9b8d7b8b9a488abf46" integrity sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw== -commander@14.0.1: - version "14.0.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-14.0.1.tgz#2f9225c19e6ebd0dc4404dd45821b2caa17ea09b" - integrity sha512-2JkV3gUZUVrbNA+1sjBOYLsMZ5cEEl8GTFP2a4AVz5hvasAMCQ1D2l2le/cX+pV4N6ZU17zjUahLpIXRrnWL8A== - commander@^12.1.0: version "12.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" @@ -3109,11 +3096,6 @@ detect-node@^2.1.0: resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== -dotenv@16.4.7: - version "16.4.7" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26" - integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== - dotenv@^16.0.3: version "16.6.1" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.6.1.tgz#773f0e69527a8315c7285d5ee73c4459d20a8020" @@ -3235,7 +3217,7 @@ esbuild@0.25.0: "@esbuild/win32-ia32" "0.25.0" "@esbuild/win32-x64" "0.25.0" -esbuild@^0.27.0, esbuild@~0.27.0: +esbuild@^0.27.0: version "0.27.4" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.27.4.tgz#b9591dd7e0ab803a11c9c3b602850403bef22f00" integrity sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ== @@ -4828,16 +4810,6 @@ tsx@4.19.4: optionalDependencies: fsevents "~2.3.3" -tsx@4.21.0: - version "4.21.0" - resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.21.0.tgz#32aa6cf17481e336f756195e6fe04dae3e6308b1" - integrity sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw== - dependencies: - esbuild "~0.27.0" - get-tsconfig "^4.7.5" - optionalDependencies: - fsevents "~2.3.3" - tunnel@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c"