diff --git a/yarn-project/noir-private-kernel/src/index.ts b/yarn-project/noir-private-kernel/src/index.ts index 09461716bf6b..4551a7d4fe5e 100644 --- a/yarn-project/noir-private-kernel/src/index.ts +++ b/yarn-project/noir-private-kernel/src/index.ts @@ -1,11 +1,27 @@ +import { KernelCircuitPublicInputs, PrivateKernelInputsInit } from '@aztec/circuits.js'; import { NoirCompiledCircuit } from '@aztec/noir-compiler'; import PrivateKernelInitJson from './target/private_kernel_init.json' assert { type: 'json' }; import PrivateKernelInnerJson from './target/private_kernel_inner.json' assert { type: 'json' }; import PrivateKernelOrderingJson from './target/private_kernel_ordering.json' assert { type: 'json' }; +import { mapPrivateKernelInputsInitToNoir } from './type_conversion.js'; +import { InputType as InitInputType } from './types/private_kernel_init_types.js'; export const PrivateKernelInitArtifact = PrivateKernelInitJson as NoirCompiledCircuit; export const PrivateKernelInnerArtifact = PrivateKernelInnerJson as NoirCompiledCircuit; export const PrivateKernelOrderingArtifact = PrivateKernelOrderingJson as NoirCompiledCircuit; + +/** + * Executes the init private kernel. + * @param privateKernelInputsInit - The private kernel inputs. + * @returns The public inputs. + */ +export function executeInit(privateKernelInputsInit: PrivateKernelInputsInit): Promise { + const _params: InitInputType = { + input: mapPrivateKernelInputsInitToNoir(privateKernelInputsInit), + }; + + throw new Error('Not implemented'); +} diff --git a/yarn-project/noir-private-kernel/src/scripts/generate_ts_from_abi.ts b/yarn-project/noir-private-kernel/src/scripts/generate_ts_from_abi.ts index 1c7fe3a1dcee..10ee7ec4163a 100644 --- a/yarn-project/noir-private-kernel/src/scripts/generate_ts_from_abi.ts +++ b/yarn-project/noir-private-kernel/src/scripts/generate_ts_from_abi.ts @@ -59,7 +59,7 @@ function abiTypeToTs(type: ABIType): string { } else { tsIntType = `u${type.width}`; } - addIfUnique({ aliasName: tsIntType, tsType: 'number' }); + addIfUnique({ aliasName: tsIntType, tsType: 'string' }); return tsIntType; } case 'boolean': @@ -69,7 +69,7 @@ function abiTypeToTs(type: ABIType): string { case 'struct': return getLastComponentOfPath(type.path); case 'field': - addIfUnique({ aliasName: 'Field', tsType: 'number' }); + addIfUnique({ aliasName: 'Field', tsType: 'string' }); return 'Field'; default: throw new Error(`Unknown ABI type ${type}`); @@ -127,7 +127,7 @@ function generateStructInterfaces(type: ABIType, output: Set): string { const structName = getLastComponentOfPath(type.path); if (!output.has(structName)) { - codeGeneratedStruct += `interface ${structName} {\n`; + codeGeneratedStruct += `export interface ${structName} {\n`; for (const field of type.fields) { codeGeneratedStruct += ` ${field.name}: ${abiTypeToTs(field.type)};\n`; typesEncountered.add(field.type); @@ -177,7 +177,7 @@ function generateTsInterface(abiObj: NoirFunctionAbi): string { // Add the primitive Noir types that do not have a 1-1 mapping to TypeScript. let primitiveTypeAliases = ''; for (const [, value] of noirPrimitiveTypesToTsTypes) { - primitiveTypeAliases += `\ntype ${value.aliasName} = ${value.tsType};`; + primitiveTypeAliases += `\nexport type ${value.aliasName} = ${value.tsType};`; } return `/* Autogenerated file, do not edit! */\n\n/* eslint-disable */\n` + primitiveTypeAliases + '\n' + result; diff --git a/yarn-project/noir-private-kernel/src/type_conversion.ts b/yarn-project/noir-private-kernel/src/type_conversion.ts new file mode 100644 index 000000000000..a8b4d3e9eec1 --- /dev/null +++ b/yarn-project/noir-private-kernel/src/type_conversion.ts @@ -0,0 +1,301 @@ +import { + AztecAddress, + CallContext, + ContractDeploymentData, + EthAddress, + Fr, + FunctionData, + FunctionSelector, + HistoricBlockData, + MembershipWitness, + Point, + PrivateCallData, + PrivateCallStackItem, + PrivateCircuitPublicInputs, + PrivateKernelInputsInit, + ReadRequestMembershipWitness, + TxContext, + TxRequest, +} from '@aztec/circuits.js'; + +import { + CallContext as CallContextNoir, + ContractDeploymentData as ContractDeploymentDataNoir, + FunctionData as FunctionDataNoir, + FunctionSelector as FunctionSelectorNoir, + HistoricalBlockData as HistoricalBlockDataNoir, + MembershipWitness as MembershipWitnessNoir, + Address as NoirAztecAddress, + EthAddress as NoirEthAddress, + Field as NoirField, + Point as NoirPoint, + PrivateCallData as PrivateCallDataNoir, + PrivateCallStackItem as PrivateCallStackItemNoir, + PrivateCircuitPublicInputs as PrivateCircuitPublicInputsNoir, + PrivateKernelInputsInit as PrivateKernelInputsInitNoir, + ReadRequestMembershipWitness as ReadRequestMembershipWitnessNoir, + TxContext as TxContextNoir, + TxRequest as TxRequestNoir, +} from './types/private_kernel_init_types.js'; + +/* eslint-disable camelcase */ + +/** + * Maps a field to a noir field. + * @param field - The field. + * @returns The noir field. + */ +function mapFieldToNoir(field: Fr): NoirField { + return field.toString(); +} + +/** + * Maps a point to a noir point. + * @param point - The point. + * @returns The noir point. + */ +function mapPointToNoir(point: Point): NoirPoint { + return { + x: mapFieldToNoir(point.x), + y: mapFieldToNoir(point.y), + }; +} + +/** + * Maps an aztec address to a noir aztec address. + * @param address - The address. + * @returns The noir aztec address. + */ +function mapAztecAddressToNoir(address: AztecAddress): NoirAztecAddress { + return { + inner: mapFieldToNoir(address.toField()), + }; +} + +/** + * Maps an eth address to a noir eth address. + * @param address - The address. + * @returns The noir eth address. + */ +function mapEthAddressToNoir(address: EthAddress): NoirEthAddress { + return { + inner: mapFieldToNoir(address.toField()), + }; +} + +/** + * Maps a contract deployment data to a noir contract deployment data. + * @param data - The data. + * @returns The noir contract deployment data. + */ +function mapContractDeploymentDataToNoir(data: ContractDeploymentData): ContractDeploymentDataNoir { + return { + deployer_public_key: mapPointToNoir(data.deployerPublicKey), + constructor_vk_hash: mapFieldToNoir(data.constructorVkHash), + function_tree_root: mapFieldToNoir(data.functionTreeRoot), + contract_address_salt: mapFieldToNoir(data.contractAddressSalt), + portal_contract_address: mapEthAddressToNoir(data.portalContractAddress), + }; +} + +/** + * Maps a tx context to a noir tx context. + * @param txContext - The tx context. + * @returns The noir tx context. + */ +function mapTxContextToNoir(txContext: TxContext): TxContextNoir { + return { + is_fee_payment_tx: txContext.isFeePaymentTx, + is_rebate_payment_tx: txContext.isRebatePaymentTx, + is_contract_deployment_tx: txContext.isContractDeploymentTx, + contract_deployment_data: mapContractDeploymentDataToNoir(txContext.contractDeploymentData), + chain_id: mapFieldToNoir(txContext.chainId), + version: mapFieldToNoir(txContext.version), + }; +} + +/** + * Maps a function selector to a noir function selector. + * @param functionSelector - The function selector. + * @returns The noir function selector. + */ +function mapFunctionSelectorToNoir(functionSelector: FunctionSelector): FunctionSelectorNoir { + return { + inner: mapFieldToNoir(functionSelector.toField()), + }; +} + +/** + * Maps a function data to a noir function data. + * @param functionData - The function data. + * @returns The noir function data. + */ +function mapFunctionDataToNoir(functionData: FunctionData): FunctionDataNoir { + return { + selector: mapFunctionSelectorToNoir(functionData.selector), + is_internal: functionData.isInternal, + is_private: functionData.isPrivate, + is_constructor: functionData.isConstructor, + }; +} + +/** + * Maps a tx request to a noir tx request. + * @param txRequest - The tx request. + * @returns The noir tx request. + */ +function mapTxRequestToNoir(txRequest: TxRequest): TxRequestNoir { + return { + origin: mapAztecAddressToNoir(txRequest.origin), + args_hash: mapFieldToNoir(txRequest.argsHash), + tx_context: mapTxContextToNoir(txRequest.txContext), + function_data: mapFunctionDataToNoir(txRequest.functionData), + }; +} + +/** + * Maps a call context to a noir call context. + * @param callContext - The call context. + * @returns The noir call context. + */ +function mapCallContextToNoir(callContext: CallContext): CallContextNoir { + return { + msg_sender: mapAztecAddressToNoir(callContext.msgSender), + storage_contract_address: mapAztecAddressToNoir(callContext.storageContractAddress), + portal_contract_address: mapEthAddressToNoir(callContext.portalContractAddress), + function_selector: mapFunctionSelectorToNoir(callContext.functionSelector), + is_delegate_call: callContext.isDelegateCall, + is_static_call: callContext.isStaticCall, + is_contract_deployment: callContext.isContractDeployment, + }; +} + +/** + * Maps a historical block data to a noir historical block data. + * @param historicalBlockData - The historical block data. + * @returns The noir historical block data. + */ +function mapHistoricalBlockDataToNoir(historicalBlockData: HistoricBlockData): HistoricalBlockDataNoir { + return { + blocks_tree_root: mapFieldToNoir(historicalBlockData.blocksTreeRoot), + block: { + private_data_tree_root: mapFieldToNoir(historicalBlockData.privateDataTreeRoot), + nullifier_tree_root: mapFieldToNoir(historicalBlockData.nullifierTreeRoot), + contract_tree_root: mapFieldToNoir(historicalBlockData.contractTreeRoot), + l1_to_l2_data_tree_root: mapFieldToNoir(historicalBlockData.l1ToL2MessagesTreeRoot), + public_data_tree_root: mapFieldToNoir(historicalBlockData.publicDataTreeRoot), + global_variables_hash: mapFieldToNoir(historicalBlockData.globalVariablesHash), + }, + private_kernel_vk_tree_root: mapFieldToNoir(historicalBlockData.privateKernelVkTreeRoot), + }; +} + +/** + * Maps private circuit public inputs to noir private circuit public inputs. + * @param privateCircuitPublicInputs - The private circuit public inputs. + * @returns The noir private circuit public inputs. + */ +function mapPrivateCircuitPublicInputsToNoir( + privateCircuitPublicInputs: PrivateCircuitPublicInputs, +): PrivateCircuitPublicInputsNoir { + return { + call_context: mapCallContextToNoir(privateCircuitPublicInputs.callContext), + args_hash: mapFieldToNoir(privateCircuitPublicInputs.argsHash), + return_values: privateCircuitPublicInputs.returnValues.map(mapFieldToNoir), + read_requests: privateCircuitPublicInputs.readRequests.map(mapFieldToNoir), + new_commitments: privateCircuitPublicInputs.newCommitments.map(mapFieldToNoir), + new_nullifiers: privateCircuitPublicInputs.newNullifiers.map(mapFieldToNoir), + nullified_commitments: privateCircuitPublicInputs.nullifiedCommitments.map(mapFieldToNoir), + private_call_stack: privateCircuitPublicInputs.privateCallStack.map(mapFieldToNoir), + public_call_stack: privateCircuitPublicInputs.publicCallStack.map(mapFieldToNoir), + new_l2_to_l1_msgs: privateCircuitPublicInputs.newL2ToL1Msgs.map(mapFieldToNoir), + encrypted_logs_hash: privateCircuitPublicInputs.encryptedLogsHash.map(mapFieldToNoir), + unencrypted_logs_hash: privateCircuitPublicInputs.unencryptedLogsHash.map(mapFieldToNoir), + encrypted_log_preimages_length: mapFieldToNoir(privateCircuitPublicInputs.encryptedLogPreimagesLength), + unencrypted_log_preimages_length: mapFieldToNoir(privateCircuitPublicInputs.unencryptedLogPreimagesLength), + historical_block_data: mapHistoricalBlockDataToNoir(privateCircuitPublicInputs.historicBlockData), + contract_deployment_data: mapContractDeploymentDataToNoir(privateCircuitPublicInputs.contractDeploymentData), + chain_id: mapFieldToNoir(privateCircuitPublicInputs.chainId), + version: mapFieldToNoir(privateCircuitPublicInputs.version), + }; +} + +/** + * Maps a private call stack item to a noir private call stack item. + * @param privateCallStackItem - The private call stack item. + * @returns The noir private call stack item. + */ +function mapPrivateCallStackItemToNoir(privateCallStackItem: PrivateCallStackItem): PrivateCallStackItemNoir { + return { + inner: { + contract_address: mapAztecAddressToNoir(privateCallStackItem.contractAddress), + public_inputs: mapPrivateCircuitPublicInputsToNoir(privateCallStackItem.publicInputs), + is_execution_request: privateCallStackItem.isExecutionRequest, + function_data: mapFunctionDataToNoir(privateCallStackItem.functionData), + }, + }; +} + +/** + * Maps a membership witness to a noir membership witness. + * @param membershipWitness - The membership witness. + * @returns The noir membership witness. + */ +function mapMembershipWitnessToNoir(membershipWitness: MembershipWitness): MembershipWitnessNoir { + return { + leaf_index: membershipWitness.leafIndex.toString(), + sibling_path: membershipWitness.siblingPath.map(mapFieldToNoir), + }; +} + +/** + * Maps a read request membership witness to a noir read request membership witness. + * @param readRequestMembershipWitness - The read request membership witness. + * @returns The noir read request membership witness. + */ +function mapReadRequestMembershipWitnessToNoir( + readRequestMembershipWitness: ReadRequestMembershipWitness, +): ReadRequestMembershipWitnessNoir { + return { + leaf_index: mapFieldToNoir(readRequestMembershipWitness.leafIndex), + sibling_path: readRequestMembershipWitness.siblingPath.map(mapFieldToNoir), + is_transient: readRequestMembershipWitness.isTransient, + hint_to_commitment: mapFieldToNoir(readRequestMembershipWitness.hintToCommitment), + }; +} + +/** + * Maps a private call data to a noir private call data. + * @param privateCallData - The private call data. + * @returns The noir private call data. + */ +function mapPrivateCallDataToNoir(privateCallData: PrivateCallData): PrivateCallDataNoir { + return { + call_stack_item: mapPrivateCallStackItemToNoir(privateCallData.callStackItem), + private_call_stack_preimages: privateCallData.privateCallStackPreimages.map(mapPrivateCallStackItemToNoir), + proof: {}, + vk: {}, + function_leaf_membership_witness: mapMembershipWitnessToNoir(privateCallData.functionLeafMembershipWitness), + contract_leaf_membership_witness: mapMembershipWitnessToNoir(privateCallData.contractLeafMembershipWitness), + read_request_membership_witnesses: privateCallData.readRequestMembershipWitnesses.map( + mapReadRequestMembershipWitnessToNoir, + ), + //TODO this seems like the wrong type in circuits.js + portal_contract_address: mapEthAddressToNoir(EthAddress.fromField(privateCallData.portalContractAddress)), + acir_hash: mapFieldToNoir(privateCallData.acirHash), + }; +} + +/** + * Maps the inputs to the private kernel init to the noir representation. + * @param privateKernelInputsInit - The inputs to the private kernel init. + * @returns The noir representation of those inputs. + */ +export function mapPrivateKernelInputsInitToNoir( + privateKernelInputsInit: PrivateKernelInputsInit, +): PrivateKernelInputsInitNoir { + return { + tx_request: mapTxRequestToNoir(privateKernelInputsInit.txRequest), + private_call: mapPrivateCallDataToNoir(privateKernelInputsInit.privateCall), + }; +} diff --git a/yarn-project/noir-private-kernel/src/types/private_kernel_init_types.ts b/yarn-project/noir-private-kernel/src/types/private_kernel_init_types.ts index 6bfa32bc269e..51b7873dc8b9 100644 --- a/yarn-project/noir-private-kernel/src/types/private_kernel_init_types.ts +++ b/yarn-project/noir-private-kernel/src/types/private_kernel_init_types.ts @@ -2,26 +2,23 @@ /* eslint-disable */ -type Field = number; -type u32 = number; +export type Field = string; +export type u32 = string; -interface Address { +export interface Address { inner: Field; } - -interface Point { +export interface Point { x: Field; y: Field; } - -interface EthAddress { +export interface EthAddress { inner: Field; } - -interface ContractDeploymentData { +export interface ContractDeploymentData { deployer_public_key: Point; constructor_vk_hash: Field; function_tree_root: Field; @@ -29,8 +26,7 @@ interface ContractDeploymentData { portal_contract_address: EthAddress; } - -interface TxContext { +export interface TxContext { is_fee_payment_tx: boolean; is_rebate_payment_tx: boolean; is_contract_deployment_tx: boolean; @@ -39,34 +35,25 @@ interface TxContext { version: Field; } - -interface FunctionSelector { +export interface FunctionSelector { inner: u32; } - -interface FunctionData { +export interface FunctionData { selector: FunctionSelector; is_internal: boolean; is_private: boolean; is_constructor: boolean; } - -interface TxRequest { +export interface TxRequest { origin: Address; args_hash: Field; tx_context: TxContext; function_data: FunctionData; } - - - - - - -interface CallContext { +export interface CallContext { msg_sender: Address; storage_contract_address: Address; portal_contract_address: EthAddress; @@ -76,8 +63,7 @@ interface CallContext { is_contract_deployment: boolean; } - -interface Block { +export interface Block { private_data_tree_root: Field; nullifier_tree_root: Field; contract_tree_root: Field; @@ -86,16 +72,13 @@ interface Block { global_variables_hash: Field; } - -interface HistoricalBlockData { +export interface HistoricalBlockData { blocks_tree_root: Field; block: Block; private_kernel_vk_tree_root: Field; } - - -interface PrivateCircuitPublicInputs { +export interface PrivateCircuitPublicInputs { call_context: CallContext; args_hash: Field; return_values: Field[]; @@ -116,46 +99,34 @@ interface PrivateCircuitPublicInputs { version: Field; } - - -interface CallStackItem { +export interface CallStackItem { contract_address: Address; public_inputs: PrivateCircuitPublicInputs; is_execution_request: boolean; function_data: FunctionData; } - -interface PrivateCallStackItem { +export interface PrivateCallStackItem { inner: CallStackItem; } +export interface Proof {} -interface Proof { -} - - -interface VerificationKey { -} - +export interface VerificationKey {} -interface MembershipWitness { +export interface MembershipWitness { leaf_index: Field; sibling_path: Field[]; } - - -interface ReadRequestMembershipWitness { +export interface ReadRequestMembershipWitness { leaf_index: Field; sibling_path: Field[]; is_transient: boolean; hint_to_commitment: Field; } - - -interface PrivateCallData { +export interface PrivateCallData { call_stack_item: PrivateCallStackItem; private_call_stack_preimages: PrivateCallStackItem[]; proof: Proof; @@ -167,29 +138,20 @@ interface PrivateCallData { acir_hash: Field; } - -interface PrivateKernelInputsInit { +export interface PrivateKernelInputsInit { tx_request: TxRequest; private_call: PrivateCallData; } +export interface AggregationObject {} -interface AggregationObject { -} - - - - -interface NewContractData { +export interface NewContractData { contract_address: Address; portal_contract_address: EthAddress; function_tree_root: Field; } - - - -interface OptionallyRevealedData { +export interface OptionallyRevealedData { call_stack_item_hash: Field; function_data: FunctionData; vk_hash: Field; @@ -200,21 +162,18 @@ interface OptionallyRevealedData { called_from_public_l2: boolean; } - -interface PublicDataUpdateRequest { +export interface PublicDataUpdateRequest { leaf_index: Field; old_value: Field; new_value: Field; } - -interface PublicDataRead { +export interface PublicDataRead { leaf_index: Field; value: Field; } - -interface CombinedAccumulatedData { +export interface CombinedAccumulatedData { aggregation_object: AggregationObject; read_requests: Field[]; new_commitments: Field[]; @@ -233,16 +192,12 @@ interface CombinedAccumulatedData { public_data_reads: PublicDataRead[]; } - - - -interface CombinedConstantData { +export interface CombinedConstantData { block_data: HistoricalBlockData; tx_context: TxContext; } - -interface KernelCircuitPublicInputs { +export interface KernelCircuitPublicInputs { end: CombinedAccumulatedData; constants: CombinedConstantData; is_private: boolean; @@ -254,4 +209,4 @@ export interface ReturnType { export interface InputType { input: PrivateKernelInputsInit; -} \ No newline at end of file +} diff --git a/yarn-project/noir-private-kernel/src/types/private_kernel_inner_types.ts b/yarn-project/noir-private-kernel/src/types/private_kernel_inner_types.ts index 4976e359bec3..6004aca216e0 100644 --- a/yarn-project/noir-private-kernel/src/types/private_kernel_inner_types.ts +++ b/yarn-project/noir-private-kernel/src/types/private_kernel_inner_types.ts @@ -2,36 +2,36 @@ /* eslint-disable */ -type Field = number; -type u32 = number; +export type Field = string; +export type u32 = string; -interface AggregationObject { +export interface AggregationObject { } -interface Address { +export interface Address { inner: Field; } -interface EthAddress { +export interface EthAddress { inner: Field; } -interface NewContractData { +export interface NewContractData { contract_address: Address; portal_contract_address: EthAddress; function_tree_root: Field; } -interface FunctionSelector { +export interface FunctionSelector { inner: u32; } -interface FunctionData { +export interface FunctionData { selector: FunctionSelector; is_internal: boolean; is_private: boolean; @@ -40,7 +40,7 @@ interface FunctionData { -interface OptionallyRevealedData { +export interface OptionallyRevealedData { call_stack_item_hash: Field; function_data: FunctionData; vk_hash: Field; @@ -52,20 +52,20 @@ interface OptionallyRevealedData { } -interface PublicDataUpdateRequest { +export interface PublicDataUpdateRequest { leaf_index: Field; old_value: Field; new_value: Field; } -interface PublicDataRead { +export interface PublicDataRead { leaf_index: Field; value: Field; } -interface CombinedAccumulatedData { +export interface CombinedAccumulatedData { aggregation_object: AggregationObject; read_requests: Field[]; new_commitments: Field[]; @@ -85,7 +85,7 @@ interface CombinedAccumulatedData { } -interface Block { +export interface Block { private_data_tree_root: Field; nullifier_tree_root: Field; contract_tree_root: Field; @@ -95,21 +95,21 @@ interface Block { } -interface HistoricalBlockData { +export interface HistoricalBlockData { blocks_tree_root: Field; block: Block; private_kernel_vk_tree_root: Field; } -interface Point { +export interface Point { x: Field; y: Field; } -interface ContractDeploymentData { +export interface ContractDeploymentData { deployer_public_key: Point; constructor_vk_hash: Field; function_tree_root: Field; @@ -118,7 +118,7 @@ interface ContractDeploymentData { } -interface TxContext { +export interface TxContext { is_fee_payment_tx: boolean; is_rebate_payment_tx: boolean; is_contract_deployment_tx: boolean; @@ -128,28 +128,28 @@ interface TxContext { } -interface CombinedConstantData { +export interface CombinedConstantData { block_data: HistoricalBlockData; tx_context: TxContext; } -interface KernelCircuitPublicInputs { +export interface KernelCircuitPublicInputs { end: CombinedAccumulatedData; constants: CombinedConstantData; is_private: boolean; } -interface Proof { +export interface Proof { } -interface VerificationKey { +export interface VerificationKey { } -interface PreviousKernelData { +export interface PreviousKernelData { public_inputs: KernelCircuitPublicInputs; proof: Proof; vk: VerificationKey; @@ -163,7 +163,7 @@ interface PreviousKernelData { -interface CallContext { +export interface CallContext { msg_sender: Address; storage_contract_address: Address; portal_contract_address: EthAddress; @@ -176,7 +176,7 @@ interface CallContext { -interface PrivateCircuitPublicInputs { +export interface PrivateCircuitPublicInputs { call_context: CallContext; args_hash: Field; return_values: Field[]; @@ -199,7 +199,7 @@ interface PrivateCircuitPublicInputs { -interface CallStackItem { +export interface CallStackItem { contract_address: Address; public_inputs: PrivateCircuitPublicInputs; is_execution_request: boolean; @@ -207,21 +207,21 @@ interface CallStackItem { } -interface PrivateCallStackItem { +export interface PrivateCallStackItem { inner: CallStackItem; } -interface MembershipWitness { +export interface MembershipWitness { leaf_index: Field; sibling_path: Field[]; } -interface ReadRequestMembershipWitness { +export interface ReadRequestMembershipWitness { leaf_index: Field; sibling_path: Field[]; is_transient: boolean; @@ -230,7 +230,7 @@ interface ReadRequestMembershipWitness { -interface PrivateCallData { +export interface PrivateCallData { call_stack_item: PrivateCallStackItem; private_call_stack_preimages: PrivateCallStackItem[]; proof: Proof; @@ -243,7 +243,7 @@ interface PrivateCallData { } -interface PrivateKernelInputsInner { +export interface PrivateKernelInputsInner { previous_kernel: PreviousKernelData; private_call: PrivateCallData; } diff --git a/yarn-project/noir-private-kernel/src/types/private_kernel_ordering_types.ts b/yarn-project/noir-private-kernel/src/types/private_kernel_ordering_types.ts index b00af607b671..63709356d9a0 100644 --- a/yarn-project/noir-private-kernel/src/types/private_kernel_ordering_types.ts +++ b/yarn-project/noir-private-kernel/src/types/private_kernel_ordering_types.ts @@ -2,36 +2,36 @@ /* eslint-disable */ -type Field = number; -type u32 = number; +export type Field = string; +export type u32 = string; -interface AggregationObject { +export interface AggregationObject { } -interface Address { +export interface Address { inner: Field; } -interface EthAddress { +export interface EthAddress { inner: Field; } -interface NewContractData { +export interface NewContractData { contract_address: Address; portal_contract_address: EthAddress; function_tree_root: Field; } -interface FunctionSelector { +export interface FunctionSelector { inner: u32; } -interface FunctionData { +export interface FunctionData { selector: FunctionSelector; is_internal: boolean; is_private: boolean; @@ -40,7 +40,7 @@ interface FunctionData { -interface OptionallyRevealedData { +export interface OptionallyRevealedData { call_stack_item_hash: Field; function_data: FunctionData; vk_hash: Field; @@ -52,20 +52,20 @@ interface OptionallyRevealedData { } -interface PublicDataUpdateRequest { +export interface PublicDataUpdateRequest { leaf_index: Field; old_value: Field; new_value: Field; } -interface PublicDataRead { +export interface PublicDataRead { leaf_index: Field; value: Field; } -interface CombinedAccumulatedData { +export interface CombinedAccumulatedData { aggregation_object: AggregationObject; read_requests: Field[]; new_commitments: Field[]; @@ -85,7 +85,7 @@ interface CombinedAccumulatedData { } -interface Block { +export interface Block { private_data_tree_root: Field; nullifier_tree_root: Field; contract_tree_root: Field; @@ -95,21 +95,21 @@ interface Block { } -interface HistoricalBlockData { +export interface HistoricalBlockData { blocks_tree_root: Field; block: Block; private_kernel_vk_tree_root: Field; } -interface Point { +export interface Point { x: Field; y: Field; } -interface ContractDeploymentData { +export interface ContractDeploymentData { deployer_public_key: Point; constructor_vk_hash: Field; function_tree_root: Field; @@ -118,7 +118,7 @@ interface ContractDeploymentData { } -interface TxContext { +export interface TxContext { is_fee_payment_tx: boolean; is_rebate_payment_tx: boolean; is_contract_deployment_tx: boolean; @@ -128,28 +128,28 @@ interface TxContext { } -interface CombinedConstantData { +export interface CombinedConstantData { block_data: HistoricalBlockData; tx_context: TxContext; } -interface KernelCircuitPublicInputs { +export interface KernelCircuitPublicInputs { end: CombinedAccumulatedData; constants: CombinedConstantData; is_private: boolean; } -interface Proof { +export interface Proof { } -interface VerificationKey { +export interface VerificationKey { } -interface PreviousKernelData { +export interface PreviousKernelData { public_inputs: KernelCircuitPublicInputs; proof: Proof; vk: VerificationKey; @@ -158,7 +158,7 @@ interface PreviousKernelData { } -interface PrivateKernelInputsOrdering { +export interface PrivateKernelInputsOrdering { previous_kernel: PreviousKernelData; read_commitment_hints: Field[]; nullifier_commitment_hints: Field[]; @@ -166,7 +166,7 @@ interface PrivateKernelInputsOrdering { -interface FinalAccumulatedData { +export interface FinalAccumulatedData { aggregation_object: AggregationObject; new_commitments: Field[]; new_nullifiers: Field[]; @@ -184,7 +184,7 @@ interface FinalAccumulatedData { -interface KernelCircuitPublicInputsFinal { +export interface KernelCircuitPublicInputsFinal { end: FinalAccumulatedData; constants: CombinedConstantData; is_private: boolean;