@aztec/stdlib 4.0.0-devnet.1-patch.1 → 4.0.0-devnet.2-patch.0
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.
- package/dest/auth_witness/auth_witness.js +3 -3
- package/dest/block/block_data.d.ts +52 -0
- package/dest/block/block_data.d.ts.map +1 -0
- package/dest/block/block_data.js +12 -0
- package/dest/block/index.d.ts +2 -1
- package/dest/block/index.d.ts.map +1 -1
- package/dest/block/index.js +1 -0
- package/dest/block/l2_block_source.d.ts +20 -1
- package/dest/block/l2_block_source.d.ts.map +1 -1
- package/dest/checkpoint/checkpoint.d.ts +21 -7
- package/dest/checkpoint/checkpoint.d.ts.map +1 -1
- package/dest/checkpoint/checkpoint.js +24 -13
- package/dest/checkpoint/checkpoint_data.d.ts +120 -0
- package/dest/checkpoint/checkpoint_data.d.ts.map +1 -0
- package/dest/checkpoint/checkpoint_data.js +26 -0
- package/dest/checkpoint/index.d.ts +2 -1
- package/dest/checkpoint/index.d.ts.map +1 -1
- package/dest/checkpoint/index.js +1 -0
- package/dest/checkpoint/published_checkpoint.d.ts +17 -2
- package/dest/checkpoint/published_checkpoint.d.ts.map +1 -1
- package/dest/checkpoint/published_checkpoint.js +1 -2
- package/dest/contract/contract_address.js +4 -4
- package/dest/contract/contract_class_id.d.ts +1 -1
- package/dest/contract/contract_class_id.d.ts.map +1 -1
- package/dest/contract/contract_class_id.js +5 -4
- package/dest/contract/private_function.js +2 -2
- package/dest/file-store/local.d.ts +3 -3
- package/dest/file-store/local.d.ts.map +1 -1
- package/dest/file-store/local.js +13 -4
- package/dest/file-store/s3.d.ts +1 -1
- package/dest/file-store/s3.d.ts.map +1 -1
- package/dest/file-store/s3.js +11 -3
- package/dest/hash/hash.d.ts +2 -1
- package/dest/hash/hash.d.ts.map +1 -1
- package/dest/hash/hash.js +16 -10
- package/dest/hash/map_slot.js +2 -2
- package/dest/interfaces/archiver.d.ts +1 -1
- package/dest/interfaces/archiver.d.ts.map +1 -1
- package/dest/interfaces/archiver.js +5 -0
- package/dest/interfaces/aztec-node-admin.d.ts +27 -2
- package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
- package/dest/interfaces/aztec-node-admin.js +9 -3
- package/dest/interfaces/aztec-node.d.ts +1 -1
- package/dest/interfaces/block-builder.d.ts +2 -2
- package/dest/interfaces/block-builder.d.ts.map +1 -1
- package/dest/interfaces/configs.d.ts +12 -2
- package/dest/interfaces/configs.d.ts.map +1 -1
- package/dest/interfaces/configs.js +3 -1
- package/dest/interfaces/merkle_tree_operations.d.ts +2 -2
- package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
- package/dest/interfaces/proving-job.d.ts +2 -2
- package/dest/interfaces/validator.d.ts +2 -2
- package/dest/interfaces/validator.d.ts.map +1 -1
- package/dest/kernel/hints/index.d.ts +2 -2
- package/dest/kernel/hints/index.js +2 -2
- package/dest/kernel/hints/key_validation_request_and_separator.d.ts +24 -0
- package/dest/kernel/hints/key_validation_request_and_separator.d.ts.map +1 -0
- package/dest/kernel/hints/{key_validation_request_and_generator.js → key_validation_request_and_separator.js} +12 -15
- package/dest/kernel/hints/{scoped_key_validation_request_and_generator.d.ts → scoped_key_validation_request_and_separator.d.ts} +8 -8
- package/dest/kernel/hints/{scoped_key_validation_request_and_generator.d.ts.map → scoped_key_validation_request_and_separator.d.ts.map} +1 -1
- package/dest/kernel/hints/{scoped_key_validation_request_and_generator.js → scoped_key_validation_request_and_separator.js} +6 -6
- package/dest/kernel/private_circuit_public_inputs.d.ts +9 -9
- package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_circuit_public_inputs.js +16 -16
- package/dest/kernel/private_kernel_circuit_public_inputs.d.ts +3 -3
- package/dest/kernel/private_kernel_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_circuit_public_inputs.js +4 -4
- package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts +3 -3
- package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_tail_circuit_private_inputs.js +4 -4
- package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts +3 -3
- package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_tail_circuit_public_inputs.js +7 -7
- package/dest/kernel/private_to_public_kernel_circuit_public_inputs.d.ts +3 -3
- package/dest/kernel/private_to_public_kernel_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_to_public_kernel_circuit_public_inputs.js +7 -7
- package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts +3 -3
- package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.js +7 -7
- package/dest/kernel/private_validation_requests.d.ts +3 -3
- package/dest/kernel/private_validation_requests.js +9 -9
- package/dest/keys/derivation.js +8 -8
- package/dest/keys/key_types.d.ts +3 -3
- package/dest/keys/key_types.d.ts.map +1 -1
- package/dest/keys/public_keys.js +2 -2
- package/dest/keys/utils.js +5 -5
- package/dest/logs/private_log.d.ts +2 -2
- package/dest/logs/private_log.d.ts.map +1 -1
- package/dest/logs/siloed_tag.d.ts +1 -1
- package/dest/logs/siloed_tag.d.ts.map +1 -1
- package/dest/logs/siloed_tag.js +2 -6
- package/dest/note/index.d.ts +1 -2
- package/dest/note/index.d.ts.map +1 -1
- package/dest/note/index.js +0 -1
- package/dest/p2p/block_proposal.d.ts +1 -1
- package/dest/p2p/block_proposal.d.ts.map +1 -1
- package/dest/p2p/block_proposal.js +1 -3
- package/dest/p2p/checkpoint_attestation.d.ts +2 -1
- package/dest/p2p/checkpoint_attestation.d.ts.map +1 -1
- package/dest/p2p/checkpoint_attestation.js +1 -1
- package/dest/p2p/checkpoint_proposal.d.ts +10 -5
- package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
- package/dest/p2p/checkpoint_proposal.js +20 -15
- package/dest/p2p/consensus_payload.d.ts +12 -3
- package/dest/p2p/consensus_payload.d.ts.map +1 -1
- package/dest/p2p/consensus_payload.js +22 -15
- package/dest/rollup/checkpoint_header.d.ts +2 -2
- package/dest/rollup/checkpoint_header.js +2 -2
- package/dest/tests/factories.js +11 -11
- package/dest/tests/mocks.d.ts +4 -1
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +14 -9
- package/dest/trees/public_data_leaf.d.ts +2 -1
- package/dest/trees/public_data_leaf.d.ts.map +1 -1
- package/dest/trees/public_data_leaf.js +7 -6
- package/dest/tx/block_header.js +2 -2
- package/dest/tx/global_variables.d.ts +4 -4
- package/dest/tx/global_variables.d.ts.map +1 -1
- package/dest/tx/protocol_contracts.d.ts +1 -1
- package/dest/tx/protocol_contracts.d.ts.map +1 -1
- package/dest/tx/protocol_contracts.js +2 -2
- package/dest/tx/tx_request.js +2 -2
- package/dest/tx/validator/error_texts.d.ts +1 -1
- package/dest/tx/validator/error_texts.js +1 -1
- package/dest/validators/schemas.d.ts +30 -30
- package/dest/validators/schemas.d.ts.map +1 -1
- package/dest/validators/schemas.js +4 -3
- package/dest/validators/types.d.ts +3 -3
- package/dest/validators/types.d.ts.map +1 -1
- package/package.json +9 -9
- package/src/auth_witness/auth_witness.ts +3 -3
- package/src/block/block_data.ts +26 -0
- package/src/block/index.ts +1 -0
- package/src/block/l2_block_source.ts +22 -0
- package/src/checkpoint/checkpoint.ts +32 -14
- package/src/checkpoint/checkpoint_data.ts +51 -0
- package/src/checkpoint/index.ts +1 -0
- package/src/checkpoint/published_checkpoint.ts +3 -1
- package/src/contract/contract_address.ts +4 -4
- package/src/contract/contract_class_id.ts +5 -4
- package/src/contract/private_function.ts +2 -2
- package/src/file-store/local.ts +15 -5
- package/src/file-store/s3.ts +12 -3
- package/src/hash/hash.ts +14 -10
- package/src/hash/map_slot.ts +2 -2
- package/src/interfaces/archiver.ts +5 -0
- package/src/interfaces/aztec-node-admin.ts +23 -0
- package/src/interfaces/aztec-node.ts +1 -1
- package/src/interfaces/block-builder.ts +1 -0
- package/src/interfaces/configs.ts +8 -1
- package/src/interfaces/merkle_tree_operations.ts +1 -1
- package/src/interfaces/validator.ts +1 -0
- package/src/kernel/hints/index.ts +2 -2
- package/src/kernel/hints/{key_validation_request_and_generator.ts → key_validation_request_and_separator.ts} +12 -15
- package/src/kernel/hints/{scoped_key_validation_request_and_generator.ts → scoped_key_validation_request_and_separator.ts} +10 -10
- package/src/kernel/private_circuit_public_inputs.ts +14 -14
- package/src/kernel/private_kernel_circuit_public_inputs.ts +2 -2
- package/src/kernel/private_kernel_tail_circuit_private_inputs.ts +2 -2
- package/src/kernel/private_kernel_tail_circuit_public_inputs.ts +5 -5
- package/src/kernel/private_to_public_kernel_circuit_public_inputs.ts +5 -5
- package/src/kernel/private_to_rollup_kernel_circuit_public_inputs.ts +5 -5
- package/src/kernel/private_validation_requests.ts +8 -8
- package/src/keys/derivation.ts +8 -8
- package/src/keys/key_types.ts +6 -2
- package/src/keys/public_keys.ts +2 -2
- package/src/keys/utils.ts +5 -5
- package/src/logs/siloed_tag.ts +2 -3
- package/src/note/index.ts +0 -1
- package/src/p2p/block_proposal.ts +0 -2
- package/src/p2p/checkpoint_attestation.ts +6 -1
- package/src/p2p/checkpoint_proposal.ts +35 -13
- package/src/p2p/consensus_payload.ts +25 -12
- package/src/rollup/checkpoint_header.ts +2 -2
- package/src/tests/factories.ts +12 -12
- package/src/tests/mocks.ts +21 -10
- package/src/trees/public_data_leaf.ts +11 -5
- package/src/tx/block_header.ts +2 -2
- package/src/tx/global_variables.ts +3 -3
- package/src/tx/protocol_contracts.ts +2 -2
- package/src/tx/tx_request.ts +2 -2
- package/src/tx/validator/error_texts.ts +1 -1
- package/src/validators/schemas.ts +8 -1
- package/src/validators/types.ts +5 -4
- package/dest/kernel/hints/key_validation_request_and_generator.d.ts +0 -30
- package/dest/kernel/hints/key_validation_request_and_generator.d.ts.map +0 -1
- package/dest/note/notes_filter.d.ts +0 -27
- package/dest/note/notes_filter.d.ts.map +0 -1
- package/dest/note/notes_filter.js +0 -11
- package/src/note/notes_filter.ts +0 -38
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
} from '@aztec/foundation/serialize';
|
|
22
22
|
import type { FieldsOf } from '@aztec/foundation/types';
|
|
23
23
|
|
|
24
|
-
import {
|
|
24
|
+
import { KeyValidationRequestAndSeparator } from '../kernel/hints/key_validation_request_and_separator.js';
|
|
25
25
|
import { CountedLogHash } from '../kernel/log_hash.js';
|
|
26
26
|
import { PrivateCallRequest } from '../kernel/private_call_request.js';
|
|
27
27
|
import { PrivateLogData } from '../kernel/private_log_data.js';
|
|
@@ -80,7 +80,7 @@ export class PrivateCircuitPublicInputs {
|
|
|
80
80
|
/**
|
|
81
81
|
* The highest timestamp of a block in which the transaction can still be included.
|
|
82
82
|
*/
|
|
83
|
-
public
|
|
83
|
+
public expirationTimestamp: UInt64,
|
|
84
84
|
/**
|
|
85
85
|
* The side effect counter at the start of this call.
|
|
86
86
|
*/
|
|
@@ -106,10 +106,10 @@ export class PrivateCircuitPublicInputs {
|
|
|
106
106
|
*/
|
|
107
107
|
public nullifierReadRequests: ClaimedLengthArray<ScopedReadRequest, typeof MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,
|
|
108
108
|
/**
|
|
109
|
-
* Key validation requests and
|
|
109
|
+
* Key validation requests and separators created by the corresponding function call.
|
|
110
110
|
*/
|
|
111
|
-
public
|
|
112
|
-
|
|
111
|
+
public keyValidationRequestsAndSeparators: ClaimedLengthArray<
|
|
112
|
+
KeyValidationRequestAndSeparator,
|
|
113
113
|
typeof MAX_KEY_VALIDATION_REQUESTS_PER_CALL
|
|
114
114
|
>,
|
|
115
115
|
/**
|
|
@@ -178,7 +178,7 @@ export class PrivateCircuitPublicInputs {
|
|
|
178
178
|
reader.readObject(ClaimedLengthArrayFromBuffer(ScopedReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL)),
|
|
179
179
|
reader.readObject(ClaimedLengthArrayFromBuffer(ScopedReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL)),
|
|
180
180
|
reader.readObject(
|
|
181
|
-
ClaimedLengthArrayFromBuffer(
|
|
181
|
+
ClaimedLengthArrayFromBuffer(KeyValidationRequestAndSeparator, MAX_KEY_VALIDATION_REQUESTS_PER_CALL),
|
|
182
182
|
),
|
|
183
183
|
reader.readObject(ClaimedLengthArrayFromBuffer(PrivateCallRequest, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL)),
|
|
184
184
|
reader.readObject(ClaimedLengthArrayFromBuffer(CountedPublicCallRequest, MAX_ENQUEUED_CALLS_PER_CALL)),
|
|
@@ -209,7 +209,7 @@ export class PrivateCircuitPublicInputs {
|
|
|
209
209
|
reader.readObject(ClaimedLengthArrayFromFields(ScopedReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL)),
|
|
210
210
|
reader.readObject(ClaimedLengthArrayFromFields(ScopedReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL)),
|
|
211
211
|
reader.readObject(
|
|
212
|
-
ClaimedLengthArrayFromFields(
|
|
212
|
+
ClaimedLengthArrayFromFields(KeyValidationRequestAndSeparator, MAX_KEY_VALIDATION_REQUESTS_PER_CALL),
|
|
213
213
|
),
|
|
214
214
|
reader.readObject(ClaimedLengthArrayFromFields(PrivateCallRequest, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL)),
|
|
215
215
|
reader.readObject(ClaimedLengthArrayFromFields(CountedPublicCallRequest, MAX_ENQUEUED_CALLS_PER_CALL)),
|
|
@@ -242,7 +242,7 @@ export class PrivateCircuitPublicInputs {
|
|
|
242
242
|
Fr.ZERO,
|
|
243
243
|
ClaimedLengthArray.empty(ScopedReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL),
|
|
244
244
|
ClaimedLengthArray.empty(ScopedReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL),
|
|
245
|
-
ClaimedLengthArray.empty(
|
|
245
|
+
ClaimedLengthArray.empty(KeyValidationRequestAndSeparator, MAX_KEY_VALIDATION_REQUESTS_PER_CALL),
|
|
246
246
|
ClaimedLengthArray.empty(PrivateCallRequest, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL),
|
|
247
247
|
ClaimedLengthArray.empty(CountedPublicCallRequest, MAX_ENQUEUED_CALLS_PER_CALL),
|
|
248
248
|
PublicCallRequest.empty(),
|
|
@@ -263,14 +263,14 @@ export class PrivateCircuitPublicInputs {
|
|
|
263
263
|
this.txContext.isEmpty() &&
|
|
264
264
|
this.minRevertibleSideEffectCounter.isZero() &&
|
|
265
265
|
!this.isFeePayer &&
|
|
266
|
-
!this.
|
|
266
|
+
!this.expirationTimestamp &&
|
|
267
267
|
this.startSideEffectCounter.isZero() &&
|
|
268
268
|
this.endSideEffectCounter.isZero() &&
|
|
269
269
|
this.expectedNonRevertibleSideEffectCounter.isZero() &&
|
|
270
270
|
this.expectedRevertibleSideEffectCounter.isZero() &&
|
|
271
271
|
this.noteHashReadRequests.isEmpty() &&
|
|
272
272
|
this.nullifierReadRequests.isEmpty() &&
|
|
273
|
-
this.
|
|
273
|
+
this.keyValidationRequestsAndSeparators.isEmpty() &&
|
|
274
274
|
this.privateCallRequests.isEmpty() &&
|
|
275
275
|
this.publicCallRequests.isEmpty() &&
|
|
276
276
|
this.publicTeardownCallRequest.isEmpty() &&
|
|
@@ -296,14 +296,14 @@ export class PrivateCircuitPublicInputs {
|
|
|
296
296
|
fields.txContext,
|
|
297
297
|
fields.minRevertibleSideEffectCounter,
|
|
298
298
|
fields.isFeePayer,
|
|
299
|
-
fields.
|
|
299
|
+
fields.expirationTimestamp,
|
|
300
300
|
fields.startSideEffectCounter,
|
|
301
301
|
fields.endSideEffectCounter,
|
|
302
302
|
fields.expectedNonRevertibleSideEffectCounter,
|
|
303
303
|
fields.expectedRevertibleSideEffectCounter,
|
|
304
304
|
fields.noteHashReadRequests,
|
|
305
305
|
fields.nullifierReadRequests,
|
|
306
|
-
fields.
|
|
306
|
+
fields.keyValidationRequestsAndSeparators,
|
|
307
307
|
fields.privateCallRequests,
|
|
308
308
|
fields.publicCallRequests,
|
|
309
309
|
fields.publicTeardownCallRequest,
|
|
@@ -330,14 +330,14 @@ export class PrivateCircuitPublicInputs {
|
|
|
330
330
|
this.txContext,
|
|
331
331
|
this.minRevertibleSideEffectCounter,
|
|
332
332
|
this.isFeePayer,
|
|
333
|
-
bigintToUInt64BE(this.
|
|
333
|
+
bigintToUInt64BE(this.expirationTimestamp),
|
|
334
334
|
this.startSideEffectCounter,
|
|
335
335
|
this.endSideEffectCounter,
|
|
336
336
|
this.expectedNonRevertibleSideEffectCounter,
|
|
337
337
|
this.expectedRevertibleSideEffectCounter,
|
|
338
338
|
this.noteHashReadRequests,
|
|
339
339
|
this.nullifierReadRequests,
|
|
340
|
-
this.
|
|
340
|
+
this.keyValidationRequestsAndSeparators,
|
|
341
341
|
this.privateCallRequests,
|
|
342
342
|
this.publicCallRequests,
|
|
343
343
|
this.publicTeardownCallRequest,
|
|
@@ -41,7 +41,7 @@ export class PrivateKernelCircuitPublicInputs {
|
|
|
41
41
|
/**
|
|
42
42
|
* The timestamp by which the transaction must be included in a block.
|
|
43
43
|
*/
|
|
44
|
-
public
|
|
44
|
+
public expirationTimestamp: UInt64,
|
|
45
45
|
/**
|
|
46
46
|
* Wether this is a private only tx or not
|
|
47
47
|
*/
|
|
@@ -72,7 +72,7 @@ export class PrivateKernelCircuitPublicInputs {
|
|
|
72
72
|
this.end,
|
|
73
73
|
this.publicTeardownCallRequest,
|
|
74
74
|
this.feePayer,
|
|
75
|
-
bigintToUInt64BE(this.
|
|
75
|
+
bigintToUInt64BE(this.expirationTimestamp),
|
|
76
76
|
this.isPrivateOnly,
|
|
77
77
|
this.claimedFirstNullifier,
|
|
78
78
|
this.claimedRevertibleCounter,
|
|
@@ -20,7 +20,7 @@ export class PrivateKernelTailCircuitPrivateInputs {
|
|
|
20
20
|
/**
|
|
21
21
|
* The timestamp by which the transaction must be included in a block.
|
|
22
22
|
*/
|
|
23
|
-
public
|
|
23
|
+
public expirationTimestampUpperBound: UInt64,
|
|
24
24
|
) {}
|
|
25
25
|
|
|
26
26
|
isForPublic() {
|
|
@@ -38,7 +38,7 @@ export class PrivateKernelTailCircuitPrivateInputs {
|
|
|
38
38
|
return serializeToBuffer(
|
|
39
39
|
this.previousKernel,
|
|
40
40
|
this.paddedSideEffectAmounts,
|
|
41
|
-
bigintToUInt64BE(this.
|
|
41
|
+
bigintToUInt64BE(this.expirationTimestampUpperBound),
|
|
42
42
|
);
|
|
43
43
|
}
|
|
44
44
|
|
|
@@ -116,7 +116,7 @@ export class PrivateKernelTailCircuitPublicInputs {
|
|
|
116
116
|
/**
|
|
117
117
|
* The timestamp by which the transaction must be included in a block.
|
|
118
118
|
*/
|
|
119
|
-
public
|
|
119
|
+
public expirationTimestamp: UInt64,
|
|
120
120
|
|
|
121
121
|
public forPublic?: PartialPrivateTailPublicInputsForPublic,
|
|
122
122
|
public forRollup?: PartialPrivateTailPublicInputsForRollup,
|
|
@@ -146,7 +146,7 @@ export class PrivateKernelTailCircuitPublicInputs {
|
|
|
146
146
|
this.constants.getSize() +
|
|
147
147
|
this.gasUsed.getSize() +
|
|
148
148
|
this.feePayer.size +
|
|
149
|
-
8 //
|
|
149
|
+
8 // expirationTimestamp
|
|
150
150
|
);
|
|
151
151
|
}
|
|
152
152
|
|
|
@@ -161,7 +161,7 @@ export class PrivateKernelTailCircuitPublicInputs {
|
|
|
161
161
|
this.forPublic.publicTeardownCallRequest,
|
|
162
162
|
this.gasUsed,
|
|
163
163
|
this.feePayer,
|
|
164
|
-
this.
|
|
164
|
+
this.expirationTimestamp,
|
|
165
165
|
);
|
|
166
166
|
}
|
|
167
167
|
|
|
@@ -180,7 +180,7 @@ export class PrivateKernelTailCircuitPublicInputs {
|
|
|
180
180
|
this.forRollup.end,
|
|
181
181
|
this.gasUsed,
|
|
182
182
|
this.feePayer,
|
|
183
|
-
this.
|
|
183
|
+
this.expirationTimestamp,
|
|
184
184
|
);
|
|
185
185
|
}
|
|
186
186
|
|
|
@@ -298,7 +298,7 @@ export class PrivateKernelTailCircuitPublicInputs {
|
|
|
298
298
|
this.constants,
|
|
299
299
|
this.gasUsed,
|
|
300
300
|
this.feePayer,
|
|
301
|
-
bigintToUInt64BE(this.
|
|
301
|
+
bigintToUInt64BE(this.expirationTimestamp),
|
|
302
302
|
isForPublic ? this.forPublic!.toBuffer() : this.forRollup!.toBuffer(),
|
|
303
303
|
);
|
|
304
304
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DomainSeparator, PRIVATE_TO_PUBLIC_KERNEL_CIRCUIT_PUBLIC_INPUTS_LENGTH } from '@aztec/constants';
|
|
2
2
|
import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
|
|
3
3
|
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
4
|
import { bufferSchemaFor } from '@aztec/foundation/schemas';
|
|
@@ -21,7 +21,7 @@ export class PrivateToPublicKernelCircuitPublicInputs {
|
|
|
21
21
|
public publicTeardownCallRequest: PublicCallRequest,
|
|
22
22
|
public gasUsed: Gas,
|
|
23
23
|
public feePayer: AztecAddress,
|
|
24
|
-
public
|
|
24
|
+
public expirationTimestamp: UInt64,
|
|
25
25
|
) {}
|
|
26
26
|
|
|
27
27
|
toBuffer() {
|
|
@@ -32,7 +32,7 @@ export class PrivateToPublicKernelCircuitPublicInputs {
|
|
|
32
32
|
this.publicTeardownCallRequest,
|
|
33
33
|
this.gasUsed,
|
|
34
34
|
this.feePayer,
|
|
35
|
-
bigintToUInt64BE(this.
|
|
35
|
+
bigintToUInt64BE(this.expirationTimestamp),
|
|
36
36
|
);
|
|
37
37
|
}
|
|
38
38
|
|
|
@@ -44,7 +44,7 @@ export class PrivateToPublicKernelCircuitPublicInputs {
|
|
|
44
44
|
fields.publicTeardownCallRequest,
|
|
45
45
|
fields.gasUsed,
|
|
46
46
|
fields.feePayer,
|
|
47
|
-
fields.
|
|
47
|
+
fields.expirationTimestamp,
|
|
48
48
|
] as const;
|
|
49
49
|
}
|
|
50
50
|
|
|
@@ -92,7 +92,7 @@ export class PrivateToPublicKernelCircuitPublicInputs {
|
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
hash() {
|
|
95
|
-
return poseidon2HashWithSeparator(this.toFields(),
|
|
95
|
+
return poseidon2HashWithSeparator(this.toFields(), DomainSeparator.PUBLIC_TX_HASH);
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
toJSON() {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DomainSeparator, PRIVATE_TO_ROLLUP_KERNEL_CIRCUIT_PUBLIC_INPUTS_LENGTH } from '@aztec/constants';
|
|
2
2
|
import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
|
|
3
3
|
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
4
|
import { bufferSchemaFor } from '@aztec/foundation/schemas';
|
|
@@ -37,7 +37,7 @@ export class PrivateToRollupKernelCircuitPublicInputs {
|
|
|
37
37
|
/**
|
|
38
38
|
* The timestamp by which the transaction must be included in a block.
|
|
39
39
|
*/
|
|
40
|
-
public
|
|
40
|
+
public expirationTimestamp: UInt64,
|
|
41
41
|
) {}
|
|
42
42
|
|
|
43
43
|
getNonEmptyNullifiers() {
|
|
@@ -50,7 +50,7 @@ export class PrivateToRollupKernelCircuitPublicInputs {
|
|
|
50
50
|
this.end,
|
|
51
51
|
this.gasUsed,
|
|
52
52
|
this.feePayer,
|
|
53
|
-
bigintToUInt64BE(this.
|
|
53
|
+
bigintToUInt64BE(this.expirationTimestamp),
|
|
54
54
|
);
|
|
55
55
|
}
|
|
56
56
|
|
|
@@ -94,7 +94,7 @@ export class PrivateToRollupKernelCircuitPublicInputs {
|
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
static getFields(fields: FieldsOf<PrivateToRollupKernelCircuitPublicInputs>) {
|
|
97
|
-
return [fields.constants, fields.end, fields.gasUsed, fields.feePayer, fields.
|
|
97
|
+
return [fields.constants, fields.end, fields.gasUsed, fields.feePayer, fields.expirationTimestamp] as const;
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
/** Creates an instance from a hex string. */
|
|
@@ -113,6 +113,6 @@ export class PrivateToRollupKernelCircuitPublicInputs {
|
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
hash() {
|
|
116
|
-
return poseidon2HashWithSeparator(this.toFields(),
|
|
116
|
+
return poseidon2HashWithSeparator(this.toFields(), DomainSeparator.PRIVATE_TX_HASH);
|
|
117
117
|
}
|
|
118
118
|
}
|
|
@@ -8,7 +8,7 @@ import { bufferToHex, hexToBuffer } from '@aztec/foundation/string';
|
|
|
8
8
|
|
|
9
9
|
import { inspect } from 'util';
|
|
10
10
|
|
|
11
|
-
import {
|
|
11
|
+
import { ScopedKeyValidationRequestAndSeparator } from '../kernel/hints/scoped_key_validation_request_and_separator.js';
|
|
12
12
|
import { ClaimedLengthArray, ClaimedLengthArrayFromBuffer } from './claimed_length_array.js';
|
|
13
13
|
import { ScopedReadRequest } from './hints/read_request.js';
|
|
14
14
|
|
|
@@ -28,8 +28,8 @@ export class PrivateValidationRequests {
|
|
|
28
28
|
/**
|
|
29
29
|
* All the key validation requests made in this transaction.
|
|
30
30
|
*/
|
|
31
|
-
public
|
|
32
|
-
|
|
31
|
+
public scopedKeyValidationRequestsAndSeparators: ClaimedLengthArray<
|
|
32
|
+
ScopedKeyValidationRequestAndSeparator,
|
|
33
33
|
typeof MAX_KEY_VALIDATION_REQUESTS_PER_TX
|
|
34
34
|
>,
|
|
35
35
|
) {}
|
|
@@ -38,7 +38,7 @@ export class PrivateValidationRequests {
|
|
|
38
38
|
return (
|
|
39
39
|
this.noteHashReadRequests.getSize() +
|
|
40
40
|
this.nullifierReadRequests.getSize() +
|
|
41
|
-
this.
|
|
41
|
+
this.scopedKeyValidationRequestsAndSeparators.getSize()
|
|
42
42
|
);
|
|
43
43
|
}
|
|
44
44
|
|
|
@@ -46,7 +46,7 @@ export class PrivateValidationRequests {
|
|
|
46
46
|
return serializeToBuffer(
|
|
47
47
|
this.noteHashReadRequests,
|
|
48
48
|
this.nullifierReadRequests,
|
|
49
|
-
this.
|
|
49
|
+
this.scopedKeyValidationRequestsAndSeparators,
|
|
50
50
|
);
|
|
51
51
|
}
|
|
52
52
|
|
|
@@ -65,7 +65,7 @@ export class PrivateValidationRequests {
|
|
|
65
65
|
reader.readObject(ClaimedLengthArrayFromBuffer(ScopedReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_TX)),
|
|
66
66
|
reader.readObject(ClaimedLengthArrayFromBuffer(ScopedReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_TX)),
|
|
67
67
|
reader.readObject(
|
|
68
|
-
ClaimedLengthArrayFromBuffer(
|
|
68
|
+
ClaimedLengthArrayFromBuffer(ScopedKeyValidationRequestAndSeparator, MAX_KEY_VALIDATION_REQUESTS_PER_TX),
|
|
69
69
|
),
|
|
70
70
|
);
|
|
71
71
|
}
|
|
@@ -83,7 +83,7 @@ export class PrivateValidationRequests {
|
|
|
83
83
|
return new PrivateValidationRequests(
|
|
84
84
|
ClaimedLengthArray.empty(ScopedReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_TX),
|
|
85
85
|
ClaimedLengthArray.empty(ScopedReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_TX),
|
|
86
|
-
ClaimedLengthArray.empty(
|
|
86
|
+
ClaimedLengthArray.empty(ScopedKeyValidationRequestAndSeparator, MAX_KEY_VALIDATION_REQUESTS_PER_TX),
|
|
87
87
|
);
|
|
88
88
|
}
|
|
89
89
|
|
|
@@ -91,7 +91,7 @@ export class PrivateValidationRequests {
|
|
|
91
91
|
return `PrivateValidationRequests {
|
|
92
92
|
noteHashReadRequests: ${inspect(this.noteHashReadRequests)},
|
|
93
93
|
nullifierReadRequests: ${inspect(this.nullifierReadRequests)},
|
|
94
|
-
|
|
94
|
+
scopedKeyValidationRequestsAndSeparators: ${inspect(this.scopedKeyValidationRequestsAndSeparators)},
|
|
95
95
|
`;
|
|
96
96
|
}
|
|
97
97
|
}
|
package/src/keys/derivation.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DomainSeparator } from '@aztec/constants';
|
|
2
2
|
import { Grumpkin } from '@aztec/foundation/crypto/grumpkin';
|
|
3
3
|
import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
|
|
4
4
|
import { sha512ToGrumpkinScalar } from '@aztec/foundation/crypto/sha512';
|
|
@@ -27,29 +27,29 @@ export async function computeOvskApp(ovsk: GrumpkinScalar, app: AztecAddress): P
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
export function deriveMasterNullifierHidingKey(secretKey: Fr): GrumpkinScalar {
|
|
30
|
-
return sha512ToGrumpkinScalar([secretKey,
|
|
30
|
+
return sha512ToGrumpkinScalar([secretKey, DomainSeparator.NHK_M]);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
export function deriveMasterIncomingViewingSecretKey(secretKey: Fr): GrumpkinScalar {
|
|
34
|
-
return sha512ToGrumpkinScalar([secretKey,
|
|
34
|
+
return sha512ToGrumpkinScalar([secretKey, DomainSeparator.IVSK_M]);
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
export function deriveMasterOutgoingViewingSecretKey(secretKey: Fr): GrumpkinScalar {
|
|
38
|
-
return sha512ToGrumpkinScalar([secretKey,
|
|
38
|
+
return sha512ToGrumpkinScalar([secretKey, DomainSeparator.OVSK_M]);
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
export function deriveSigningKey(secretKey: Fr): GrumpkinScalar {
|
|
42
42
|
// TODO(#5837): come up with a standard signing key derivation scheme instead of using ivsk_m as signing keys here
|
|
43
|
-
return sha512ToGrumpkinScalar([secretKey,
|
|
43
|
+
return sha512ToGrumpkinScalar([secretKey, DomainSeparator.IVSK_M]);
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
export function computePreaddress(publicKeysHash: Fr, partialAddress: Fr) {
|
|
47
|
-
return poseidon2HashWithSeparator([publicKeysHash, partialAddress],
|
|
47
|
+
return poseidon2HashWithSeparator([publicKeysHash, partialAddress], DomainSeparator.CONTRACT_ADDRESS_V1);
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
export async function computeAddress(publicKeys: PublicKeys, partialAddress: Fr): Promise<AztecAddress> {
|
|
51
51
|
// Given public keys and a partial address, we can compute our address in the following steps.
|
|
52
|
-
// 1. preaddress = poseidon2([publicKeysHash, partialAddress],
|
|
52
|
+
// 1. preaddress = poseidon2([publicKeysHash, partialAddress], DomainSeparator.CONTRACT_ADDRESS_V1);
|
|
53
53
|
// 2. addressPoint = (preaddress * G) + ivpk_m
|
|
54
54
|
// 3. address = addressPoint.x
|
|
55
55
|
const preaddress = await computePreaddress(await publicKeys.hash(), partialAddress);
|
|
@@ -98,7 +98,7 @@ export async function deriveKeys(secretKey: Fr) {
|
|
|
98
98
|
const masterNullifierHidingKey = deriveMasterNullifierHidingKey(secretKey);
|
|
99
99
|
const masterIncomingViewingSecretKey = deriveMasterIncomingViewingSecretKey(secretKey);
|
|
100
100
|
const masterOutgoingViewingSecretKey = deriveMasterOutgoingViewingSecretKey(secretKey);
|
|
101
|
-
const masterTaggingSecretKey = sha512ToGrumpkinScalar([secretKey,
|
|
101
|
+
const masterTaggingSecretKey = sha512ToGrumpkinScalar([secretKey, DomainSeparator.TSK_M]);
|
|
102
102
|
|
|
103
103
|
// Then we derive master public keys
|
|
104
104
|
const masterNullifierPublicKey = await derivePublicKeyFromSecretKey(masterNullifierHidingKey);
|
package/src/keys/key_types.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { DomainSeparator } from '@aztec/constants';
|
|
2
2
|
|
|
3
|
-
export type KeyGenerator =
|
|
3
|
+
export type KeyGenerator =
|
|
4
|
+
| DomainSeparator.NHK_M
|
|
5
|
+
| DomainSeparator.IVSK_M
|
|
6
|
+
| DomainSeparator.OVSK_M
|
|
7
|
+
| DomainSeparator.TSK_M;
|
|
4
8
|
export type KeyPrefix = 'n' | 'iv' | 'ov' | 't';
|
|
5
9
|
export const KEY_PREFIXES: KeyPrefix[] = ['n', 'iv', 'ov', 't'];
|
package/src/keys/public_keys.ts
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
DEFAULT_OVPK_M_Y,
|
|
8
8
|
DEFAULT_TPK_M_X,
|
|
9
9
|
DEFAULT_TPK_M_Y,
|
|
10
|
-
|
|
10
|
+
DomainSeparator,
|
|
11
11
|
} from '@aztec/constants';
|
|
12
12
|
import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
|
|
13
13
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
@@ -82,7 +82,7 @@ export class PublicKeys {
|
|
|
82
82
|
this.masterOutgoingViewingPublicKey,
|
|
83
83
|
this.masterTaggingPublicKey,
|
|
84
84
|
],
|
|
85
|
-
|
|
85
|
+
DomainSeparator.PUBLIC_KEYS_HASH,
|
|
86
86
|
);
|
|
87
87
|
}
|
|
88
88
|
|
package/src/keys/utils.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DomainSeparator } from '@aztec/constants';
|
|
2
2
|
|
|
3
3
|
import type { KeyGenerator, KeyPrefix } from './key_types.js';
|
|
4
4
|
|
|
5
5
|
export function getKeyGenerator(prefix: KeyPrefix): KeyGenerator {
|
|
6
6
|
const map: Record<KeyPrefix, KeyGenerator> = {
|
|
7
|
-
n:
|
|
8
|
-
iv:
|
|
9
|
-
ov:
|
|
10
|
-
t:
|
|
7
|
+
n: DomainSeparator.NHK_M,
|
|
8
|
+
iv: DomainSeparator.IVSK_M,
|
|
9
|
+
ov: DomainSeparator.OVSK_M,
|
|
10
|
+
t: DomainSeparator.TSK_M,
|
|
11
11
|
};
|
|
12
12
|
return map[prefix];
|
|
13
13
|
}
|
package/src/logs/siloed_tag.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { GeneratorIndex } from '@aztec/constants';
|
|
2
|
-
import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
|
|
3
1
|
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
2
|
import type { ZodFor } from '@aztec/foundation/schemas';
|
|
5
3
|
|
|
6
4
|
import type { AztecAddress } from '../aztec-address/index.js';
|
|
5
|
+
import { computeSiloedPrivateLogFirstField } from '../hash/hash.js';
|
|
7
6
|
import { schemas } from '../schemas/schemas.js';
|
|
8
7
|
import type { Tag } from './tag.js';
|
|
9
8
|
|
|
@@ -23,7 +22,7 @@ export class SiloedTag {
|
|
|
23
22
|
constructor(public readonly value: Fr) {}
|
|
24
23
|
|
|
25
24
|
static async compute(tag: Tag, app: AztecAddress): Promise<SiloedTag> {
|
|
26
|
-
const siloedTag = await
|
|
25
|
+
const siloedTag = await computeSiloedPrivateLogFirstField(app, tag.value);
|
|
27
26
|
return new SiloedTag(siloedTag);
|
|
28
27
|
}
|
|
29
28
|
|
package/src/note/index.ts
CHANGED
|
@@ -56,8 +56,6 @@ export class BlockProposal extends Gossipable {
|
|
|
56
56
|
/** The per-block header containing block state and global variables */
|
|
57
57
|
public readonly blockHeader: BlockHeader,
|
|
58
58
|
|
|
59
|
-
// TODO(palla/mbps): Is this really needed? Can we just derive it from the indexWithinCheckpoint of the parent block and the slot number?
|
|
60
|
-
// See the block-proposal-handler, we have a lot of extra validations to check this is correct, so maybe we can avoid storing it here.
|
|
61
59
|
/** Index of this block within the checkpoint (0-indexed) */
|
|
62
60
|
public readonly indexWithinCheckpoint: IndexWithinCheckpoint,
|
|
63
61
|
|
|
@@ -96,7 +96,12 @@ export class CheckpointAttestation extends Gossipable {
|
|
|
96
96
|
// Create a temporary CheckpointProposal to recover the proposer address.
|
|
97
97
|
// We need to use CheckpointProposal because it has a different getPayloadToSign()
|
|
98
98
|
// implementation than ConsensusPayload (uses serializeToBuffer vs ABI encoding).
|
|
99
|
-
const proposal = new CheckpointProposal(
|
|
99
|
+
const proposal = new CheckpointProposal(
|
|
100
|
+
this.payload.header,
|
|
101
|
+
this.payload.archive,
|
|
102
|
+
this.payload.feeAssetPriceModifier,
|
|
103
|
+
this.proposerSignature,
|
|
104
|
+
);
|
|
100
105
|
// Cache the proposer for later use
|
|
101
106
|
this.proposer = proposal.getSender();
|
|
102
107
|
}
|
|
@@ -5,7 +5,7 @@ import { tryRecoverAddress } from '@aztec/foundation/crypto/secp256k1-signer';
|
|
|
5
5
|
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
|
-
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
8
|
+
import { BufferReader, serializeSignedBigInt, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
9
9
|
import { DutyType, type SigningContext } from '@aztec/validator-ha-signer/types';
|
|
10
10
|
|
|
11
11
|
import type { L2BlockInfo } from '../block/l2_block_info.js';
|
|
@@ -81,7 +81,10 @@ export class CheckpointProposal extends Gossipable {
|
|
|
81
81
|
/** Archive root after this checkpoint is applied */
|
|
82
82
|
public readonly archive: Fr,
|
|
83
83
|
|
|
84
|
-
/** The
|
|
84
|
+
/** The fee asset price modifier in basis points (from oracle) */
|
|
85
|
+
public readonly feeAssetPriceModifier: bigint,
|
|
86
|
+
|
|
87
|
+
/** The proposer's signature over the checkpoint payload (checkpointHeader + archive + feeAssetPriceModifier) */
|
|
85
88
|
public readonly signature: Signature,
|
|
86
89
|
|
|
87
90
|
/** Optional last block info, including its own signature for BlockProposal extraction */
|
|
@@ -160,20 +163,31 @@ export class CheckpointProposal extends Gossipable {
|
|
|
160
163
|
|
|
161
164
|
/**
|
|
162
165
|
* Get the payload to sign for this checkpoint proposal.
|
|
163
|
-
* The signature is over the checkpoint header + archive root (for consensus).
|
|
166
|
+
* The signature is over the checkpoint header + archive root + feeAssetPriceModifier (for consensus).
|
|
164
167
|
*/
|
|
165
168
|
getPayloadToSign(domainSeparator: SignatureDomainSeparator): Buffer {
|
|
166
|
-
return serializeToBuffer([
|
|
169
|
+
return serializeToBuffer([
|
|
170
|
+
domainSeparator,
|
|
171
|
+
this.checkpointHeader,
|
|
172
|
+
this.archive,
|
|
173
|
+
serializeSignedBigInt(this.feeAssetPriceModifier),
|
|
174
|
+
]);
|
|
167
175
|
}
|
|
168
176
|
|
|
169
177
|
static async createProposalFromSigner(
|
|
170
178
|
checkpointHeader: CheckpointHeader,
|
|
171
179
|
archiveRoot: Fr,
|
|
180
|
+
feeAssetPriceModifier: bigint,
|
|
172
181
|
lastBlockInfo: CheckpointLastBlockData | undefined,
|
|
173
182
|
payloadSigner: (payload: Buffer32, context: SigningContext) => Promise<Signature>,
|
|
174
183
|
): Promise<CheckpointProposal> {
|
|
175
184
|
// Sign the checkpoint payload with CHECKPOINT_PROPOSAL duty type
|
|
176
|
-
const tempProposal = new CheckpointProposal(
|
|
185
|
+
const tempProposal = new CheckpointProposal(
|
|
186
|
+
checkpointHeader,
|
|
187
|
+
archiveRoot,
|
|
188
|
+
feeAssetPriceModifier,
|
|
189
|
+
Signature.empty(),
|
|
190
|
+
);
|
|
177
191
|
const checkpointHash = getHashedSignaturePayload(tempProposal, SignatureDomainSeparator.checkpointProposal);
|
|
178
192
|
|
|
179
193
|
const checkpointContext: SigningContext = {
|
|
@@ -184,7 +198,7 @@ export class CheckpointProposal extends Gossipable {
|
|
|
184
198
|
const checkpointSignature = await payloadSigner(checkpointHash, checkpointContext);
|
|
185
199
|
|
|
186
200
|
if (!lastBlockInfo) {
|
|
187
|
-
return new CheckpointProposal(checkpointHeader, archiveRoot, checkpointSignature);
|
|
201
|
+
return new CheckpointProposal(checkpointHeader, archiveRoot, feeAssetPriceModifier, checkpointSignature);
|
|
188
202
|
}
|
|
189
203
|
|
|
190
204
|
const lastBlockProposal = await BlockProposal.createProposalFromSigner(
|
|
@@ -197,7 +211,7 @@ export class CheckpointProposal extends Gossipable {
|
|
|
197
211
|
payloadSigner,
|
|
198
212
|
);
|
|
199
213
|
|
|
200
|
-
return new CheckpointProposal(checkpointHeader, archiveRoot, checkpointSignature, {
|
|
214
|
+
return new CheckpointProposal(checkpointHeader, archiveRoot, feeAssetPriceModifier, checkpointSignature, {
|
|
201
215
|
blockHeader: lastBlockInfo.blockHeader,
|
|
202
216
|
indexWithinCheckpoint: lastBlockInfo.indexWithinCheckpoint,
|
|
203
217
|
txHashes: lastBlockInfo.txHashes,
|
|
@@ -237,7 +251,12 @@ export class CheckpointProposal extends Gossipable {
|
|
|
237
251
|
}
|
|
238
252
|
|
|
239
253
|
toBuffer(): Buffer {
|
|
240
|
-
const buffer: any[] = [
|
|
254
|
+
const buffer: any[] = [
|
|
255
|
+
this.checkpointHeader,
|
|
256
|
+
this.archive,
|
|
257
|
+
serializeSignedBigInt(this.feeAssetPriceModifier),
|
|
258
|
+
this.signature,
|
|
259
|
+
];
|
|
241
260
|
|
|
242
261
|
if (this.lastBlock) {
|
|
243
262
|
buffer.push(1); // hasLastBlock = true
|
|
@@ -264,6 +283,7 @@ export class CheckpointProposal extends Gossipable {
|
|
|
264
283
|
|
|
265
284
|
const checkpointHeader = reader.readObject(CheckpointHeader);
|
|
266
285
|
const archive = reader.readObject(Fr);
|
|
286
|
+
const feeAssetPriceModifier = reader.readInt256();
|
|
267
287
|
const signature = reader.readObject(Signature);
|
|
268
288
|
|
|
269
289
|
const hasLastBlock = reader.readNumber();
|
|
@@ -286,7 +306,7 @@ export class CheckpointProposal extends Gossipable {
|
|
|
286
306
|
}
|
|
287
307
|
}
|
|
288
308
|
|
|
289
|
-
return new CheckpointProposal(checkpointHeader, archive, signature, {
|
|
309
|
+
return new CheckpointProposal(checkpointHeader, archive, feeAssetPriceModifier, signature, {
|
|
290
310
|
blockHeader,
|
|
291
311
|
indexWithinCheckpoint,
|
|
292
312
|
txHashes,
|
|
@@ -295,7 +315,7 @@ export class CheckpointProposal extends Gossipable {
|
|
|
295
315
|
});
|
|
296
316
|
}
|
|
297
317
|
|
|
298
|
-
return new CheckpointProposal(checkpointHeader, archive, signature);
|
|
318
|
+
return new CheckpointProposal(checkpointHeader, archive, feeAssetPriceModifier, signature);
|
|
299
319
|
}
|
|
300
320
|
|
|
301
321
|
getSize(): number {
|
|
@@ -303,6 +323,7 @@ export class CheckpointProposal extends Gossipable {
|
|
|
303
323
|
this.checkpointHeader.toBuffer().length +
|
|
304
324
|
this.archive.size +
|
|
305
325
|
this.signature.getSize() +
|
|
326
|
+
8 /* feeAssetPriceModifier */ +
|
|
306
327
|
4; /* hasLastBlock flag */
|
|
307
328
|
|
|
308
329
|
if (this.lastBlock) {
|
|
@@ -320,11 +341,11 @@ export class CheckpointProposal extends Gossipable {
|
|
|
320
341
|
}
|
|
321
342
|
|
|
322
343
|
static empty(): CheckpointProposal {
|
|
323
|
-
return new CheckpointProposal(CheckpointHeader.empty(), Fr.ZERO, Signature.empty());
|
|
344
|
+
return new CheckpointProposal(CheckpointHeader.empty(), Fr.ZERO, 0n, Signature.empty());
|
|
324
345
|
}
|
|
325
346
|
|
|
326
347
|
static random(): CheckpointProposal {
|
|
327
|
-
return new CheckpointProposal(CheckpointHeader.random(), Fr.random(), Signature.random(), {
|
|
348
|
+
return new CheckpointProposal(CheckpointHeader.random(), Fr.random(), 0n, Signature.random(), {
|
|
328
349
|
blockHeader: BlockHeader.random(),
|
|
329
350
|
indexWithinCheckpoint: IndexWithinCheckpoint(Math.floor(Math.random() * 5)),
|
|
330
351
|
txHashes: [TxHash.random(), TxHash.random()],
|
|
@@ -337,6 +358,7 @@ export class CheckpointProposal extends Gossipable {
|
|
|
337
358
|
checkpointHeader: this.checkpointHeader.toInspect(),
|
|
338
359
|
archive: this.archive.toString(),
|
|
339
360
|
signature: this.signature.toString(),
|
|
361
|
+
feeAssetPriceModifier: this.feeAssetPriceModifier.toString(),
|
|
340
362
|
lastBlock: this.lastBlock
|
|
341
363
|
? {
|
|
342
364
|
blockHeader: this.lastBlock.blockHeader.toInspect(),
|
|
@@ -353,7 +375,7 @@ export class CheckpointProposal extends Gossipable {
|
|
|
353
375
|
* Used when the lastBlock has been extracted and stored separately.
|
|
354
376
|
*/
|
|
355
377
|
toCore(): CheckpointProposalCore {
|
|
356
|
-
return new CheckpointProposal(this.checkpointHeader, this.archive, this.signature);
|
|
378
|
+
return new CheckpointProposal(this.checkpointHeader, this.archive, this.feeAssetPriceModifier, this.signature);
|
|
357
379
|
}
|
|
358
380
|
}
|
|
359
381
|
|