@aztec/stdlib 0.0.1-commit.4eabbdb → 0.0.1-commit.5358163d3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/dest/abi/decoder.d.ts +1 -1
  2. package/dest/abi/decoder.d.ts.map +1 -1
  3. package/dest/abi/decoder.js +1 -4
  4. package/dest/abi/encoder.d.ts +1 -1
  5. package/dest/abi/encoder.d.ts.map +1 -1
  6. package/dest/abi/encoder.js +9 -5
  7. package/dest/avm/avm.d.ts +300 -300
  8. package/dest/avm/avm_proving_request.d.ts +166 -166
  9. package/dest/avm/revert_code.d.ts +16 -1
  10. package/dest/avm/revert_code.d.ts.map +1 -1
  11. package/dest/avm/revert_code.js +15 -5
  12. package/dest/block/l2_block_stream/l2_block_stream.d.ts +1 -1
  13. package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
  14. package/dest/block/l2_block_stream/l2_block_stream.js +10 -0
  15. package/dest/config/sequencer-config.d.ts +5 -3
  16. package/dest/config/sequencer-config.d.ts.map +1 -1
  17. package/dest/config/sequencer-config.js +7 -0
  18. package/dest/contract/contract_class.d.ts +2 -3
  19. package/dest/contract/contract_class.d.ts.map +1 -1
  20. package/dest/gas/gas_fees.d.ts +1 -1
  21. package/dest/gas/gas_fees.d.ts.map +1 -1
  22. package/dest/gas/gas_fees.js +4 -1
  23. package/dest/ha-signing/config.d.ts +101 -0
  24. package/dest/ha-signing/config.d.ts.map +1 -0
  25. package/dest/ha-signing/config.js +92 -0
  26. package/dest/ha-signing/index.d.ts +3 -0
  27. package/dest/ha-signing/index.d.ts.map +1 -0
  28. package/dest/ha-signing/index.js +2 -0
  29. package/dest/ha-signing/types.d.ts +85 -0
  30. package/dest/ha-signing/types.d.ts.map +1 -0
  31. package/dest/ha-signing/types.js +32 -0
  32. package/dest/interfaces/allowed_element.d.ts +2 -20
  33. package/dest/interfaces/allowed_element.d.ts.map +1 -1
  34. package/dest/interfaces/allowed_element.js +0 -6
  35. package/dest/interfaces/aztec-node-admin.d.ts +13 -27
  36. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  37. package/dest/interfaces/block-builder.d.ts +2 -2
  38. package/dest/interfaces/block-builder.d.ts.map +1 -1
  39. package/dest/interfaces/block-builder.js +1 -1
  40. package/dest/interfaces/configs.d.ts +17 -27
  41. package/dest/interfaces/configs.d.ts.map +1 -1
  42. package/dest/interfaces/configs.js +3 -1
  43. package/dest/interfaces/p2p.d.ts +3 -8
  44. package/dest/interfaces/p2p.d.ts.map +1 -1
  45. package/dest/interfaces/validator.d.ts +9 -26
  46. package/dest/interfaces/validator.d.ts.map +1 -1
  47. package/dest/interfaces/validator.js +3 -2
  48. package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts +3 -3
  49. package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts.map +1 -1
  50. package/dest/kernel/hints/build_note_hash_read_request_hints.js +13 -10
  51. package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts +3 -3
  52. package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts.map +1 -1
  53. package/dest/kernel/hints/build_nullifier_read_request_hints.js +13 -10
  54. package/dest/kernel/hints/build_transient_data_hints.d.ts +5 -2
  55. package/dest/kernel/hints/build_transient_data_hints.d.ts.map +1 -1
  56. package/dest/kernel/hints/build_transient_data_hints.js +9 -3
  57. package/dest/logs/debug_log_store.d.ts +30 -0
  58. package/dest/logs/debug_log_store.d.ts.map +1 -0
  59. package/dest/logs/debug_log_store.js +30 -0
  60. package/dest/logs/extended_directional_app_tagging_secret.d.ts +47 -0
  61. package/dest/logs/extended_directional_app_tagging_secret.d.ts.map +1 -0
  62. package/dest/logs/{directional_app_tagging_secret.js → extended_directional_app_tagging_secret.js} +23 -15
  63. package/dest/logs/index.d.ts +3 -2
  64. package/dest/logs/index.d.ts.map +1 -1
  65. package/dest/logs/index.js +2 -1
  66. package/dest/logs/pre_tag.d.ts +16 -11
  67. package/dest/logs/pre_tag.d.ts.map +1 -1
  68. package/dest/logs/pre_tag.js +2 -2
  69. package/dest/logs/siloed_tag.d.ts +5 -3
  70. package/dest/logs/siloed_tag.d.ts.map +1 -1
  71. package/dest/logs/siloed_tag.js +6 -1
  72. package/dest/logs/tag.js +1 -1
  73. package/dest/p2p/attestation_utils.d.ts +11 -1
  74. package/dest/p2p/attestation_utils.d.ts.map +1 -1
  75. package/dest/p2p/attestation_utils.js +45 -0
  76. package/dest/p2p/block_proposal.d.ts +2 -2
  77. package/dest/p2p/block_proposal.d.ts.map +1 -1
  78. package/dest/p2p/block_proposal.js +1 -1
  79. package/dest/p2p/checkpoint_proposal.d.ts +2 -2
  80. package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
  81. package/dest/p2p/checkpoint_proposal.js +1 -1
  82. package/dest/p2p/client_type.d.ts +2 -5
  83. package/dest/p2p/client_type.d.ts.map +1 -1
  84. package/dest/p2p/client_type.js +0 -7
  85. package/dest/p2p/index.d.ts +1 -2
  86. package/dest/p2p/index.d.ts.map +1 -1
  87. package/dest/p2p/index.js +0 -1
  88. package/dest/p2p/topic_type.d.ts +3 -4
  89. package/dest/p2p/topic_type.d.ts.map +1 -1
  90. package/dest/p2p/topic_type.js +7 -24
  91. package/dest/slashing/tally.d.ts +8 -2
  92. package/dest/slashing/tally.d.ts.map +1 -1
  93. package/dest/slashing/tally.js +21 -2
  94. package/dest/tests/factories.d.ts +3 -1
  95. package/dest/tests/factories.d.ts.map +1 -1
  96. package/dest/tests/factories.js +8 -0
  97. package/dest/tests/mocks.d.ts +2 -2
  98. package/dest/tests/mocks.d.ts.map +1 -1
  99. package/dest/tests/mocks.js +5 -5
  100. package/dest/tx/public_simulation_output.d.ts +4 -2
  101. package/dest/tx/public_simulation_output.d.ts.map +1 -1
  102. package/dest/tx/public_simulation_output.js +7 -3
  103. package/dest/tx/tx_receipt.d.ts +16 -2
  104. package/dest/tx/tx_receipt.d.ts.map +1 -1
  105. package/dest/tx/tx_receipt.js +11 -3
  106. package/dest/tx/validator/error_texts.d.ts +2 -1
  107. package/dest/tx/validator/error_texts.d.ts.map +1 -1
  108. package/dest/tx/validator/error_texts.js +1 -0
  109. package/package.json +10 -10
  110. package/src/abi/decoder.ts +1 -4
  111. package/src/abi/encoder.ts +8 -5
  112. package/src/avm/revert_code.ts +15 -0
  113. package/src/block/l2_block_stream/l2_block_stream.ts +21 -0
  114. package/src/config/sequencer-config.ts +10 -2
  115. package/src/contract/contract_class.ts +3 -3
  116. package/src/gas/gas_fees.ts +7 -1
  117. package/src/ha-signing/config.ts +149 -0
  118. package/src/ha-signing/index.ts +18 -0
  119. package/src/ha-signing/types.ts +112 -0
  120. package/src/interfaces/allowed_element.ts +1 -5
  121. package/src/interfaces/block-builder.ts +5 -2
  122. package/src/interfaces/configs.ts +10 -4
  123. package/src/interfaces/p2p.ts +2 -13
  124. package/src/interfaces/validator.ts +4 -3
  125. package/src/kernel/hints/build_note_hash_read_request_hints.ts +14 -18
  126. package/src/kernel/hints/build_nullifier_read_request_hints.ts +15 -18
  127. package/src/kernel/hints/build_transient_data_hints.ts +17 -2
  128. package/src/logs/debug_log_store.ts +54 -0
  129. package/src/logs/{directional_app_tagging_secret.ts → extended_directional_app_tagging_secret.ts} +24 -16
  130. package/src/logs/index.ts +2 -1
  131. package/src/logs/pre_tag.ts +5 -5
  132. package/src/logs/siloed_tag.ts +8 -2
  133. package/src/logs/tag.ts +1 -1
  134. package/src/p2p/attestation_utils.ts +56 -0
  135. package/src/p2p/block_proposal.ts +1 -1
  136. package/src/p2p/checkpoint_proposal.ts +1 -1
  137. package/src/p2p/client_type.ts +0 -6
  138. package/src/p2p/index.ts +0 -1
  139. package/src/p2p/topic_type.ts +8 -15
  140. package/src/slashing/tally.ts +18 -3
  141. package/src/tests/factories.ts +9 -0
  142. package/src/tests/mocks.ts +7 -3
  143. package/src/tx/public_simulation_output.ts +4 -0
  144. package/src/tx/tx_receipt.ts +10 -0
  145. package/src/tx/validator/error_texts.ts +1 -0
  146. package/dest/logs/directional_app_tagging_secret.d.ts +0 -40
  147. package/dest/logs/directional_app_tagging_secret.d.ts.map +0 -1
@@ -4,7 +4,8 @@ import type { ZodFor } from '@aztec/foundation/schemas';
4
4
  import type { AztecAddress } from '../aztec-address/index.js';
5
5
  import { computeSiloedPrivateLogFirstField } from '../hash/hash.js';
6
6
  import { schemas } from '../schemas/schemas.js';
7
- import type { Tag } from './tag.js';
7
+ import type { PreTag } from './pre_tag.js';
8
+ import { Tag } from './tag.js';
8
9
 
9
10
  /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */
10
11
 
@@ -21,7 +22,12 @@ export interface SiloedTag {
21
22
  export class SiloedTag {
22
23
  constructor(public readonly value: Fr) {}
23
24
 
24
- static async compute(tag: Tag, app: AztecAddress): Promise<SiloedTag> {
25
+ static async compute(preTag: PreTag): Promise<SiloedTag> {
26
+ const tag = await Tag.compute(preTag);
27
+ return SiloedTag.computeFromTagAndApp(tag, preTag.extendedSecret.app);
28
+ }
29
+
30
+ static async computeFromTagAndApp(tag: Tag, app: AztecAddress): Promise<SiloedTag> {
25
31
  const siloedTag = await computeSiloedPrivateLogFirstField(app, tag.value);
26
32
  return new SiloedTag(siloedTag);
27
33
  }
package/src/logs/tag.ts CHANGED
@@ -20,7 +20,7 @@ export class Tag {
20
20
  constructor(public readonly value: Fr) {}
21
21
 
22
22
  static async compute(preTag: PreTag): Promise<Tag> {
23
- const tag = await poseidon2Hash([preTag.secret.value, preTag.index]);
23
+ const tag = await poseidon2Hash([preTag.extendedSecret.secret, preTag.index]);
24
24
  return new Tag(tag);
25
25
  }
26
26
 
@@ -33,3 +33,59 @@ export function orderAttestations(
33
33
 
34
34
  return orderedAttestations;
35
35
  }
36
+
37
+ /**
38
+ * Trims attestations to the minimum required number to save L1 calldata gas.
39
+ * Each signature costs 65 bytes of calldata vs 20 bytes for just an address.
40
+ *
41
+ * Priority order for keeping attestations:
42
+ * 1. The proposer's attestation (required by L1 contract - MissingProposerSignature revert)
43
+ * 2. Attestations from the local node's validator keys
44
+ * 3. Remaining attestations filled to reach the required count
45
+ */
46
+ export function trimAttestations(
47
+ attestations: CheckpointAttestation[],
48
+ required: number,
49
+ proposerAddress: EthAddress,
50
+ localAddresses: EthAddress[],
51
+ ): CheckpointAttestation[] {
52
+ if (attestations.length <= required) {
53
+ return attestations;
54
+ }
55
+
56
+ const proposerAttestation: CheckpointAttestation[] = [];
57
+ const localAttestations: CheckpointAttestation[] = [];
58
+ const otherAttestations: CheckpointAttestation[] = [];
59
+
60
+ for (const attestation of attestations) {
61
+ const sender = attestation.getSender();
62
+ if (!sender) {
63
+ continue;
64
+ }
65
+ if (sender.equals(proposerAddress)) {
66
+ proposerAttestation.push(attestation);
67
+ } else if (localAddresses.some(addr => addr.equals(sender))) {
68
+ localAttestations.push(attestation);
69
+ } else {
70
+ otherAttestations.push(attestation);
71
+ }
72
+ }
73
+
74
+ const result: CheckpointAttestation[] = [...proposerAttestation];
75
+
76
+ for (const att of localAttestations) {
77
+ if (result.length >= required) {
78
+ break;
79
+ }
80
+ result.push(att);
81
+ }
82
+
83
+ for (const att of otherAttestations) {
84
+ if (result.length >= required) {
85
+ break;
86
+ }
87
+ result.push(att);
88
+ }
89
+
90
+ return result;
91
+ }
@@ -6,11 +6,11 @@ import { Fr } from '@aztec/foundation/curves/bn254';
6
6
  import type { EthAddress } from '@aztec/foundation/eth-address';
7
7
  import { Signature } from '@aztec/foundation/eth-signature';
8
8
  import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
9
- import { DutyType, type SigningContext } from '@aztec/validator-ha-signer/types';
10
9
 
11
10
  import type { L2Block } from '../block/l2_block.js';
12
11
  import type { L2BlockInfo } from '../block/l2_block_info.js';
13
12
  import { MAX_TXS_PER_BLOCK } from '../deserialization/index.js';
13
+ import { DutyType, type SigningContext } from '../ha-signing/index.js';
14
14
  import { BlockHeader } from '../tx/block_header.js';
15
15
  import { TxHash } from '../tx/index.js';
16
16
  import type { Tx } from '../tx/tx.js';
@@ -6,10 +6,10 @@ import { Fr } from '@aztec/foundation/curves/bn254';
6
6
  import type { EthAddress } from '@aztec/foundation/eth-address';
7
7
  import { Signature } from '@aztec/foundation/eth-signature';
8
8
  import { BufferReader, serializeSignedBigInt, serializeToBuffer } from '@aztec/foundation/serialize';
9
- import { DutyType, type SigningContext } from '@aztec/validator-ha-signer/types';
10
9
 
11
10
  import type { L2BlockInfo } from '../block/l2_block_info.js';
12
11
  import { MAX_TXS_PER_BLOCK } from '../deserialization/index.js';
12
+ import { DutyType, type SigningContext } from '../ha-signing/index.js';
13
13
  import { CheckpointHeader } from '../rollup/checkpoint_header.js';
14
14
  import { BlockHeader } from '../tx/block_header.js';
15
15
  import { TxHash } from '../tx/index.js';
@@ -1,6 +0,0 @@
1
- export enum P2PClientType {
2
- // Full p2p clients will subscribe to all gossip topics
3
- Full,
4
- // Prove p2p clients will only subscribe to transaction and proving topics
5
- Prover,
6
- }
package/src/p2p/index.ts CHANGED
@@ -8,7 +8,6 @@ export * from './interface.js';
8
8
  export * from './signature_utils.js';
9
9
  export * from './signed_txs.js';
10
10
  export * from './topic_type.js';
11
- export * from './client_type.js';
12
11
  export * from './message_validator.js';
13
12
  export * from './peer_error.js';
14
13
  export * from './constants.js';
@@ -1,5 +1,3 @@
1
- import { P2PClientType } from './client_type.js';
2
-
3
1
  /**
4
2
  * Creates the topic channel identifier string from a given topic type
5
3
  */
@@ -27,19 +25,14 @@ export enum TopicType {
27
25
  checkpoint_attestation = 'checkpoint_attestation',
28
26
  }
29
27
 
30
- export function getTopicTypeForClientType(clientType: P2PClientType) {
31
- if (clientType === P2PClientType.Full) {
32
- return [TopicType.tx, TopicType.block_proposal, TopicType.checkpoint_proposal, TopicType.checkpoint_attestation];
33
- } else if (clientType === P2PClientType.Prover) {
34
- return [TopicType.tx, TopicType.block_proposal, TopicType.checkpoint_proposal];
35
- } else {
36
- const _: never = clientType;
37
- return [TopicType.tx];
38
- }
39
- }
40
-
41
- export function getTopicsForClientAndConfig(clientType: P2PClientType, disableTransactions: boolean) {
42
- const topics = getTopicTypeForClientType(clientType);
28
+ /** Returns all gossip topics, optionally filtering out transactions. */
29
+ export function getTopicsForConfig(disableTransactions: boolean) {
30
+ const topics = [
31
+ TopicType.tx,
32
+ TopicType.block_proposal,
33
+ TopicType.checkpoint_proposal,
34
+ TopicType.checkpoint_attestation,
35
+ ];
43
36
  if (disableTransactions) {
44
37
  return topics.filter(topic => topic !== TopicType.tx);
45
38
  }
@@ -12,6 +12,8 @@ import type { Offense, ValidatorSlashVote } from './types.js';
12
12
  * @param committees - Array of committees (each containing array of validator addresses)
13
13
  * @param epochsForCommittees - Array of epochs corresponding to each committee
14
14
  * @param settings - Settings including slashingAmounts and optional validator override lists
15
+ * @param settings.maxSlashedValidators - If set, limits the total number of [validator, epoch] pairs
16
+ * with non-zero votes.
15
17
  * @returns Array of ValidatorSlashVote, where each vote is how many slash units the validator in that position should be slashed
16
18
  */
17
19
  export function getSlashConsensusVotesFromOffenses(
@@ -22,9 +24,10 @@ export function getSlashConsensusVotesFromOffenses(
22
24
  slashingAmounts: [bigint, bigint, bigint];
23
25
  epochDuration: number;
24
26
  targetCommitteeSize: number;
27
+ maxSlashedValidators?: number;
25
28
  },
26
- ): ValidatorSlashVote[] {
27
- const { slashingAmounts, targetCommitteeSize } = settings;
29
+ ): { votes: ValidatorSlashVote[]; truncatedCount: number } {
30
+ const { slashingAmounts, targetCommitteeSize, maxSlashedValidators } = settings;
28
31
 
29
32
  if (committees.length !== epochsForCommittees.length) {
30
33
  throw new Error('committees and epochsForCommittees must have the same length');
@@ -53,7 +56,19 @@ export function getSlashConsensusVotesFromOffenses(
53
56
  return padArrayEnd(votes, 0, targetCommitteeSize);
54
57
  });
55
58
 
56
- return votes;
59
+ // if a cap is set, zero out the lowest-vote [validator, epoch] pairs so that the most severe slashes stay.
60
+ if (maxSlashedValidators === undefined) {
61
+ return { votes, truncatedCount: 0 };
62
+ }
63
+
64
+ const nonZeroByDescendingVote = [...votes.entries()].filter(([, vote]) => vote > 0).sort(([, a], [, b]) => b - a);
65
+
66
+ const toTruncate = nonZeroByDescendingVote.slice(maxSlashedValidators);
67
+ for (const [idx] of toTruncate) {
68
+ votes[idx] = 0;
69
+ }
70
+
71
+ return { votes, truncatedCount: toTruncate.length };
57
72
  }
58
73
 
59
74
  /** Returns the slash vote for the given amount to slash. */
@@ -128,6 +128,7 @@ import {
128
128
  PublicCallRequestArrayLengths,
129
129
  } from '../kernel/public_call_request.js';
130
130
  import { PublicKeys, computeAddress } from '../keys/index.js';
131
+ import { ExtendedDirectionalAppTaggingSecret } from '../logs/extended_directional_app_tagging_secret.js';
131
132
  import { ContractClassLog, ContractClassLogFields } from '../logs/index.js';
132
133
  import { PrivateLog } from '../logs/private_log.js';
133
134
  import { FlatPublicLogs, PublicLog } from '../logs/public_log.js';
@@ -1757,3 +1758,11 @@ export function makeL2Tips(
1757
1758
  },
1758
1759
  };
1759
1760
  }
1761
+
1762
+ export async function randomExtendedDirectionalAppTaggingSecret(): Promise<ExtendedDirectionalAppTaggingSecret> {
1763
+ const resolvedApp = await AztecAddress.random();
1764
+ // Using the fromString method like this is messy as it leaks the underlying serialization format but I don't want to
1765
+ // expose the type's constructor just for tests since in prod the secret is always constructed via compute. Also this
1766
+ // method is tested in extended_directional_app_tagging_secret.test.ts hence all should be fine.
1767
+ return ExtendedDirectionalAppTaggingSecret.fromString(`${Fr.random().toString()}:${resolvedApp.toString()}`);
1768
+ }
@@ -1,10 +1,11 @@
1
1
  import {
2
- FIXED_DA_GAS,
3
- FIXED_L2_GAS,
4
2
  MAX_ENQUEUED_CALLS_PER_TX,
5
3
  MAX_NULLIFIERS_PER_TX,
6
4
  MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
7
5
  MAX_TX_LIFETIME,
6
+ PRIVATE_TX_L2_GAS_OVERHEAD,
7
+ PUBLIC_TX_L2_GAS_OVERHEAD,
8
+ TX_DA_GAS_OVERHEAD,
8
9
  } from '@aztec/constants';
9
10
  import { type FieldsOf, makeTuple } from '@aztec/foundation/array';
10
11
  import { BlockNumber, CheckpointNumber, IndexWithinCheckpoint, SlotNumber } from '@aztec/foundation/branded-types';
@@ -205,8 +206,11 @@ export async function mockProcessedTx({
205
206
  feePayer,
206
207
  feePaymentPublicDataWrite,
207
208
  // The default gasUsed is the tx overhead.
208
- gasUsed = Gas.from({ daGas: FIXED_DA_GAS, l2Gas: FIXED_L2_GAS }),
209
209
  privateOnly = false,
210
+ gasUsed = Gas.from({
211
+ daGas: TX_DA_GAS_OVERHEAD,
212
+ l2Gas: privateOnly ? PRIVATE_TX_L2_GAS_OVERHEAD : PUBLIC_TX_L2_GAS_OVERHEAD,
213
+ }),
210
214
  avmAccumulatedData,
211
215
  ...mockTxOpts
212
216
  }: {
@@ -7,6 +7,7 @@ import { z } from 'zod';
7
7
  import { SimulationError } from '../errors/simulation_error.js';
8
8
  import { Gas } from '../gas/gas.js';
9
9
  import type { GasUsed } from '../gas/gas_used.js';
10
+ import { DebugLog } from '../logs/debug_log.js';
10
11
  import { NullishToUndefined } from '../schemas/schemas.js';
11
12
  import { TxEffect } from '../tx/tx_effect.js';
12
13
  import { GlobalVariables } from './global_variables.js';
@@ -71,6 +72,7 @@ export class PublicSimulationOutput {
71
72
  public txEffect: TxEffect,
72
73
  public publicReturnValues: NestedProcessReturnValues[],
73
74
  public gasUsed: GasUsed,
75
+ public debugLogs: DebugLog[] = [],
74
76
  ) {}
75
77
 
76
78
  static get schema(): ZodFor<PublicSimulationOutput> {
@@ -86,6 +88,7 @@ export class PublicSimulationOutput {
86
88
  publicGas: Gas.schema,
87
89
  billedGas: Gas.schema,
88
90
  }),
91
+ debugLogs: z.array(DebugLog.schema).default([]),
89
92
  })
90
93
  .transform(
91
94
  fields =>
@@ -95,6 +98,7 @@ export class PublicSimulationOutput {
95
98
  fields.txEffect,
96
99
  fields.publicReturnValues,
97
100
  fields.gasUsed,
101
+ fields.debugLogs,
98
102
  ),
99
103
  );
100
104
  }
@@ -4,6 +4,7 @@ import { z } from 'zod';
4
4
 
5
5
  import { RevertCode } from '../avm/revert_code.js';
6
6
  import { BlockHash } from '../block/block_hash.js';
7
+ import { DebugLog } from '../logs/debug_log.js';
7
8
  import { type ZodFor, schemas } from '../schemas/schemas.js';
8
9
  import { TxHash } from './tx_hash.js';
9
10
 
@@ -57,6 +58,12 @@ export class TxReceipt {
57
58
  public blockHash?: BlockHash,
58
59
  /** The block number in which the transaction was included. */
59
60
  public blockNumber?: BlockNumber,
61
+ /**
62
+ * Debug logs collected during public function execution. Served only when the node is in test mode and placed on
63
+ * the receipt only because it's a convenient place for it (the logs are printed out by the wallet when a mined
64
+ * tx receipt is obtained).
65
+ */
66
+ public debugLogs?: DebugLog[],
60
67
  ) {}
61
68
 
62
69
  /** Returns true if the transaction was executed successfully. */
@@ -103,6 +110,7 @@ export class TxReceipt {
103
110
  blockHash: BlockHash.schema.optional(),
104
111
  blockNumber: BlockNumberSchema.optional(),
105
112
  transactionFee: schemas.BigInt.optional(),
113
+ debugLogs: z.array(DebugLog.schema).optional(),
106
114
  })
107
115
  .transform(fields => TxReceipt.from(fields));
108
116
  }
@@ -115,6 +123,7 @@ export class TxReceipt {
115
123
  transactionFee?: bigint;
116
124
  blockHash?: BlockHash;
117
125
  blockNumber?: BlockNumber;
126
+ debugLogs?: DebugLog[];
118
127
  }) {
119
128
  return new TxReceipt(
120
129
  fields.txHash,
@@ -124,6 +133,7 @@ export class TxReceipt {
124
133
  fields.transactionFee,
125
134
  fields.blockHash,
126
135
  fields.blockNumber,
136
+ fields.debugLogs,
127
137
  );
128
138
  }
129
139
 
@@ -6,6 +6,7 @@ export const TX_ERROR_GAS_LIMIT_TOO_HIGH = 'Gas limit is higher than the amount
6
6
 
7
7
  // Phases
8
8
  export const TX_ERROR_SETUP_FUNCTION_NOT_ALLOWED = 'Setup function not on allow list';
9
+ export const TX_ERROR_SETUP_FUNCTION_UNKNOWN_CONTRACT = 'Setup function targets unknown contract';
9
10
 
10
11
  // Nullifiers
11
12
  export const TX_ERROR_DUPLICATE_NULLIFIER_IN_TX = 'Duplicate nullifier in tx';
@@ -1,40 +0,0 @@
1
- import { type Fq, Fr } from '@aztec/foundation/curves/bn254';
2
- import { z } from 'zod';
3
- import type { AztecAddress } from '../aztec-address/index.js';
4
- import type { CompleteAddress } from '../contract/complete_address.js';
5
- /**
6
- * Directional application tagging secret used for log tagging.
7
- *
8
- * "Directional" because the derived secret is bound to the recipient
9
- * address: A→B differs from B→A even with the same participants and app.
10
- *
11
- * Note: It's a bit unfortunate that this type resides in `stdlib` as the rest of the tagging functionality resides
12
- * in `pxe/src/tagging`. We need to use this type in `PreTag` that in turn is used by other types
13
- * in stdlib hence there doesn't seem to be a good way around this.
14
- */
15
- export declare class DirectionalAppTaggingSecret {
16
- readonly value: Fr;
17
- private constructor();
18
- /**
19
- * Derives shared tagging secret and from that, the app address and recipient derives the directional app tagging
20
- * secret.
21
- *
22
- * @param localAddress - The complete address of entity A in the shared tagging secret derivation scheme
23
- * @param localIvsk - The incoming viewing secret key of entity A
24
- * @param externalAddress - The address of entity B in the shared tagging secret derivation scheme
25
- * @param app - Contract address to silo the secret to
26
- * @param recipient - Recipient of the log. Defines the "direction of the secret".
27
- * @returns The secret that can be used along with an index to compute a tag to be included in a log.
28
- */
29
- static compute(localAddress: CompleteAddress, localIvsk: Fq, externalAddress: AztecAddress, app: AztecAddress, recipient: AztecAddress): Promise<DirectionalAppTaggingSecret>;
30
- toString(): string;
31
- static fromString(str: string): DirectionalAppTaggingSecret;
32
- }
33
- export declare const DirectionalAppTaggingSecretSchema: z.ZodObject<{
34
- value: z.ZodType<Fr, any, string>;
35
- }, "strip", z.ZodTypeAny, {
36
- value: Fr;
37
- }, {
38
- value: string;
39
- }>;
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9uYWxfYXBwX3RhZ2dpbmdfc2VjcmV0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9ncy9kaXJlY3Rpb25hbF9hcHBfdGFnZ2luZ19zZWNyZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRzdELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHdkU7Ozs7Ozs7OztHQVNHO0FBQ0gscUJBQWEsMkJBQTJCO2FBQ0YsS0FBSyxFQUFFLEVBQUU7SUFBN0MsT0FBTyxlQUEwQztJQUVqRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsT0FBYSxPQUFPLENBQ2xCLFlBQVksRUFBRSxlQUFlLEVBQzdCLFNBQVMsRUFBRSxFQUFFLEVBQ2IsZUFBZSxFQUFFLFlBQVksRUFDN0IsR0FBRyxFQUFFLFlBQVksRUFDakIsU0FBUyxFQUFFLFlBQVksR0FDdEIsT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBTXRDO0lBRUQsUUFBUSxJQUFJLE1BQU0sQ0FFakI7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxNQUFNLEdBQUcsMkJBQTJCLENBRTFEO0NBQ0Y7QUFvQkQsZUFBTyxNQUFNLGlDQUFpQzs7Ozs7O0VBRTVDLENBQUMifQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"directional_app_tagging_secret.d.ts","sourceRoot":"","sources":["../../src/logs/directional_app_tagging_secret.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAG7D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAGvE;;;;;;;;;GASG;AACH,qBAAa,2BAA2B;aACF,KAAK,EAAE,EAAE;IAA7C,OAAO,eAA0C;IAEjD;;;;;;;;;;OAUG;IACH,OAAa,OAAO,CAClB,YAAY,EAAE,eAAe,EAC7B,SAAS,EAAE,EAAE,EACb,eAAe,EAAE,YAAY,EAC7B,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,YAAY,GACtB,OAAO,CAAC,2BAA2B,CAAC,CAMtC;IAED,QAAQ,IAAI,MAAM,CAEjB;IAED,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,2BAA2B,CAE1D;CACF;AAoBD,eAAO,MAAM,iCAAiC;;;;;;EAE5C,CAAC"}