Skip to content

Commit a55ebc0

Browse files
nchamovezenovm
andauthored
refactor(aztec-nr): rename get_handshakes to non_interactive variant (#24511)
## Summary - Renames the HandshakeRegistry's `get_handshakes` utility to `get_non_interactive_handshakes`: it only returns handshakes discovered from non-interactive announcement logs, so interactive handshakes (#24473) never appear in it, and the name should say which kind it returns. - Sweeps the rename through the aztec-nr selector constant, the registry's internal reader, the PXE default-authorization allowlist, and tests, and documents the getter's privacy properties (any contract can read a scope's discovered handshakes; ephemeral keys don't reveal the shared secret). - Re-pins the standard contracts, since the registry's artifact changes. Stacked on #24483. Fixes F-769 --------- Co-authored-by: Maxim Vezenov <mvezenov@gmail.com>
1 parent 2e3efb5 commit a55ebc0

9 files changed

Lines changed: 63 additions & 53 deletions

File tree

noir-projects/aztec-nr/aztec/src/messages/delivery/handshake.nr

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ pub global GET_APP_SILOED_SECRETS_SELECTOR: FunctionSelector =
5252
comptime { FunctionSelector::from_signature("get_app_siloed_secrets((Field),(Field))") };
5353
pub global NON_INTERACTIVE_HANDSHAKE_SELECTOR: FunctionSelector =
5454
comptime { FunctionSelector::from_signature("non_interactive_handshake((Field),(Field))") };
55-
pub global GET_HANDSHAKES_SELECTOR: FunctionSelector =
56-
comptime { FunctionSelector::from_signature("get_handshakes((Field),u32)") };
55+
pub global GET_NON_INTERACTIVE_HANDSHAKES_SELECTOR: FunctionSelector =
56+
comptime { FunctionSelector::from_signature("get_non_interactive_handshakes((Field),u32)") };
5757

5858
/// Reads the existing app-siloed handshake secrets for `(sender, recipient)` from the registry.
5959
///
@@ -135,12 +135,12 @@ pub(crate) unconstrained fn get_handshake_secrets(
135135
provided_secrets
136136
}
137137

138-
/// Calls the HandshakeRegistry's `get_handshakes` utility function and deserializes the response.
138+
/// Calls the HandshakeRegistry's `get_non_interactive_handshakes` utility function and deserializes the response.
139139
unconstrained fn fetch_handshake_page(recipient: AztecAddress, page_offset: u32) -> HandshakePage {
140140
let args: [Field; 2] = [recipient.to_field(), page_offset as Field];
141141
let response = call_utility_function(
142142
STANDARD_HANDSHAKE_REGISTRY_ADDRESS,
143-
GET_HANDSHAKES_SELECTOR,
143+
GET_NON_INTERACTIVE_HANDSHAKES_SELECTOR,
144144
args,
145145
);
146146
HandshakePage::deserialize(response)

noir-projects/aztec-nr/aztec/src/standard_addresses.nr

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22
use protocol_types::{address::AztecAddress, traits::FromField};
33

44
pub global STANDARD_AUTH_REGISTRY_ADDRESS: AztecAddress = AztecAddress::from_field(
5-
0x0564d5361fd6d7501baa1706a59bbebd2035d1c2565c9e5daf8f1567da547a23,
5+
0x0bbe366bb57059b03929228f7e886b17210cf268e021608392f58cb8f2574f43,
66
);
77

88
pub global STANDARD_MULTI_CALL_ENTRYPOINT_ADDRESS: AztecAddress = AztecAddress::from_field(
9-
0x126ab69e8161771b52273d00dbf5d7252ef6a92724d15f1ec2dcc967118a0c7b,
9+
0x252e4f53e6bef46e70a37168c52a9eba7501944a40c63f0aa807cf2f823260d9,
1010
);
1111

1212
pub global STANDARD_PUBLIC_CHECKS_ADDRESS: AztecAddress = AztecAddress::from_field(
13-
0x077341cf79b91db9c440c49786fc4d4508ef3ab623c30fa3be7031ffcad4754c,
13+
0x05c207d39f7a51de9de6cfd37ab7764bbc9d0434481c4448fc6ddbeac2f67636,
1414
);
1515

1616
pub global STANDARD_HANDSHAKE_REGISTRY_ADDRESS: AztecAddress = AztecAddress::from_field(
17-
0x2f8592fb5b1620f33d21d9b67a34002f0e5392d93807a684584af388e0d70741,
17+
0x0fe4285eada74ef13ea09468db7fcb69861161276f81f24a99e152e5871c5081,
1818
);

noir-projects/noir-contracts/contracts/standard/handshake_registry_contract/src/main.nr

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ global INTERACTIVE_HANDSHAKE: u8 = 2;
3535
pub contract HandshakeRegistry {
3636
use crate::{
3737
handshake_note::HandshakeNote, INTERACTIVE_HANDSHAKE, NON_INTERACTIVE_HANDSHAKE,
38-
recipient_signature::RecipientSignature, sync::discovered_handshakes::get_all_handshakes,
38+
recipient_signature::RecipientSignature, sync::discovered_handshakes::get_all_discovered_handshakes,
3939
};
4040
use aztec::{
4141
keys::{ecdh_shared_secret::derive_ecdh_shared_secret, ephemeral::generate_positive_ephemeral_key_pair},
@@ -166,12 +166,21 @@ pub contract HandshakeRegistry {
166166
}
167167
}
168168

169-
/// Returns a page of discovered handshakes addressed to `recipient`.
169+
/// Returns a page of discovered non-interactive handshakes addressed to `recipient`.
170+
///
171+
/// Only non-interactive handshakes appear here: they are the ones announced in a log the recipient's sync scan
172+
/// discovers.
170173
///
171174
/// `total_count` is the full list length, so callers can determine whether more pages remain.
175+
///
176+
/// # Privacy
177+
/// PXE authorizes this read for any calling contract without consulting the wallet's `authorizeUtilityCall`
178+
/// hook, so any contract executing for `recipient` can see that account's discovered handshakes: their count and
179+
/// their ephemeral public keys. This does not weaken message secrecy, as deriving the shared secret from an
180+
/// ephemeral key requires the recipient's secret keys.
172181
#[external("utility")]
173-
unconstrained fn get_handshakes(recipient: AztecAddress, page_offset: u32) -> HandshakePage {
174-
let handshakes = get_all_handshakes(self.context.this_address(), recipient);
182+
unconstrained fn get_non_interactive_handshakes(recipient: AztecAddress, page_offset: u32) -> HandshakePage {
183+
let handshakes = get_all_discovered_handshakes(self.context.this_address(), recipient);
175184
let total_count = handshakes.len();
176185
let offset = std::cmp::min(page_offset, total_count);
177186
let page_len = std::cmp::min(MAX_HANDSHAKES_PER_PAGE, total_count - offset);

noir-projects/noir-contracts/contracts/standard/handshake_registry_contract/src/sync/discovered_handshakes.nr

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ use aztec::{
77
};
88

99
/// Fact-collection type id of the per-recipient discovered handshakes populated by [`record_discovered_handshake`]
10-
/// and read by [`get_all_handshakes`]. Each recipient (the fact scope) has a single collection of this type holding
11-
/// one fact per discovered handshake, in discovery order.
10+
/// and read by [`get_all_discovered_handshakes`]. Each recipient (the fact scope) has a single collection of this
11+
/// type holding one fact per discovered handshake, in discovery order.
1212
global DISCOVERED_HANDSHAKES_TYPE_ID: Field = sha256_to_field("HANDSHAKE_REGISTRY::DISCOVERED_HANDSHAKES".as_bytes());
1313

1414
/// Collection id of the singleton discovered-handshakes collection.
@@ -39,11 +39,11 @@ pub(crate) unconstrained fn record_discovered_handshake(
3939
);
4040
}
4141

42-
/// Returns the discovered handshakes for `recipient`.
42+
/// Returns the discovered handshakes for `recipient`; only non-interactive handshakes are ever discovered.
4343
///
4444
/// The order of facts within a collection is not specified, but it is stable, keeping
45-
/// [`HandshakeRegistry::get_handshakes`] pagination consistent across pages.
46-
pub(crate) unconstrained fn get_all_handshakes(
45+
/// [`HandshakeRegistry::get_non_interactive_handshakes`] pagination consistent across pages.
46+
pub(crate) unconstrained fn get_all_discovered_handshakes(
4747
contract_address: AztecAddress,
4848
recipient: AztecAddress,
4949
) -> EphemeralArray<DiscoveredHandshake> {

noir-projects/noir-contracts/contracts/standard/handshake_registry_contract/src/test.nr

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use aztec::{
66
messages::delivery::{
77
constrained_delivery::VALIDATE_HANDSHAKE_SELECTOR,
88
handshake::{
9-
AppSiloedHandshakeSecrets, GET_APP_SILOED_SECRETS_SELECTOR, GET_HANDSHAKES_SELECTOR,
9+
AppSiloedHandshakeSecrets, GET_APP_SILOED_SECRETS_SELECTOR, GET_NON_INTERACTIVE_HANDSHAKES_SELECTOR,
1010
MAX_HANDSHAKES_PER_PAGE, NON_INTERACTIVE_HANDSHAKE_SELECTOR,
1111
},
1212
},
@@ -59,7 +59,7 @@ unconstrained fn selectors_match_the_constrained_delivery_helper() {
5959
assert_eq(registry.get_app_siloed_secrets(sender, recipient).selector, GET_APP_SILOED_SECRETS_SELECTOR);
6060
assert_eq(registry.non_interactive_handshake(sender, recipient).selector, NON_INTERACTIVE_HANDSHAKE_SELECTOR);
6161
assert_eq(registry.validate_handshake(sender, recipient, secrets).selector, VALIDATE_HANDSHAKE_SELECTOR);
62-
assert_eq(registry.get_handshakes(recipient, 0).selector, GET_HANDSHAKES_SELECTOR);
62+
assert_eq(registry.get_non_interactive_handshakes(recipient, 0).selector, GET_NON_INTERACTIVE_HANDSHAKES_SELECTOR);
6363
}
6464

6565
#[test]
@@ -460,7 +460,7 @@ unconstrained fn non_interactive_handshake_is_discovered_by_recipient() {
460460

461461
let returned_secrets = env.call_private(sender, registry.non_interactive_handshake(sender, recipient));
462462

463-
let discovered = env.execute_utility(registry.get_handshakes(recipient, 0));
463+
let discovered = env.execute_utility(registry.get_non_interactive_handshakes(recipient, 0));
464464

465465
assert_eq(discovered.items.len(), 1);
466466
assert_eq(discovered.total_count, 1);
@@ -488,8 +488,8 @@ unconstrained fn handshake_to_one_recipient_not_discovered_by_another() {
488488

489489
let _ = env.call_private(sender, registry.non_interactive_handshake(sender, recipient_a));
490490

491-
let discovered_a = env.execute_utility(registry.get_handshakes(recipient_a, 0));
492-
let discovered_b = env.execute_utility(registry.get_handshakes(recipient_b, 0));
491+
let discovered_a = env.execute_utility(registry.get_non_interactive_handshakes(recipient_a, 0));
492+
let discovered_b = env.execute_utility(registry.get_non_interactive_handshakes(recipient_b, 0));
493493

494494
assert_eq(discovered_a.items.len(), 1);
495495
assert_eq(discovered_b.items.len(), 0);
@@ -502,12 +502,12 @@ unconstrained fn repeated_sync_does_not_refetch_logs() {
502502

503503
let _ = env.call_private(sender, registry.non_interactive_handshake(sender, recipient));
504504

505-
let after_first = env.execute_utility(registry.get_handshakes(recipient, 0));
505+
let after_first = env.execute_utility(registry.get_non_interactive_handshakes(recipient, 0));
506506
assert_eq(after_first.items.len(), 1);
507507

508508
// Mock the log-retrieval oracle so we can assert it is never called on re-sync.
509509
let log_oracle = OracleMock::mock("aztec_utl_getLogsByTagV2");
510-
let _ = env.execute_utility(registry.get_handshakes(recipient, 0));
510+
let _ = env.execute_utility(registry.get_non_interactive_handshakes(recipient, 0));
511511
assert_eq(log_oracle.times_called(), 0);
512512
log_oracle.clear();
513513
}
@@ -519,11 +519,11 @@ unconstrained fn later_handshake_appends_after_cursor_advances() {
519519

520520
let _ = env.call_private(sender, registry.non_interactive_handshake(sender, recipient));
521521

522-
let after_first = env.execute_utility(registry.get_handshakes(recipient, 0));
522+
let after_first = env.execute_utility(registry.get_non_interactive_handshakes(recipient, 0));
523523
assert_eq(after_first.items.len(), 1);
524524

525525
let _ = env.call_private(other_sender, registry.non_interactive_handshake(other_sender, recipient));
526-
let after_second = env.execute_utility(registry.get_handshakes(recipient, 0));
526+
let after_second = env.execute_utility(registry.get_non_interactive_handshakes(recipient, 0));
527527
assert_eq(after_second.items.len(), 2);
528528
}
529529

@@ -536,7 +536,7 @@ unconstrained fn multiple_senders_discovered_for_same_recipient() {
536536
let _ = env.call_private(sender, registry.non_interactive_handshake(sender, recipient));
537537
let _ = env.call_private(other_sender, registry.non_interactive_handshake(other_sender, recipient));
538538

539-
let discovered = env.execute_utility(registry.get_handshakes(recipient, 0));
539+
let discovered = env.execute_utility(registry.get_non_interactive_handshakes(recipient, 0));
540540

541541
assert_eq(discovered.items.len(), 2);
542542
assert(
@@ -546,7 +546,7 @@ unconstrained fn multiple_senders_discovered_for_same_recipient() {
546546
}
547547

548548
#[test]
549-
unconstrained fn get_handshakes_paginates_across_full_pages() {
549+
unconstrained fn get_non_interactive_handshakes_paginates_across_full_pages() {
550550
let (env, registry_address, sender, _, recipient) = setup();
551551
let registry = HandshakeRegistry::at(registry_address);
552552

@@ -555,8 +555,8 @@ unconstrained fn get_handshakes_paginates_across_full_pages() {
555555
let _ = env.call_private(sender, registry.non_interactive_handshake(sender, recipient));
556556
}
557557

558-
let page_0 = env.execute_utility(registry.get_handshakes(recipient, 0));
559-
let page_1 = env.execute_utility(registry.get_handshakes(recipient, MAX_HANDSHAKES_PER_PAGE));
558+
let page_0 = env.execute_utility(registry.get_non_interactive_handshakes(recipient, 0));
559+
let page_1 = env.execute_utility(registry.get_non_interactive_handshakes(recipient, MAX_HANDSHAKES_PER_PAGE));
560560

561561
assert_eq(page_0.items.len(), MAX_HANDSHAKES_PER_PAGE);
562562
assert_eq(page_0.total_count, total_handshakes);
@@ -565,13 +565,13 @@ unconstrained fn get_handshakes_paginates_across_full_pages() {
565565
}
566566

567567
#[test]
568-
unconstrained fn get_handshakes_out_of_bounds_offset_returns_empty() {
568+
unconstrained fn get_non_interactive_handshakes_out_of_bounds_offset_returns_empty() {
569569
let (env, registry_address, sender, _, recipient) = setup();
570570
let registry = HandshakeRegistry::at(registry_address);
571571

572572
let _ = env.call_private(sender, registry.non_interactive_handshake(sender, recipient));
573573

574-
let page = env.execute_utility(registry.get_handshakes(recipient, 999));
574+
let page = env.execute_utility(registry.get_non_interactive_handshakes(recipient, 999));
575575
assert_eq(page.items.len(), 0);
576576
assert_eq(page.total_count, 1);
577577
}
@@ -583,7 +583,7 @@ unconstrained fn rescan_after_cursor_retraction_does_not_duplicate_handshakes()
583583

584584
let _ = env.call_private(sender, registry.non_interactive_handshake(sender, recipient));
585585

586-
let after_first = env.execute_utility(registry.get_handshakes(recipient, 0));
586+
let after_first = env.execute_utility(registry.get_non_interactive_handshakes(recipient, 0));
587587
assert_eq(after_first.items.len(), 1);
588588

589589
// Emulate a reorg that pruned back past every recorded scan but not past the handshake log: scans anchor at the
@@ -593,7 +593,7 @@ unconstrained fn rescan_after_cursor_retraction_does_not_duplicate_handshakes()
593593
env.mine_block();
594594

595595
// With no cursor the rescan covers the full range again; re-recording the surviving handshake is a no-op.
596-
let after_rescan = env.execute_utility(registry.get_handshakes(recipient, 0));
596+
let after_rescan = env.execute_utility(registry.get_non_interactive_handshakes(recipient, 0));
597597
assert_eq(after_rescan.items.len(), 1);
598598
assert_eq(after_rescan.items.get(0).eph_pk.x, after_first.items.get(0).eph_pk.x);
599599
}
@@ -610,7 +610,7 @@ unconstrained fn handshake_fact_originates_at_the_log_block() {
610610
env.mine_block();
611611
env.mine_block();
612612

613-
let discovered = env.execute_utility(registry.get_handshakes(recipient, 0));
613+
let discovered = env.execute_utility(registry.get_non_interactive_handshakes(recipient, 0));
614614
assert_eq(discovered.items.len(), 1);
615615

616616
// Ephemeral arrays are frame-scoped, so read the origins and extract the value inside the registry's context.
1.11 KB
Binary file not shown.

yarn-project/pxe/src/contract_function_simulator/oracle/utility_execution.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -449,8 +449,8 @@ describe('Utility Execution test suite', () => {
449449
});
450450

451451
// Pins the production oracle's default-authorization allowlist for cross-contract utility reads of the
452-
// standard HandshakeRegistry: only get_handshakes and get_app_siloed_secrets are allowed, everything else is
453-
// denied.
452+
// standard HandshakeRegistry: only get_non_interactive_handshakes and get_app_siloed_secrets are allowed,
453+
// everything else is denied.
454454
describe('cross-contract utility authorization', () => {
455455
const prepareNestedUtilityCall = async (
456456
targetContractAddress: AztecAddress,
@@ -493,7 +493,7 @@ describe('Utility Execution test suite', () => {
493493
nestedSimulator = makeNestedSimulator();
494494
utilityExecutionOracle = makeOracle({ simulator: nestedSimulator });
495495
defaultAuthorizedHandshakeRegistryReads = new Map<string, Fr[]>([
496-
['get_handshakes', []],
496+
['get_non_interactive_handshakes', []],
497497
['get_app_siloed_secrets', [Fr.random(), Fr.random()]],
498498
]);
499499
});

yarn-project/pxe/src/contract_function_simulator/oracle/utility_execution_oracle.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1142,10 +1142,11 @@ export class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOra
11421142
}
11431143

11441144
// Registry reads that any contract may issue without an `authorizeUtilityCall` hook. The constrained-delivery
1145-
// library calls these implicitly for the app, and they are safe to default-authorize because the registry siloes
1146-
// every returned secret to `msg_sender`, so a caller only ever learns values siloed to its own address.
1145+
// library calls these implicitly for the app, and they are safe to default-authorize: `get_app_siloed_secrets`
1146+
// siloes every returned secret to `msg_sender`, and `get_non_interactive_handshakes` only exposes ephemeral public
1147+
// keys, from which the shared secret cannot be derived without the recipient's secret keys.
11471148
const STANDARD_HANDSHAKE_REGISTRY_DEFAULT_AUTHORIZED_READ_SIGNATURES = [
1148-
'get_handshakes((Field),u32)',
1149+
'get_non_interactive_handshakes((Field),u32)',
11491150
'get_app_siloed_secrets((Field),(Field))',
11501151
];
11511152

yarn-project/standard-contracts/src/standard_contract_data.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,44 +20,44 @@ export const StandardContractSalt: Record<StandardContractName, Fr> = {
2020
};
2121

2222
export const StandardContractAddress: Record<StandardContractName, AztecAddress> = {
23-
AuthRegistry: AztecAddress.fromStringUnsafe('0x0564d5361fd6d7501baa1706a59bbebd2035d1c2565c9e5daf8f1567da547a23'),
23+
AuthRegistry: AztecAddress.fromStringUnsafe('0x0bbe366bb57059b03929228f7e886b17210cf268e021608392f58cb8f2574f43'),
2424
MultiCallEntrypoint: AztecAddress.fromStringUnsafe(
25-
'0x126ab69e8161771b52273d00dbf5d7252ef6a92724d15f1ec2dcc967118a0c7b',
25+
'0x252e4f53e6bef46e70a37168c52a9eba7501944a40c63f0aa807cf2f823260d9',
2626
),
27-
PublicChecks: AztecAddress.fromStringUnsafe('0x077341cf79b91db9c440c49786fc4d4508ef3ab623c30fa3be7031ffcad4754c'),
27+
PublicChecks: AztecAddress.fromStringUnsafe('0x05c207d39f7a51de9de6cfd37ab7764bbc9d0434481c4448fc6ddbeac2f67636'),
2828
HandshakeRegistry: AztecAddress.fromStringUnsafe(
29-
'0x2f8592fb5b1620f33d21d9b67a34002f0e5392d93807a684584af388e0d70741',
29+
'0x0fe4285eada74ef13ea09468db7fcb69861161276f81f24a99e152e5871c5081',
3030
),
3131
};
3232

3333
export const StandardContractClassId: Record<StandardContractName, Fr> = {
34-
AuthRegistry: Fr.fromString('0x197cba16b38c5408694cec7188b9128e80d247596050e31a0d12249b60b360e1'),
35-
MultiCallEntrypoint: Fr.fromString('0x24e025d7b0d3158d69197dbabf2baf18db0b1dd4ff3c87ec2ed418fecb0f192d'),
36-
PublicChecks: Fr.fromString('0x000a3012fd5d88921976565891e19c0b9a6a753eaf773e9493f47c890089bd08'),
37-
HandshakeRegistry: Fr.fromString('0x20e14f4a6ada38f27144ceedbfbb7417aca6c679ee1ea09b9435886ed7faf3d2'),
34+
AuthRegistry: Fr.fromString('0x2f4a272a86482af67aa5beb9db9ea648080f0e140baf55a0af153421ab19e12d'),
35+
MultiCallEntrypoint: Fr.fromString('0x2b2d3d423944a96cc01b3d332ba25e8a53aa486740d68047ca4df1b1c849a8e5'),
36+
PublicChecks: Fr.fromString('0x1c14245c8afceb64326b033fd1841e78e844124e40c49a36712f57dfffd258d6'),
37+
HandshakeRegistry: Fr.fromString('0x250d9a5696197bc0aaa73bd6fe01b89e33a796d91b18b847cc419e433a5cfaf9'),
3838
};
3939

4040
export const StandardContractClassIdPreimage: Record<
4141
StandardContractName,
4242
{ artifactHash: Fr; privateFunctionsRoot: Fr; publicBytecodeCommitment: Fr }
4343
> = {
4444
AuthRegistry: {
45-
artifactHash: Fr.fromString('0x17bd6a48fb22fb700a16d5767f93e08b2b21bf83c280cb61abe763567179601f'),
45+
artifactHash: Fr.fromString('0x01f4d890c55a73e9164007dfe9833d7fc9daaf29f49886d412188ba02b4c4b81'),
4646
privateFunctionsRoot: Fr.fromString('0x17b584350f4c3ccafd8f688729afb9feab8976114fb40012e9dee65022c072a4'),
4747
publicBytecodeCommitment: Fr.fromString('0x2545f39893766508ce37bb5cea5e4dcab04c6f7f79f3089b1c076876e9d268b2'),
4848
},
4949
MultiCallEntrypoint: {
50-
artifactHash: Fr.fromString('0x13dfb7aaca5d32bb876650f6afa5531d7c2c946f1cf927bde230755017af91d3'),
50+
artifactHash: Fr.fromString('0x158b25c22e41ecc134945b6f7fed7b0d523841a6e0ac78be1bdac989eb1ae6c0'),
5151
privateFunctionsRoot: Fr.fromString('0x0e68dfbb256e80b08b3aef47aca1f2669e97a9c6259787893c1223ac083ad5d5'),
5252
publicBytecodeCommitment: Fr.fromString('0x0ce4c618c3ed7f3a20410e618c06bb701e150af7fe28a3e92f68e7733809f33e'),
5353
},
5454
PublicChecks: {
55-
artifactHash: Fr.fromString('0x212730544c282ed52485a69d91a2d46adb5a5e6cd23e8c26c3abc6de4bcc3714'),
55+
artifactHash: Fr.fromString('0x18fbef2f3a4f54681c07f1eb9474851e43d5dce9a52cf1ebc0ca4bbebb96527f'),
5656
privateFunctionsRoot: Fr.fromString('0x202860adb1b8975971eeaf571aaaa88a27f4035290d58532ae7d60b0dfaad54c'),
5757
publicBytecodeCommitment: Fr.fromString('0x013c4f854a5c87c9daf86c5f9bc07a42c2a061f1d924a5b3564ec7edc8e18cb7'),
5858
},
5959
HandshakeRegistry: {
60-
artifactHash: Fr.fromString('0x01b39b7d8576cbea4e4eae792c4538a710d0ac2ea0361364c57d0e2b4b1a3474'),
60+
artifactHash: Fr.fromString('0x0e781457b14303befa6080e70bcec27e82a0081191063b9128561a4183722c59'),
6161
privateFunctionsRoot: Fr.fromString('0x02a4dba36389845b8ef0108562f7536d3284f07ca678558fc3c3bce3b24ee821'),
6262
publicBytecodeCommitment: Fr.fromString('0x0ce4c618c3ed7f3a20410e618c06bb701e150af7fe28a3e92f68e7733809f33e'),
6363
},

0 commit comments

Comments
 (0)