From e1ad09895312f912140d74bc63b9fdfef9b03e5e Mon Sep 17 00:00:00 2001 From: thunkar Date: Mon, 16 Mar 2026 13:41:15 +0100 Subject: [PATCH 1/9] update --- contracts/proof_of_password/Nargo.toml | 6 +- contracts/proof_of_password/src/test/mod.nr | 2 +- package.json | 24 +- scripts/deploy.ts | 15 +- src/contexts/contracts/ContractsContext.tsx | 3 +- src/embedded_wallet.ts | 7 +- src/services/contractService.ts | 6 +- yarn.lock | 524 ++++++++++---------- 8 files changed, 299 insertions(+), 288 deletions(-) diff --git a/contracts/proof_of_password/Nargo.toml b/contracts/proof_of_password/Nargo.toml index 67d2f55..2d2c11a 100644 --- a/contracts/proof_of_password/Nargo.toml +++ b/contracts/proof_of_password/Nargo.toml @@ -4,7 +4,7 @@ type = "contract" authors = [""] [dependencies] -aztec = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v4.0.0-devnet.2-patch.3", directory = "noir-projects/aztec-nr/aztec" } -token = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v4.0.0-devnet.2-patch.3", directory = "noir-projects/noir-contracts/contracts/app/token_contract" } +aztec = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v4.1.0-nightly.20260316", directory = "noir-projects/aztec-nr/aztec" } +token = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v4.1.0-nightly.20260316", directory = "noir-projects/noir-contracts/contracts/app/token_contract" } poseidon = { tag = "v0.1.1", git = "https://github.com/noir-lang/poseidon" } -compressed_string = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v4.0.0-devnet.2-patch.3", directory = "noir-projects/aztec-nr/compressed-string" } \ No newline at end of file +compressed_string = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v4.1.0-nightly.20260316", directory = "noir-projects/aztec-nr/compressed-string" } \ No newline at end of file diff --git a/contracts/proof_of_password/src/test/mod.nr b/contracts/proof_of_password/src/test/mod.nr index 82c6ae6..ae75aff 100644 --- a/contracts/proof_of_password/src/test/mod.nr +++ b/contracts/proof_of_password/src/test/mod.nr @@ -47,7 +47,7 @@ unconstrained fn mints_on_correct_password() { let token = Token::at(token_contract_address); - let balance = env.simulate_utility(token.balance_of_private(recipient)); + let balance = env.execute_utility(token.balance_of_private(recipient)); assert(balance == 1000, "Token was not minted") } diff --git a/package.json b/package.json index b712ac2..1d0990e 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "serve": "vite", "build": "tsc -b && vite build", "lint": "eslint .", - "copy:dependencies": "cd contracts && nargo check && WORKDIR=$(pwd) && cd $HOME/nargo/github.com/AztecProtocol/aztec-packages/v4.0.0-devnet.2-patch.3/noir-projects/noir-contracts && aztec compile --package token_contract && mkdir -p $WORKDIR/target && cp $HOME/nargo/github.com/AztecProtocol/aztec-packages/v4.0.0-devnet.2-patch.3/noir-projects/noir-contracts/target/token_contract-Token.json $WORKDIR/target/token_contract-Token.json", + "copy:dependencies": "cd contracts && nargo check && WORKDIR=$(pwd) && cd $HOME/nargo/github.com/AztecProtocol/aztec-packages/v4.1.0-nightly.20260316/noir-projects/noir-contracts && aztec compile --package token_contract && mkdir -p $WORKDIR/target && cp $HOME/nargo/github.com/AztecProtocol/aztec-packages/v4.1.0-nightly.20260316/noir-projects/noir-contracts/target/token_contract-Token.json $WORKDIR/target/token_contract-Token.json", "compile:contracts": "cd contracts && aztec compile --package proof_of_password && aztec codegen ./target/proof_of_password-ProofOfPassword.json", "test": "cd contracts && aztec test", "preview": "vite preview", @@ -23,16 +23,16 @@ "local-aztec:status": "node scripts/toggle-local-aztec.js status" }, "dependencies": { - "@aztec/accounts": "v4.0.0-devnet.2-patch.3", - "@aztec/aztec.js": "v4.0.0-devnet.2-patch.3", - "@aztec/constants": "v4.0.0-devnet.2-patch.3", - "@aztec/entrypoints": "v4.0.0-devnet.2-patch.3", - "@aztec/foundation": "v4.0.0-devnet.2-patch.3", - "@aztec/noir-contracts.js": "v4.0.0-devnet.2-patch.3", - "@aztec/protocol-contracts": "v4.0.0-devnet.2-patch.3", - "@aztec/pxe": "v4.0.0-devnet.2-patch.3", - "@aztec/stdlib": "v4.0.0-devnet.2-patch.3", - "@aztec/wallet-sdk": "v4.0.0-devnet.2-patch.3", + "@aztec/accounts": "v4.1.0-nightly.20260316", + "@aztec/aztec.js": "v4.1.0-nightly.20260316", + "@aztec/constants": "v4.1.0-nightly.20260316", + "@aztec/entrypoints": "v4.1.0-nightly.20260316", + "@aztec/foundation": "v4.1.0-nightly.20260316", + "@aztec/noir-contracts.js": "v4.1.0-nightly.20260316", + "@aztec/protocol-contracts": "v4.1.0-nightly.20260316", + "@aztec/pxe": "v4.1.0-nightly.20260316", + "@aztec/stdlib": "v4.1.0-nightly.20260316", + "@aztec/wallet-sdk": "v4.1.0-nightly.20260316", "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.0", "@mui/icons-material": "^6.3.1", @@ -45,7 +45,7 @@ "zod": "^3.23.8" }, "devDependencies": { - "@aztec/wallets": "v4.0.0-devnet.2-patch.3", + "@aztec/wallets": "v4.1.0-nightly.20260316", "@eslint/js": "^9.18.0", "@playwright/test": "1.49.0", "@types/buffer-json": "^2", diff --git a/scripts/deploy.ts b/scripts/deploy.ts index 0e7d57f..3eb9f3f 100644 --- a/scripts/deploy.ts +++ b/scripts/deploy.ts @@ -41,6 +41,7 @@ const NETWORK_URLS: Record = { local: 'http://localhost:8080', devnet: 'https://v4-devnet-2.aztec-labs.com', nextnet: 'https://nextnet.aztec-labs.com', + testnet: 'https://rpc.testnet.aztec-labs.com', }; const AZTEC_NODE_URL = NETWORK_URLS[NETWORK]; @@ -104,28 +105,34 @@ async function deployContracts(wallet: EmbeddedWallet, deployer: AztecAddress) { const contractAddressSalt = Fr.random(); - const gregoCoin = await TokenContract.deploy(wallet, deployer, 'GregoCoin', 'GRG', 18).send({ + const { contract: gregoCoin } = await TokenContract.deploy(wallet, deployer, 'GregoCoin', 'GRG', 18).send({ from: deployer, fee: { paymentMethod }, contractAddressSalt, wait: { timeout: 120 }, }); - const gregoCoinPremium = await TokenContract.deploy(wallet, deployer, 'GregoCoinPremium', 'GRGP', 18).send({ + const { contract: gregoCoinPremium } = await TokenContract.deploy( + wallet, + deployer, + 'GregoCoinPremium', + 'GRGP', + 18, + ).send({ from: deployer, fee: { paymentMethod }, contractAddressSalt, wait: { timeout: 120 }, }); - const liquidityToken = await TokenContract.deploy(wallet, deployer, 'LiquidityToken', 'LQT', 18).send({ + const { contract: liquidityToken } = await TokenContract.deploy(wallet, deployer, 'LiquidityToken', 'LQT', 18).send({ from: deployer, fee: { paymentMethod }, contractAddressSalt, wait: { timeout: 120 }, }); - const amm = await AMMContract.deploy( + const { contract: amm } = await AMMContract.deploy( wallet, gregoCoin.address, gregoCoinPremium.address, diff --git a/src/contexts/contracts/ContractsContext.tsx b/src/contexts/contracts/ContractsContext.tsx index 6b92bd5..be849b2 100644 --- a/src/contexts/contracts/ContractsContext.tsx +++ b/src/contexts/contracts/ContractsContext.tsx @@ -113,7 +113,7 @@ export function ContractsProvider({ children }: ContractsProviderProps) { const authwitNonce = Fr.random(); - return state.contracts.amm.methods + const { receipt } = await state.contracts.amm.methods .swap_tokens_for_exact_tokens( state.contracts.gregoCoin.address, state.contracts.gregoCoinPremium.address, @@ -122,6 +122,7 @@ export function ContractsProvider({ children }: ContractsProviderProps) { authwitNonce, ) .send({ from: currentAddress }); + return receipt; }, [wallet, currentAddress, state.contracts], ); diff --git a/src/embedded_wallet.ts b/src/embedded_wallet.ts index cccdfac..a03b2e1 100644 --- a/src/embedded_wallet.ts +++ b/src/embedded_wallet.ts @@ -2,7 +2,7 @@ import { AztecAddress } from '@aztec/stdlib/aztec-address'; import { collectOffchainEffects, type ExecutionPayload } from '@aztec/stdlib/tx'; import { AccountFeePaymentMethodOptions } from '@aztec/entrypoints/account'; import type { AztecNode } from '@aztec/aztec.js/node'; -import { type InteractionWaitOptions, NO_WAIT, type SendReturn } from '@aztec/aztec.js/contracts'; +import { type InteractionWaitOptions, NO_WAIT, type SendReturn, extractOffchainOutput } from '@aztec/aztec.js/contracts'; import { waitForTx } from '@aztec/aztec.js/node'; import type { SendOptions } from '@aztec/aztec.js/wallet'; import { SponsoredFeePaymentMethod } from '@aztec/aztec.js/fee'; @@ -251,6 +251,7 @@ export class EmbeddedWallet extends EmbeddedWalletBase { emit('sending'); const sendingStart = Date.now(); + const offchainOutput = extractOffchainOutput(provenTx.getOffchainEffects()); const tx = await provenTx.toTx(); const txHash = tx.getTxHash(); if (await this.aztecNode.getTxEffect(txHash)) { @@ -264,7 +265,7 @@ export class EmbeddedWallet extends EmbeddedWalletBase { // NO_WAIT: return txHash immediately if (opts.wait === NO_WAIT) { emit('complete'); - return txHash as SendReturn; + return { txHash, ...offchainOutput } as SendReturn; } // --- MINING --- @@ -278,7 +279,7 @@ export class EmbeddedWallet extends EmbeddedWalletBase { phases.push({ name: 'Mining', duration: miningDuration, color: '#4caf50' }); emit('complete'); - return receipt as SendReturn; + return { receipt, ...offchainOutput } as SendReturn; } catch (err) { emit('error', { error: err instanceof Error ? err.message : 'Transaction failed' }); throw err; diff --git a/src/services/contractService.ts b/src/services/contractService.ts index 5f98ce7..af85fd1 100644 --- a/src/services/contractService.ts +++ b/src/services/contractService.ts @@ -258,7 +258,7 @@ export async function executeSwap( const { gregoCoin, gregoCoinPremium, amm } = contracts; const authwitNonce = Fr.random(); - return amm.methods + const { receipt } = await amm.methods .swap_tokens_for_exact_tokens( gregoCoin.address, gregoCoinPremium.address, @@ -267,6 +267,7 @@ export async function executeSwap( authwitNonce, ) .send({ from: fromAddress }); + return receipt; } /** @@ -302,12 +303,13 @@ export async function executeDrip( ): Promise { const { instance: sponsoredFPCInstance } = await getSponsoredFPCData(); - return pop.methods.check_password_and_mint(password, recipient).send({ + const { receipt } = await pop.methods.check_password_and_mint(password, recipient).send({ from: AztecAddressClass.ZERO, fee: { paymentMethod: new SponsoredFeePaymentMethod(sponsoredFPCInstance.address), }, }); + return receipt; } /** diff --git a/yarn.lock b/yarn.lock index 68bda22..58caaeb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -643,66 +643,66 @@ __metadata: languageName: node linkType: hard -"@aztec/accounts@npm:4.0.0-devnet.2-patch.3, @aztec/accounts@npm:v4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/accounts@npm:4.0.0-devnet.2-patch.3" - dependencies: - "@aztec/aztec.js": "npm:4.0.0-devnet.2-patch.3" - "@aztec/entrypoints": "npm:4.0.0-devnet.2-patch.3" - "@aztec/ethereum": "npm:4.0.0-devnet.2-patch.3" - "@aztec/foundation": "npm:4.0.0-devnet.2-patch.3" - "@aztec/stdlib": "npm:4.0.0-devnet.2-patch.3" +"@aztec/accounts@npm:4.1.0-nightly.20260316, @aztec/accounts@npm:v4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/accounts@npm:4.1.0-nightly.20260316" + dependencies: + "@aztec/aztec.js": "npm:4.1.0-nightly.20260316" + "@aztec/entrypoints": "npm:4.1.0-nightly.20260316" + "@aztec/ethereum": "npm:4.1.0-nightly.20260316" + "@aztec/foundation": "npm:4.1.0-nightly.20260316" + "@aztec/stdlib": "npm:4.1.0-nightly.20260316" tslib: "npm:^2.4.0" - checksum: 10c0/d3d4ad43f1d601784aa41741827e77148e4eb2133690399d69be464c76de405dc138b82ce9eef9a65bb7ea8c867c63e61a03e2e31c302b2e5af6f4083f7277c1 + checksum: 10c0/eed186f1ec57fbed6beeb362a645d2fe00c6d3a29bfdfb58f3fb3da921da031b6bab844a7ee76e9cd80a77eef972504ceb379c5d73962218dae5ee0ba044d6f6 languageName: node linkType: hard -"@aztec/aztec.js@npm:4.0.0-devnet.2-patch.3, @aztec/aztec.js@npm:v4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/aztec.js@npm:4.0.0-devnet.2-patch.3" +"@aztec/aztec.js@npm:4.1.0-nightly.20260316, @aztec/aztec.js@npm:v4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/aztec.js@npm:4.1.0-nightly.20260316" dependencies: - "@aztec/constants": "npm:4.0.0-devnet.2-patch.3" - "@aztec/entrypoints": "npm:4.0.0-devnet.2-patch.3" - "@aztec/ethereum": "npm:4.0.0-devnet.2-patch.3" - "@aztec/foundation": "npm:4.0.0-devnet.2-patch.3" - "@aztec/l1-artifacts": "npm:4.0.0-devnet.2-patch.3" - "@aztec/protocol-contracts": "npm:4.0.0-devnet.2-patch.3" - "@aztec/stdlib": "npm:4.0.0-devnet.2-patch.3" - axios: "npm:^1.12.0" + "@aztec/constants": "npm:4.1.0-nightly.20260316" + "@aztec/entrypoints": "npm:4.1.0-nightly.20260316" + "@aztec/ethereum": "npm:4.1.0-nightly.20260316" + "@aztec/foundation": "npm:4.1.0-nightly.20260316" + "@aztec/l1-artifacts": "npm:4.1.0-nightly.20260316" + "@aztec/protocol-contracts": "npm:4.1.0-nightly.20260316" + "@aztec/stdlib": "npm:4.1.0-nightly.20260316" + axios: "npm:^1.13.5" tslib: "npm:^2.4.0" viem: "npm:@aztec/viem@2.38.2" zod: "npm:^3.23.8" - checksum: 10c0/0a751e178a9976059ab6cee55d55751a994218fa8780795199fda27feaa2e0057b59a09b5c63b1a4982bc7485c76746b366e99b2e1d0507c8273ac1db335e665 + checksum: 10c0/74f591fe4468fe1710647bfe4cdc717cc5c9caaac37562979b07a4b66c11f5716ce42bf9de00e6de1947b8567c4f1546f34d3c18c9a49b092902c27cfa1d65bf languageName: node linkType: hard -"@aztec/bb-prover@npm:4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/bb-prover@npm:4.0.0-devnet.2-patch.3" +"@aztec/bb-prover@npm:4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/bb-prover@npm:4.1.0-nightly.20260316" dependencies: - "@aztec/bb.js": "npm:4.0.0-devnet.2-patch.3" - "@aztec/constants": "npm:4.0.0-devnet.2-patch.3" - "@aztec/foundation": "npm:4.0.0-devnet.2-patch.3" - "@aztec/noir-noirc_abi": "npm:4.0.0-devnet.2-patch.3" - "@aztec/noir-protocol-circuits-types": "npm:4.0.0-devnet.2-patch.3" - "@aztec/noir-types": "npm:4.0.0-devnet.2-patch.3" - "@aztec/simulator": "npm:4.0.0-devnet.2-patch.3" - "@aztec/stdlib": "npm:4.0.0-devnet.2-patch.3" - "@aztec/telemetry-client": "npm:4.0.0-devnet.2-patch.3" - "@aztec/world-state": "npm:4.0.0-devnet.2-patch.3" + "@aztec/bb.js": "npm:4.1.0-nightly.20260316" + "@aztec/constants": "npm:4.1.0-nightly.20260316" + "@aztec/foundation": "npm:4.1.0-nightly.20260316" + "@aztec/noir-noirc_abi": "npm:4.1.0-nightly.20260316" + "@aztec/noir-protocol-circuits-types": "npm:4.1.0-nightly.20260316" + "@aztec/noir-types": "npm:4.1.0-nightly.20260316" + "@aztec/simulator": "npm:4.1.0-nightly.20260316" + "@aztec/stdlib": "npm:4.1.0-nightly.20260316" + "@aztec/telemetry-client": "npm:4.1.0-nightly.20260316" + "@aztec/world-state": "npm:4.1.0-nightly.20260316" commander: "npm:^12.1.0" pako: "npm:^2.1.0" source-map-support: "npm:^0.5.21" tslib: "npm:^2.4.0" bin: bb-cli: dest/bb/index.js - checksum: 10c0/ea052c05937a120077876e15b86cc025462935ecd5341b724aab38a591407f3083692a41d807bbb6ce318a7302984d830cf95244b74a7245514460146f87aafb + checksum: 10c0/361c926d6f7b43aabb24b9e83c2f5148d12bcff1db876dc55281a28d9ce51f4a7b2ff71d66c4d18a8273f97e2990e49a041e64d41aee1119ea835646baa4d0d3 languageName: node linkType: hard -"@aztec/bb.js@npm:4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/bb.js@npm:4.0.0-devnet.2-patch.3" +"@aztec/bb.js@npm:4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/bb.js@npm:4.1.0-nightly.20260316" dependencies: comlink: "npm:^4.4.1" commander: "npm:^12.1.0" @@ -712,65 +712,65 @@ __metadata: tslib: "npm:^2.4.0" bin: bb: dest/node/bin/index.js - checksum: 10c0/85f1dfce7d13a8f7e79f640c47051c1f131731a2958dfaa5db1854492732b4398b2e2bf12ce59a6600487d673fcf49cf7779cb160d316365d45ab168416d3c37 + checksum: 10c0/855cc4719d586503c38db03d7b277903bf8ae0aa6ca7d0b59752e7ae44340e699e4ab462d8299e5cafb83b2683f9b4e0c4dc6a028cd50ed6c03a410e2ebac61b languageName: node linkType: hard -"@aztec/blob-lib@npm:4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/blob-lib@npm:4.0.0-devnet.2-patch.3" +"@aztec/blob-lib@npm:4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/blob-lib@npm:4.1.0-nightly.20260316" dependencies: - "@aztec/constants": "npm:4.0.0-devnet.2-patch.3" - "@aztec/foundation": "npm:4.0.0-devnet.2-patch.3" + "@aztec/constants": "npm:4.1.0-nightly.20260316" + "@aztec/foundation": "npm:4.1.0-nightly.20260316" "@crate-crypto/node-eth-kzg": "npm:^0.10.0" tslib: "npm:^2.4.0" - checksum: 10c0/5ef11fea4f1ed1afd3fab14256cccd3f3a48b60798ed49aea2ff17062a6282f8a1eb31b12feea75fef1b0c759900152102578f6c28549d7e2a31da29d2c9c52d + checksum: 10c0/d29db03e8f1af5cafe7e693a2e6d034fa5f98d220153dfd3e90ccdb7a762c82c990830e0e6740e0534feb8c82719ee160f4a00b3940da9d5d7e0d942d7fc5935 languageName: node linkType: hard -"@aztec/builder@npm:4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/builder@npm:4.0.0-devnet.2-patch.3" +"@aztec/builder@npm:4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/builder@npm:4.1.0-nightly.20260316" dependencies: - "@aztec/foundation": "npm:4.0.0-devnet.2-patch.3" - "@aztec/stdlib": "npm:4.0.0-devnet.2-patch.3" + "@aztec/foundation": "npm:4.1.0-nightly.20260316" + "@aztec/stdlib": "npm:4.1.0-nightly.20260316" commander: "npm:^12.1.0" - checksum: 10c0/d3e7900b96608431178ec067ffbd4a2f9562073049202dd377101d9307cde312b4af17d3d53586867f8b71ce2e7660c2cf1c4df9383e7907baeca8509811c45f + checksum: 10c0/ad298ce38e52c686747fc83670c5e11729e2a92dd70e4df228745df6cc4b464e20ab5e43399cadccf8f81354fe3bcb670c73ede1b107f25240cdcf74b35e1741 languageName: node linkType: hard -"@aztec/constants@npm:4.0.0-devnet.2-patch.3, @aztec/constants@npm:v4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/constants@npm:4.0.0-devnet.2-patch.3" +"@aztec/constants@npm:4.1.0-nightly.20260316, @aztec/constants@npm:v4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/constants@npm:4.1.0-nightly.20260316" dependencies: - "@aztec/foundation": "npm:4.0.0-devnet.2-patch.3" + "@aztec/foundation": "npm:4.1.0-nightly.20260316" tslib: "npm:^2.4.0" - checksum: 10c0/9194a1afd1b5e179003edc3af2d17e4c2241210012db28c6342e3d08f6c81479f64360b1f13efb7ded71a7722ee42e05d9f8214decc5a0d79285b7a18bb7fb43 + checksum: 10c0/75de3c38402d2e5bc248f71d73aad28578ad24df2918b777edcbb6516c4723057f08e6f405b2269a35e37ba1c8500c6cbaf219e7f3a13081c7ef93f6314cf664 languageName: node linkType: hard -"@aztec/entrypoints@npm:4.0.0-devnet.2-patch.3, @aztec/entrypoints@npm:v4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/entrypoints@npm:4.0.0-devnet.2-patch.3" +"@aztec/entrypoints@npm:4.1.0-nightly.20260316, @aztec/entrypoints@npm:v4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/entrypoints@npm:4.1.0-nightly.20260316" dependencies: - "@aztec/constants": "npm:4.0.0-devnet.2-patch.3" - "@aztec/foundation": "npm:4.0.0-devnet.2-patch.3" - "@aztec/protocol-contracts": "npm:4.0.0-devnet.2-patch.3" - "@aztec/stdlib": "npm:4.0.0-devnet.2-patch.3" + "@aztec/constants": "npm:4.1.0-nightly.20260316" + "@aztec/foundation": "npm:4.1.0-nightly.20260316" + "@aztec/protocol-contracts": "npm:4.1.0-nightly.20260316" + "@aztec/stdlib": "npm:4.1.0-nightly.20260316" tslib: "npm:^2.4.0" zod: "npm:^3.23.8" - checksum: 10c0/fbed524410b6d949c036bfe7ff7c3d7c471548bd48147316e7f67bbf9423f3379701a22d9056521bf92195b5c591b0eb04638f33df388edc57aa71d42770e3e7 + checksum: 10c0/65f9442407ff9f5a23cfa05558ebe0655b4d97f685cfb81b754aeb5cd5cab9002203fcdb3d21d75b2b5f9cdca13c005700966771b2cbeb7c5eab69f89e0c30d3 languageName: node linkType: hard -"@aztec/ethereum@npm:4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/ethereum@npm:4.0.0-devnet.2-patch.3" +"@aztec/ethereum@npm:4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/ethereum@npm:4.1.0-nightly.20260316" dependencies: - "@aztec/blob-lib": "npm:4.0.0-devnet.2-patch.3" - "@aztec/constants": "npm:4.0.0-devnet.2-patch.3" - "@aztec/foundation": "npm:4.0.0-devnet.2-patch.3" - "@aztec/l1-artifacts": "npm:4.0.0-devnet.2-patch.3" + "@aztec/blob-lib": "npm:4.1.0-nightly.20260316" + "@aztec/constants": "npm:4.1.0-nightly.20260316" + "@aztec/foundation": "npm:4.1.0-nightly.20260316" + "@aztec/l1-artifacts": "npm:4.1.0-nightly.20260316" "@viem/anvil": "npm:^0.0.10" dotenv: "npm:^16.0.3" lodash.chunk: "npm:^4.2.0" @@ -778,15 +778,15 @@ __metadata: tslib: "npm:^2.4.0" viem: "npm:@aztec/viem@2.38.2" zod: "npm:^3.23.8" - checksum: 10c0/dc1755d0928d0f20f1b0a15eb7891351db77c20ae0988537555f63b502ddf0bb39681cf5f152efa914a8a8e7cc5ed58cb20b7b1a226f41709e09fc5cf87a6928 + checksum: 10c0/31b5675b5dc4b6bde6418569e45417dbb19787b52b05845adaf6f5e2a6749566452787fdaac48b9e80547c4dd0265ae7168f010420a9463edafdc90c138c4f16 languageName: node linkType: hard -"@aztec/foundation@npm:4.0.0-devnet.2-patch.3, @aztec/foundation@npm:v4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/foundation@npm:4.0.0-devnet.2-patch.3" +"@aztec/foundation@npm:4.1.0-nightly.20260316, @aztec/foundation@npm:v4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/foundation@npm:4.1.0-nightly.20260316" dependencies: - "@aztec/bb.js": "npm:4.0.0-devnet.2-patch.3" + "@aztec/bb.js": "npm:4.1.0-nightly.20260316" "@koa/cors": "npm:^5.0.0" "@noble/curves": "npm:=1.7.0" "@noble/hashes": "npm:^1.6.1" @@ -808,169 +808,169 @@ __metadata: sha3: "npm:^2.1.4" undici: "npm:^5.28.5" zod: "npm:^3.23.8" - checksum: 10c0/9f44dcdafbd005a359b82fde376a4e4e739be378ee93a9b7df9219e0baff2018462a23860a61d49c9e796ce7fc7bb29524ee594891b525553f641fa0f8786a49 + checksum: 10c0/e57c50f84b69d6044ed7f0da28decf5bba9d3a1997f19275af2184d4ac25a893eb168a4b8bca9df0b8e2baa0a332b2d87a90c7fdb64a56308cdf30f0aa5b7437 languageName: node linkType: hard -"@aztec/key-store@npm:4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/key-store@npm:4.0.0-devnet.2-patch.3" +"@aztec/key-store@npm:4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/key-store@npm:4.1.0-nightly.20260316" dependencies: - "@aztec/constants": "npm:4.0.0-devnet.2-patch.3" - "@aztec/foundation": "npm:4.0.0-devnet.2-patch.3" - "@aztec/kv-store": "npm:4.0.0-devnet.2-patch.3" - "@aztec/stdlib": "npm:4.0.0-devnet.2-patch.3" + "@aztec/constants": "npm:4.1.0-nightly.20260316" + "@aztec/foundation": "npm:4.1.0-nightly.20260316" + "@aztec/kv-store": "npm:4.1.0-nightly.20260316" + "@aztec/stdlib": "npm:4.1.0-nightly.20260316" tslib: "npm:^2.4.0" - checksum: 10c0/542d012d826432aaf3a09055fbb2a4a6aeb65d51d935bf2d704fbc64d2467e05cdd433f7f5cd396ceb96e3402cacc3ab5f3ced8f108a1fef83a15f690ace45eb + checksum: 10c0/339361ecc2070235923bf223e9764c77c6b740db4bcd51a85d7a37920dd7a29c67c0024d5be1080ec3d9a095d62ed31655761addd7cbc44bb083a6da824113a5 languageName: node linkType: hard -"@aztec/kv-store@npm:4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/kv-store@npm:4.0.0-devnet.2-patch.3" +"@aztec/kv-store@npm:4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/kv-store@npm:4.1.0-nightly.20260316" dependencies: - "@aztec/constants": "npm:4.0.0-devnet.2-patch.3" - "@aztec/ethereum": "npm:4.0.0-devnet.2-patch.3" - "@aztec/foundation": "npm:4.0.0-devnet.2-patch.3" - "@aztec/native": "npm:4.0.0-devnet.2-patch.3" - "@aztec/stdlib": "npm:4.0.0-devnet.2-patch.3" + "@aztec/constants": "npm:4.1.0-nightly.20260316" + "@aztec/ethereum": "npm:4.1.0-nightly.20260316" + "@aztec/foundation": "npm:4.1.0-nightly.20260316" + "@aztec/native": "npm:4.1.0-nightly.20260316" + "@aztec/stdlib": "npm:4.1.0-nightly.20260316" idb: "npm:^8.0.0" lmdb: "npm:^3.2.0" msgpackr: "npm:^1.11.2" ohash: "npm:^2.0.11" ordered-binary: "npm:^1.5.3" - checksum: 10c0/6cfb404c8bd7e0c598d39bb278fb8b8ee9c400f4b0c22b76b5480775c4cc6c5c85ec08b1830a9a9a4428b94c8d768144e556f105cfd0f62a3a2918d647553edc + checksum: 10c0/7fdd6f64e863a9da59313b378a6a6b735265c4923841ee3b51877d4694a9b158f05cd1100592bcd841a2b2c636d74f6bfd92fca937fef5fddc07117427dbcc17 languageName: node linkType: hard -"@aztec/l1-artifacts@npm:4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/l1-artifacts@npm:4.0.0-devnet.2-patch.3" +"@aztec/l1-artifacts@npm:4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/l1-artifacts@npm:4.1.0-nightly.20260316" dependencies: tslib: "npm:^2.4.0" - checksum: 10c0/16abf486487e937bf8873935a2d49bb23fd0d8f5b50018a291dd2e0b3cb35ae0c6a65d4290d599ef95f5e8164919eae5bf0fd7be15125b62e6a7eae53ba9c804 + checksum: 10c0/5b12a202b3f7d4a8a28b18a70923eb2e2fb5d55ef6f265e6fe3443e091cf92e887e4946a5307fcd5dd3e169eff920f2db71611e2b528d51f436d81f029adc5d2 languageName: node linkType: hard -"@aztec/merkle-tree@npm:4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/merkle-tree@npm:4.0.0-devnet.2-patch.3" +"@aztec/merkle-tree@npm:4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/merkle-tree@npm:4.1.0-nightly.20260316" dependencies: - "@aztec/foundation": "npm:4.0.0-devnet.2-patch.3" - "@aztec/kv-store": "npm:4.0.0-devnet.2-patch.3" - "@aztec/stdlib": "npm:4.0.0-devnet.2-patch.3" + "@aztec/foundation": "npm:4.1.0-nightly.20260316" + "@aztec/kv-store": "npm:4.1.0-nightly.20260316" + "@aztec/stdlib": "npm:4.1.0-nightly.20260316" sha256: "npm:^0.2.0" tslib: "npm:^2.4.0" - checksum: 10c0/0adbf8fbcd8e7dfee49e5f5f5c8fa06f6ddc437e06e8b62b88fc658f0a6519f83ef1c66f42d39d271e50f70a07dadfa40c221c3b2e4bfbd5da574b2e8645e576 + checksum: 10c0/cc668aa195d15f54681fdca58db9267bcd4521c8a50b7b7fc30b2e8cf41ad53e0112946d5d6e6fb7b9b3b0e47c1c395209b00016a8d45ee8ddd814be77875ab4 languageName: node linkType: hard -"@aztec/native@npm:4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/native@npm:4.0.0-devnet.2-patch.3" +"@aztec/native@npm:4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/native@npm:4.1.0-nightly.20260316" dependencies: - "@aztec/bb.js": "npm:4.0.0-devnet.2-patch.3" - "@aztec/foundation": "npm:4.0.0-devnet.2-patch.3" + "@aztec/bb.js": "npm:4.1.0-nightly.20260316" + "@aztec/foundation": "npm:4.1.0-nightly.20260316" msgpackr: "npm:^1.11.2" - checksum: 10c0/e62b4feaeea2db68be4ec61598e43137b80c453131f1d6b8822879b873b533670876eaca13be8758cfeb532b8cb99f05b91c47d9756bdf413a6b2772ef46b26e + checksum: 10c0/0d87eba1b2542161ac310860d9dfcd43fbc9fe4526f90ef6bf3e3edbc3cd5e75dd91be39b99b898615a5c4c497b8a51162035b125087e5f6ed2501be88a21e50 languageName: node linkType: hard -"@aztec/noir-acvm_js@npm:4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/noir-acvm_js@npm:4.0.0-devnet.2-patch.3" - checksum: 10c0/9debe84759f567951c249ff62445bbb8aace6dc5a9e3cfe635c1402e1d0eeda644ab2a0f9fdcfbffbeabe7507f1acd3492ef29dd84db85187796c338c43dd9bc +"@aztec/noir-acvm_js@npm:4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/noir-acvm_js@npm:4.1.0-nightly.20260316" + checksum: 10c0/af17f694fdd298ac5fb0be9a310b0afff73c0fea44377aeecaec6b4d08b6d16d93c4c4d940077eddead3e84f7019e656fba2ef025bd4acd6c9e1603040ffb65c languageName: node linkType: hard -"@aztec/noir-contracts.js@npm:v4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/noir-contracts.js@npm:4.0.0-devnet.2-patch.3" +"@aztec/noir-contracts.js@npm:v4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/noir-contracts.js@npm:4.1.0-nightly.20260316" dependencies: - "@aztec/aztec.js": "npm:4.0.0-devnet.2-patch.3" + "@aztec/aztec.js": "npm:4.1.0-nightly.20260316" tslib: "npm:^2.4.0" - checksum: 10c0/71f3a761b76a425861151ff6f82144ce62cc75702e53c1455e8b6c8e8f79f65854e69aeb9874b8f7ea0f5f36b3f479b1dca28e7bf33add9efddafee8d57c4996 + checksum: 10c0/29c1b488e1cc89a284afd25ac8f9fa28884a885d23d3e8b0314b6842df0da20f082fe42f4214ac8e7ba335954d4c4e7e1cd488d78740e3b8bf77ecef8a53cf2c languageName: node linkType: hard -"@aztec/noir-noir_codegen@npm:4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/noir-noir_codegen@npm:4.0.0-devnet.2-patch.3" +"@aztec/noir-noir_codegen@npm:4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/noir-noir_codegen@npm:4.1.0-nightly.20260316" dependencies: - "@aztec/noir-types": "npm:4.0.0-devnet.2-patch.3" + "@aztec/noir-types": "npm:4.1.0-nightly.20260316" glob: "npm:^13.0.0" ts-command-line-args: "npm:^2.5.1" bin: noir-codegen: lib/main.js - checksum: 10c0/b689a44625fa4711b43d150b6c8cf5a9190adb7f5e04b78243a5df388698a27563c21fd9b18e8dafff5f3b6b2b24c6e6e2ce9b5e926cf6355ad25be636d2745b + checksum: 10c0/644219390a69ed0066f7c0ff7c8a5a16763bd636d56655d662bc2b77f82de398f7dd78a38bde60862a65a51e79dede9d1bceaf51cdaaa34a36830aacc1720ec0 languageName: node linkType: hard -"@aztec/noir-noirc_abi@npm:4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/noir-noirc_abi@npm:4.0.0-devnet.2-patch.3" +"@aztec/noir-noirc_abi@npm:4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/noir-noirc_abi@npm:4.1.0-nightly.20260316" dependencies: - "@aztec/noir-types": "npm:4.0.0-devnet.2-patch.3" - checksum: 10c0/f07c4b92b59b835410d4d743ba02216f073930a0f7235eb8d9a1553c2ed4767879bc233fdb5f5b70db398868ac36602ca6a847e426a138fd6833f5adbeccec70 + "@aztec/noir-types": "npm:4.1.0-nightly.20260316" + checksum: 10c0/c29c3e0cca01bd3b58e70ac9f697ecf936580521001d64064aa1a216a51445bb47e566ffc7454262220155e2585300c67dc7456ce3c58829af34d39128f42f1b languageName: node linkType: hard -"@aztec/noir-protocol-circuits-types@npm:4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/noir-protocol-circuits-types@npm:4.0.0-devnet.2-patch.3" +"@aztec/noir-protocol-circuits-types@npm:4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/noir-protocol-circuits-types@npm:4.1.0-nightly.20260316" dependencies: - "@aztec/blob-lib": "npm:4.0.0-devnet.2-patch.3" - "@aztec/constants": "npm:4.0.0-devnet.2-patch.3" - "@aztec/foundation": "npm:4.0.0-devnet.2-patch.3" - "@aztec/noir-acvm_js": "npm:4.0.0-devnet.2-patch.3" - "@aztec/noir-noir_codegen": "npm:4.0.0-devnet.2-patch.3" - "@aztec/noir-noirc_abi": "npm:4.0.0-devnet.2-patch.3" - "@aztec/noir-types": "npm:4.0.0-devnet.2-patch.3" - "@aztec/stdlib": "npm:4.0.0-devnet.2-patch.3" + "@aztec/blob-lib": "npm:4.1.0-nightly.20260316" + "@aztec/constants": "npm:4.1.0-nightly.20260316" + "@aztec/foundation": "npm:4.1.0-nightly.20260316" + "@aztec/noir-acvm_js": "npm:4.1.0-nightly.20260316" + "@aztec/noir-noir_codegen": "npm:4.1.0-nightly.20260316" + "@aztec/noir-noirc_abi": "npm:4.1.0-nightly.20260316" + "@aztec/noir-types": "npm:4.1.0-nightly.20260316" + "@aztec/stdlib": "npm:4.1.0-nightly.20260316" change-case: "npm:^5.4.4" tslib: "npm:^2.4.0" - checksum: 10c0/df52444c50a5845c744762460c7314a6b687e4acab31a8f35d2837486b39739099bf2d6c06661f851acc52a533ad6b15a9801aff64187a00629a6d9bbf930624 + checksum: 10c0/ae29d11574fae45324734fdd6eae2469b437881b2ceaced2cc6a866b8b7f8078de5167b399908383ebee93c1d95690d220fb3e647a2aa8732820418f251ad1a5 languageName: node linkType: hard -"@aztec/noir-types@npm:4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/noir-types@npm:4.0.0-devnet.2-patch.3" - checksum: 10c0/11f3eba03c72998dc272aaef31c974c63d3586a7446336cb6b3b52b62860d32bb78b11dd9d2b02f2fa26fee21fd05cc3e1b4706cb62efc5fb005210e3d4e5d4f +"@aztec/noir-types@npm:4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/noir-types@npm:4.1.0-nightly.20260316" + checksum: 10c0/f48d86066036ac342e8621a333cde47dc0289211bb515546afaafc61fcc6348c65a4e51c22c97ea0e066d21419df408b046ffaddecb0d96683492acb0763a2f4 languageName: node linkType: hard -"@aztec/protocol-contracts@npm:4.0.0-devnet.2-patch.3, @aztec/protocol-contracts@npm:v4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/protocol-contracts@npm:4.0.0-devnet.2-patch.3" +"@aztec/protocol-contracts@npm:4.1.0-nightly.20260316, @aztec/protocol-contracts@npm:v4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/protocol-contracts@npm:4.1.0-nightly.20260316" dependencies: - "@aztec/constants": "npm:4.0.0-devnet.2-patch.3" - "@aztec/foundation": "npm:4.0.0-devnet.2-patch.3" - "@aztec/stdlib": "npm:4.0.0-devnet.2-patch.3" + "@aztec/constants": "npm:4.1.0-nightly.20260316" + "@aztec/foundation": "npm:4.1.0-nightly.20260316" + "@aztec/stdlib": "npm:4.1.0-nightly.20260316" lodash.chunk: "npm:^4.2.0" lodash.omit: "npm:^4.5.0" tslib: "npm:^2.4.0" - checksum: 10c0/12d3f789682649a2b2a08f824895ec2e49057dd9cf50f38bb0cc64f324aba359627dae41c66b12fb93d2e283e949ee754e9d963ebd91ea459922de280e4dcb6a - languageName: node - linkType: hard - -"@aztec/pxe@npm:4.0.0-devnet.2-patch.3, @aztec/pxe@npm:v4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/pxe@npm:4.0.0-devnet.2-patch.3" - dependencies: - "@aztec/bb-prover": "npm:4.0.0-devnet.2-patch.3" - "@aztec/bb.js": "npm:4.0.0-devnet.2-patch.3" - "@aztec/builder": "npm:4.0.0-devnet.2-patch.3" - "@aztec/constants": "npm:4.0.0-devnet.2-patch.3" - "@aztec/ethereum": "npm:4.0.0-devnet.2-patch.3" - "@aztec/foundation": "npm:4.0.0-devnet.2-patch.3" - "@aztec/key-store": "npm:4.0.0-devnet.2-patch.3" - "@aztec/kv-store": "npm:4.0.0-devnet.2-patch.3" - "@aztec/noir-protocol-circuits-types": "npm:4.0.0-devnet.2-patch.3" - "@aztec/noir-types": "npm:4.0.0-devnet.2-patch.3" - "@aztec/protocol-contracts": "npm:4.0.0-devnet.2-patch.3" - "@aztec/simulator": "npm:4.0.0-devnet.2-patch.3" - "@aztec/stdlib": "npm:4.0.0-devnet.2-patch.3" + checksum: 10c0/ff88f61cc1bf26a95f79d443b46f84062ff8c34561e676ab55e963544852dc749989a3ae20623283d056886a708e2c47cb2ed31a965a4d04e7e9426c575ccd95 + languageName: node + linkType: hard + +"@aztec/pxe@npm:4.1.0-nightly.20260316, @aztec/pxe@npm:v4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/pxe@npm:4.1.0-nightly.20260316" + dependencies: + "@aztec/bb-prover": "npm:4.1.0-nightly.20260316" + "@aztec/bb.js": "npm:4.1.0-nightly.20260316" + "@aztec/builder": "npm:4.1.0-nightly.20260316" + "@aztec/constants": "npm:4.1.0-nightly.20260316" + "@aztec/ethereum": "npm:4.1.0-nightly.20260316" + "@aztec/foundation": "npm:4.1.0-nightly.20260316" + "@aztec/key-store": "npm:4.1.0-nightly.20260316" + "@aztec/kv-store": "npm:4.1.0-nightly.20260316" + "@aztec/noir-protocol-circuits-types": "npm:4.1.0-nightly.20260316" + "@aztec/noir-types": "npm:4.1.0-nightly.20260316" + "@aztec/protocol-contracts": "npm:4.1.0-nightly.20260316" + "@aztec/simulator": "npm:4.1.0-nightly.20260316" + "@aztec/stdlib": "npm:4.1.0-nightly.20260316" koa: "npm:^2.16.1" koa-router: "npm:^13.1.1" lodash.omit: "npm:^4.5.0" @@ -979,47 +979,47 @@ __metadata: viem: "npm:@aztec/viem@2.38.2" bin: pxe: dest/bin/index.js - checksum: 10c0/c2be65796dda80a02691f185e17116607e96e5755a74e70951c708c05526bdc79d03450f73d216bc37c610769474e731e4a5fc2ef7e5010ef24d47c250bcdd11 + checksum: 10c0/e8e971d016fed8054f1fedb87053bda85ccc13ff89a2eb6bcf51af82c7cc88fc97e86a40b74bb8bc2174d944b56b38ea38e02129a73a72501bf930ba017c8109 languageName: node linkType: hard -"@aztec/simulator@npm:4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/simulator@npm:4.0.0-devnet.2-patch.3" +"@aztec/simulator@npm:4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/simulator@npm:4.1.0-nightly.20260316" dependencies: - "@aztec/constants": "npm:4.0.0-devnet.2-patch.3" - "@aztec/foundation": "npm:4.0.0-devnet.2-patch.3" - "@aztec/native": "npm:4.0.0-devnet.2-patch.3" - "@aztec/noir-acvm_js": "npm:4.0.0-devnet.2-patch.3" - "@aztec/noir-noirc_abi": "npm:4.0.0-devnet.2-patch.3" - "@aztec/noir-protocol-circuits-types": "npm:4.0.0-devnet.2-patch.3" - "@aztec/noir-types": "npm:4.0.0-devnet.2-patch.3" - "@aztec/protocol-contracts": "npm:4.0.0-devnet.2-patch.3" - "@aztec/stdlib": "npm:4.0.0-devnet.2-patch.3" - "@aztec/telemetry-client": "npm:4.0.0-devnet.2-patch.3" - "@aztec/world-state": "npm:4.0.0-devnet.2-patch.3" + "@aztec/constants": "npm:4.1.0-nightly.20260316" + "@aztec/foundation": "npm:4.1.0-nightly.20260316" + "@aztec/native": "npm:4.1.0-nightly.20260316" + "@aztec/noir-acvm_js": "npm:4.1.0-nightly.20260316" + "@aztec/noir-noirc_abi": "npm:4.1.0-nightly.20260316" + "@aztec/noir-protocol-circuits-types": "npm:4.1.0-nightly.20260316" + "@aztec/noir-types": "npm:4.1.0-nightly.20260316" + "@aztec/protocol-contracts": "npm:4.1.0-nightly.20260316" + "@aztec/stdlib": "npm:4.1.0-nightly.20260316" + "@aztec/telemetry-client": "npm:4.1.0-nightly.20260316" + "@aztec/world-state": "npm:4.1.0-nightly.20260316" lodash.clonedeep: "npm:^4.5.0" lodash.merge: "npm:^4.6.2" tslib: "npm:^2.4.0" - checksum: 10c0/57e9c326f2d04ae4f04ec23ebcb31e8130eb450d5985f4aa9995c61269f322f462a8401d40941f8e3a1df1f21f6736c243718720bc710f25f3f0ecd32b74bb95 + checksum: 10c0/a22d8d55e60d540ace7baefb720b4d75b6b56e2f6d1e9201cfa41f942ad93130dc162f2237a8ad513b346088bf595d3d4d1baef25c41802066315920c9c5a802 languageName: node linkType: hard -"@aztec/stdlib@npm:4.0.0-devnet.2-patch.3, @aztec/stdlib@npm:v4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/stdlib@npm:4.0.0-devnet.2-patch.3" +"@aztec/stdlib@npm:4.1.0-nightly.20260316, @aztec/stdlib@npm:v4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/stdlib@npm:4.1.0-nightly.20260316" dependencies: "@aws-sdk/client-s3": "npm:^3.892.0" - "@aztec/bb.js": "npm:4.0.0-devnet.2-patch.3" - "@aztec/blob-lib": "npm:4.0.0-devnet.2-patch.3" - "@aztec/constants": "npm:4.0.0-devnet.2-patch.3" - "@aztec/ethereum": "npm:4.0.0-devnet.2-patch.3" - "@aztec/foundation": "npm:4.0.0-devnet.2-patch.3" - "@aztec/l1-artifacts": "npm:4.0.0-devnet.2-patch.3" - "@aztec/noir-noirc_abi": "npm:4.0.0-devnet.2-patch.3" - "@aztec/validator-ha-signer": "npm:4.0.0-devnet.2-patch.3" + "@aztec/bb.js": "npm:4.1.0-nightly.20260316" + "@aztec/blob-lib": "npm:4.1.0-nightly.20260316" + "@aztec/constants": "npm:4.1.0-nightly.20260316" + "@aztec/ethereum": "npm:4.1.0-nightly.20260316" + "@aztec/foundation": "npm:4.1.0-nightly.20260316" + "@aztec/l1-artifacts": "npm:4.1.0-nightly.20260316" + "@aztec/noir-noirc_abi": "npm:4.1.0-nightly.20260316" + "@aztec/validator-ha-signer": "npm:4.1.0-nightly.20260316" "@google-cloud/storage": "npm:^7.15.0" - axios: "npm:^1.12.0" + axios: "npm:^1.13.5" json-stringify-deterministic: "npm:1.0.12" lodash.chunk: "npm:^4.2.0" lodash.isequal: "npm:^4.5.0" @@ -1030,16 +1030,16 @@ __metadata: tslib: "npm:^2.4.0" viem: "npm:@aztec/viem@2.38.2" zod: "npm:^3.23.8" - checksum: 10c0/1f797a59d66d5c2157289f13407560b47cca1ae89320aa0e6865230859b701ee57c17d9e7bb872461c0cba45622177c6e2dcd27d848efecf8768eac6da2241ec + checksum: 10c0/af2c8ba785bb11fcf985b7ec834b43d134729021fdc145932b5b329c1693cac885513e356b8fc5ea4be0afe99c7ff8b3d66b6bfb5b4f7ee91469faf26ab7324d languageName: node linkType: hard -"@aztec/telemetry-client@npm:4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/telemetry-client@npm:4.0.0-devnet.2-patch.3" +"@aztec/telemetry-client@npm:4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/telemetry-client@npm:4.1.0-nightly.20260316" dependencies: - "@aztec/foundation": "npm:4.0.0-devnet.2-patch.3" - "@aztec/stdlib": "npm:4.0.0-devnet.2-patch.3" + "@aztec/foundation": "npm:4.1.0-nightly.20260316" + "@aztec/stdlib": "npm:4.1.0-nightly.20260316" "@opentelemetry/api": "npm:^1.9.0" "@opentelemetry/api-logs": "npm:^0.55.0" "@opentelemetry/core": "npm:^1.28.0" @@ -1056,70 +1056,70 @@ __metadata: "@opentelemetry/semantic-conventions": "npm:^1.28.0" prom-client: "npm:^15.1.3" viem: "npm:@aztec/viem@2.38.2" - checksum: 10c0/d2ed43020bedd180fc2a9a7fa566ca6d159f1252f0f4813011b15487a1565f5935e853ee61fae5b67fb537d1679b34cb7244053c4913e02023ddc0a16773920e + checksum: 10c0/af574ca983cd3b287b089d8405a47ccfd48b99af6fbe854df9559e4ec8363ff17b31822c394ffab7c3994596f291dc91c7b0cd1da6a28f34857def9a05bc3519 languageName: node linkType: hard -"@aztec/validator-ha-signer@npm:4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/validator-ha-signer@npm:4.0.0-devnet.2-patch.3" +"@aztec/validator-ha-signer@npm:4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/validator-ha-signer@npm:4.1.0-nightly.20260316" dependencies: - "@aztec/ethereum": "npm:4.0.0-devnet.2-patch.3" - "@aztec/foundation": "npm:4.0.0-devnet.2-patch.3" + "@aztec/ethereum": "npm:4.1.0-nightly.20260316" + "@aztec/foundation": "npm:4.1.0-nightly.20260316" node-pg-migrate: "npm:^8.0.4" pg: "npm:^8.11.3" tslib: "npm:^2.4.0" zod: "npm:^3.23.8" - checksum: 10c0/4286ef175e5c73088d8ada3942c9e2508f65c1860c48f4e3006326797d1dd23209d0f45f23169cd388a97cceffc6c4ef6c98d1b24f34f941a68d412b16fb46f6 + checksum: 10c0/e96761265f5f3e9a6c039227c9b2503fc77cddba8318ed344d7a9d7f24ddfbd1ccba0d63903cd17ac398812f004ee679bf595e430065fffe542c8b431d82a7f8 languageName: node linkType: hard -"@aztec/wallet-sdk@npm:4.0.0-devnet.2-patch.3, @aztec/wallet-sdk@npm:v4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/wallet-sdk@npm:4.0.0-devnet.2-patch.3" +"@aztec/wallet-sdk@npm:4.1.0-nightly.20260316, @aztec/wallet-sdk@npm:v4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/wallet-sdk@npm:4.1.0-nightly.20260316" dependencies: - "@aztec/aztec.js": "npm:4.0.0-devnet.2-patch.3" - "@aztec/constants": "npm:4.0.0-devnet.2-patch.3" - "@aztec/entrypoints": "npm:4.0.0-devnet.2-patch.3" - "@aztec/foundation": "npm:4.0.0-devnet.2-patch.3" - "@aztec/pxe": "npm:4.0.0-devnet.2-patch.3" - "@aztec/stdlib": "npm:4.0.0-devnet.2-patch.3" - checksum: 10c0/aaf0658724cfd600b4d42cfb95bf382ccc5d24dbe806754bf44ab825de8de455038c599cd67a00ca253b90de78e9b9e9644e08cab4b41e691509e6eb39d92700 + "@aztec/aztec.js": "npm:4.1.0-nightly.20260316" + "@aztec/constants": "npm:4.1.0-nightly.20260316" + "@aztec/entrypoints": "npm:4.1.0-nightly.20260316" + "@aztec/foundation": "npm:4.1.0-nightly.20260316" + "@aztec/pxe": "npm:4.1.0-nightly.20260316" + "@aztec/stdlib": "npm:4.1.0-nightly.20260316" + checksum: 10c0/b9a6260a787fef85c7c0b97475f7ef20a2fba3dd441151e2534b987a6eb169381b567f5ad3abb70ef0dffdf0822158055621b8f59bbc073fb6462437e8b9be69 languageName: node linkType: hard -"@aztec/wallets@npm:v4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/wallets@npm:4.0.0-devnet.2-patch.3" +"@aztec/wallets@npm:v4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/wallets@npm:4.1.0-nightly.20260316" dependencies: - "@aztec/accounts": "npm:4.0.0-devnet.2-patch.3" - "@aztec/aztec.js": "npm:4.0.0-devnet.2-patch.3" - "@aztec/entrypoints": "npm:4.0.0-devnet.2-patch.3" - "@aztec/foundation": "npm:4.0.0-devnet.2-patch.3" - "@aztec/kv-store": "npm:4.0.0-devnet.2-patch.3" - "@aztec/protocol-contracts": "npm:4.0.0-devnet.2-patch.3" - "@aztec/pxe": "npm:4.0.0-devnet.2-patch.3" - "@aztec/stdlib": "npm:4.0.0-devnet.2-patch.3" - "@aztec/wallet-sdk": "npm:4.0.0-devnet.2-patch.3" - checksum: 10c0/f6c38ff6dab46b98d201b1871045f3bbb26d1ffd80ee5f39d433ab3800c6bb3c9eea7bc36937772cd439fbbfbd3e354c593851ed19cf0523e09cb1589cdb3a26 + "@aztec/accounts": "npm:4.1.0-nightly.20260316" + "@aztec/aztec.js": "npm:4.1.0-nightly.20260316" + "@aztec/entrypoints": "npm:4.1.0-nightly.20260316" + "@aztec/foundation": "npm:4.1.0-nightly.20260316" + "@aztec/kv-store": "npm:4.1.0-nightly.20260316" + "@aztec/protocol-contracts": "npm:4.1.0-nightly.20260316" + "@aztec/pxe": "npm:4.1.0-nightly.20260316" + "@aztec/stdlib": "npm:4.1.0-nightly.20260316" + "@aztec/wallet-sdk": "npm:4.1.0-nightly.20260316" + checksum: 10c0/b5cd97209accc1dfc6bb5dfb3aea6ff1180f8db4ba3430e6ca9bb75b300e7a40b30f84ff10a996273e3dd854183aacb2179bc5322b158d3c952b53dd0df29ca9 languageName: node linkType: hard -"@aztec/world-state@npm:4.0.0-devnet.2-patch.3": - version: 4.0.0-devnet.2-patch.3 - resolution: "@aztec/world-state@npm:4.0.0-devnet.2-patch.3" +"@aztec/world-state@npm:4.1.0-nightly.20260316": + version: 4.1.0-nightly.20260316 + resolution: "@aztec/world-state@npm:4.1.0-nightly.20260316" dependencies: - "@aztec/constants": "npm:4.0.0-devnet.2-patch.3" - "@aztec/foundation": "npm:4.0.0-devnet.2-patch.3" - "@aztec/kv-store": "npm:4.0.0-devnet.2-patch.3" - "@aztec/merkle-tree": "npm:4.0.0-devnet.2-patch.3" - "@aztec/native": "npm:4.0.0-devnet.2-patch.3" - "@aztec/protocol-contracts": "npm:4.0.0-devnet.2-patch.3" - "@aztec/stdlib": "npm:4.0.0-devnet.2-patch.3" - "@aztec/telemetry-client": "npm:4.0.0-devnet.2-patch.3" + "@aztec/constants": "npm:4.1.0-nightly.20260316" + "@aztec/foundation": "npm:4.1.0-nightly.20260316" + "@aztec/kv-store": "npm:4.1.0-nightly.20260316" + "@aztec/merkle-tree": "npm:4.1.0-nightly.20260316" + "@aztec/native": "npm:4.1.0-nightly.20260316" + "@aztec/protocol-contracts": "npm:4.1.0-nightly.20260316" + "@aztec/stdlib": "npm:4.1.0-nightly.20260316" + "@aztec/telemetry-client": "npm:4.1.0-nightly.20260316" tslib: "npm:^2.4.0" zod: "npm:^3.23.8" - checksum: 10c0/db2dafb2be26b471917d8b1f1cba94ba1fd078eac4523142757a405d4d9a7778552ab1361cc89b348d4e71744f8fc091a6bb4b6733778a774b7dd4c235326595 + checksum: 10c0/6aaa71f38fdbc1f831bb83c62921e5df7a6184405dcf3b07645365c2ed8c54d046c24c4fca7060fe8384fca90f77947bbbd3fa3872dbe6dbf819308446e1ed49 languageName: node linkType: hard @@ -4183,7 +4183,7 @@ __metadata: languageName: node linkType: hard -"axios@npm:^1.12.0": +"axios@npm:^1.13.5": version: 1.13.6 resolution: "axios@npm:1.13.6" dependencies: @@ -6037,17 +6037,17 @@ __metadata: version: 0.0.0-use.local resolution: "gregoswap@workspace:." dependencies: - "@aztec/accounts": "npm:v4.0.0-devnet.2-patch.3" - "@aztec/aztec.js": "npm:v4.0.0-devnet.2-patch.3" - "@aztec/constants": "npm:v4.0.0-devnet.2-patch.3" - "@aztec/entrypoints": "npm:v4.0.0-devnet.2-patch.3" - "@aztec/foundation": "npm:v4.0.0-devnet.2-patch.3" - "@aztec/noir-contracts.js": "npm:v4.0.0-devnet.2-patch.3" - "@aztec/protocol-contracts": "npm:v4.0.0-devnet.2-patch.3" - "@aztec/pxe": "npm:v4.0.0-devnet.2-patch.3" - "@aztec/stdlib": "npm:v4.0.0-devnet.2-patch.3" - "@aztec/wallet-sdk": "npm:v4.0.0-devnet.2-patch.3" - "@aztec/wallets": "npm:v4.0.0-devnet.2-patch.3" + "@aztec/accounts": "npm:v4.1.0-nightly.20260316" + "@aztec/aztec.js": "npm:v4.1.0-nightly.20260316" + "@aztec/constants": "npm:v4.1.0-nightly.20260316" + "@aztec/entrypoints": "npm:v4.1.0-nightly.20260316" + "@aztec/foundation": "npm:v4.1.0-nightly.20260316" + "@aztec/noir-contracts.js": "npm:v4.1.0-nightly.20260316" + "@aztec/protocol-contracts": "npm:v4.1.0-nightly.20260316" + "@aztec/pxe": "npm:v4.1.0-nightly.20260316" + "@aztec/stdlib": "npm:v4.1.0-nightly.20260316" + "@aztec/wallet-sdk": "npm:v4.1.0-nightly.20260316" + "@aztec/wallets": "npm:v4.1.0-nightly.20260316" "@emotion/react": "npm:^11.14.0" "@emotion/styled": "npm:^11.14.0" "@eslint/js": "npm:^9.18.0" From 05b4d76126afbae46f2b7175d36fd7c03eacf71d Mon Sep 17 00:00:00 2001 From: thunkar Date: Tue, 24 Mar 2026 14:10:25 +0100 Subject: [PATCH 2/9] test --- contracts/proof_of_password/Nargo.toml | 6 +- package.json | 24 +- src/embedded_wallet.ts | 273 +-- src/services/contractService.ts | 12 +- src/services/walletService.ts | 98 +- src/wallet/iframe/iframe-discovery.ts | 165 -- src/wallet/iframe/iframe-message-types.ts | 22 - src/wallet/iframe/iframe-provider.ts | 336 ---- src/wallet/iframe/iframe-wallet.ts | 178 -- yarn.lock | 1932 +++++++++++---------- 10 files changed, 1151 insertions(+), 1895 deletions(-) delete mode 100644 src/wallet/iframe/iframe-discovery.ts delete mode 100644 src/wallet/iframe/iframe-message-types.ts delete mode 100644 src/wallet/iframe/iframe-provider.ts delete mode 100644 src/wallet/iframe/iframe-wallet.ts diff --git a/contracts/proof_of_password/Nargo.toml b/contracts/proof_of_password/Nargo.toml index 2d2c11a..c728393 100644 --- a/contracts/proof_of_password/Nargo.toml +++ b/contracts/proof_of_password/Nargo.toml @@ -4,7 +4,7 @@ type = "contract" authors = [""] [dependencies] -aztec = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v4.1.0-nightly.20260316", directory = "noir-projects/aztec-nr/aztec" } -token = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v4.1.0-nightly.20260316", directory = "noir-projects/noir-contracts/contracts/app/token_contract" } +aztec = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v4.2.0-nightly.20260323", directory = "noir-projects/aztec-nr/aztec" } +token = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v4.2.0-nightly.20260323", directory = "noir-projects/noir-contracts/contracts/app/token_contract" } poseidon = { tag = "v0.1.1", git = "https://github.com/noir-lang/poseidon" } -compressed_string = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v4.1.0-nightly.20260316", directory = "noir-projects/aztec-nr/compressed-string" } \ No newline at end of file +compressed_string = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v4.2.0-nightly.20260323", directory = "noir-projects/aztec-nr/compressed-string" } \ No newline at end of file diff --git a/package.json b/package.json index 1d0990e..9491974 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "serve": "vite", "build": "tsc -b && vite build", "lint": "eslint .", - "copy:dependencies": "cd contracts && nargo check && WORKDIR=$(pwd) && cd $HOME/nargo/github.com/AztecProtocol/aztec-packages/v4.1.0-nightly.20260316/noir-projects/noir-contracts && aztec compile --package token_contract && mkdir -p $WORKDIR/target && cp $HOME/nargo/github.com/AztecProtocol/aztec-packages/v4.1.0-nightly.20260316/noir-projects/noir-contracts/target/token_contract-Token.json $WORKDIR/target/token_contract-Token.json", + "copy:dependencies": "cd contracts && nargo check && WORKDIR=$(pwd) && cd $HOME/nargo/github.com/AztecProtocol/aztec-packages/v4.2.0-nightly.20260323/noir-projects/noir-contracts && aztec compile --package token_contract && mkdir -p $WORKDIR/target && cp $HOME/nargo/github.com/AztecProtocol/aztec-packages/v4.2.0-nightly.20260323/noir-projects/noir-contracts/target/token_contract-Token.json $WORKDIR/target/token_contract-Token.json", "compile:contracts": "cd contracts && aztec compile --package proof_of_password && aztec codegen ./target/proof_of_password-ProofOfPassword.json", "test": "cd contracts && aztec test", "preview": "vite preview", @@ -23,16 +23,16 @@ "local-aztec:status": "node scripts/toggle-local-aztec.js status" }, "dependencies": { - "@aztec/accounts": "v4.1.0-nightly.20260316", - "@aztec/aztec.js": "v4.1.0-nightly.20260316", - "@aztec/constants": "v4.1.0-nightly.20260316", - "@aztec/entrypoints": "v4.1.0-nightly.20260316", - "@aztec/foundation": "v4.1.0-nightly.20260316", - "@aztec/noir-contracts.js": "v4.1.0-nightly.20260316", - "@aztec/protocol-contracts": "v4.1.0-nightly.20260316", - "@aztec/pxe": "v4.1.0-nightly.20260316", - "@aztec/stdlib": "v4.1.0-nightly.20260316", - "@aztec/wallet-sdk": "v4.1.0-nightly.20260316", + "@aztec/accounts": "v4.2.0-nightly.20260323", + "@aztec/aztec.js": "v4.2.0-nightly.20260323", + "@aztec/constants": "v4.2.0-nightly.20260323", + "@aztec/entrypoints": "v4.2.0-nightly.20260323", + "@aztec/foundation": "v4.2.0-nightly.20260323", + "@aztec/noir-contracts.js": "v4.2.0-nightly.20260323", + "@aztec/protocol-contracts": "v4.2.0-nightly.20260323", + "@aztec/pxe": "v4.2.0-nightly.20260323", + "@aztec/stdlib": "v4.2.0-nightly.20260323", + "@aztec/wallet-sdk": "v4.2.0-nightly.20260323", "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.0", "@mui/icons-material": "^6.3.1", @@ -45,7 +45,7 @@ "zod": "^3.23.8" }, "devDependencies": { - "@aztec/wallets": "v4.1.0-nightly.20260316", + "@aztec/wallets": "v4.2.0-nightly.20260323", "@eslint/js": "^9.18.0", "@playwright/test": "1.49.0", "@types/buffer-json": "^2", diff --git a/src/embedded_wallet.ts b/src/embedded_wallet.ts index a03b2e1..2f6f345 100644 --- a/src/embedded_wallet.ts +++ b/src/embedded_wallet.ts @@ -2,8 +2,15 @@ import { AztecAddress } from '@aztec/stdlib/aztec-address'; import { collectOffchainEffects, type ExecutionPayload } from '@aztec/stdlib/tx'; import { AccountFeePaymentMethodOptions } from '@aztec/entrypoints/account'; import type { AztecNode } from '@aztec/aztec.js/node'; -import { type InteractionWaitOptions, NO_WAIT, type SendReturn, extractOffchainOutput } from '@aztec/aztec.js/contracts'; +import { + type InteractionWaitOptions, + NO_WAIT, + type SendReturn, + extractOffchainOutput, + getGasLimits, +} from '@aztec/aztec.js/contracts'; import { waitForTx } from '@aztec/aztec.js/node'; +import { NO_FROM, type NoFrom } from '@aztec/aztec.js/account'; import type { SendOptions } from '@aztec/aztec.js/wallet'; import { SponsoredFeePaymentMethod } from '@aztec/aztec.js/fee'; import { CallAuthorizationRequest } from '@aztec/aztec.js/authorization'; @@ -13,12 +20,10 @@ import type { FieldsOf } from '@aztec/foundation/types'; import { GasSettings } from '@aztec/stdlib/gas'; import { getSponsoredFPCData } from './services'; import { EmbeddedWallet as EmbeddedWalletBase, type EmbeddedWalletOptions } from '@aztec/wallets/embedded'; -import { AccountManager } from '@aztec/aztec.js/wallet'; +import { AccountManager, ContractInitializationStatus } from '@aztec/aztec.js/wallet'; import { Fr } from '@aztec/foundation/curves/bn254'; export class EmbeddedWallet extends EmbeddedWalletBase { - private skipAuthWitExtraction = false; - static override create( nodeOrUrl: string | AztecNode, options?: EmbeddedWalletOptions, @@ -46,7 +51,7 @@ export class EmbeddedWallet extends EmbeddedWalletBase { return false; } const metadata = await this.getContractMetadata(account.item); - return metadata.isContractInitialized; + return metadata.initializationStatus === ContractInitializationStatus.INITIALIZED; } async deployAccount() { @@ -59,17 +64,13 @@ export class EmbeddedWallet extends EmbeddedWalletBase { } const deployMethod = await accountManager.getDeployMethod(); - this.skipAuthWitExtraction = true; - try { - return await deployMethod.send({ - from: AztecAddress.ZERO, - fee: { - paymentMethod: new SponsoredFeePaymentMethod(sponsoredFPCInstance.address), - }, - }); - } finally { - this.skipAuthWitExtraction = false; - } + + return await deployMethod.send({ + from: AztecAddress.ZERO, + fee: { + paymentMethod: new SponsoredFeePaymentMethod(sponsoredFPCInstance.address), + }, + }); } /** @@ -80,7 +81,7 @@ export class EmbeddedWallet extends EmbeddedWalletBase { * @returns - Complete fee options that can be used to create a transaction execution request */ protected override async completeFeeOptions( - from: AztecAddress, + from: AztecAddress | NoFrom, feePayer?: AztecAddress, gasSettings?: Partial>, ): Promise { @@ -90,16 +91,18 @@ export class EmbeddedWallet extends EmbeddedWalletBase { let walletFeePaymentMethod; // The transaction does not include a fee payment method, so we // use the sponsoredFPC - if (!feePayer) { - accountFeePaymentMethodOptions = AccountFeePaymentMethodOptions.EXTERNAL; - const { instance } = await getSponsoredFPCData(); - walletFeePaymentMethod = new SponsoredFeePaymentMethod(instance.address); - } else { - // The transaction includes fee payment method, so we check if we are the fee payer for it - // (this can only happen if the embedded payment method is FeeJuiceWithClaim) - accountFeePaymentMethodOptions = from.equals(feePayer) - ? AccountFeePaymentMethodOptions.FEE_JUICE_WITH_CLAIM - : AccountFeePaymentMethodOptions.EXTERNAL; + if (from !== NO_FROM) { + if (!feePayer) { + accountFeePaymentMethodOptions = AccountFeePaymentMethodOptions.EXTERNAL; + const { instance } = await getSponsoredFPCData(); + walletFeePaymentMethod = new SponsoredFeePaymentMethod(instance.address); + } else { + // The transaction includes fee payment method, so we check if we are the fee payer for it + // (this can only happen if the embedded payment method is FeeJuiceWithClaim) + accountFeePaymentMethodOptions = from.equals(feePayer) + ? AccountFeePaymentMethodOptions.FEE_JUICE_WITH_CLAIM + : AccountFeePaymentMethodOptions.EXTERNAL; + } } const fullGasSettings: GasSettings = GasSettings.default({ ...gasSettings, maxFeesPerGas }); this.log.debug(`Using L2 gas settings`, fullGasSettings); @@ -139,92 +142,97 @@ export class EmbeddedWallet extends EmbeddedWalletBase { }; try { - const feeOptions = await this.completeFeeOptions(opts.from, executionPayload.feePayer, opts.fee?.gasSettings); - if (!this.skipAuthWitExtraction) { - emit('simulating'); - const simulationStart = Date.now(); - - const simulationResult = await this.simulateViaEntrypoint( - executionPayload, - opts.from, - feeOptions, - this.scopesFor(opts.from), - true, - true, - ); - - const offchainEffects = collectOffchainEffects(simulationResult.privateExecutionResult); - const authWitnesses = await Promise.all( - offchainEffects.map(async effect => { - try { - const authRequest = await CallAuthorizationRequest.fromFields(effect.data); - return this.createAuthWit(opts.from, { - consumer: effect.contractAddress, - innerHash: authRequest.innerHash, - }); - } catch { - return undefined; // Not a CallAuthorizationRequest, skip - } - }), - ); - for (const wit of authWitnesses) { - if (wit) executionPayload.authWitnesses.push(wit); - } - - const simulationDuration = Date.now() - simulationStart; - - // Build breakdown and details from simulation stats - const simStats = simulationResult.stats; - const breakdown: Array<{ label: string; duration: number }> = []; - const details: string[] = []; + const feeOptions = await this.completeFeeOptionsForEstimation( + opts.from, + executionPayload.feePayer, + opts.fee?.gasSettings, + ); - if (simStats?.timings) { - const t = simStats.timings; - if (t.sync > 0) breakdown.push({ label: 'Sync', duration: t.sync }); - if (t.perFunction.length > 0) { - const witgenTotal = t.perFunction.reduce((sum, fn) => sum + fn.time, 0); - breakdown.push({ label: 'Private execution', duration: witgenTotal }); - for (const fn of t.perFunction) { - breakdown.push({ label: ` ${fn.functionName.split(':').pop() || fn.functionName}`, duration: fn.time }); - } + emit('simulating'); + const simulationStart = Date.now(); + const simulationResult = await this.simulateViaEntrypoint(executionPayload, { + from: opts.from, + feeOptions, + scopes: this.scopesFrom(opts.from), + skipFeeEnforcement: true, + skipTxValidation: true, + }); + const offchainEffects = collectOffchainEffects(simulationResult.privateExecutionResult); + const authWitnesses = await Promise.all( + offchainEffects.map(async effect => { + try { + const authRequest = await CallAuthorizationRequest.fromFields(effect.data); + return this.createAuthWit(authRequest.onBehalfOf, { + consumer: effect.contractAddress, + innerHash: authRequest.innerHash, + }); + } catch { + return undefined; } - if (t.publicSimulation) breakdown.push({ label: 'Public simulation', duration: t.publicSimulation }); - if (t.unaccounted > 0) breakdown.push({ label: 'Other', duration: t.unaccounted }); - } - - if (simStats?.nodeRPCCalls?.roundTrips) { - const rt = simStats.nodeRPCCalls.roundTrips; - const fmt = (ms: number) => (ms < 1000 ? `${Math.round(ms)}ms` : `${(ms / 1000).toFixed(1)}s`); - details.push(`${rt.roundTrips} RPC round-trips (${fmt(rt.totalBlockingTime)} blocking)`); - const MAX_METHODS_SHOWN = 3; - for (let i = 0; i < rt.roundTripDurations.length; i++) { - const allMethods = rt.roundTripMethods[i] ?? []; - const count = allMethods.length; - const shown = allMethods.slice(0, MAX_METHODS_SHOWN).join(', '); - const suffix = count > MAX_METHODS_SHOWN ? `, ... +${count - MAX_METHODS_SHOWN} more` : ''; - details.push(` #${i + 1}: ${fmt(rt.roundTripDurations[i])} — ${shown}${suffix} (${count} calls)`); + }), + ); + for (const wit of authWitnesses) { + if (wit) executionPayload.authWitnesses.push(wit); + } + const simulationDuration = Date.now() - simulationStart; + const simStats = simulationResult.stats; + const breakdown: Array<{ label: string; duration: number }> = []; + const details: string[] = []; + if (simStats?.timings) { + const t = simStats.timings; + if (t.sync > 0) breakdown.push({ label: 'Sync', duration: t.sync }); + if (t.perFunction.length > 0) { + const witgenTotal = t.perFunction.reduce((sum, fn) => sum + fn.time, 0); + breakdown.push({ + label: 'Private execution', + duration: witgenTotal, + }); + for (const fn of t.perFunction) { + breakdown.push({ + label: ` ${fn.functionName.split(':').pop() || fn.functionName}`, + duration: fn.time, + }); } } - - phases.push({ - name: 'Simulation', - duration: simulationDuration, - color: '#ce93d8', - ...(breakdown.length > 0 && { breakdown }), - ...(details.length > 0 && { details }), - }); + if (t.publicSimulation) + breakdown.push({ + label: 'Public simulation', + duration: t.publicSimulation, + }); + if (t.unaccounted > 0) breakdown.push({ label: 'Other', duration: t.unaccounted }); } + if (simStats?.nodeRPCCalls?.roundTrips) { + const rt = simStats.nodeRPCCalls.roundTrips; + const fmt = (ms: number) => (ms < 1000 ? `${Math.round(ms)}ms` : `${(ms / 1000).toFixed(1)}s`); + details.push(`${rt.roundTrips} RPC round-trips (${fmt(rt.totalBlockingTime)} blocking)`); + } + phases.push({ + name: 'Simulation', + duration: simulationDuration, + color: '#ce93d8', + ...(breakdown.length > 0 && { breakdown }), + ...(details.length > 0 && { details }), + }); - // --- PROVING --- emit('proving'); const provingStart = Date.now(); - - const txRequest = await this.createTxExecutionRequestFromPayloadAndFee(executionPayload, opts.from, feeOptions); - const provenTx = await this.pxe.proveTx(txRequest, this.scopesFor(opts.from)); - + const estimated = getGasLimits(simulationResult, this.estimatedGasPadding); + this.log.verbose( + `Estimated gas limits for tx: DA=${estimated.gasLimits.daGas} L2=${estimated.gasLimits.l2Gas} teardownDA=${estimated.teardownGasLimits.daGas} teardownL2=${estimated.teardownGasLimits.l2Gas}`, + ); + const gasSettings = GasSettings.from({ + ...opts.fee?.gasSettings, + maxFeesPerGas: feeOptions.gasSettings.maxFeesPerGas, + maxPriorityFeesPerGas: feeOptions.gasSettings.maxPriorityFeesPerGas, + gasLimits: opts.fee?.gasSettings?.gasLimits ?? estimated.gasLimits, + teardownGasLimits: opts.fee?.gasSettings?.teardownGasLimits ?? estimated.teardownGasLimits, + }); + const txRequest = await this.createTxExecutionRequestFromPayloadAndFee(executionPayload, opts.from, { + ...feeOptions, + gasSettings, + }); + const provenTx = await this.pxe.proveTx(txRequest, this.scopesFrom(opts.from)); const provingDuration = Date.now() - provingStart; - - // Extract detailed stats from proving result if available const stats = provenTx.stats; if (stats?.timings) { const t = stats.timings; @@ -241,47 +249,66 @@ export class EmbeddedWallet extends EmbeddedWalletBase { })), }); } - if (t.proving && t.proving > 0) phases.push({ name: 'Proving', duration: t.proving, color: '#f48fb1' }); - if (t.unaccounted > 0) phases.push({ name: 'Other', duration: t.unaccounted, color: '#bdbdbd' }); + if (t.proving && t.proving > 0) + phases.push({ + name: 'Proving', + duration: t.proving, + color: '#f48fb1', + }); + if (t.unaccounted > 0) + phases.push({ + name: 'Other', + duration: t.unaccounted, + color: '#bdbdbd', + }); } else { - phases.push({ name: 'Proving', duration: provingDuration, color: '#f48fb1' }); + phases.push({ + name: 'Proving', + duration: provingDuration, + color: '#f48fb1', + }); } - // --- SENDING --- - emit('sending'); - const sendingStart = Date.now(); + const offchainOutput = extractOffchainOutput( + provenTx.getOffchainEffects(), + provenTx.publicInputs.constants.anchorBlockHeader.globalVariables.timestamp, + ); - const offchainOutput = extractOffchainOutput(provenTx.getOffchainEffects()); const tx = await provenTx.toTx(); const txHash = tx.getTxHash(); + emit('sending'); + const sendingStart = Date.now(); if (await this.aztecNode.getTxEffect(txHash)) { throw new Error(`A settled tx with equal hash ${txHash.toString()} exists.`); } await this.aztecNode.sendTx(tx); + phases.push({ + name: 'Sending', + duration: Date.now() - sendingStart, + color: '#2196f3', + }); - const sendingDuration = Date.now() - sendingStart; - phases.push({ name: 'Sending', duration: sendingDuration, color: '#2196f3' }); - - // NO_WAIT: return txHash immediately if (opts.wait === NO_WAIT) { emit('complete'); - return { txHash, ...offchainOutput } as SendReturn; + return { txHash, ...offchainOutput } as unknown as SendReturn; } - // --- MINING --- emit('mining'); const miningStart = Date.now(); - const waitOpts = typeof opts.wait === 'object' ? opts.wait : undefined; const receipt = await waitForTx(this.aztecNode, txHash, waitOpts); - - const miningDuration = Date.now() - miningStart; - phases.push({ name: 'Mining', duration: miningDuration, color: '#4caf50' }); + phases.push({ + name: 'Mining', + duration: Date.now() - miningStart, + color: '#4caf50', + }); emit('complete'); - return { receipt, ...offchainOutput } as SendReturn; + return { receipt, ...offchainOutput } as unknown as SendReturn; } catch (err) { - emit('error', { error: err instanceof Error ? err.message : 'Transaction failed' }); + emit('error', { + error: err instanceof Error ? err.message : 'Transaction failed', + }); throw err; } } diff --git a/src/services/contractService.ts b/src/services/contractService.ts index af85fd1..23ddcfb 100644 --- a/src/services/contractService.ts +++ b/src/services/contractService.ts @@ -190,7 +190,9 @@ export async function getExchangeRate( gregoCoinPremium.methods.balance_of_public(amm.address), ]); - const [token0Reserve, token1Reserve] = await batchCall.simulate({ from: fromAddress }); + const { + result: [token0Reserve, token1Reserve], + } = await batchCall.simulate({ from: fromAddress }); return parseFloat(new BigDecimal(token1Reserve).divide(new BigDecimal(token0Reserve)).toString()); } @@ -209,7 +211,9 @@ export async function fetchBalances( gregoCoinPremium.methods.balance_of_private(address), ]); - const [gcBalance, gcpBalance] = await batchCall.simulate({ from: address }); + const { + result: [gcBalance, gcpBalance], + } = await batchCall.simulate({ from: address }); return [gcBalance, gcpBalance]; } @@ -234,7 +238,9 @@ export async function simulateOnboardingQueries( gregoCoinPremium.methods.balance_of_private(address), ]); - const [token0Reserve, token1Reserve, gcBalance, gcpBalance] = await batchCall.simulate({ from: address }); + const { + result: [token0Reserve, token1Reserve, gcBalance, gcpBalance], + } = await batchCall.simulate({ from: address }); const exchangeRate = parseFloat(new BigDecimal(token1Reserve).divide(new BigDecimal(token0Reserve)).toString()); return { diff --git a/src/services/walletService.ts b/src/services/walletService.ts index 825189f..78c41ce 100644 --- a/src/services/walletService.ts +++ b/src/services/walletService.ts @@ -13,11 +13,9 @@ import { type PendingConnection, type DiscoverySession, } from '@aztec/wallet-sdk/manager'; -import { promiseWithResolvers } from '@aztec/foundation/promise'; import type { AztecAddress } from '@aztec/aztec.js/addresses'; import { EmbeddedWallet } from '../embedded_wallet'; import type { NetworkConfig } from '../config/networks'; -import { discoverWebWallets } from '../wallet/iframe/iframe-discovery.ts'; /** * Web wallet URLs to probe during discovery. @@ -62,102 +60,14 @@ export function getChainInfo(network: NetworkConfig): ChainInfo { * Returns a DiscoverySession that yields providers as they are discovered. */ export function discoverWallets(chainInfo: ChainInfo, timeout?: number): DiscoverySession { - // Extension wallets - const extensionSession = WalletManager.configure({ extensions: { enabled: true } }).getAvailableWallets({ + return WalletManager.configure({ + extensions: { enabled: true }, + webWallets: { urls: WEB_WALLET_URLS }, + }).getAvailableWallets({ chainInfo, appId: APP_ID, timeout, }); - - // Web wallets (probed via hidden iframe) - const webSession = discoverWebWallets(WEB_WALLET_URLS, chainInfo); - - // Merge both sessions into one DiscoverySession - return mergeDiscoverySessions([extensionSession, webSession]); -} - -/** - * Merges multiple DiscoverySessions into one. - * Providers from all sessions are emitted as they arrive. - * The merged session completes when all sub-sessions complete. - */ -function mergeDiscoverySessions(sessions: DiscoverySession[]): DiscoverySession { - const { promise: donePromise, resolve: resolveDone } = promiseWithResolvers(); - - let cancelled = false; - const pending: WalletProvider[] = []; - let pendingResolve: ((result: IteratorResult) => void) | null = null; - let remaining = sessions.length; - - function emit(provider: WalletProvider) { - if (pendingResolve) { - const resolve = pendingResolve; - pendingResolve = null; - resolve({ value: provider, done: false }); - } else { - pending.push(provider); - } - } - - function markOneDone() { - remaining--; - if (remaining === 0) { - resolveDone(); - if (pendingResolve) { - const resolve = pendingResolve; - pendingResolve = null; - resolve({ value: undefined as any, done: true }); - } - } - } - - // Drain each session in background - for (const session of sessions) { - (async () => { - try { - for await (const provider of session.wallets) { - if (cancelled) break; - emit(provider); - } - } catch { - // ignore - } finally { - markOneDone(); - } - })(); - } - - const wallets: AsyncIterable = { - [Symbol.asyncIterator]() { - return { - async next(): Promise> { - if (remaining === 0 && pending.length === 0) { - return { value: undefined as any, done: true }; - } - if (pending.length > 0) { - return { value: pending.shift()!, done: false }; - } - return new Promise(resolve => { - pendingResolve = resolve; - }); - }, - async return() { - resolveDone(); - return { value: undefined as any, done: true }; - }, - }; - }, - }; - - return { - wallets, - done: donePromise, - cancel: () => { - cancelled = true; - sessions.forEach(s => s.cancel()); - resolveDone(); - }, - }; } /** diff --git a/src/wallet/iframe/iframe-discovery.ts b/src/wallet/iframe/iframe-discovery.ts deleted file mode 100644 index 1713876..0000000 --- a/src/wallet/iframe/iframe-discovery.ts +++ /dev/null @@ -1,165 +0,0 @@ -/** - * Web wallet discovery — creates IframeWalletProvider instances from a list of URLs. - * - * For each configured URL we probe the wallet by loading a tiny invisible iframe, - * waiting for WALLET_READY, then sending a DISCOVERY. On a successful - * DISCOVERY_RESPONSE we emit an IframeWalletProvider to the caller. - * - * This is intentionally lightweight (no key exchange yet) — key exchange happens - * later when the user selects the wallet and calls `provider.establishSecureChannel()`. - */ - -import type { ChainInfo } from '@aztec/aztec.js/account'; -import type { DiscoverySession, WalletProvider } from '@aztec/wallet-sdk/manager'; -import { promiseWithResolvers } from '@aztec/foundation/promise'; -import { IframeMessageType } from './iframe-message-types.ts'; -import { IframeWalletProvider } from './iframe-provider.ts'; - -const PROBE_TIMEOUT_MS = 10_000; - -/** - * Probes a list of web wallet URLs and returns a DiscoverySession compatible - * with WalletManager's getAvailableWallets() interface. - * - * Discovered IframeWalletProvider instances are yielded asynchronously as each - * wallet responds to the probe. - */ -export function discoverWebWallets( - walletUrls: string[], - chainInfo: ChainInfo, -): DiscoverySession { - const { promise: donePromise, resolve: resolveDone } = promiseWithResolvers(); - - let cancelled = false; - const pendingProviders: WalletProvider[] = []; - let pendingResolve: ((result: IteratorResult) => void) | null = null; - let completed = false; - - function emit(provider: WalletProvider) { - if (pendingResolve) { - const resolve = pendingResolve; - pendingResolve = null; - resolve({ value: provider, done: false }); - } else { - pendingProviders.push(provider); - } - } - - function markComplete() { - completed = true; - resolveDone(); - if (pendingResolve) { - const resolve = pendingResolve; - pendingResolve = null; - resolve({ value: undefined as any, done: true }); - } - } - - // Probe all URLs in parallel - const probes = walletUrls.map((url) => probeWallet(url, chainInfo, PROBE_TIMEOUT_MS).then( - (provider) => { if (!cancelled && provider) emit(provider); }, - () => {}, // ignore probe errors - )); - - Promise.all(probes).then(() => { - if (!cancelled) markComplete(); - }); - - const wallets: AsyncIterable = { - [Symbol.asyncIterator]() { - return { - async next(): Promise> { - if (completed && pendingProviders.length === 0) { - return { value: undefined as any, done: true }; - } - if (pendingProviders.length > 0) { - return { value: pendingProviders.shift()!, done: false }; - } - return new Promise((resolve) => { - pendingResolve = resolve; - }); - }, - async return() { - markComplete(); - return { value: undefined as any, done: true }; - }, - }; - }, - }; - - return { - wallets, - done: donePromise, - cancel: () => { - cancelled = true; - markComplete(); - }, - }; -} - -/** - * Probes a single web wallet URL. - * Creates a temporary hidden iframe, waits for WALLET_READY, sends DISCOVERY_REQUEST. - * Returns an IframeWalletProvider on success, null on timeout/failure. - */ -async function probeWallet( - walletUrl: string, - chainInfo: ChainInfo, - timeoutMs: number, -): Promise { - const walletOrigin = new URL(walletUrl).origin; - const iframe = document.createElement('iframe'); - iframe.src = walletUrl; - iframe.style.display = 'none'; - iframe.style.width = '0'; - iframe.style.height = '0'; - iframe.style.border = 'none'; - iframe.style.position = 'absolute'; - iframe.style.top = '-9999px'; - iframe.allow = 'storage-access; cross-origin-isolated'; - document.body.appendChild(iframe); - - return new Promise((resolve) => { - let timer: ReturnType; - - const cleanup = () => { - if (iframe.parentNode) iframe.parentNode.removeChild(iframe); - window.removeEventListener('message', handler); - clearTimeout(timer); - }; - - timer = setTimeout(() => { - cleanup(); - resolve(null); - }, timeoutMs); - - let step: 'waiting-ready' | 'waiting-discovery' = 'waiting-ready'; - const requestId = globalThis.crypto.randomUUID(); - - function handler(event: MessageEvent) { - if (event.origin !== walletOrigin) return; - const msg = event.data; - if (!msg || typeof msg !== 'object') return; - - if (step === 'waiting-ready' && msg.type === IframeMessageType.WALLET_READY) { - step = 'waiting-discovery'; - iframe.contentWindow?.postMessage( - { type: IframeMessageType.DISCOVERY, requestId, appId: 'gregoswap-discovery' }, - walletOrigin, - ); - } else if ( - step === 'waiting-discovery' && - msg.type === IframeMessageType.DISCOVERY_RESPONSE && - msg.requestId === requestId - ) { - const info = msg.walletInfo as { id: string; name: string; version: string; icon?: string }; - cleanup(); - resolve( - new IframeWalletProvider(info.id, info.name, info.icon, walletUrl, chainInfo), - ); - } - } - - window.addEventListener('message', handler); - }); -} diff --git a/src/wallet/iframe/iframe-message-types.ts b/src/wallet/iframe/iframe-message-types.ts deleted file mode 100644 index 646a6cd..0000000 --- a/src/wallet/iframe/iframe-message-types.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Extended message types for iframe wallet communication. - * - * Re-exports WalletMessageType from the SDK and adds iframe-specific types - * needed for postMessage transport (where MessagePort is unavailable). - * - * TODO: Upstream these to @aztec/wallet-sdk/types when iframe wallet support - * is fully integrated into the SDK. - */ -import { WalletMessageType } from '@aztec/wallet-sdk/types'; - -export const IframeMessageType = { - ...WalletMessageType, - /** Wallet iframe ready signal (iframe announces it has loaded) */ - WALLET_READY: 'aztec-wallet-ready', - /** Encrypted wallet message wrapper (for postMessage transport) */ - SECURE_MESSAGE: 'aztec-wallet-secure-message', - /** Encrypted wallet response wrapper (for postMessage transport) */ - SECURE_RESPONSE: 'aztec-wallet-secure-response', - /** Session disconnected notification */ - SESSION_DISCONNECTED: 'aztec-wallet-session-disconnected', -} as const; diff --git a/src/wallet/iframe/iframe-provider.ts b/src/wallet/iframe/iframe-provider.ts deleted file mode 100644 index 477f971..0000000 --- a/src/wallet/iframe/iframe-provider.ts +++ /dev/null @@ -1,336 +0,0 @@ -/** - * IframeWalletProvider — implements WalletProvider for web wallets loaded in iframes. - * - * Flow (mirrors ExtensionProvider from @aztec/wallet-sdk): - * 1. Creates an