Skip to content

Commit

Permalink
chore: Revert "chore: Validate RPC inputs" (#9875)
Browse files Browse the repository at this point in the history
Reverts #9672 as it broke some e2e tests and
boxes
  • Loading branch information
ludamad authored Nov 11, 2024
1 parent 7d1c797 commit dd83d52
Show file tree
Hide file tree
Showing 268 changed files with 3,007 additions and 5,990 deletions.
1 change: 0 additions & 1 deletion yarn-project/.earthlyignore
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ aztec-faucet/data*
aztec-node/data*
aztec/log
circuits.js/fixtures/*.json
circuit-types/src/test/artifacts
docs/dist
end-to-end/addresses.json
end-to-end/log
Expand Down
1 change: 0 additions & 1 deletion yarn-project/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ aztec-faucet/data*
aztec-node/data*
aztec/log
circuits.js/fixtures/*.json
circuit-types/src/test/artifacts
docs/dist
end-to-end/addresses.json
end-to-end/flame_graph
Expand Down
6 changes: 2 additions & 4 deletions yarn-project/archiver/src/factory.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import { type ArchiverApi, type Service } from '@aztec/circuit-types';
import { type ContractClassPublic } from '@aztec/circuits.js';
import { createDebugLogger } from '@aztec/foundation/log';
import { type Maybe } from '@aztec/foundation/types';
import { createStore } from '@aztec/kv-store/utils';
import { getCanonicalProtocolContract, protocolContractNames } from '@aztec/protocol-contracts';
import { type TelemetryClient } from '@aztec/telemetry-client';
Expand All @@ -10,13 +8,13 @@ import { NoopTelemetryClient } from '@aztec/telemetry-client/noop';
import { Archiver } from './archiver/archiver.js';
import { type ArchiverConfig } from './archiver/config.js';
import { KVArchiverDataStore } from './archiver/index.js';
import { createArchiverClient } from './rpc/index.js';
import { createArchiverClient } from './rpc/archiver_client.js';

export async function createArchiver(
config: ArchiverConfig,
telemetry: TelemetryClient = new NoopTelemetryClient(),
opts: { blockUntilSync: boolean } = { blockUntilSync: true },
): Promise<ArchiverApi & Maybe<Service>> {
) {
if (!config.archiverUrl) {
const store = await createStore('archiver', config, createDebugLogger('aztec:archiver:lmdb'));
const archiverStore = new KVArchiverDataStore(store, config.maxLogs);
Expand Down
29 changes: 29 additions & 0 deletions yarn-project/archiver/src/rpc/archiver_client.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import {
EncryptedNoteL2BlockL2Logs,
ExtendedUnencryptedL2Log,
L2Block,
NullifierMembershipWitness,
TxReceipt,
UnencryptedL2BlockL2Logs,
} from '@aztec/circuit-types';
import { EthAddress, Fr } from '@aztec/circuits.js';
import { createJsonRpcClient, makeFetch } from '@aztec/foundation/json-rpc/client';

import { type ArchiveSource } from '../archiver/archiver.js';

export const createArchiverClient = (url: string, fetch = makeFetch([1, 2, 3], true)): ArchiveSource =>
createJsonRpcClient<ArchiveSource>(
url,
{
EthAddress,
ExtendedUnencryptedL2Log,
Fr,
L2Block,
EncryptedNoteL2BlockL2Logs,
UnencryptedL2BlockL2Logs,
},
{ TxReceipt, NullifierMembershipWitness },
false,
'archiver',
fetch,
) as ArchiveSource;
35 changes: 35 additions & 0 deletions yarn-project/archiver/src/rpc/archiver_server.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import {
EncryptedNoteL2BlockL2Logs,
ExtendedUnencryptedL2Log,
L2Block,
NullifierMembershipWitness,
TxEffect,
TxReceipt,
UnencryptedL2BlockL2Logs,
} from '@aztec/circuit-types';
import { EthAddress, Fr } from '@aztec/circuits.js';
import { JsonRpcServer } from '@aztec/foundation/json-rpc/server';

import { type Archiver } from '../archiver/archiver.js';

/**
* Wrap an Archiver instance with a JSON RPC HTTP server.
* @param archiverService - The Archiver instance
* @returns An JSON-RPC HTTP server
*/
export function createArchiverRpcServer(archiverService: Archiver): JsonRpcServer {
return new JsonRpcServer(
archiverService,
{
EthAddress,
ExtendedUnencryptedL2Log,
Fr,
L2Block,
EncryptedNoteL2BlockL2Logs,
UnencryptedL2BlockL2Logs,
TxEffect,
},
{ TxReceipt, NullifierMembershipWitness },
['start', 'stop'],
);
}
13 changes: 2 additions & 11 deletions yarn-project/archiver/src/rpc/index.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,2 @@
import { type ArchiverApi, ArchiverApiSchema } from '@aztec/circuit-types';
import { createSafeJsonRpcClient, makeFetch } from '@aztec/foundation/json-rpc/client';
import { createSafeJsonRpcServer } from '@aztec/foundation/json-rpc/server';

export function createArchiverClient(url: string, fetch = makeFetch([1, 2, 3], true)): ArchiverApi {
return createSafeJsonRpcClient<ArchiverApi>(url, ArchiverApiSchema, false, 'archiver', fetch);
}

export function createArchiverRpcServer(handler: ArchiverApi) {
return createSafeJsonRpcServer(handler, ArchiverApiSchema);
}
export * from './archiver_client.js';
export * from './archiver_server.js';
61 changes: 58 additions & 3 deletions yarn-project/aztec-node/src/aztec-node/http_rpc_server.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,66 @@
import { type AztecNode, AztecNodeApiSchema } from '@aztec/circuit-types';
import { createSafeJsonRpcServer } from '@aztec/foundation/json-rpc/server';
import {
type AztecNode,
EncryptedL2NoteLog,
EncryptedNoteL2BlockL2Logs,
EpochProofQuote,
ExtendedUnencryptedL2Log,
L2Block,
LogId,
NullifierMembershipWitness,
PublicDataWitness,
PublicSimulationOutput,
SiblingPath,
Tx,
TxEffect,
TxHash,
TxReceipt,
UnencryptedL2BlockL2Logs,
} from '@aztec/circuit-types';
import { FunctionSelector, Header, PublicKeys } from '@aztec/circuits.js';
import { NoteSelector } from '@aztec/foundation/abi';
import { AztecAddress } from '@aztec/foundation/aztec-address';
import { Buffer32 } from '@aztec/foundation/buffer';
import { EthAddress } from '@aztec/foundation/eth-address';
import { Fr } from '@aztec/foundation/fields';
import { JsonRpcServer } from '@aztec/foundation/json-rpc/server';

/**
* Wrap an AztecNode instance with a JSON RPC HTTP server.
* @param node - The AztecNode
* @returns An JSON-RPC HTTP server
*/
export function createAztecNodeRpcServer(node: AztecNode) {
return createSafeJsonRpcServer(node, AztecNodeApiSchema);
const rpc = new JsonRpcServer(
node,
{
AztecAddress,
EthAddress,
ExtendedUnencryptedL2Log,
Fr,
FunctionSelector,
Header,
L2Block,
TxEffect,
LogId,
TxHash,
Buffer32,
PublicDataWitness,
PublicKeys,
SiblingPath,
},
{
EncryptedNoteL2BlockL2Logs,
EncryptedL2NoteLog,
NoteSelector,
NullifierMembershipWitness,
PublicSimulationOutput,
Tx,
TxReceipt,
UnencryptedL2BlockL2Logs,
EpochProofQuote,
},
// disable methods not part of the AztecNode interface
['start', 'stop'],
);
return rpc;
}
6 changes: 2 additions & 4 deletions yarn-project/aztec-node/src/aztec-node/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import {
PublicDataWitness,
PublicSimulationOutput,
type SequencerConfig,
type Service,
SiblingPath,
type Tx,
type TxEffect,
Expand All @@ -31,7 +30,6 @@ import {
TxStatus,
type TxValidator,
type WorldStateSynchronizer,
tryStop,
} from '@aztec/circuit-types';
import {
type ARCHIVE_HEIGHT,
Expand Down Expand Up @@ -91,7 +89,7 @@ export class AztecNodeService implements AztecNode {
constructor(
protected config: AztecNodeConfig,
protected readonly p2pClient: P2P,
protected readonly blockSource: L2BlockSource & Partial<Service>,
protected readonly blockSource: L2BlockSource,
protected readonly encryptedLogsSource: L2LogsSource,
protected readonly unencryptedLogsSource: L2LogsSource,
protected readonly contractDataSource: ContractDataSource,
Expand Down Expand Up @@ -375,7 +373,7 @@ export class AztecNodeService implements AztecNode {
await this.sequencer?.stop();
await this.p2pClient.stop();
await this.worldStateSynchronizer.stop();
await tryStop(this.blockSource);
await this.blockSource.stop();
await this.telemetry.stop();
this.log.info(`Stopped`);
}
Expand Down
5 changes: 1 addition & 4 deletions yarn-project/aztec.js/src/contract/batch_call.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,7 @@ export class BatchCall extends BaseContractInteraction {

const unconstrainedCalls = unconstrained.map(async indexedCall => {
const call = indexedCall[0];
return [
await this.wallet.simulateUnconstrained(call.name, call.args, call.to, options?.from),
indexedCall[1],
] as const;
return [await this.wallet.simulateUnconstrained(call.name, call.args, call.to, options?.from), indexedCall[1]];
});

const [unconstrainedResults, simulatedTx] = await Promise.all([
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,7 @@ export class FeeJuicePaymentMethodWithClaim extends FeeJuicePaymentMethod {
name: 'claim',
selector,
isStatic: false,
args: [
this.sender.toField(),
this.claim.claimAmount,
this.claim.claimSecret,
new Fr(this.claim.messageLeafIndex),
],
args: [this.sender, this.claim.claimAmount, this.claim.claimSecret, new Fr(this.claim.messageLeafIndex)],
returnTypes: [],
type: FunctionType.PRIVATE,
},
Expand Down
4 changes: 2 additions & 2 deletions yarn-project/aztec.js/src/fee/private_fee_payment_method.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ export class PrivateFeePaymentMethod implements FeePaymentMethod {
caller: this.paymentContract,
action: {
name: 'setup_refund',
args: [this.feeRecipient.toField(), this.wallet.getAddress().toField(), maxFee, nonce],
args: [this.feeRecipient, this.wallet.getAddress(), maxFee, nonce],
selector: FunctionSelector.fromSignature('setup_refund((Field),(Field),Field,Field)'),
type: FunctionType.PRIVATE,
isStatic: false,
Expand All @@ -81,7 +81,7 @@ export class PrivateFeePaymentMethod implements FeePaymentMethod {
selector: FunctionSelector.fromSignature('fee_entrypoint_private(Field,(Field),Field)'),
type: FunctionType.PRIVATE,
isStatic: false,
args: [maxFee, this.asset.toField(), nonce],
args: [maxFee, this.asset, nonce],
returnTypes: [],
},
];
Expand Down
4 changes: 2 additions & 2 deletions yarn-project/aztec.js/src/fee/public_fee_payment_method.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ export class PublicFeePaymentMethod implements FeePaymentMethod {
caller: this.paymentContract,
action: {
name: 'transfer_public',
args: [this.wallet.getAddress().toField(), this.paymentContract.toField(), maxFee, nonce],
args: [this.wallet.getAddress(), this.paymentContract, maxFee, nonce],
selector: FunctionSelector.fromSignature('transfer_public((Field),(Field),Field,Field)'),
type: FunctionType.PUBLIC,
isStatic: false,
Expand All @@ -71,7 +71,7 @@ export class PublicFeePaymentMethod implements FeePaymentMethod {
selector: FunctionSelector.fromSignature('fee_entrypoint_public(Field,(Field),Field)'),
type: FunctionType.PRIVATE,
isStatic: false,
args: [maxFee, this.asset.toField(), nonce],
args: [maxFee, this.asset, nonce],
returnTypes: [],
},
]);
Expand Down
95 changes: 90 additions & 5 deletions yarn-project/aztec.js/src/rpc_clients/pxe_client.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,97 @@
import { type PXE, PXESchema } from '@aztec/circuit-types';
import { createSafeJsonRpcClient, makeFetch } from '@aztec/foundation/json-rpc/client';
import {
AuthWitness,
CountedNoteLog,
CountedPublicExecutionRequest,
EncryptedL2Log,
EncryptedL2NoteLog,
EncryptedNoteL2BlockL2Logs,
EventMetadata,
ExtendedNote,
ExtendedUnencryptedL2Log,
L2Block,
LogId,
Note,
NullifierMembershipWitness,
type PXE,
PrivateExecutionResult,
SiblingPath,
Tx,
TxEffect,
TxExecutionRequest,
TxHash,
TxProvingResult,
TxReceipt,
TxSimulationResult,
UnencryptedL2BlockL2Logs,
UnencryptedL2Log,
UniqueNote,
} from '@aztec/circuit-types';
import {
AztecAddress,
CompleteAddress,
EthAddress,
Fr,
FunctionSelector,
GrumpkinScalar,
Point,
PrivateCircuitPublicInputs,
PublicKeys,
} from '@aztec/circuits.js';
import { EventSelector, NoteSelector } from '@aztec/foundation/abi';
import { Buffer32 } from '@aztec/foundation/buffer';
import { createJsonRpcClient, makeFetch } from '@aztec/foundation/json-rpc/client';

/**
* Creates a JSON-RPC client to remotely talk to PXE.
* @param url - The URL of the PXE.
* @param fetch - The fetch implementation to use.
* @returns A JSON-RPC client of PXE.
*/
export function createPXEClient(url: string, fetch = makeFetch([1, 2, 3], false)): PXE {
return createSafeJsonRpcClient<PXE>(url, PXESchema, false, 'pxe', fetch);
}
export const createPXEClient = (url: string, fetch = makeFetch([1, 2, 3], false)): PXE =>
createJsonRpcClient<PXE>(
url,
{
AuthWitness,
AztecAddress,
CompleteAddress,
FunctionSelector,
EthAddress,
EventSelector,
ExtendedNote,
UniqueNote,
ExtendedUnencryptedL2Log,
Fr,
GrumpkinScalar,
L2Block,
TxEffect,
LogId,
Note,
Point,
PublicKeys,
TxExecutionRequest,
TxHash,
Buffer32,
SiblingPath,
},
{
EncryptedNoteL2BlockL2Logs,
EncryptedL2NoteLog,
EncryptedL2Log,
EventMetadata,
UnencryptedL2Log,
NoteSelector,
NullifierMembershipWitness,
TxSimulationResult,
TxProvingResult,
PrivateCircuitPublicInputs,
PrivateExecutionResult,
CountedPublicExecutionRequest,
CountedNoteLog,
Tx,
TxReceipt,
UnencryptedL2BlockL2Logs,
},
false,
'pxe',
fetch,
) as PXE;
2 changes: 1 addition & 1 deletion yarn-project/aztec.js/src/utils/abi_types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ export type FieldLike = Fr | Buffer | bigint | number | { /** Converts to field
export type EthAddressLike = { /** Wrapped address */ address: FieldLike } | EthAddress;

/** Any type that can be converted into an AztecAddress Aztec.nr struct. */
export type AztecAddressLike = { /** Wrapped address */ address: FieldLike } | AztecAddress | Fr;
export type AztecAddressLike = { /** Wrapped address */ address: FieldLike } | AztecAddress;

/** Any type that can be converted into a FunctionSelector Aztec.nr struct. */
export type FunctionSelectorLike = FieldLike | FunctionSelector;
Expand Down
Loading

0 comments on commit dd83d52

Please sign in to comment.