@aztec/foundation 0.87.6 → 1.0.0-nightly.20250604
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/config/env_var.d.ts +1 -1
- package/dest/config/env_var.d.ts.map +1 -1
- package/dest/crypto/sha256/index.d.ts +19 -0
- package/dest/crypto/sha256/index.d.ts.map +1 -1
- package/dest/crypto/sha256/index.js +42 -0
- package/dest/eth-signature/eth_signature.d.ts +3 -6
- package/dest/eth-signature/eth_signature.d.ts.map +1 -1
- package/dest/eth-signature/eth_signature.js +13 -13
- package/dest/log/pino-logger.js +1 -1
- package/dest/trees/index.d.ts +1 -0
- package/dest/trees/index.d.ts.map +1 -1
- package/dest/trees/index.js +1 -0
- package/dest/trees/unbalanced_merkle_tree_calculator.d.ts +43 -0
- package/dest/trees/unbalanced_merkle_tree_calculator.d.ts.map +1 -0
- package/dest/trees/unbalanced_merkle_tree_calculator.js +122 -0
- package/dest/types/index.d.ts +19 -0
- package/dest/types/index.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/config/env_var.ts +3 -2
- package/src/crypto/sha256/index.ts +47 -0
- package/src/eth-signature/eth_signature.ts +15 -20
- package/src/log/pino-logger.ts +1 -1
- package/src/trees/index.ts +1 -0
- package/src/trees/unbalanced_merkle_tree_calculator.ts +132 -0
- package/src/types/index.ts +19 -0
package/dest/config/env_var.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export type EnvVar = 'ACVM_BINARY_PATH' | 'ACVM_WORKING_DIRECTORY' | 'GOVERNANCE_CONTRACT_ADDRESS' | 'API_KEY' | 'API_PREFIX' | 'ARCHIVER_MAX_LOGS' | 'ARCHIVER_POLLING_INTERVAL_MS' | 'ARCHIVER_URL' | 'ARCHIVER_VIEM_POLLING_INTERVAL_MS' | 'ARCHIVER_BATCH_SIZE' | 'ASSUME_PROVEN_THROUGH_BLOCK_NUMBER' | 'AZTEC_ADMIN_PORT' | 'AZTEC_NODE_ADMIN_URL' | 'AZTEC_NODE_URL' | 'AZTEC_PORT' | 'BB_BINARY_PATH' | 'BB_SKIP_CLEANUP' | 'BB_WORKING_DIRECTORY' | 'BOOTSTRAP_NODES' | 'BLOB_SINK_ARCHIVE_API_URL' | 'BLOB_SINK_PORT' | 'BLOB_SINK_URL' | 'BOT_DA_GAS_LIMIT' | 'BOT_FEE_PAYMENT_METHOD' | 'BOT_FLUSH_SETUP_TRANSACTIONS' | 'BOT_FOLLOW_CHAIN' | 'BOT_L2_GAS_LIMIT' | 'BOT_MAX_PENDING_TXS' | 'BOT_NO_START' | 'BOT_NO_WAIT_FOR_TRANSFERS' | 'BOT_L1_MNEMONIC' | 'BOT_L1_PRIVATE_KEY' | 'BOT_PRIVATE_KEY' | 'BOT_ACCOUNT_SALT' | 'BOT_PRIVATE_TRANSFERS_PER_TX' | 'BOT_PUBLIC_TRANSFERS_PER_TX' | 'BOT_PXE_URL' | 'BOT_RECIPIENT_ENCRYPTION_SECRET' | 'BOT_SKIP_PUBLIC_SIMULATION' | 'BOT_TOKEN_CONTRACT' | 'BOT_TOKEN_SALT' | 'BOT_TX_INTERVAL_SECONDS' | 'BOT_TX_MINED_WAIT_SECONDS' | 'BOT_MAX_CONSECUTIVE_ERRORS' | 'BOT_STOP_WHEN_UNHEALTHY' | 'BOT_AMM_TXS' | 'COINBASE' | 'DATA_DIRECTORY' | 'DATA_STORE_MAP_SIZE_KB' | 'ARCHIVER_STORE_MAP_SIZE_KB' | 'BLOB_SINK_MAP_SIZE_KB' | 'P2P_STORE_MAP_SIZE_KB' | 'PROVER_BROKER_STORE_MAP_SIZE_KB' | 'WS_DB_MAP_SIZE_KB' | 'ARCHIVE_TREE_MAP_SIZE_KB' | 'NULLIFIER_TREE_MAP_SIZE_KB' | 'NOTE_HASH_TREE_MAP_SIZE_KB' | 'MESSAGE_TREE_MAP_SIZE_KB' | 'PUBLIC_DATA_TREE_MAP_SIZE_KB' | 'DEBUG' | 'DEBUG_P2P_DISABLE_COLOCATION_PENALTY' | 'DEPLOY_AZTEC_CONTRACTS_SALT' | 'DEPLOY_AZTEC_CONTRACTS' | 'ENFORCE_FEES' | 'ETHEREUM_HOSTS' | 'FEE_JUICE_CONTRACT_ADDRESS' | 'FEE_JUICE_PORTAL_CONTRACT_ADDRESS' | 'FEE_RECIPIENT' | 'FORCE_COLOR' | 'GOVERNANCE_PROPOSER_CONTRACT_ADDRESS' | 'GOVERNANCE_PROPOSER_PAYLOAD_ADDRESS' | 'INBOX_CONTRACT_ADDRESS' | 'L1_CHAIN_ID' | 'L1_CONSENSUS_HOST_URLS' | 'L1_CONSENSUS_HOST_API_KEYS' | 'L1_CONSENSUS_HOST_API_KEY_HEADERS' | 'L1_PRIVATE_KEY' | 'LOG_JSON' | 'LOG_MULTILINE' | 'LOG_LEVEL' | 'MNEMONIC' | 'NETWORK_NAME' | 'NETWORK' | 'NO_PXE' | 'COIN_ISSUER_CONTRACT_ADDRESS' | 'USE_GCLOUD_LOGGING' | 'OTEL_EXPORTER_OTLP_METRICS_ENDPOINT' | 'OTEL_EXPORTER_OTLP_TRACES_ENDPOINT' | 'OTEL_EXPORTER_OTLP_LOGS_ENDPOINT' | 'OTEL_COLLECT_INTERVAL_MS' | 'OTEL_EXCLUDE_METRICS' | 'OTEL_EXPORT_TIMEOUT_MS' | 'OUTBOX_CONTRACT_ADDRESS' | 'P2P_BLOCK_CHECK_INTERVAL_MS' | 'P2P_BLOCK_REQUEST_BATCH_SIZE' | 'P2P_BOOTSTRAP_NODE_ENR_VERSION_CHECK' | 'P2P_BOOTSTRAP_NODES_AS_FULL_PEERS' | 'P2P_ENABLED' | 'P2P_GOSSIPSUB_D' | 'P2P_GOSSIPSUB_DHI' | 'P2P_GOSSIPSUB_DLO' | 'P2P_GOSSIPSUB_DLAZY' | 'P2P_GOSSIPSUB_FLOOD_PUBLISH' | 'P2P_GOSSIPSUB_INTERVAL_MS' | 'P2P_GOSSIPSUB_MCACHE_GOSSIP' | 'P2P_GOSSIPSUB_MCACHE_LENGTH' | 'P2P_GOSSIPSUB_SEEN_TTL' | 'P2P_GOSSIPSUB_TX_INVALID_MESSAGE_DELIVERIES_DECAY' | 'P2P_GOSSIPSUB_TX_INVALID_MESSAGE_DELIVERIES_WEIGHT' | 'P2P_GOSSIPSUB_TX_TOPIC_WEIGHT' | 'P2P_L2_QUEUE_SIZE' | 'P2P_MAX_PEERS' | 'P2P_PEER_CHECK_INTERVAL_MS' | 'P2P_PEER_PENALTY_VALUES' | 'P2P_QUERY_FOR_IP' | 'P2P_REQRESP_INDIVIDUAL_REQUEST_TIMEOUT_MS' | 'P2P_REQRESP_OVERALL_REQUEST_TIMEOUT_MS' | 'P2P_DOUBLE_SPEND_SEVERE_PEER_PENALTY_WINDOW' | 'P2P_LISTEN_ADDR' | 'P2P_PORT' | 'P2P_BROADCAST_PORT' | 'P2P_IP' | 'P2P_ARCHIVED_TX_LIMIT' | 'P2P_TRUSTED_PEERS' | 'P2P_PRIVATE_PEERS' | 'P2P_MAX_TX_POOL_SIZE' | 'P2P_TX_POOL_OVERFLOW_FACTOR' | 'P2P_SEEN_MSG_CACHE_SIZE' | 'PEER_ID_PRIVATE_KEY' | 'PEER_ID_PRIVATE_KEY_PATH' | 'PROVER_AGENT_COUNT' | 'PROVER_AGENT_PROOF_TYPES' | 'PROVER_AGENT_POLL_INTERVAL_MS' | 'PROVER_BROKER_HOST' | 'PROVER_BROKER_JOB_TIMEOUT_MS' | 'PROVER_BROKER_POLL_INTERVAL_MS' | 'PROVER_BROKER_JOB_MAX_RETRIES' | 'PROVER_BROKER_BATCH_INTERVAL_MS' | 'PROVER_BROKER_BATCH_SIZE' | 'PROVER_BROKER_MAX_EPOCHS_TO_KEEP_RESULTS_FOR' | 'PROVER_COORDINATION_NODE_URLS' | 'PROVER_FAILED_PROOF_STORE' | 'PROVER_NODE_FAILED_EPOCH_STORE' | 'PROVER_ID' | 'PROVER_NODE_POLLING_INTERVAL_MS' | 'PROVER_NODE_MAX_PENDING_JOBS' | 'PROVER_NODE_MAX_PARALLEL_BLOCKS_PER_EPOCH' | 'PROVER_NODE_TX_GATHERING_INTERVAL_MS' | 'PROVER_NODE_TX_GATHERING_BATCH_SIZE' | 'PROVER_NODE_TX_GATHERING_MAX_PARALLEL_REQUESTS_PER_NODE' | 'PROVER_PUBLISH_RETRY_INTERVAL_MS' | 'PROVER_PUBLISHER_PRIVATE_KEY' | 'PROVER_REAL_PROOFS' | 'PROVER_TEST_DELAY_FACTOR' | 'PROVER_TEST_DELAY_MS' | 'PROVER_TEST_DELAY_TYPE' | 'PXE_L2_BLOCK_BATCH_SIZE' | 'PXE_PROVER_ENABLED' | 'REGISTRY_CONTRACT_ADDRESS' | 'ROLLUP_CONTRACT_ADDRESS' | 'RPC_SIMULATE_PUBLIC_MAX_GAS_LIMIT' | 'SENTINEL_ENABLED' | 'SENTINEL_HISTORY_LENGTH_IN_EPOCHS' | 'SEQ_MAX_BLOCK_SIZE_IN_BYTES' | 'SEQ_MAX_TX_PER_BLOCK' | 'SEQ_MIN_TX_PER_BLOCK' | 'SEQ_PUBLISH_TXS_WITH_PROPOSALS' | 'SEQ_MAX_DA_BLOCK_GAS' | 'SEQ_MAX_L2_BLOCK_GAS' | 'SEQ_PUBLISH_RETRY_INTERVAL_MS' | 'SEQ_PUBLISHER_PRIVATE_KEY' | 'SEQ_TX_POLLING_INTERVAL_MS' | 'SEQ_ENFORCE_TIME_TABLE' | 'SEQ_MAX_L1_TX_INCLUSION_TIME_INTO_SLOT' | 'SLASH_FACTORY_CONTRACT_ADDRESS' | 'STAKING_ASSET_CONTRACT_ADDRESS' | 'STAKING_ASSET_HANDLER_CONTRACT_ADDRESS' | 'SYNC_MODE' | 'SYNC_SNAPSHOTS_URL' | 'REWARD_DISTRIBUTOR_CONTRACT_ADDRESS' | 'TELEMETRY' | 'TEST_ACCOUNTS' | 'SPONSORED_FPC' | 'TX_GOSSIP_VERSION' | 'TX_PUBLIC_SETUP_ALLOWLIST' | 'TXE_PORT' | 'VALIDATOR_ATTESTATIONS_POLLING_INTERVAL_MS' | 'VALIDATOR_DISABLED' | '
|
|
1
|
+
export type EnvVar = 'ACVM_BINARY_PATH' | 'ACVM_WORKING_DIRECTORY' | 'GOVERNANCE_CONTRACT_ADDRESS' | 'API_KEY' | 'API_PREFIX' | 'ARCHIVER_MAX_LOGS' | 'ARCHIVER_POLLING_INTERVAL_MS' | 'ARCHIVER_URL' | 'ARCHIVER_VIEM_POLLING_INTERVAL_MS' | 'ARCHIVER_BATCH_SIZE' | 'ASSUME_PROVEN_THROUGH_BLOCK_NUMBER' | 'AZTEC_ADMIN_PORT' | 'AZTEC_NODE_ADMIN_URL' | 'AZTEC_NODE_URL' | 'AZTEC_PORT' | 'BB_BINARY_PATH' | 'BB_SKIP_CLEANUP' | 'BB_WORKING_DIRECTORY' | 'BOOTSTRAP_NODES' | 'BLOB_SINK_ARCHIVE_API_URL' | 'BLOB_SINK_PORT' | 'BLOB_SINK_URL' | 'BOT_DA_GAS_LIMIT' | 'BOT_FEE_PAYMENT_METHOD' | 'BOT_FLUSH_SETUP_TRANSACTIONS' | 'BOT_FOLLOW_CHAIN' | 'BOT_L2_GAS_LIMIT' | 'BOT_MAX_PENDING_TXS' | 'BOT_NO_START' | 'BOT_NO_WAIT_FOR_TRANSFERS' | 'BOT_L1_MNEMONIC' | 'BOT_L1_PRIVATE_KEY' | 'BOT_PRIVATE_KEY' | 'BOT_ACCOUNT_SALT' | 'BOT_PRIVATE_TRANSFERS_PER_TX' | 'BOT_PUBLIC_TRANSFERS_PER_TX' | 'BOT_PXE_URL' | 'BOT_RECIPIENT_ENCRYPTION_SECRET' | 'BOT_SKIP_PUBLIC_SIMULATION' | 'BOT_TOKEN_CONTRACT' | 'BOT_TOKEN_SALT' | 'BOT_TX_INTERVAL_SECONDS' | 'BOT_TX_MINED_WAIT_SECONDS' | 'BOT_MAX_CONSECUTIVE_ERRORS' | 'BOT_STOP_WHEN_UNHEALTHY' | 'BOT_AMM_TXS' | 'COINBASE' | 'DATA_DIRECTORY' | 'DATA_STORE_MAP_SIZE_KB' | 'ARCHIVER_STORE_MAP_SIZE_KB' | 'BLOB_SINK_MAP_SIZE_KB' | 'P2P_STORE_MAP_SIZE_KB' | 'PROVER_BROKER_STORE_MAP_SIZE_KB' | 'WS_DB_MAP_SIZE_KB' | 'ARCHIVE_TREE_MAP_SIZE_KB' | 'NULLIFIER_TREE_MAP_SIZE_KB' | 'NOTE_HASH_TREE_MAP_SIZE_KB' | 'MESSAGE_TREE_MAP_SIZE_KB' | 'PUBLIC_DATA_TREE_MAP_SIZE_KB' | 'DEBUG' | 'DEBUG_P2P_DISABLE_COLOCATION_PENALTY' | 'DEPLOY_AZTEC_CONTRACTS_SALT' | 'DEPLOY_AZTEC_CONTRACTS' | 'ENFORCE_FEES' | 'ETHEREUM_HOSTS' | 'FEE_JUICE_CONTRACT_ADDRESS' | 'FEE_JUICE_PORTAL_CONTRACT_ADDRESS' | 'FEE_RECIPIENT' | 'FORCE_COLOR' | 'GOVERNANCE_PROPOSER_CONTRACT_ADDRESS' | 'GOVERNANCE_PROPOSER_PAYLOAD_ADDRESS' | 'INBOX_CONTRACT_ADDRESS' | 'L1_CHAIN_ID' | 'L1_CONSENSUS_HOST_URLS' | 'L1_CONSENSUS_HOST_API_KEYS' | 'L1_CONSENSUS_HOST_API_KEY_HEADERS' | 'L1_PRIVATE_KEY' | 'LOG_JSON' | 'LOG_MULTILINE' | 'LOG_LEVEL' | 'MNEMONIC' | 'NETWORK_NAME' | 'NETWORK' | 'NO_PXE' | 'COIN_ISSUER_CONTRACT_ADDRESS' | 'USE_GCLOUD_LOGGING' | 'OTEL_EXPORTER_OTLP_METRICS_ENDPOINT' | 'OTEL_EXPORTER_OTLP_TRACES_ENDPOINT' | 'OTEL_EXPORTER_OTLP_LOGS_ENDPOINT' | 'OTEL_COLLECT_INTERVAL_MS' | 'OTEL_EXCLUDE_METRICS' | 'OTEL_EXPORT_TIMEOUT_MS' | 'OUTBOX_CONTRACT_ADDRESS' | 'P2P_BLOCK_CHECK_INTERVAL_MS' | 'P2P_BLOCK_REQUEST_BATCH_SIZE' | 'P2P_BOOTSTRAP_NODE_ENR_VERSION_CHECK' | 'P2P_BOOTSTRAP_NODES_AS_FULL_PEERS' | 'P2P_ENABLED' | 'P2P_GOSSIPSUB_D' | 'P2P_GOSSIPSUB_DHI' | 'P2P_GOSSIPSUB_DLO' | 'P2P_GOSSIPSUB_DLAZY' | 'P2P_GOSSIPSUB_FLOOD_PUBLISH' | 'P2P_GOSSIPSUB_INTERVAL_MS' | 'P2P_GOSSIPSUB_MCACHE_GOSSIP' | 'P2P_GOSSIPSUB_MCACHE_LENGTH' | 'P2P_GOSSIPSUB_SEEN_TTL' | 'P2P_GOSSIPSUB_TX_INVALID_MESSAGE_DELIVERIES_DECAY' | 'P2P_GOSSIPSUB_TX_INVALID_MESSAGE_DELIVERIES_WEIGHT' | 'P2P_GOSSIPSUB_TX_TOPIC_WEIGHT' | 'P2P_L2_QUEUE_SIZE' | 'P2P_MAX_PEERS' | 'P2P_PEER_CHECK_INTERVAL_MS' | 'P2P_PEER_PENALTY_VALUES' | 'P2P_QUERY_FOR_IP' | 'P2P_REQRESP_INDIVIDUAL_REQUEST_TIMEOUT_MS' | 'P2P_REQRESP_OVERALL_REQUEST_TIMEOUT_MS' | 'P2P_DOUBLE_SPEND_SEVERE_PEER_PENALTY_WINDOW' | 'P2P_LISTEN_ADDR' | 'P2P_PORT' | 'P2P_BROADCAST_PORT' | 'P2P_IP' | 'P2P_ARCHIVED_TX_LIMIT' | 'P2P_TRUSTED_PEERS' | 'P2P_PRIVATE_PEERS' | 'P2P_MAX_TX_POOL_SIZE' | 'P2P_TX_POOL_OVERFLOW_FACTOR' | 'P2P_SEEN_MSG_CACHE_SIZE' | 'PEER_ID_PRIVATE_KEY' | 'PEER_ID_PRIVATE_KEY_PATH' | 'PROVER_AGENT_COUNT' | 'PROVER_AGENT_PROOF_TYPES' | 'PROVER_AGENT_POLL_INTERVAL_MS' | 'PROVER_BROKER_HOST' | 'PROVER_BROKER_JOB_TIMEOUT_MS' | 'PROVER_BROKER_POLL_INTERVAL_MS' | 'PROVER_BROKER_JOB_MAX_RETRIES' | 'PROVER_BROKER_BATCH_INTERVAL_MS' | 'PROVER_BROKER_BATCH_SIZE' | 'PROVER_BROKER_MAX_EPOCHS_TO_KEEP_RESULTS_FOR' | 'PROVER_COORDINATION_NODE_URLS' | 'PROVER_FAILED_PROOF_STORE' | 'PROVER_NODE_FAILED_EPOCH_STORE' | 'PROVER_ID' | 'PROVER_NODE_POLLING_INTERVAL_MS' | 'PROVER_NODE_MAX_PENDING_JOBS' | 'PROVER_NODE_MAX_PARALLEL_BLOCKS_PER_EPOCH' | 'PROVER_NODE_TX_GATHERING_INTERVAL_MS' | 'PROVER_NODE_TX_GATHERING_BATCH_SIZE' | 'PROVER_NODE_TX_GATHERING_MAX_PARALLEL_REQUESTS_PER_NODE' | 'PROVER_PUBLISH_RETRY_INTERVAL_MS' | 'PROVER_PUBLISHER_PRIVATE_KEY' | 'PROVER_REAL_PROOFS' | 'PROVER_TEST_DELAY_FACTOR' | 'PROVER_TEST_DELAY_MS' | 'PROVER_TEST_DELAY_TYPE' | 'PXE_L2_BLOCK_BATCH_SIZE' | 'PXE_PROVER_ENABLED' | 'REGISTRY_CONTRACT_ADDRESS' | 'ROLLUP_CONTRACT_ADDRESS' | 'RPC_SIMULATE_PUBLIC_MAX_GAS_LIMIT' | 'SENTINEL_ENABLED' | 'SENTINEL_HISTORY_LENGTH_IN_EPOCHS' | 'SEQ_MAX_BLOCK_SIZE_IN_BYTES' | 'SEQ_MAX_TX_PER_BLOCK' | 'SEQ_MIN_TX_PER_BLOCK' | 'SEQ_PUBLISH_TXS_WITH_PROPOSALS' | 'SEQ_MAX_DA_BLOCK_GAS' | 'SEQ_MAX_L2_BLOCK_GAS' | 'SEQ_PUBLISH_RETRY_INTERVAL_MS' | 'SEQ_PUBLISHER_PRIVATE_KEY' | 'SEQ_TX_POLLING_INTERVAL_MS' | 'SEQ_ENFORCE_TIME_TABLE' | 'SEQ_MAX_L1_TX_INCLUSION_TIME_INTO_SLOT' | 'SLASH_FACTORY_CONTRACT_ADDRESS' | 'STAKING_ASSET_CONTRACT_ADDRESS' | 'STAKING_ASSET_HANDLER_CONTRACT_ADDRESS' | 'SYNC_MODE' | 'SYNC_SNAPSHOTS_URL' | 'REWARD_DISTRIBUTOR_CONTRACT_ADDRESS' | 'TELEMETRY' | 'TEST_ACCOUNTS' | 'SPONSORED_FPC' | 'TX_GOSSIP_VERSION' | 'TX_PUBLIC_SETUP_ALLOWLIST' | 'TXE_PORT' | 'VALIDATOR_ATTESTATIONS_POLLING_INTERVAL_MS' | 'VALIDATOR_DISABLED' | 'VALIDATOR_PRIVATE_KEYS' | 'VALIDATOR_REEXECUTE' | 'ROLLUP_VERSION' | 'WS_BLOCK_CHECK_INTERVAL_MS' | 'WS_PROVEN_BLOCKS_ONLY' | 'WS_BLOCK_REQUEST_BATCH_SIZE' | 'VERIFIER_VIEM_POLLING_INTERVAL_MS' | 'L1_READER_VIEM_POLLING_INTERVAL_MS' | 'PROVER_VIEM_POLLING_INTERVAL_MS' | 'SEQ_VIEM_POLLING_INTERVAL_MS' | 'WS_DATA_DIRECTORY' | 'WS_NUM_HISTORIC_BLOCKS' | 'ETHEREUM_SLOT_DURATION' | 'AZTEC_SLOT_DURATION' | 'AZTEC_EPOCH_DURATION' | 'AZTEC_TARGET_COMMITTEE_SIZE' | 'AZTEC_PROOF_SUBMISSION_WINDOW' | 'AZTEC_MINIMUM_STAKE' | 'AZTEC_MANA_TARGET' | 'AZTEC_PROVING_COST_PER_MANA' | 'AZTEC_SLASHING_QUORUM' | 'AZTEC_SLASHING_ROUND_SIZE' | 'AZTEC_GOVERNANCE_PROPOSER_QUORUM' | 'AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE' | 'L1_GAS_LIMIT_BUFFER_PERCENTAGE' | 'L1_GAS_PRICE_MIN' | 'L1_GAS_PRICE_MAX' | 'L1_BLOB_FEE_PER_GAS_MAX' | 'L1_PRIORITY_FEE_BUMP_PERCENTAGE' | 'L1_PRIORITY_FEE_RETRY_BUMP_PERCENTAGE' | 'L1_FIXED_PRIORITY_FEE_PER_GAS' | 'L1_TX_MONITOR_MAX_ATTEMPTS' | 'L1_TX_MONITOR_CHECK_INTERVAL_MS' | 'L1_TX_MONITOR_STALL_TIME_MS' | 'L1_TX_MONITOR_TX_TIMEOUT_MS' | 'L1_TX_PROPAGATION_MAX_QUERY_ATTEMPTS' | 'FAUCET_MNEMONIC_ADDRESS_INDEX' | 'FAUCET_ETH_AMOUNT' | 'FAUCET_INTERVAL_MS' | 'FAUCET_L1_ASSETS' | 'K8S_POD_NAME' | 'K8S_POD_UID' | 'K8S_NAMESPACE_NAME' | 'CUSTOM_FORWARDER_CONTRACT_ADDRESS' | 'FEE_ASSET_HANDLER_CONTRACT_ADDRESS' | 'VALIDATOR_REEXECUTE_DEADLINE_MS' | 'AUTO_UPDATE' | 'AUTO_UPDATE_URL';
|
|
2
2
|
//# sourceMappingURL=env_var.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env_var.d.ts","sourceRoot":"","sources":["../../src/config/env_var.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"env_var.d.ts","sourceRoot":"","sources":["../../src/config/env_var.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Fr } from '../../fields/fields.js';
|
|
2
2
|
import { type Bufferable } from '../../serialize/serialize.js';
|
|
3
|
+
import type { Hasher } from '../../trees/hasher.js';
|
|
3
4
|
export declare function sha256(data: Buffer): Buffer<ArrayBuffer>;
|
|
4
5
|
export declare function sha256Trunc(data: Buffer): Buffer<ArrayBufferLike>;
|
|
5
6
|
export declare function sha256ToField(data: Bufferable[]): Fr;
|
|
@@ -15,4 +16,22 @@ export declare function sha256ToField(data: Bufferable[]): Fr;
|
|
|
15
16
|
* @returns The modified state. 8 u32s.
|
|
16
17
|
*/
|
|
17
18
|
export declare function sha256Compression(state: Uint32Array, inputs: Uint32Array): Uint32Array;
|
|
19
|
+
/**
|
|
20
|
+
* A helper class encapsulating SHA256 hash functionality.
|
|
21
|
+
* @deprecated Don't call SHA256 directly in production code. Instead, create suitably-named functions for specific
|
|
22
|
+
* purposes.
|
|
23
|
+
*/
|
|
24
|
+
export declare class SHA256 implements Hasher {
|
|
25
|
+
hash(lhs: Uint8Array, rhs: Uint8Array): Buffer<ArrayBuffer>;
|
|
26
|
+
hashInputs(inputs: Buffer[]): Buffer<ArrayBuffer>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* A helper class encapsulating truncated SHA256 hash functionality.
|
|
30
|
+
* @deprecated Don't call SHA256 directly in production code. Instead, create suitably-named functions for specific
|
|
31
|
+
* purposes.
|
|
32
|
+
*/
|
|
33
|
+
export declare class SHA256Trunc implements Hasher {
|
|
34
|
+
hash(lhs: Uint8Array, rhs: Uint8Array): Buffer<ArrayBuffer>;
|
|
35
|
+
hashInputs(inputs: Buffer[]): Buffer<ArrayBuffer>;
|
|
36
|
+
}
|
|
18
37
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/sha256/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAE5C,OAAO,EAAE,KAAK,UAAU,EAAqB,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/sha256/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAE5C,OAAO,EAAE,KAAK,UAAU,EAAqB,MAAM,8BAA8B,CAAC;AAClF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,uBAElC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,2BAEvC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,MAG/C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,GAAG,WAAW,CAyEtF;AA4CD;;;;GAIG;AACH,qBAAa,MAAO,YAAW,MAAM;IAK5B,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAC4B,MAAM,CAAC,WAAW,CAAC;IAOpF,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GACQ,MAAM,CAAC,WAAW,CAAC;CAE9D;AAED;;;;GAIG;AACH,qBAAa,WAAY,YAAW,MAAM;IAKjC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAC4C,MAAM,CAAC,WAAW,CAAC;IAOpG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GACwB,MAAM,CAAC,WAAW,CAAC;CAE9E"}
|
|
@@ -164,3 +164,45 @@ function g0_256(x) {
|
|
|
164
164
|
function g1_256(x) {
|
|
165
165
|
return rotr32(x, 17) ^ rotr32(x, 19) ^ x >>> 10;
|
|
166
166
|
}
|
|
167
|
+
/**
|
|
168
|
+
* A helper class encapsulating SHA256 hash functionality.
|
|
169
|
+
* @deprecated Don't call SHA256 directly in production code. Instead, create suitably-named functions for specific
|
|
170
|
+
* purposes.
|
|
171
|
+
*/ export class SHA256 {
|
|
172
|
+
/*
|
|
173
|
+
* @deprecated Don't call SHA256 directly in production code. Instead, create suitably-named functions for specific
|
|
174
|
+
* purposes.
|
|
175
|
+
*/ hash(lhs, rhs) {
|
|
176
|
+
return sha256(Buffer.concat([
|
|
177
|
+
Buffer.from(lhs),
|
|
178
|
+
Buffer.from(rhs)
|
|
179
|
+
]));
|
|
180
|
+
}
|
|
181
|
+
/*
|
|
182
|
+
* @deprecated Don't call SHA256 directly in production code. Instead, create suitably-named functions for specific
|
|
183
|
+
* purposes.
|
|
184
|
+
*/ hashInputs(inputs) {
|
|
185
|
+
return sha256(Buffer.concat(inputs));
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* A helper class encapsulating truncated SHA256 hash functionality.
|
|
190
|
+
* @deprecated Don't call SHA256 directly in production code. Instead, create suitably-named functions for specific
|
|
191
|
+
* purposes.
|
|
192
|
+
*/ export class SHA256Trunc {
|
|
193
|
+
/*
|
|
194
|
+
* @deprecated Don't call SHA256 directly in production code. Instead, create suitably-named functions for specific
|
|
195
|
+
* purposes.
|
|
196
|
+
*/ hash(lhs, rhs) {
|
|
197
|
+
return truncateAndPad(sha256(Buffer.concat([
|
|
198
|
+
Buffer.from(lhs),
|
|
199
|
+
Buffer.from(rhs)
|
|
200
|
+
])));
|
|
201
|
+
}
|
|
202
|
+
/*
|
|
203
|
+
* @deprecated Don't call SHA256 directly in production code. Instead, create suitably-named functions for specific
|
|
204
|
+
* purposes.
|
|
205
|
+
*/ hashInputs(inputs) {
|
|
206
|
+
return truncateAndPad(sha256(Buffer.concat(inputs)));
|
|
207
|
+
}
|
|
208
|
+
}
|
|
@@ -8,7 +8,6 @@ export type ViemSignature = {
|
|
|
8
8
|
r: `0x${string}`;
|
|
9
9
|
s: `0x${string}`;
|
|
10
10
|
v: number;
|
|
11
|
-
isEmpty: boolean;
|
|
12
11
|
};
|
|
13
12
|
/**
|
|
14
13
|
* Contains a signature split into it's primary components (r,s,v)
|
|
@@ -20,18 +19,15 @@ export declare class Signature {
|
|
|
20
19
|
readonly s: Buffer32;
|
|
21
20
|
/** The v value of the signature */
|
|
22
21
|
readonly v: number;
|
|
23
|
-
/** Does this struct store an empty signature */
|
|
24
|
-
readonly isEmpty: boolean;
|
|
25
22
|
private size;
|
|
23
|
+
readonly empty: boolean;
|
|
26
24
|
constructor(
|
|
27
25
|
/** The r value of the signature */
|
|
28
26
|
r: Buffer32,
|
|
29
27
|
/** The s value of the signature */
|
|
30
28
|
s: Buffer32,
|
|
31
29
|
/** The v value of the signature */
|
|
32
|
-
v: number
|
|
33
|
-
/** Does this struct store an empty signature */
|
|
34
|
-
isEmpty?: boolean);
|
|
30
|
+
v: number);
|
|
35
31
|
static fromBuffer(buf: Buffer | BufferReader): Signature;
|
|
36
32
|
static isValidString(sig: `0x${string}`): boolean;
|
|
37
33
|
/**
|
|
@@ -43,6 +39,7 @@ export declare class Signature {
|
|
|
43
39
|
static fromViemSignature(sig: ViemSignature): Signature;
|
|
44
40
|
static random(): Signature;
|
|
45
41
|
static empty(): Signature;
|
|
42
|
+
isEmpty(): boolean;
|
|
46
43
|
equals(other: Signature): boolean;
|
|
47
44
|
toBuffer(): Buffer;
|
|
48
45
|
getSize(): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eth_signature.d.ts","sourceRoot":"","sources":["../../src/eth-signature/eth_signature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAE9E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACjB,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACjB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"eth_signature.d.ts","sourceRoot":"","sources":["../../src/eth-signature/eth_signature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAE9E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACjB,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACjB,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF;;GAEG;AACH,qBAAa,SAAS;IAOlB,mCAAmC;aACnB,CAAC,EAAE,QAAQ;IAC3B,mCAAmC;aACnB,CAAC,EAAE,QAAQ;IAC3B,mCAAmC;aACnB,CAAC,EAAE,MAAM;IAV3B,OAAO,CAAC,IAAI,CAAqB;IAEjC,SAAgB,KAAK,EAAE,OAAO,CAAC;;IAG7B,mCAAmC;IACnB,CAAC,EAAE,QAAQ;IAC3B,mCAAmC;IACnB,CAAC,EAAE,QAAQ;IAC3B,mCAAmC;IACnB,CAAC,EAAE,MAAM;IAK3B,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAUxD,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,OAAO;IAIjD;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,SAAS;IAUhD,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS;IAIvD,MAAM,CAAC,MAAM,IAAI,SAAS;IAI1B,MAAM,CAAC,KAAK,IAAI,SAAS;IAIzB,OAAO,IAAI,OAAO;IAIlB,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAIjC,QAAQ,IAAI,MAAM;IAMlB,OAAO,IAAI,MAAM;IAUjB,QAAQ,IAAI,KAAK,MAAM,EAAE;IAIzB;;OAEG;IACH,eAAe,IAAI,aAAa;IAQhC,MAAM;IAIN,MAAM,KAAK,MAAM,2HAMhB;CACF"}
|
|
@@ -8,22 +8,21 @@ import { hasHexPrefix, hexToBuffer } from '../string/index.js';
|
|
|
8
8
|
r;
|
|
9
9
|
s;
|
|
10
10
|
v;
|
|
11
|
-
isEmpty;
|
|
12
11
|
// Cached values
|
|
13
12
|
size;
|
|
14
|
-
|
|
13
|
+
empty;
|
|
14
|
+
constructor(/** The r value of the signature */ r, /** The s value of the signature */ s, /** The v value of the signature */ v){
|
|
15
15
|
this.r = r;
|
|
16
16
|
this.s = s;
|
|
17
17
|
this.v = v;
|
|
18
|
-
this.
|
|
18
|
+
this.empty = r.isZero() && s.isZero() && v === 0;
|
|
19
19
|
}
|
|
20
20
|
static fromBuffer(buf) {
|
|
21
21
|
const reader = BufferReader.asReader(buf);
|
|
22
22
|
const r = reader.readObject(Buffer32);
|
|
23
23
|
const s = reader.readObject(Buffer32);
|
|
24
24
|
const v = reader.readNumber();
|
|
25
|
-
|
|
26
|
-
return new Signature(r, s, v, isEmpty);
|
|
25
|
+
return new Signature(r, s, v);
|
|
27
26
|
}
|
|
28
27
|
static isValidString(sig) {
|
|
29
28
|
return /^0x[0-9a-f]{129,}$/i.test(sig);
|
|
@@ -38,20 +37,22 @@ import { hasHexPrefix, hexToBuffer } from '../string/index.js';
|
|
|
38
37
|
const r = reader.readObject(Buffer32);
|
|
39
38
|
const s = reader.readObject(Buffer32);
|
|
40
39
|
const v = parseInt(sig.slice(2 + 64 * 2), 16);
|
|
41
|
-
|
|
42
|
-
return new Signature(r, s, v, isEmpty);
|
|
40
|
+
return new Signature(r, s, v);
|
|
43
41
|
}
|
|
44
42
|
static fromViemSignature(sig) {
|
|
45
|
-
return new Signature(Buffer32.fromBuffer(hexToBuffer(sig.r)), Buffer32.fromBuffer(hexToBuffer(sig.s)), sig.v
|
|
43
|
+
return new Signature(Buffer32.fromBuffer(hexToBuffer(sig.r)), Buffer32.fromBuffer(hexToBuffer(sig.s)), sig.v);
|
|
46
44
|
}
|
|
47
45
|
static random() {
|
|
48
|
-
return new Signature(Buffer32.random(), Buffer32.random(), Math.floor(Math.random() * 2)
|
|
46
|
+
return new Signature(Buffer32.random(), Buffer32.random(), Math.floor(Math.random() * 2));
|
|
49
47
|
}
|
|
50
48
|
static empty() {
|
|
51
|
-
return new Signature(Buffer32.ZERO, Buffer32.ZERO, 0
|
|
49
|
+
return new Signature(Buffer32.ZERO, Buffer32.ZERO, 0);
|
|
50
|
+
}
|
|
51
|
+
isEmpty() {
|
|
52
|
+
return this.empty;
|
|
52
53
|
}
|
|
53
54
|
equals(other) {
|
|
54
|
-
return this.r.equals(other.r) && this.s.equals(other.s) && this.v === other.v && this.
|
|
55
|
+
return this.r.equals(other.r) && this.s.equals(other.s) && this.v === other.v && this.empty === other.empty;
|
|
55
56
|
}
|
|
56
57
|
toBuffer() {
|
|
57
58
|
const buffer = serializeToBuffer([
|
|
@@ -79,8 +80,7 @@ import { hasHexPrefix, hexToBuffer } from '../string/index.js';
|
|
|
79
80
|
return {
|
|
80
81
|
r: this.r.toString(),
|
|
81
82
|
s: this.s.toString(),
|
|
82
|
-
v: this.v
|
|
83
|
-
isEmpty: this.isEmpty
|
|
83
|
+
v: this.v
|
|
84
84
|
};
|
|
85
85
|
}
|
|
86
86
|
toJSON() {
|
package/dest/log/pino-logger.js
CHANGED
|
@@ -69,7 +69,7 @@ const customLevels = {
|
|
|
69
69
|
// Global pino options, tweaked for google cloud if running there.
|
|
70
70
|
const useGcloudLogging = parseBooleanEnv(process.env['USE_GCLOUD_LOGGING']);
|
|
71
71
|
const redactedPaths = [
|
|
72
|
-
'
|
|
72
|
+
'validatorPrivateKeys',
|
|
73
73
|
// for both the validator and the prover
|
|
74
74
|
'publisherPrivateKey',
|
|
75
75
|
'peerIdPrivateKey',
|
package/dest/trees/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/trees/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,qCAAqC,CAAC;AACpD,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/trees/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,qCAAqC,CAAC;AACpD,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,wCAAwC,CAAC"}
|
package/dest/trees/index.js
CHANGED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { AsyncHasher } from '@aztec/foundation/trees';
|
|
2
|
+
import { SiblingPath } from '@aztec/foundation/trees';
|
|
3
|
+
/**
|
|
4
|
+
* An ephemeral unbalanced Merkle tree implementation.
|
|
5
|
+
* Follows the rollup implementation which greedily hashes pairs of nodes up the tree.
|
|
6
|
+
* Remaining rightmost nodes are shifted up until they can be paired.
|
|
7
|
+
*/
|
|
8
|
+
export declare class UnbalancedMerkleTreeCalculator {
|
|
9
|
+
private maxDepth;
|
|
10
|
+
private hasher;
|
|
11
|
+
private cache;
|
|
12
|
+
private valueCache;
|
|
13
|
+
protected size: bigint;
|
|
14
|
+
root: Buffer;
|
|
15
|
+
constructor(maxDepth: number, hasher: AsyncHasher['hash']);
|
|
16
|
+
static create(height: number, hasher?: (left: Buffer, right: Buffer) => Promise<Buffer<ArrayBuffer>>): UnbalancedMerkleTreeCalculator;
|
|
17
|
+
/**
|
|
18
|
+
* Returns the root of the tree.
|
|
19
|
+
* @returns The root of the tree.
|
|
20
|
+
*/
|
|
21
|
+
getRoot(): Buffer;
|
|
22
|
+
/**
|
|
23
|
+
* Returns a sibling path for the element at the given index.
|
|
24
|
+
* @param value - The value of the element.
|
|
25
|
+
* @returns A sibling path for the element.
|
|
26
|
+
* Note: The sibling path is an array of sibling hashes, with the lowest hash (leaf hash) first, and the highest hash last.
|
|
27
|
+
*/
|
|
28
|
+
getSiblingPath<N extends number>(value: bigint): Promise<SiblingPath<N>>;
|
|
29
|
+
/**
|
|
30
|
+
* Appends the given leaves to the tree.
|
|
31
|
+
* @param leaves - The leaves to append.
|
|
32
|
+
* @returns Empty promise.
|
|
33
|
+
*/
|
|
34
|
+
appendLeaves(leaves: Buffer[]): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Calculates root while adding leaves and nodes to the cache.
|
|
37
|
+
* @param leaves - The leaves to append.
|
|
38
|
+
* @returns Resulting root of the tree.
|
|
39
|
+
*/
|
|
40
|
+
private batchInsert;
|
|
41
|
+
private storeNode;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=unbalanced_merkle_tree_calculator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unbalanced_merkle_tree_calculator.d.ts","sourceRoot":"","sources":["../../src/trees/unbalanced_merkle_tree_calculator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAMtD;;;;GAIG;AACH,qBAAa,8BAA8B;IAUvC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;IAThB,OAAO,CAAC,KAAK,CAAiC;IAE9C,OAAO,CAAC,UAAU,CAAiC;IACnD,SAAS,CAAC,IAAI,EAAE,MAAM,CAAM;IAE5B,IAAI,EAAE,MAAM,CAAoB;gBAGtB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;IAGrC,MAAM,CAAC,MAAM,CACX,MAAM,EAAE,MAAM,EACd,MAAM,IAAU,MAAM,MAAM,EAAE,OAAO,MAAM,iCAC4B;IAKzE;;;OAGG;IACI,OAAO,IAAI,MAAM;IAIxB;;;;;OAKG;IACI,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAgB/E;;;;OAIG;IACU,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAU1D;;;;OAIG;YACW,WAAW;IAyCzB,OAAO,CAAC,SAAS;CAKlB"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { serializeToBuffer } from '@aztec/foundation/serialize';
|
|
2
|
+
import { SiblingPath } from '@aztec/foundation/trees';
|
|
3
|
+
import { pedersenHash } from '../crypto/pedersen/index.js';
|
|
4
|
+
const indexToKeyHash = (level, index)=>`${level}:${index}`;
|
|
5
|
+
/**
|
|
6
|
+
* An ephemeral unbalanced Merkle tree implementation.
|
|
7
|
+
* Follows the rollup implementation which greedily hashes pairs of nodes up the tree.
|
|
8
|
+
* Remaining rightmost nodes are shifted up until they can be paired.
|
|
9
|
+
*/ export class UnbalancedMerkleTreeCalculator {
|
|
10
|
+
maxDepth;
|
|
11
|
+
hasher;
|
|
12
|
+
// This map stores index and depth -> value
|
|
13
|
+
cache;
|
|
14
|
+
// This map stores value -> index and depth, since we have variable depth
|
|
15
|
+
valueCache;
|
|
16
|
+
size;
|
|
17
|
+
root;
|
|
18
|
+
constructor(maxDepth, hasher){
|
|
19
|
+
this.maxDepth = maxDepth;
|
|
20
|
+
this.hasher = hasher;
|
|
21
|
+
this.cache = {};
|
|
22
|
+
this.valueCache = {};
|
|
23
|
+
this.size = 0n;
|
|
24
|
+
this.root = Buffer.alloc(32);
|
|
25
|
+
}
|
|
26
|
+
static create(height, hasher = async (left, right)=>(await pedersenHash([
|
|
27
|
+
left,
|
|
28
|
+
right
|
|
29
|
+
])).toBuffer()) {
|
|
30
|
+
return new UnbalancedMerkleTreeCalculator(height, hasher);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Returns the root of the tree.
|
|
34
|
+
* @returns The root of the tree.
|
|
35
|
+
*/ getRoot() {
|
|
36
|
+
return this.root;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Returns a sibling path for the element at the given index.
|
|
40
|
+
* @param value - The value of the element.
|
|
41
|
+
* @returns A sibling path for the element.
|
|
42
|
+
* Note: The sibling path is an array of sibling hashes, with the lowest hash (leaf hash) first, and the highest hash last.
|
|
43
|
+
*/ getSiblingPath(value) {
|
|
44
|
+
const path = [];
|
|
45
|
+
const [depth, _index] = this.valueCache[serializeToBuffer(value).toString('hex')].split(':');
|
|
46
|
+
let level = parseInt(depth, 10);
|
|
47
|
+
let index = BigInt(_index);
|
|
48
|
+
while(level > 0){
|
|
49
|
+
const isRight = index & 0x01n;
|
|
50
|
+
const key = indexToKeyHash(level, isRight ? index - 1n : index + 1n);
|
|
51
|
+
const sibling = this.cache[key];
|
|
52
|
+
path.push(sibling);
|
|
53
|
+
level -= 1;
|
|
54
|
+
index >>= 1n;
|
|
55
|
+
}
|
|
56
|
+
return Promise.resolve(new SiblingPath(parseInt(depth, 10), path));
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Appends the given leaves to the tree.
|
|
60
|
+
* @param leaves - The leaves to append.
|
|
61
|
+
* @returns Empty promise.
|
|
62
|
+
*/ async appendLeaves(leaves) {
|
|
63
|
+
if (this.size != BigInt(0)) {
|
|
64
|
+
throw Error(`Can't re-append to an unbalanced tree. Current has ${this.size} leaves.`);
|
|
65
|
+
}
|
|
66
|
+
const root = await this.batchInsert(leaves);
|
|
67
|
+
this.root = root;
|
|
68
|
+
return Promise.resolve();
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Calculates root while adding leaves and nodes to the cache.
|
|
72
|
+
* @param leaves - The leaves to append.
|
|
73
|
+
* @returns Resulting root of the tree.
|
|
74
|
+
*/ async batchInsert(_leaves) {
|
|
75
|
+
// If we have an even number of leaves, hash them all in pairs
|
|
76
|
+
// Otherwise, store the final leaf to be shifted up to the next odd sized level
|
|
77
|
+
let [layerWidth, nodeToShift] = _leaves.length & 1 ? [
|
|
78
|
+
_leaves.length - 1,
|
|
79
|
+
serializeToBuffer(_leaves[_leaves.length - 1])
|
|
80
|
+
] : [
|
|
81
|
+
_leaves.length,
|
|
82
|
+
Buffer.alloc(0)
|
|
83
|
+
];
|
|
84
|
+
// Allocate this layer's leaves and init the next layer up
|
|
85
|
+
let thisLayer = _leaves.slice(0, layerWidth).map((l)=>serializeToBuffer(l));
|
|
86
|
+
let nextLayer = [];
|
|
87
|
+
// Store the bottom level leaves
|
|
88
|
+
thisLayer.forEach((leaf, i)=>this.storeNode(leaf, this.maxDepth, BigInt(i)));
|
|
89
|
+
for(let i = 0; i < this.maxDepth; i++){
|
|
90
|
+
for(let j = 0; j < layerWidth; j += 2){
|
|
91
|
+
// Store the hash of each pair one layer up
|
|
92
|
+
nextLayer[j / 2] = await this.hasher(serializeToBuffer(thisLayer[j]), serializeToBuffer(thisLayer[j + 1]));
|
|
93
|
+
this.storeNode(nextLayer[j / 2], this.maxDepth - i - 1, BigInt(j >> 1));
|
|
94
|
+
}
|
|
95
|
+
layerWidth /= 2;
|
|
96
|
+
if (layerWidth & 1) {
|
|
97
|
+
if (nodeToShift.length) {
|
|
98
|
+
// If the next layer has odd length, and we have a node that needs to be shifted up, add it here
|
|
99
|
+
nextLayer.push(serializeToBuffer(nodeToShift));
|
|
100
|
+
this.storeNode(nodeToShift, this.maxDepth - i - 1, BigInt(layerWidth * 2 >> 1));
|
|
101
|
+
layerWidth += 1;
|
|
102
|
+
nodeToShift = Buffer.alloc(0);
|
|
103
|
+
} else {
|
|
104
|
+
// If we don't have a node waiting to be shifted, store the next layer's final node to be shifted
|
|
105
|
+
layerWidth -= 1;
|
|
106
|
+
nodeToShift = nextLayer[layerWidth];
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// reset the layers
|
|
110
|
+
thisLayer = nextLayer;
|
|
111
|
+
nextLayer = [];
|
|
112
|
+
}
|
|
113
|
+
this.size += BigInt(_leaves.length);
|
|
114
|
+
// return the root
|
|
115
|
+
return thisLayer[0];
|
|
116
|
+
}
|
|
117
|
+
storeNode(value, depth, index) {
|
|
118
|
+
const key = indexToKeyHash(depth, index);
|
|
119
|
+
this.cache[key] = value;
|
|
120
|
+
this.valueCache[value.toString('hex')] = key;
|
|
121
|
+
}
|
|
122
|
+
}
|
package/dest/types/index.d.ts
CHANGED
|
@@ -14,4 +14,23 @@ export type Writeable<T> = {
|
|
|
14
14
|
};
|
|
15
15
|
/** Removes readonly modifiers for an object. */
|
|
16
16
|
export declare function unfreeze<T>(obj: T): Writeable<T>;
|
|
17
|
+
/**
|
|
18
|
+
* Type-safe Event Emitter type
|
|
19
|
+
* @example
|
|
20
|
+
* export type ArchiverEmitter = TypedEventEmitter<{
|
|
21
|
+
* [L2BlockSourceEvents.L2PruneDetected]: (args: L2BlockSourceEvent) => void;
|
|
22
|
+
* [L2BlockSourceEvents.L2BlockProven]: (args: L2BlockSourceEvent) => void;
|
|
23
|
+
* }>;
|
|
24
|
+
* class Archiver extends (EventEmitter as new () => ArchiverEmitter) {
|
|
25
|
+
* // ...
|
|
26
|
+
* }
|
|
27
|
+
*/
|
|
28
|
+
export interface TypedEventEmitter<TEventMap extends {
|
|
29
|
+
[key in keyof TEventMap]: (...args: any[]) => void;
|
|
30
|
+
}> {
|
|
31
|
+
on<K extends keyof TEventMap>(event: K, listener: TEventMap[K]): this;
|
|
32
|
+
off<K extends keyof TEventMap>(event: K, listener: TEventMap[K]): this;
|
|
33
|
+
emit<K extends keyof TEventMap>(event: K, ...args: Parameters<TEventMap[K]>): boolean;
|
|
34
|
+
removeListener<K extends keyof TEventMap>(event: K, listener: TEventMap[K]): this;
|
|
35
|
+
}
|
|
17
36
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KACvB,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC1D,CAAC;AAEF,kCAAkC;AAClC,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;CAC1D,CAAC;AAEF,uDAAuD;AACvD,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE/E,6CAA6C;AAC7C,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;IAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AAE9D,gDAAgD;AAChD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAEhD"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KACvB,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC1D,CAAC;AAEF,kCAAkC;AAClC,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;CAC1D,CAAC;AAEF,uDAAuD;AACvD,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE/E,6CAA6C;AAC7C,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;IAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AAE9D,gDAAgD;AAChD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAEhD;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAiB,CAAC,SAAS,SAAS;KAAG,GAAG,IAAI,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI;CAAE;IACzG,EAAE,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACtE,GAAG,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACvE,IAAI,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IACtF,cAAc,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAEnF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/foundation",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0-nightly.20250604",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dest/index.js",
|
|
6
6
|
"types": "./dest/index.d.ts",
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
]
|
|
101
101
|
},
|
|
102
102
|
"dependencies": {
|
|
103
|
-
"@aztec/bb.js": "0.
|
|
103
|
+
"@aztec/bb.js": "1.0.0-nightly.20250604",
|
|
104
104
|
"@koa/cors": "^5.0.0",
|
|
105
105
|
"@noble/curves": "^1.2.0",
|
|
106
106
|
"c-kzg": "4.0.0-alpha.1",
|
package/src/config/env_var.ts
CHANGED
|
@@ -187,7 +187,7 @@ export type EnvVar =
|
|
|
187
187
|
| 'TXE_PORT'
|
|
188
188
|
| 'VALIDATOR_ATTESTATIONS_POLLING_INTERVAL_MS'
|
|
189
189
|
| 'VALIDATOR_DISABLED'
|
|
190
|
-
| '
|
|
190
|
+
| 'VALIDATOR_PRIVATE_KEYS'
|
|
191
191
|
| 'VALIDATOR_REEXECUTE'
|
|
192
192
|
| 'ROLLUP_VERSION'
|
|
193
193
|
| 'WS_BLOCK_CHECK_INTERVAL_MS'
|
|
@@ -223,7 +223,7 @@ export type EnvVar =
|
|
|
223
223
|
| 'L1_TX_MONITOR_STALL_TIME_MS'
|
|
224
224
|
| 'L1_TX_MONITOR_TX_TIMEOUT_MS'
|
|
225
225
|
| 'L1_TX_PROPAGATION_MAX_QUERY_ATTEMPTS'
|
|
226
|
-
| '
|
|
226
|
+
| 'FAUCET_MNEMONIC_ADDRESS_INDEX'
|
|
227
227
|
| 'FAUCET_ETH_AMOUNT'
|
|
228
228
|
| 'FAUCET_INTERVAL_MS'
|
|
229
229
|
| 'FAUCET_L1_ASSETS'
|
|
@@ -232,5 +232,6 @@ export type EnvVar =
|
|
|
232
232
|
| 'K8S_NAMESPACE_NAME'
|
|
233
233
|
| 'CUSTOM_FORWARDER_CONTRACT_ADDRESS'
|
|
234
234
|
| 'FEE_ASSET_HANDLER_CONTRACT_ADDRESS'
|
|
235
|
+
| 'VALIDATOR_REEXECUTE_DEADLINE_MS'
|
|
235
236
|
| 'AUTO_UPDATE'
|
|
236
237
|
| 'AUTO_UPDATE_URL';
|
|
@@ -4,6 +4,7 @@ import { default as hash } from 'hash.js';
|
|
|
4
4
|
import { Fr } from '../../fields/fields.js';
|
|
5
5
|
import { truncateAndPad } from '../../serialize/free_funcs.js';
|
|
6
6
|
import { type Bufferable, serializeToBuffer } from '../../serialize/serialize.js';
|
|
7
|
+
import type { Hasher } from '../../trees/hasher.js';
|
|
7
8
|
|
|
8
9
|
export function sha256(data: Buffer) {
|
|
9
10
|
return Buffer.from(hash.sha256().update(data).digest());
|
|
@@ -145,3 +146,49 @@ function g0_256(x: number) {
|
|
|
145
146
|
function g1_256(x: number) {
|
|
146
147
|
return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);
|
|
147
148
|
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* A helper class encapsulating SHA256 hash functionality.
|
|
152
|
+
* @deprecated Don't call SHA256 directly in production code. Instead, create suitably-named functions for specific
|
|
153
|
+
* purposes.
|
|
154
|
+
*/
|
|
155
|
+
export class SHA256 implements Hasher {
|
|
156
|
+
/*
|
|
157
|
+
* @deprecated Don't call SHA256 directly in production code. Instead, create suitably-named functions for specific
|
|
158
|
+
* purposes.
|
|
159
|
+
*/
|
|
160
|
+
public hash(lhs: Uint8Array, rhs: Uint8Array) {
|
|
161
|
+
return sha256(Buffer.concat([Buffer.from(lhs), Buffer.from(rhs)])) as Buffer<ArrayBuffer>;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/*
|
|
165
|
+
* @deprecated Don't call SHA256 directly in production code. Instead, create suitably-named functions for specific
|
|
166
|
+
* purposes.
|
|
167
|
+
*/
|
|
168
|
+
public hashInputs(inputs: Buffer[]) {
|
|
169
|
+
return sha256(Buffer.concat(inputs)) as Buffer<ArrayBuffer>;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* A helper class encapsulating truncated SHA256 hash functionality.
|
|
175
|
+
* @deprecated Don't call SHA256 directly in production code. Instead, create suitably-named functions for specific
|
|
176
|
+
* purposes.
|
|
177
|
+
*/
|
|
178
|
+
export class SHA256Trunc implements Hasher {
|
|
179
|
+
/*
|
|
180
|
+
* @deprecated Don't call SHA256 directly in production code. Instead, create suitably-named functions for specific
|
|
181
|
+
* purposes.
|
|
182
|
+
*/
|
|
183
|
+
public hash(lhs: Uint8Array, rhs: Uint8Array) {
|
|
184
|
+
return truncateAndPad(sha256(Buffer.concat([Buffer.from(lhs), Buffer.from(rhs)]))) as Buffer<ArrayBuffer>;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/*
|
|
188
|
+
* @deprecated Don't call SHA256 directly in production code. Instead, create suitably-named functions for specific
|
|
189
|
+
* purposes.
|
|
190
|
+
*/
|
|
191
|
+
public hashInputs(inputs: Buffer[]) {
|
|
192
|
+
return truncateAndPad(sha256(Buffer.concat(inputs))) as Buffer<ArrayBuffer>;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
@@ -12,7 +12,6 @@ export type ViemSignature = {
|
|
|
12
12
|
r: `0x${string}`;
|
|
13
13
|
s: `0x${string}`;
|
|
14
14
|
v: number;
|
|
15
|
-
isEmpty: boolean;
|
|
16
15
|
};
|
|
17
16
|
|
|
18
17
|
/**
|
|
@@ -22,6 +21,8 @@ export class Signature {
|
|
|
22
21
|
// Cached values
|
|
23
22
|
private size: number | undefined;
|
|
24
23
|
|
|
24
|
+
public readonly empty: boolean;
|
|
25
|
+
|
|
25
26
|
constructor(
|
|
26
27
|
/** The r value of the signature */
|
|
27
28
|
public readonly r: Buffer32,
|
|
@@ -29,9 +30,9 @@ export class Signature {
|
|
|
29
30
|
public readonly s: Buffer32,
|
|
30
31
|
/** The v value of the signature */
|
|
31
32
|
public readonly v: number,
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
) {
|
|
34
|
+
this.empty = r.isZero() && s.isZero() && v === 0;
|
|
35
|
+
}
|
|
35
36
|
|
|
36
37
|
static fromBuffer(buf: Buffer | BufferReader): Signature {
|
|
37
38
|
const reader = BufferReader.asReader(buf);
|
|
@@ -40,9 +41,7 @@ export class Signature {
|
|
|
40
41
|
const s = reader.readObject(Buffer32);
|
|
41
42
|
const v = reader.readNumber();
|
|
42
43
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
return new Signature(r, s, v, isEmpty);
|
|
44
|
+
return new Signature(r, s, v);
|
|
46
45
|
}
|
|
47
46
|
|
|
48
47
|
static isValidString(sig: `0x${string}`): boolean {
|
|
@@ -61,30 +60,27 @@ export class Signature {
|
|
|
61
60
|
const s = reader.readObject(Buffer32);
|
|
62
61
|
const v = parseInt(sig.slice(2 + 64 * 2), 16);
|
|
63
62
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
return new Signature(r, s, v, isEmpty);
|
|
63
|
+
return new Signature(r, s, v);
|
|
67
64
|
}
|
|
68
65
|
|
|
69
66
|
static fromViemSignature(sig: ViemSignature): Signature {
|
|
70
|
-
return new Signature(
|
|
71
|
-
Buffer32.fromBuffer(hexToBuffer(sig.r)),
|
|
72
|
-
Buffer32.fromBuffer(hexToBuffer(sig.s)),
|
|
73
|
-
sig.v,
|
|
74
|
-
sig.isEmpty,
|
|
75
|
-
);
|
|
67
|
+
return new Signature(Buffer32.fromBuffer(hexToBuffer(sig.r)), Buffer32.fromBuffer(hexToBuffer(sig.s)), sig.v);
|
|
76
68
|
}
|
|
77
69
|
|
|
78
70
|
static random(): Signature {
|
|
79
|
-
return new Signature(Buffer32.random(), Buffer32.random(), Math.floor(Math.random() * 2)
|
|
71
|
+
return new Signature(Buffer32.random(), Buffer32.random(), Math.floor(Math.random() * 2));
|
|
80
72
|
}
|
|
81
73
|
|
|
82
74
|
static empty(): Signature {
|
|
83
|
-
return new Signature(Buffer32.ZERO, Buffer32.ZERO, 0
|
|
75
|
+
return new Signature(Buffer32.ZERO, Buffer32.ZERO, 0);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
isEmpty(): boolean {
|
|
79
|
+
return this.empty;
|
|
84
80
|
}
|
|
85
81
|
|
|
86
82
|
equals(other: Signature): boolean {
|
|
87
|
-
return this.r.equals(other.r) && this.s.equals(other.s) && this.v === other.v && this.
|
|
83
|
+
return this.r.equals(other.r) && this.s.equals(other.s) && this.v === other.v && this.empty === other.empty;
|
|
88
84
|
}
|
|
89
85
|
|
|
90
86
|
toBuffer(): Buffer {
|
|
@@ -115,7 +111,6 @@ export class Signature {
|
|
|
115
111
|
r: this.r.toString(),
|
|
116
112
|
s: this.s.toString(),
|
|
117
113
|
v: this.v,
|
|
118
|
-
isEmpty: this.isEmpty,
|
|
119
114
|
};
|
|
120
115
|
}
|
|
121
116
|
|
package/src/log/pino-logger.ts
CHANGED
|
@@ -101,7 +101,7 @@ const customLevels = { verbose: 25 };
|
|
|
101
101
|
const useGcloudLogging = parseBooleanEnv(process.env['USE_GCLOUD_LOGGING' satisfies EnvVar]);
|
|
102
102
|
|
|
103
103
|
const redactedPaths = [
|
|
104
|
-
'
|
|
104
|
+
'validatorPrivateKeys',
|
|
105
105
|
// for both the validator and the prover
|
|
106
106
|
'publisherPrivateKey',
|
|
107
107
|
'peerIdPrivateKey',
|
package/src/trees/index.ts
CHANGED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { serializeToBuffer } from '@aztec/foundation/serialize';
|
|
2
|
+
import type { AsyncHasher } from '@aztec/foundation/trees';
|
|
3
|
+
import { SiblingPath } from '@aztec/foundation/trees';
|
|
4
|
+
|
|
5
|
+
import { pedersenHash } from '../crypto/pedersen/index.js';
|
|
6
|
+
|
|
7
|
+
const indexToKeyHash = (level: number, index: bigint) => `${level}:${index}`;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* An ephemeral unbalanced Merkle tree implementation.
|
|
11
|
+
* Follows the rollup implementation which greedily hashes pairs of nodes up the tree.
|
|
12
|
+
* Remaining rightmost nodes are shifted up until they can be paired.
|
|
13
|
+
*/
|
|
14
|
+
export class UnbalancedMerkleTreeCalculator {
|
|
15
|
+
// This map stores index and depth -> value
|
|
16
|
+
private cache: { [key: string]: Buffer } = {};
|
|
17
|
+
// This map stores value -> index and depth, since we have variable depth
|
|
18
|
+
private valueCache: { [key: string]: string } = {};
|
|
19
|
+
protected size: bigint = 0n;
|
|
20
|
+
|
|
21
|
+
root: Buffer = Buffer.alloc(32);
|
|
22
|
+
|
|
23
|
+
public constructor(
|
|
24
|
+
private maxDepth: number,
|
|
25
|
+
private hasher: AsyncHasher['hash'],
|
|
26
|
+
) {}
|
|
27
|
+
|
|
28
|
+
static create(
|
|
29
|
+
height: number,
|
|
30
|
+
hasher = async (left: Buffer, right: Buffer) =>
|
|
31
|
+
(await pedersenHash([left, right])).toBuffer() as Buffer<ArrayBuffer>,
|
|
32
|
+
) {
|
|
33
|
+
return new UnbalancedMerkleTreeCalculator(height, hasher);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Returns the root of the tree.
|
|
38
|
+
* @returns The root of the tree.
|
|
39
|
+
*/
|
|
40
|
+
public getRoot(): Buffer {
|
|
41
|
+
return this.root;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Returns a sibling path for the element at the given index.
|
|
46
|
+
* @param value - The value of the element.
|
|
47
|
+
* @returns A sibling path for the element.
|
|
48
|
+
* Note: The sibling path is an array of sibling hashes, with the lowest hash (leaf hash) first, and the highest hash last.
|
|
49
|
+
*/
|
|
50
|
+
public getSiblingPath<N extends number>(value: bigint): Promise<SiblingPath<N>> {
|
|
51
|
+
const path: Buffer[] = [];
|
|
52
|
+
const [depth, _index] = this.valueCache[serializeToBuffer(value).toString('hex')].split(':');
|
|
53
|
+
let level = parseInt(depth, 10);
|
|
54
|
+
let index = BigInt(_index);
|
|
55
|
+
while (level > 0) {
|
|
56
|
+
const isRight = index & 0x01n;
|
|
57
|
+
const key = indexToKeyHash(level, isRight ? index - 1n : index + 1n);
|
|
58
|
+
const sibling = this.cache[key];
|
|
59
|
+
path.push(sibling);
|
|
60
|
+
level -= 1;
|
|
61
|
+
index >>= 1n;
|
|
62
|
+
}
|
|
63
|
+
return Promise.resolve(new SiblingPath<N>(parseInt(depth, 10) as N, path));
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Appends the given leaves to the tree.
|
|
68
|
+
* @param leaves - The leaves to append.
|
|
69
|
+
* @returns Empty promise.
|
|
70
|
+
*/
|
|
71
|
+
public async appendLeaves(leaves: Buffer[]): Promise<void> {
|
|
72
|
+
if (this.size != BigInt(0)) {
|
|
73
|
+
throw Error(`Can't re-append to an unbalanced tree. Current has ${this.size} leaves.`);
|
|
74
|
+
}
|
|
75
|
+
const root = await this.batchInsert(leaves);
|
|
76
|
+
this.root = root;
|
|
77
|
+
|
|
78
|
+
return Promise.resolve();
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Calculates root while adding leaves and nodes to the cache.
|
|
83
|
+
* @param leaves - The leaves to append.
|
|
84
|
+
* @returns Resulting root of the tree.
|
|
85
|
+
*/
|
|
86
|
+
private async batchInsert(_leaves: Buffer[]): Promise<Buffer> {
|
|
87
|
+
// If we have an even number of leaves, hash them all in pairs
|
|
88
|
+
// Otherwise, store the final leaf to be shifted up to the next odd sized level
|
|
89
|
+
let [layerWidth, nodeToShift] =
|
|
90
|
+
_leaves.length & 1
|
|
91
|
+
? [_leaves.length - 1, serializeToBuffer(_leaves[_leaves.length - 1])]
|
|
92
|
+
: [_leaves.length, Buffer.alloc(0)];
|
|
93
|
+
// Allocate this layer's leaves and init the next layer up
|
|
94
|
+
let thisLayer = _leaves.slice(0, layerWidth).map(l => serializeToBuffer(l));
|
|
95
|
+
let nextLayer = [];
|
|
96
|
+
// Store the bottom level leaves
|
|
97
|
+
thisLayer.forEach((leaf, i) => this.storeNode(leaf, this.maxDepth, BigInt(i)));
|
|
98
|
+
for (let i = 0; i < this.maxDepth; i++) {
|
|
99
|
+
for (let j = 0; j < layerWidth; j += 2) {
|
|
100
|
+
// Store the hash of each pair one layer up
|
|
101
|
+
nextLayer[j / 2] = await this.hasher(serializeToBuffer(thisLayer[j]), serializeToBuffer(thisLayer[j + 1]));
|
|
102
|
+
this.storeNode(nextLayer[j / 2], this.maxDepth - i - 1, BigInt(j >> 1));
|
|
103
|
+
}
|
|
104
|
+
layerWidth /= 2;
|
|
105
|
+
if (layerWidth & 1) {
|
|
106
|
+
if (nodeToShift.length) {
|
|
107
|
+
// If the next layer has odd length, and we have a node that needs to be shifted up, add it here
|
|
108
|
+
nextLayer.push(serializeToBuffer(nodeToShift));
|
|
109
|
+
this.storeNode(nodeToShift, this.maxDepth - i - 1, BigInt((layerWidth * 2) >> 1));
|
|
110
|
+
layerWidth += 1;
|
|
111
|
+
nodeToShift = Buffer.alloc(0);
|
|
112
|
+
} else {
|
|
113
|
+
// If we don't have a node waiting to be shifted, store the next layer's final node to be shifted
|
|
114
|
+
layerWidth -= 1;
|
|
115
|
+
nodeToShift = nextLayer[layerWidth];
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// reset the layers
|
|
119
|
+
thisLayer = nextLayer;
|
|
120
|
+
nextLayer = [];
|
|
121
|
+
}
|
|
122
|
+
this.size += BigInt(_leaves.length);
|
|
123
|
+
// return the root
|
|
124
|
+
return thisLayer[0];
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
private storeNode(value: Buffer, depth: number, index: bigint) {
|
|
128
|
+
const key = indexToKeyHash(depth, index);
|
|
129
|
+
this.cache[key] = value;
|
|
130
|
+
this.valueCache[value.toString('hex')] = key;
|
|
131
|
+
}
|
|
132
|
+
}
|
package/src/types/index.ts
CHANGED
|
@@ -18,3 +18,22 @@ export type Writeable<T> = { -readonly [P in keyof T]: T[P] };
|
|
|
18
18
|
export function unfreeze<T>(obj: T): Writeable<T> {
|
|
19
19
|
return obj as Writeable<T>;
|
|
20
20
|
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Type-safe Event Emitter type
|
|
24
|
+
* @example
|
|
25
|
+
* export type ArchiverEmitter = TypedEventEmitter<{
|
|
26
|
+
* [L2BlockSourceEvents.L2PruneDetected]: (args: L2BlockSourceEvent) => void;
|
|
27
|
+
* [L2BlockSourceEvents.L2BlockProven]: (args: L2BlockSourceEvent) => void;
|
|
28
|
+
* }>;
|
|
29
|
+
* class Archiver extends (EventEmitter as new () => ArchiverEmitter) {
|
|
30
|
+
* // ...
|
|
31
|
+
* }
|
|
32
|
+
*/
|
|
33
|
+
export interface TypedEventEmitter<TEventMap extends { [key in keyof TEventMap]: (...args: any[]) => void }> {
|
|
34
|
+
on<K extends keyof TEventMap>(event: K, listener: TEventMap[K]): this;
|
|
35
|
+
off<K extends keyof TEventMap>(event: K, listener: TEventMap[K]): this;
|
|
36
|
+
emit<K extends keyof TEventMap>(event: K, ...args: Parameters<TEventMap[K]>): boolean;
|
|
37
|
+
removeListener<K extends keyof TEventMap>(event: K, listener: TEventMap[K]): this;
|
|
38
|
+
// Can add other EventEmitter methods if needed, like once(), listenerCount(), etc.
|
|
39
|
+
}
|