Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion bootstrap.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ source $(git rev-parse --show-toplevel)/ci3/source_bootstrap
export DENOISE=${DENOISE:-1}

# Number of TXE servers to run when testing.
export NUM_TXES=8
export NUM_TXES=1

export MAKEFLAGS="-j${MAKE_JOBS:-$(get_num_cpus)}"

Expand Down
2 changes: 1 addition & 1 deletion noir-projects/noir-contracts/bootstrap.sh
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,7 @@ function test {
# Starting txe servers with incrementing port numbers.
# Base port is below the Linux ephemeral range (32768-60999) to avoid conflicts.
local txe_base_port=14730
export NUM_TXES=8
export NUM_TXES=1
trap 'kill $(jobs -p) &>/dev/null || true' EXIT
for i in $(seq 0 $((NUM_TXES-1))); do
check_port $((txe_base_port + i)) || echo "WARNING: port $((txe_base_port + i)) is in use, TXE $i may fail to start"
Expand Down
2 changes: 1 addition & 1 deletion yarn-project/aztec/scripts/aztec.sh
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ case $cmd in
trap 'kill $server_pid &>/dev/null || true' EXIT
while ! nc -z 127.0.0.1 8081 &>/dev/null; do sleep 0.2; done
export NARGO_FOREIGN_CALL_TIMEOUT=300000
nargo test --silence-warnings --oracle-resolver http://127.0.0.1:8081 "$@"
nargo test --silence-warnings --oracle-resolver http://127.0.0.1:8081 --test-threads 16 "$@"
;;
start)
if [ "${1:-}" == "--local-network" ]; then
Expand Down
6 changes: 3 additions & 3 deletions yarn-project/protocol-contracts/src/auth-registry/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ let protocolContract: ProtocolContract;
export const AuthRegistryArtifact: ContractArtifact = loadContractArtifact(AuthRegistryJson as NoirCompiledContract);

/** Returns the canonical deployment of the auth registry. */
export async function getCanonicalAuthRegistry(): Promise<ProtocolContract> {
export function getCanonicalAuthRegistry(): Promise<ProtocolContract> {
if (!protocolContract) {
protocolContract = await makeProtocolContract('AuthRegistry', AuthRegistryArtifact);
protocolContract = makeProtocolContract('AuthRegistry', AuthRegistryArtifact);
}
return protocolContract;
return Promise.resolve(protocolContract);
}
2 changes: 1 addition & 1 deletion yarn-project/protocol-contracts/src/auth-registry/lazy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export async function getAuthRegistryArtifact(): Promise<ContractArtifact> {
export async function getCanonicalAuthRegistry(): Promise<ProtocolContract> {
if (!protocolContract) {
const authRegistryArtifact = await getAuthRegistryArtifact();
protocolContract = await makeProtocolContract('AuthRegistry', authRegistryArtifact);
protocolContract = makeProtocolContract('AuthRegistry', authRegistryArtifact);
}
return protocolContract;
}
6 changes: 3 additions & 3 deletions yarn-project/protocol-contracts/src/class-registry/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ export const ContractClassRegistryArtifact = loadContractArtifact(ContractClassR
let protocolContract: ProtocolContract;

/** Returns the canonical deployment of the contract. */
export async function getCanonicalClassRegistry(): Promise<ProtocolContract> {
export function getCanonicalClassRegistry(): Promise<ProtocolContract> {
if (!protocolContract) {
const artifact = ContractClassRegistryArtifact;
protocolContract = await makeProtocolContract('ContractClassRegistry', artifact);
protocolContract = makeProtocolContract('ContractClassRegistry', artifact);
}
return protocolContract;
return Promise.resolve(protocolContract);
}
2 changes: 1 addition & 1 deletion yarn-project/protocol-contracts/src/class-registry/lazy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ export async function getContractClassRegistryArtifact(): Promise<ContractArtifa
export async function getCanonicalClassRegistry(): Promise<ProtocolContract> {
if (!protocolContract) {
const contractClassRegistryArtifact = await getContractClassRegistryArtifact();
protocolContract = await makeProtocolContract('ContractClassRegistry', contractClassRegistryArtifact);
protocolContract = makeProtocolContract('ContractClassRegistry', contractClassRegistryArtifact);
}
return protocolContract;
}
6 changes: 3 additions & 3 deletions yarn-project/protocol-contracts/src/fee-juice/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ export const FeeJuiceArtifact = loadContractArtifact(FeeJuiceJson as NoirCompile
let protocolContract: ProtocolContract;

/** Returns the canonical deployment of the contract. */
export async function getCanonicalFeeJuice(): Promise<ProtocolContract> {
export function getCanonicalFeeJuice(): Promise<ProtocolContract> {
if (!protocolContract) {
protocolContract = await makeProtocolContract('FeeJuice', FeeJuiceArtifact);
protocolContract = makeProtocolContract('FeeJuice', FeeJuiceArtifact);
}
return protocolContract;
return Promise.resolve(protocolContract);
}

/**
Expand Down
2 changes: 1 addition & 1 deletion yarn-project/protocol-contracts/src/fee-juice/lazy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export async function getFeeJuiceArtifact(): Promise<ContractArtifact> {
export async function getCanonicalFeeJuice(): Promise<ProtocolContract> {
if (!protocolContract) {
const feeJuiceArtifact = await getFeeJuiceArtifact();
protocolContract = await makeProtocolContract('FeeJuice', feeJuiceArtifact);
protocolContract = makeProtocolContract('FeeJuice', feeJuiceArtifact);
}
return protocolContract;
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ export const ContractInstanceRegistryArtifact = loadContractArtifact(
let protocolContract: ProtocolContract;

/** Returns the canonical deployment of the contract. */
export async function getCanonicalInstanceRegistry(): Promise<ProtocolContract> {
export function getCanonicalInstanceRegistry(): Promise<ProtocolContract> {
if (!protocolContract) {
protocolContract = await makeProtocolContract('ContractInstanceRegistry', ContractInstanceRegistryArtifact);
protocolContract = makeProtocolContract('ContractInstanceRegistry', ContractInstanceRegistryArtifact);
}
return protocolContract;
return Promise.resolve(protocolContract);
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ export async function getContractInstanceRegistryArtifact(): Promise<ContractArt
export async function getCanonicalInstanceRegistry(): Promise<ProtocolContract> {
if (!protocolContract) {
const contractInstanceRegistryArtifact = await getContractInstanceRegistryArtifact();
protocolContract = await makeProtocolContract('ContractInstanceRegistry', contractInstanceRegistryArtifact);
protocolContract = makeProtocolContract('ContractInstanceRegistry', contractInstanceRegistryArtifact);
}
return protocolContract;
}
52 changes: 37 additions & 15 deletions yarn-project/protocol-contracts/src/make_protocol_contract.ts
Original file line number Diff line number Diff line change
@@ -1,26 +1,48 @@
import type { ContractArtifact } from '@aztec/stdlib/abi';
import { getContractClassFromArtifact, getContractInstanceFromInstantiationParams } from '@aztec/stdlib/contract';
import { PublicKeys } from '@aztec/stdlib/keys';

import type { ProtocolContract } from './protocol_contract.js';
import { ProtocolContractAddress, type ProtocolContractName, ProtocolContractSalt } from './protocol_contract_data.js';
import {
ProtocolContractAddress,
ProtocolContractClassId,
ProtocolContractClassIdPreimage,
ProtocolContractInitializationHash,
type ProtocolContractName,
ProtocolContractPrivateFunctions,
ProtocolContractSalt,
} from './protocol_contract_data.js';

/**
* Returns the canonical deployment given its name and artifact.
* To be used internally within the protocol-contracts package.
* Reconstructs a ProtocolContract from precomputed data without performing any hash computations.
* Internal to the protocol-contracts package — not part of the public API.
*/
export async function makeProtocolContract(
name: ProtocolContractName,
artifact: ContractArtifact,
): Promise<ProtocolContract> {
export function makeProtocolContract(name: ProtocolContractName, artifact: ContractArtifact): ProtocolContract {
const address = ProtocolContractAddress[name];
const salt = ProtocolContractSalt[name];
// TODO(@spalladino): This computes the contract class from the artifact twice.
const contractClass = await getContractClassFromArtifact(artifact);
const instance = await getContractInstanceFromInstantiationParams(artifact, { salt, deployer: address });
return {
instance: { ...instance, address },
contractClass,
artifact,
const classId = ProtocolContractClassId[name];
const { artifactHash, privateFunctionsRoot, publicBytecodeCommitment } = ProtocolContractClassIdPreimage[name];
const initializationHash = ProtocolContractInitializationHash[name];

const contractClass = {
id: classId,
version: 1 as const,
artifactHash,
privateFunctionsRoot,
publicBytecodeCommitment,
packedBytecode: artifact.functions.find(f => f.name === 'public_dispatch')?.bytecode ?? Buffer.alloc(0),
privateFunctions: ProtocolContractPrivateFunctions[name],
};

const instance = {
version: 1 as const,
currentContractClassId: classId,
originalContractClassId: classId,
initializationHash,
publicKeys: PublicKeys.default(),
salt,
deployer: address,
address,
};

return { instance, contractClass, artifact, address };
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ export const MultiCallEntrypointArtifact = loadContractArtifact(MultiCallEntrypo
let protocolContract: ProtocolContract;

/** Returns the canonical deployment of the contract. */
export async function getCanonicalMultiCallEntrypoint(): Promise<ProtocolContract> {
export function getCanonicalMultiCallEntrypoint(): Promise<ProtocolContract> {
if (!protocolContract) {
protocolContract = await makeProtocolContract('MultiCallEntrypoint', MultiCallEntrypointArtifact);
protocolContract = makeProtocolContract('MultiCallEntrypoint', MultiCallEntrypointArtifact);
}
return protocolContract;
return Promise.resolve(protocolContract);
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export async function getMultiCallEntrypointArtifact(): Promise<ContractArtifact
export async function getCanonicalMultiCallEntrypoint(): Promise<ProtocolContract> {
if (!protocolContract) {
const multiCallEntrypointArtifact = await getMultiCallEntrypointArtifact();
protocolContract = await makeProtocolContract('MultiCallEntrypoint', multiCallEntrypointArtifact);
protocolContract = makeProtocolContract('MultiCallEntrypoint', multiCallEntrypointArtifact);
}
return protocolContract;
}
2 changes: 1 addition & 1 deletion yarn-project/protocol-contracts/src/provider/bundle.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,6 @@ export const ProtocolContractArtifact: Record<ProtocolContractName, ContractArti

export class BundledProtocolContractsProvider implements ProtocolContractsProvider {
getProtocolContractArtifact(name: ProtocolContractName): Promise<ProtocolContract> {
return makeProtocolContract(name, ProtocolContractArtifact[name]);
return Promise.resolve(makeProtocolContract(name, ProtocolContractArtifact[name]));
}
}
6 changes: 3 additions & 3 deletions yarn-project/protocol-contracts/src/public-checks/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ export const PublicChecksArtifact = loadContractArtifact(PublicChecksJson as Noi
let protocolContract: ProtocolContract;

/** Returns the canonical deployment of the contract. */
export async function getCanonicalPublicChecks(): Promise<ProtocolContract> {
export function getCanonicalPublicChecks(): Promise<ProtocolContract> {
if (!protocolContract) {
protocolContract = await makeProtocolContract('PublicChecks', PublicChecksArtifact);
protocolContract = makeProtocolContract('PublicChecks', PublicChecksArtifact);
}
return protocolContract;
return Promise.resolve(protocolContract);
}
2 changes: 1 addition & 1 deletion yarn-project/protocol-contracts/src/public-checks/lazy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export async function getPublicChecksArtifact(): Promise<ContractArtifact> {
export async function getCanonicalPublicChecks(): Promise<ProtocolContract> {
if (!protocolContract) {
const publicChecksArtifact = await getPublicChecksArtifact();
protocolContract = await makeProtocolContract('PublicChecks', publicChecksArtifact);
protocolContract = makeProtocolContract('PublicChecks', publicChecksArtifact);
}
return protocolContract;
}
Loading
Loading