Skip to content

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
benesjan committed Sep 18, 2023
1 parent 8f5eb28 commit 12ec719
Show file tree
Hide file tree
Showing 16 changed files with 68 additions and 66 deletions.
4 changes: 2 additions & 2 deletions yarn-project/aztec-node/src/aztec-node/http-node.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ describe('HttpNode', () => {
const response = { version: 5 };
setFetchMock(response);

const result = await httpNode.getVersion();
const result = await httpNode.getL2ChainId();

expect(fetch).toHaveBeenCalledWith(`${TEST_URL}get-version`);
expect(result).toBe(5);
Expand All @@ -139,7 +139,7 @@ describe('HttpNode', () => {
const response = { chainId: 1234 };
setFetchMock(response);

const result = await httpNode.getChainId();
const result = await httpNode.getL1ChainId();

expect(fetch).toHaveBeenCalledWith(`${TEST_URL}get-chain-id`);
expect(result).toBe(1234);
Expand Down
4 changes: 2 additions & 2 deletions yarn-project/aztec-node/src/aztec-node/http-node.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ export class HttpNode implements AztecNode {
* Method to fetch the version of the rollup the node is connected to.
* @returns The rollup version.
*/
public async getVersion(): Promise<number> {
public async getL2ChainId(): Promise<number> {
const url = new URL(`${this.baseUrl}/get-version`);
const response = await fetch(url.toString());
const respJson = await response.json();
Expand All @@ -113,7 +113,7 @@ export class HttpNode implements AztecNode {
* Method to fetch the chain id of the base-layer for the rollup.
* @returns The chain id.
*/
public async getChainId(): Promise<number> {
public async getL1ChainId(): Promise<number> {
const url = new URL(`${this.baseUrl}/get-chain-id`);
const response = await fetch(url.toString());
const respJson = await response.json();
Expand Down
4 changes: 2 additions & 2 deletions yarn-project/aztec-node/src/aztec-node/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -161,15 +161,15 @@ export class AztecNodeService implements AztecNode {
* Method to fetch the version of the rollup the node is connected to.
* @returns The rollup version.
*/
public getVersion(): Promise<number> {
public getL2ChainId(): Promise<number> {
return Promise.resolve(this.version);
}

/**
* Method to fetch the chain id of the base-layer for the rollup.
* @returns The chain id.
*/
public getChainId(): Promise<number> {
public getL1ChainId(): Promise<number> {
return Promise.resolve(this.chainId);
}

Expand Down
23 changes: 12 additions & 11 deletions yarn-project/aztec-rpc/src/aztec_rpc_server/aztec_rpc_server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ export class AztecRPCServer implements AztecRPC {
private contractDataOracle: ContractDataOracle;
private simulator: AcirSimulator;
private log: DebugLogger;
private clientInfo: string;
private sandboxVersion: string;

constructor(
private keyStore: KeyStore,
Expand All @@ -82,8 +82,7 @@ export class AztecRPCServer implements AztecRPC {
this.contractDataOracle = new ContractDataOracle(db, node);
this.simulator = getAcirSimulator(db, node, node, node, keyStore, this.contractDataOracle);

const { version, name } = getPackageInfo();
this.clientInfo = `${name.split('/')[name.split('/').length - 1]}@${version}`;
this.sandboxVersion = getPackageInfo().version;
}

/**
Expand All @@ -94,7 +93,9 @@ export class AztecRPCServer implements AztecRPC {
public async start() {
await this.synchroniser.start(INITIAL_L2_BLOCK_NUM, 1, this.config.l2BlockPollingIntervalMS);
const info = await this.getNodeInfo();
this.log.info(`Started RPC server connected to chain ${info.chainId} version ${info.version}`);
this.log.info(
`Started RPC server connected to L1 chain ${info.l1ChainId} and running L2 chain with id ${info.l2ChainId}`,
);
}

/**
Expand Down Expand Up @@ -338,18 +339,18 @@ export class AztecRPCServer implements AztecRPC {
}

public async getNodeInfo(): Promise<NodeInfo> {
const [version, chainId, rollupAddress] = await Promise.all([
this.node.getVersion(),
this.node.getChainId(),
const [l2ChainId, l1ChainId, rollupAddress] = await Promise.all([
this.node.getL2ChainId(),
this.node.getL1ChainId(),
this.node.getRollupAddress(),
]);

return {
version,
chainId,
rollupAddress,
client: this.clientInfo,
sandboxVersion: this.sandboxVersion,
compatibleNargoVersion: NoirVersion.tag,
l1ChainId,
l2ChainId,
rollupAddress,
};
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ async function createAztecRpcServer(): Promise<AztecRPC> {

// Setup the relevant mocks
node.getBlockNumber.mockResolvedValue(2);
node.getVersion.mockResolvedValue(1);
node.getChainId.mockResolvedValue(1);
node.getL2ChainId.mockResolvedValue(1);
node.getL1ChainId.mockResolvedValue(1);
node.getRollupAddress.mockResolvedValue(EthAddress.random());

return new AztecRPCServer(keyStore, node, db, config);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -133,8 +133,8 @@ export const aztecRpcTestSuite = (testName: string, aztecRpcSetup: () => Promise

it('successfully gets node info', async () => {
const nodeInfo = await rpc.getNodeInfo();
expect(typeof nodeInfo.version).toEqual('number');
expect(typeof nodeInfo.chainId).toEqual('number');
expect(typeof nodeInfo.l2ChainId).toEqual('number');
expect(typeof nodeInfo.l1ChainId).toEqual('number');
expect(nodeInfo.rollupAddress.toString()).toMatch(/0x[a-fA-F0-9]+/);
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@ export class DefaultAccountInterface implements AccountInterface {
constructor(
private authWitnessProvider: AuthWitnessProvider,
private address: CompleteAddress,
nodeInfo: Pick<NodeInfo, 'chainId' | 'version'>,
nodeInfo: Pick<NodeInfo, 'l1ChainId' | 'l2ChainId'>,
) {
this.entrypoint = new DefaultAccountEntrypoint(
address.address,
authWitnessProvider,
nodeInfo.chainId,
nodeInfo.version,
nodeInfo.l1ChainId,
nodeInfo.l2ChainId,
);
}

Expand Down
8 changes: 4 additions & 4 deletions yarn-project/aztec.js/src/contract/contract.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,11 @@ describe('Contract Class', () => {
const mockTxReceipt = { type: 'TxReceipt' } as any as TxReceipt;
const mockViewResultValue = 1;
const mockNodeInfo: NodeInfo = {
version: 1,
chainId: 2,
rollupAddress: EthAddress.random(),
client: '',
sandboxVersion: '',
compatibleNargoVersion: 'vx.x.x-aztec.x',
l1ChainId: 2,
l2ChainId: 1,
rollupAddress: EthAddress.random(),
};

const defaultAbi: ContractAbi = {
Expand Down
4 changes: 2 additions & 2 deletions yarn-project/aztec.js/src/contract_deployer/deploy_method.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ export class DeployMethod<TContract extends ContractBase = Contract> extends Bas
const portalContract = options.portalContract ?? EthAddress.ZERO;
const contractAddressSalt = options.contractAddressSalt ?? Fr.random();

const { chainId, version } = await this.rpc.getNodeInfo();
const { l1ChainId, l2ChainId } = await this.rpc.getNodeInfo();

const { completeAddress, constructorHash, functionTreeRoot } = await getContractDeploymentInfo(
this.abi,
Expand All @@ -77,7 +77,7 @@ export class DeployMethod<TContract extends ContractBase = Contract> extends Bas
portalContract,
);

const txContext = new TxContext(false, false, true, contractDeploymentData, new Fr(chainId), new Fr(version));
const txContext = new TxContext(false, false, true, contractDeploymentData, new Fr(l1ChainId), new Fr(l2ChainId));
const args = encodeArguments(this.constructorAbi, this.args);
const functionData = FunctionData.fromAbi(this.constructorAbi);
const execution = { args, functionData, to: completeAddress.address };
Expand Down
4 changes: 2 additions & 2 deletions yarn-project/aztec.js/src/wallet/signerless_wallet.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ export class SignerlessWallet extends BaseWallet {
const [execution] = executions;
const wasm = await CircuitsWasm.get();
const packedArguments = await PackedArguments.fromArgs(execution.args, wasm);
const { chainId, version } = await this.rpc.getNodeInfo();
const txContext = TxContext.empty(chainId, version);
const { l1ChainId, l2ChainId } = await this.rpc.getNodeInfo();
const txContext = TxContext.empty(l1ChainId, l2ChainId);
return Promise.resolve(
new TxExecutionRequest(
execution.to,
Expand Down
6 changes: 3 additions & 3 deletions yarn-project/cli/src/client.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,19 @@ describe('client', () => {
});

it('checks versions match', async () => {
rpc.getNodeInfo.mockResolvedValue({ client: 'rpc@0.1.0-alpha47' } as NodeInfo);
rpc.getNodeInfo.mockResolvedValue({ sandboxVersion: '0.1.0-alpha47' } as NodeInfo);
await checkServerVersion(rpc, '0.1.0-alpha47');
});

it('reports mismatch on older rpc version', async () => {
rpc.getNodeInfo.mockResolvedValue({ client: 'rpc@0.1.0-alpha47' } as NodeInfo);
rpc.getNodeInfo.mockResolvedValue({ sandboxVersion: '0.1.0-alpha47' } as NodeInfo);
await expect(checkServerVersion(rpc, '0.1.0-alpha48')).rejects.toThrowError(
/is older than the expected by this CLI/,
);
});

it('reports mismatch on newer rpc version', async () => {
rpc.getNodeInfo.mockResolvedValue({ client: 'rpc@0.1.0-alpha48' } as NodeInfo);
rpc.getNodeInfo.mockResolvedValue({ sandboxVersion: '0.1.0-alpha48' } as NodeInfo);
await expect(checkServerVersion(rpc, '0.1.0-alpha47')).rejects.toThrowError(
/is newer than the expected by this CLI/,
);
Expand Down
23 changes: 12 additions & 11 deletions yarn-project/cli/src/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,25 +51,26 @@ class VersionMismatchError extends Error {}
*/
export async function checkServerVersion(rpc: AztecRPC, expectedVersionRange: string) {
const serverName = 'Aztec Sandbox';
const { client } = await rpc.getNodeInfo();
if (!client) {
const { sandboxVersion } = await rpc.getNodeInfo();
if (!sandboxVersion) {
throw new VersionMismatchError(`Couldn't determine ${serverName} version. You may run into issues.`);
}
const version = client.split('@')[1];
if (!version || !valid(version)) {
throw new VersionMismatchError(`Missing or invalid version identifier for ${serverName} (${version ?? 'empty'}).`);
} else if (!satisfies(version, expectedVersionRange)) {
if (gtr(version, expectedVersionRange)) {
if (!sandboxVersion || !valid(sandboxVersion)) {
throw new VersionMismatchError(
`Missing or invalid version identifier for ${serverName} (${sandboxVersion ?? 'empty'}).`,
);
} else if (!satisfies(sandboxVersion, expectedVersionRange)) {
if (gtr(sandboxVersion, expectedVersionRange)) {
throw new VersionMismatchError(
`${serverName} is running version ${version} which is newer than the expected by this CLI (${expectedVersionRange}). Consider upgrading your CLI to a newer version.`,
`${serverName} is running version ${sandboxVersion} which is newer than the expected by this CLI (${expectedVersionRange}). Consider upgrading your CLI to a newer version.`,
);
} else if (ltr(version, expectedVersionRange)) {
} else if (ltr(sandboxVersion, expectedVersionRange)) {
throw new VersionMismatchError(
`${serverName} is running version ${version} which is older than the expected by this CLI (${expectedVersionRange}). Consider upgrading your ${serverName} to a newer version.`,
`${serverName} is running version ${sandboxVersion} which is older than the expected by this CLI (${expectedVersionRange}). Consider upgrading your ${serverName} to a newer version.`,
);
} else {
throw new VersionMismatchError(
`${serverName} is running version ${version} which does not match the expected by this CLI (${expectedVersionRange}).`,
`${serverName} is running version ${sandboxVersion} which does not match the expected by this CLI (${expectedVersionRange}).`,
);
}
}
Expand Down
4 changes: 2 additions & 2 deletions yarn-project/end-to-end/src/e2e_sandbox_example.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ describe('e2e_sandbox_example', () => {
logger('Aztec Sandbox Info ', nodeInfo);
// docs:end:setup

expect(typeof nodeInfo.version).toBe('number');
expect(typeof nodeInfo.chainId).toBe('number');
expect(typeof nodeInfo.l2ChainId).toBe('number');
expect(typeof nodeInfo.l1ChainId).toBe('number');
expect(typeof nodeInfo.rollupAddress).toBe('object');

// docs:start:Accounts
Expand Down
4 changes: 2 additions & 2 deletions yarn-project/rollup-provider/src/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,15 +93,15 @@ export function appFactory(node: AztecNode, prefix: string) {
router.get('/get-version', async (ctx: Koa.Context) => {
ctx.set('content-type', 'application/json');
ctx.body = {
version: await node.getVersion(),
version: await node.getL2ChainId(),
};
ctx.status = 200;
});

router.get('/get-chain-id', async (ctx: Koa.Context) => {
ctx.set('content-type', 'application/json');
ctx.body = {
chainId: await node.getChainId(),
chainId: await node.getL1ChainId(),
};
ctx.status = 200;
});
Expand Down
12 changes: 6 additions & 6 deletions yarn-project/types/src/interfaces/aztec-node.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,16 +50,16 @@ export interface AztecNode extends DataCommitmentProvider, L1ToL2MessageProvider
getBlockNumber(): Promise<number>;

/**
* Method to fetch the version of the rollup the node is connected to.
* @returns The rollup version.
* Method to fetch L2 chain id of the network the node is connected to.
* @returns The L2 chain id.
*/
getVersion(): Promise<number>;
getL2ChainId(): Promise<number>;

/**
* Method to fetch the chain id of the base-layer for the rollup.
* @returns The chain id.
* Method to fetch the chain id of L1 used for settlement.
* @returns The L1 chain id.
*/
getChainId(): Promise<number>;
getL1ChainId(): Promise<number>;

/**
* Method to fetch the rollup contract address at the base-layer.
Expand Down
20 changes: 10 additions & 10 deletions yarn-project/types/src/interfaces/aztec_rpc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,25 +37,25 @@ export interface DeployedContract {
*/
export type NodeInfo = {
/**
* The version number of the node.
* Version as tracked in the aztec-packages repository.
*/
version: number;
sandboxVersion: string;
/**
* The network's chain id.
* The nargo version compatible with this sandbox version
*/
chainId: number;
compatibleNargoVersion: string;
/**
* The rollup contract address
* L1 chain id.
*/
rollupAddress: EthAddress;
l1ChainId: number;
/**
* Identifier of the client software.
* L2 chain id.
*/
client: string;
l2ChainId: number;
/**
* The nargo version compatible with this node.
* The rollup contract address
*/
compatibleNargoVersion: string;
rollupAddress: EthAddress;
};

/** Provides up to which block has been synced by different components. */
Expand Down

0 comments on commit 12ec719

Please sign in to comment.