diff --git a/spartan/aztec-network/templates/boot-node.yaml b/spartan/aztec-network/templates/boot-node.yaml index 1d574281444..b1679d167d7 100644 --- a/spartan/aztec-network/templates/boot-node.yaml +++ b/spartan/aztec-network/templates/boot-node.yaml @@ -39,6 +39,7 @@ spec: done echo "OpenTelemetry collector is ready!" {{- end }} + {{- if .Values.bootNode.deployContracts }} - name: deploy-contracts image: {{ .Values.images.aztec.image }} command: @@ -48,7 +49,7 @@ spec: "cp /scripts/deploy-contracts.sh /tmp/deploy-contracts.sh && chmod +x /tmp/deploy-contracts.sh && /tmp/deploy-contracts.sh \"{{ join "," .Values.validator.validatorAddresses }}\"" ] volumeMounts: - - name: shared-volume + - name: scripts-output mountPath: /shared - name: scripts mountPath: /scripts @@ -57,6 +58,7 @@ spec: value: {{ include "aztec-network.ethereumHost" . | quote }} - name: INIT_VALIDATORS value: {{ not .Values.validator.external | quote }} + {{- end }} containers: - name: boot-node image: {{ .Values.images.aztec.image }} @@ -78,8 +80,14 @@ spec: timeoutSeconds: 30 failureThreshold: 3 volumeMounts: - - name: shared-volume + {{- if .Values.bootNode.deployContracts }} + - name: scripts-output mountPath: /shared + {{- else }} + - name: contracts-env + mountPath: /shared/contracts.env + subPath: contracts.env + {{- end }} env: - name: POD_NAME valueFrom: @@ -103,6 +111,8 @@ spec: value: {{ include "aztec-network.ethereumHost" . | quote }} - name: P2P_ENABLED value: "{{ .Values.bootNode.p2p.enabled }}" + - name: COINBASE + value: "{{ .Values.bootNode.coinbaseAddress }}" - name: VALIDATOR_DISABLED value: "{{ .Values.bootNode.validator.disabled }}" - name: SEQ_MAX_SECONDS_BETWEEN_BLOCKS @@ -138,19 +148,18 @@ spec: resources: {{- toYaml .Values.bootNode.resources | nindent 12 }} volumes: + {{- if .Values.bootNode.deployContracts }} - name: scripts configMap: name: {{ include "aztec-network.fullname" . }}-deploy-contracts-script - volumeClaimTemplates: - - metadata: - name: shared-volume - labels: - {{- include "aztec-network.labels" . | nindent 8 }} - spec: - accessModes: ["ReadWriteOnce"] - resources: - requests: - storage: {{ .Values.bootNode.storage }} + - name: scripts-output + emptyDir: {} + {{- else }} + - name: contracts-env + configMap: + name: {{ include "aztec-network.fullname" . }}-contracts-env + {{- end }} +{{- if .Values.bootNode.deployContracts }} --- apiVersion: v1 kind: ConfigMap @@ -161,6 +170,23 @@ metadata: data: deploy-contracts.sh: | {{ .Files.Get "files/config/deploy-l1-contracts.sh" | nindent 4 }} +{{- else }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "aztec-network.fullname" . }}-contracts-env + labels: + {{- include "aztec-network.labels" . | nindent 4 }} +data: + contracts.env: | + export ROLLUP_CONTRACT_ADDRESS={{ .Values.bootNode.contracts.rollupAddress }} + export REGISTRY_CONTRACT_ADDRESS={{ .Values.bootNode.contracts.registryAddress }} + export INBOX_CONTRACT_ADDRESS={{ .Values.bootNode.contracts.inboxAddress }} + export OUTBOX_CONTRACT_ADDRESS={{ .Values.bootNode.contracts.outboxAddress }} + export FEE_JUICE_CONTRACT_ADDRESS={{ .Values.bootNode.contracts.feeJuiceAddress }} + export FEE_JUICE_PORTAL_CONTRACT_ADDRESS={{ .Values.bootNode.contracts.feeJuicePortalAddress }} +{{- end }} --- apiVersion: v1 kind: Service diff --git a/spartan/aztec-network/values.yaml b/spartan/aztec-network/values.yaml index e623b4dd8c2..dd26b2b24a1 100644 --- a/spartan/aztec-network/values.yaml +++ b/spartan/aztec-network/values.yaml @@ -31,6 +31,7 @@ bootNode: nodePort: 8080 logLevel: "debug" debug: "aztec:*,-aztec:avm_simulator*,-aztec:libp2p_service*,-aztec:circuits:artifact_hash,-json-rpc*" + coinbaseAddress: "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" sequencer: maxSecondsBetweenBlocks: 0 minTxsPerBlock: 1 @@ -42,6 +43,14 @@ bootNode: requests: memory: "2Gi" cpu: "200m" + deployContracts: true # Set to false to use manual contract addresses + contracts: + rollupAddress: "" + registryAddress: "" + inboxAddress: "" + outboxAddress: "" + feeJuiceAddress: "" + feeJuicePortalAddress: "" storage: "8Gi" validator: @@ -115,7 +124,7 @@ bot: debug: "aztec:*,-aztec:avm_simulator*,-aztec:libp2p_service*,-aztec:circuits:artifact_hash,-json-rpc*" replicas: 1 botPrivateKey: "0xcafe" - txIntervalSeconds: 5 + txIntervalSeconds: 24 privateTransfersPerTx: 1 publicTransfersPerTx: 0 # Do not wait for transactions diff --git a/spartan/aztec-network/values/3-validators-with-metrics.yaml b/spartan/aztec-network/values/3-validators-with-metrics.yaml index d2666dddf72..8252a8e7998 100644 --- a/spartan/aztec-network/values/3-validators-with-metrics.yaml +++ b/spartan/aztec-network/values/3-validators-with-metrics.yaml @@ -9,7 +9,7 @@ telemetry: otelCollectorEndpoint: http://metrics-opentelemetry-collector.metrics:4318 validator: - debug: "aztec:*,-aztec:avm_simulator:*,-aztec:libp2p_service,-aztec:world-state:database" + debug: "aztec:*,-aztec:avm_simulator:*,-aztec:world-state:database,discv5:*,-JsonProxy:*" replicas: 3 validatorKeys: - 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 @@ -23,5 +23,6 @@ validator: disabled: false bootNode: + debug: "aztec:*,-aztec:avm_simulator:*,-aztec:world-state:database,discv5:*,-JsonProxy:*" validator: disabled: true diff --git a/spartan/metrics/install-prod.sh b/spartan/metrics/install-prod.sh new file mode 100755 index 00000000000..cd62570853d --- /dev/null +++ b/spartan/metrics/install-prod.sh @@ -0,0 +1,4 @@ +#!/bin/bash +set -eu + +helm upgrade metrics . -n metrics --values "./values/prod.yaml" --install --create-namespace --atomic diff --git a/spartan/metrics/values/prod.yaml b/spartan/metrics/values/prod.yaml index a64e3080578..347f87f73b9 100644 --- a/spartan/metrics/values/prod.yaml +++ b/spartan/metrics/values/prod.yaml @@ -3,18 +3,15 @@ grafana: service: type: LoadBalancer - port: 443 - annotations: - service.beta.kubernetes.io/aws-load-balancer-ssl-cert: "arn:aws:acm:us-east-1:278380418400:certificate/39e70177-9fb5-40e3-a73c-5d963bb6d50c" - service.beta.kubernetes.io/aws-load-balancer-backend-protocol: "http" - service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "443" - service.beta.kubernetes.io/aws-load-balancer-ssl-negotiation-policy: "ELBSecurityPolicy-TLS-1-2-2017-01" persistence: type: pvc enabled: true size: "10Gi" opentelemetry-collector: + ports: + jaeger-compact: + enabled: false service: enabled: true type: LoadBalancer diff --git a/spartan/oitavos/README.md b/spartan/oitavos/README.md index c78d56624e0..e6a687105b3 100644 --- a/spartan/oitavos/README.md +++ b/spartan/oitavos/README.md @@ -2,6 +2,25 @@ ## Install docker + +## Setup your environment + +On your local machine, copy the `deploy-oitavos-team.sh` script to the remote machine: +```sh +PEM=given +FILE=/path/to/your/checkout/spartan/oitavos/deploy-oitavos-team.sh +REMOTE=given + +scp -i $PEM $FILE ubuntu@$REMOTE:~/deploy.sh +``` + +Log into the remote machine: +``` +ssh -i $PEM ubuntu@$REMOTE +``` + +Setup docker: + ```sh sudo apt update sudo apt install docker.io @@ -11,26 +30,46 @@ sudo usermod -aG docker $USER newgrp docker ``` -## Setup your environment - +Now export some stuff that will remain constant: ```sh export AZTEC_IMAGE=given export ETHEREUM_HOST=given export BOOT_NODE_URL=given -export PUBLIC_IP=given +export PUBLIC_IP=given, same as the one you used to ssh ``` -## When you win a validator +Now, whenever you win a validator, you are going to launch a container. +They need to use different ports, and that script will be reading/writing from your `pwd`, +so you want a different dir for each validator. +So when you win validator 1, you can run: ```sh -VALIDATOR_PRIVATE_KEY=given \ -VALIDATOR_ADDRESS=given \ +mkdir val1 +cd val1 +VALIDATOR_PRIVATE_KEY=0x4c9f2ddf5a2436ba5bb481149e4a7e6c43827d1999b82ae7c66138a768c128cc \ +VALIDATOR_ADDRESS=0xaaff72f778ae11740eaf84eafcef3e8bc7446aac \ NODE_PORT=8080 \ P2P_TCP_PORT=40400 \ P2P_UDP_PORT=40500 \ -./deploy-oitavos-team.sh +../deploy.sh +``` + +Note, it doesn't log from the running container. + +When you win another validator, you can open a new tab and + +```sh +# export the same static vars above +mkdir val2 +cd val2 +VALIDATOR_PRIVATE_KEY=given \ +VALIDATOR_ADDRESS=given \ +NODE_PORT=8081 \ +P2P_TCP_PORT=40401 \ +P2P_UDP_PORT=40501 \ +../deploy.sh ``` # For operators diff --git a/spartan/oitavos/deploy-oitavos-team.sh b/spartan/oitavos/deploy-oitavos-team.sh index 54ec2ccfe07..3ef30075556 100755 --- a/spartan/oitavos/deploy-oitavos-team.sh +++ b/spartan/oitavos/deploy-oitavos-team.sh @@ -1,32 +1,34 @@ #!/bin/bash set -eu -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -# These need to be set in the environment -# AZTEC_IMAGE=$1 -# ETHEREUM_HOST=$2 -# BOOT_NODE_URL=$3 -# VALIDATOR_PRIVATE_KEY=$4 -# VALIDATOR_ADDRESS=$5 -# PUBLIC_IP=$6 -# NODE_PORT=$7 -# P2P_TCP_PORT=$8 -# P2P_UDP_PORT=$9 +# These need to be set in the environment. +# We'll echo them out now to make sure they're set: +echo "AZTEC_IMAGE: $AZTEC_IMAGE" +echo "ETHEREUM_HOST: $ETHEREUM_HOST" +echo "BOOT_NODE_URL: $BOOT_NODE_URL" +echo "PUBLIC_IP: $PUBLIC_IP" +echo "VALIDATOR_PRIVATE_KEY: $VALIDATOR_PRIVATE_KEY" +echo "VALIDATOR_ADDRESS: $VALIDATOR_ADDRESS" +echo "NODE_PORT: $NODE_PORT" +echo "P2P_TCP_PORT: $P2P_TCP_PORT" +echo "P2P_UDP_PORT: $P2P_UDP_PORT" -docker run $AZTEC_IMAGE get-node-info -u $BOOT_NODE_URL | tee $SCRIPT_DIR/node_info.txt -boot_node_enr=$(cat $SCRIPT_DIR/node_info.txt | grep -oP 'Node ENR: \Kenr:[a-zA-Z0-9\-\_\.]+') -rollup_address=$(cat $SCRIPT_DIR/node_info.txt | grep -oP 'Rollup Address: \K0x[a-fA-F0-9]{40}') -registry_address=$(cat $SCRIPT_DIR/node_info.txt | grep -oP 'Registry Address: \K0x[a-fA-F0-9]{40}') -inbox_address=$(cat $SCRIPT_DIR/node_info.txt | grep -oP 'L1 -> L2 Inbox Address: \K0x[a-fA-F0-9]{40}') -outbox_address=$(cat $SCRIPT_DIR/node_info.txt | grep -oP 'L2 -> L1 Outbox Address: \K0x[a-fA-F0-9]{40}') -fee_juice_address=$(cat $SCRIPT_DIR/node_info.txt | grep -oP 'Fee Juice Address: \K0x[a-fA-F0-9]{40}') -fee_juice_portal_address=$(cat $SCRIPT_DIR/node_info.txt | grep -oP 'Fee Juice Portal Address: \K0x[a-fA-F0-9]{40}') + +docker run $AZTEC_IMAGE get-node-info -u $BOOT_NODE_URL | tee ./node_info.txt + +boot_node_enr=$(cat ./node_info.txt | grep -oP 'Node ENR: \Kenr:[a-zA-Z0-9\-\_\.]+') +rollup_address=$(cat ./node_info.txt | grep -oP 'Rollup Address: \K0x[a-fA-F0-9]{40}') +registry_address=$(cat ./node_info.txt | grep -oP 'Registry Address: \K0x[a-fA-F0-9]{40}') +inbox_address=$(cat ./node_info.txt | grep -oP 'L1 -> L2 Inbox Address: \K0x[a-fA-F0-9]{40}') +outbox_address=$(cat ./node_info.txt | grep -oP 'L2 -> L1 Outbox Address: \K0x[a-fA-F0-9]{40}') +fee_juice_address=$(cat ./node_info.txt | grep -oP 'Fee Juice Address: \K0x[a-fA-F0-9]{40}') +fee_juice_portal_address=$(cat ./node_info.txt | grep -oP 'Fee Juice Portal Address: \K0x[a-fA-F0-9]{40}') # Write the addresses to a file in the shared volume -cat < $SCRIPT_DIR/validator.env +cat < ./validator.env BOOTSTRAP_NODES=$boot_node_enr ROLLUP_CONTRACT_ADDRESS=$rollup_address REGISTRY_CONTRACT_ADDRESS=$registry_address @@ -49,13 +51,14 @@ P2P_TCP_ANNOUNCE_ADDR=$PUBLIC_IP:$P2P_TCP_PORT P2P_UDP_ANNOUNCE_ADDR=$PUBLIC_IP:$P2P_UDP_PORT P2P_TCP_LISTEN_ADDR=0.0.0.0:$P2P_TCP_PORT P2P_UDP_LISTEN_ADDR=0.0.0.0:$P2P_UDP_PORT +COINBASE=$VALIDATOR_ADDRESS EOF -cat $SCRIPT_DIR/validator.env +cat ./validator.env docker run $AZTEC_IMAGE add-l1-validator -u $ETHEREUM_HOST --validator $VALIDATOR_ADDRESS --rollup $rollup_address docker run --rm \ - --env-file $SCRIPT_DIR/validator.env \ + --env-file ./validator.env \ -p $NODE_PORT:$NODE_PORT \ -p $P2P_TCP_PORT:$P2P_TCP_PORT \ -p $P2P_UDP_PORT:$P2P_UDP_PORT/udp \ diff --git a/spartan/oitavos/oitavos-spartan.yaml b/spartan/oitavos/oitavos-spartan.yaml index 8ef040d1fdf..8e7ff08d1e1 100644 --- a/spartan/oitavos/oitavos-spartan.yaml +++ b/spartan/oitavos/oitavos-spartan.yaml @@ -6,9 +6,9 @@ telemetry: otelCollectorEndpoint: http://metrics-opentelemetry-collector.metrics:4318 bootNode: - debug: "aztec:*,-aztec:avm_simulator*,-aztec:circuits:artifact_hash,-json-rpc*" - externalTcpHost: a32232476dd1841b58f3a72a5cc5007b-171632666.us-east-1.elb.amazonaws.com - externalUdpHost: a63a7f4819ca44eb58e9dc42c1e4b11e-a3423b2c54b3ab38.elb.us-east-1.amazonaws.com + debug: "aztec:*,-aztec:avm_simulator*,-aztec:circuits:artifact_hash,-json-rpc*,-aztec:world-state:*,-aztec:l2_block_stream,-aztec:libp2p_service" + externalTcpHost: a1a4d181c572d4b919797b16a6c9fa23-446041891.us-east-1.elb.amazonaws.com + externalUdpHost: aaa28cdcabbf6435c824cf6335f3953b-1b1df1304f79fbf2.elb.us-east-1.amazonaws.com validator: disabled: true diff --git a/yarn-project/archiver/src/archiver/archiver.ts b/yarn-project/archiver/src/archiver/archiver.ts index 2e7163b3cee..d40be435fc1 100644 --- a/yarn-project/archiver/src/archiver/archiver.ts +++ b/yarn-project/archiver/src/archiver/archiver.ts @@ -403,11 +403,10 @@ export class Archiver implements ArchiveSource { const lastProcessedL1BlockNumber = retrievedBlocks[retrievedBlocks.length - 1].l1.blockNumber; - this.log.debug( - `Processing retrieved blocks ${retrievedBlocks - .map(b => b.data.number) - .join(',')} with last processed L1 block ${lastProcessedL1BlockNumber}`, - ); + this.log.debug(`last processed L1 block: [${lastProcessedL1BlockNumber}]`); + for (const block of retrievedBlocks) { + this.log.debug(`ingesting new L2 block`, block.data.header.globalVariables.toFriendlyJSON()); + } const timer = new Timer(); await this.store.addBlocks(retrievedBlocks); diff --git a/yarn-project/circuits.js/src/structs/global_variables.ts b/yarn-project/circuits.js/src/structs/global_variables.ts index 13eabeda486..e36f7503573 100644 --- a/yarn-project/circuits.js/src/structs/global_variables.ts +++ b/yarn-project/circuits.js/src/structs/global_variables.ts @@ -136,6 +136,20 @@ export class GlobalVariables { }; } + /** + * A trimmed version of the JSON representation of the global variables, + * tailored for human consumption. + */ + toFriendlyJSON() { + return { + blockNumber: this.blockNumber.toNumber(), + slotNumber: this.slotNumber.toNumber(), + timestamp: this.timestamp.toString(), + coinbase: this.coinbase.toString(), + gasFees: this.gasFees.toJSON(), + }; + } + clone(): GlobalVariables { return GlobalVariables.fromBuffer(this.toBuffer()); } diff --git a/yarn-project/cli/src/cmds/l1/index.ts b/yarn-project/cli/src/cmds/l1/index.ts index 612dcd3b79c..37cd7a7e7dd 100644 --- a/yarn-project/cli/src/cmds/l1/index.ts +++ b/yarn-project/cli/src/cmds/l1/index.ts @@ -93,6 +93,37 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: DebugL }); }); + program + .command('remove-l1-validator') + .description('Removes a validator to the L1 rollup contract.') + .requiredOption( + '-u, --rpc-url ', + 'Url of the ethereum host. Chain identifiers localhost and testnet can be used', + ETHEREUM_HOST, + ) + .option('-pk, --private-key ', 'The private key to use for deployment', PRIVATE_KEY) + .option( + '-m, --mnemonic ', + 'The mnemonic to use in deployment', + 'test test test test test test test test test test test junk', + ) + .addOption(l1ChainIdOption) + .option('--validator ', 'ethereum address of the validator', parseEthereumAddress) + .option('--rollup
', 'ethereum address of the rollup contract', parseEthereumAddress) + .action(async options => { + const { removeL1Validator } = await import('./update_l1_validators.js'); + await removeL1Validator({ + rpcUrl: options.rpcUrl, + chainId: options.l1ChainId, + privateKey: options.privateKey, + mnemonic: options.mnemonic, + validatorAddress: options.validator, + rollupAddress: options.rollup, + log, + debugLogger, + }); + }); + program .command('fast-forward-epochs') .description('Fast forwards the epoch of the L1 rollup contract.') @@ -139,6 +170,35 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: DebugL }); }); + program + .command('prune-rollup') + .description('Prunes the pending chain on the rollup contract.') + .requiredOption( + '-u, --rpc-url ', + 'Url of the ethereum host. Chain identifiers localhost and testnet can be used', + ETHEREUM_HOST, + ) + .option('-pk, --private-key ', 'The private key to use for deployment', PRIVATE_KEY) + .option( + '-m, --mnemonic ', + 'The mnemonic to use in deployment', + 'test test test test test test test test test test test junk', + ) + .addOption(l1ChainIdOption) + .option('--rollup
', 'ethereum address of the rollup contract', parseEthereumAddress) + .action(async options => { + const { pruneRollup } = await import('./update_l1_validators.js'); + await pruneRollup({ + rpcUrl: options.rpcUrl, + chainId: options.l1ChainId, + privateKey: options.privateKey, + mnemonic: options.mnemonic, + rollupAddress: options.rollup, + log, + debugLogger, + }); + }); + program .command('deploy-l1-verifier') .description('Deploys the rollup verifier contract') diff --git a/yarn-project/cli/src/cmds/l1/update_l1_validators.ts b/yarn-project/cli/src/cmds/l1/update_l1_validators.ts index b7459beb4b7..e51863b39b9 100644 --- a/yarn-project/cli/src/cmds/l1/update_l1_validators.ts +++ b/yarn-project/cli/src/cmds/l1/update_l1_validators.ts @@ -58,6 +58,55 @@ export async function addL1Validator({ await cheatCodes.setBalance(validatorAddress, 10n ** 20n); } +export async function removeL1Validator({ + rpcUrl, + chainId, + privateKey, + mnemonic, + validatorAddress, + rollupAddress, + log, + debugLogger, +}: RollupCommandArgs & LoggerArgs & { validatorAddress: EthAddress }) { + const dualLog = makeDualLog(log, debugLogger); + const publicClient = getPublicClient(rpcUrl, chainId); + const walletClient = getWalletClient(rpcUrl, chainId, privateKey, mnemonic); + const rollup = getContract({ + address: rollupAddress.toString(), + abi: RollupAbi, + client: walletClient, + }); + + dualLog(`Removing validator ${validatorAddress.toString()} from rollup ${rollupAddress.toString()}`); + const txHash = await rollup.write.removeValidator([validatorAddress.toString()]); + dualLog(`Transaction hash: ${txHash}`); + await publicClient.waitForTransactionReceipt({ hash: txHash }); +} + +export async function pruneRollup({ + rpcUrl, + chainId, + privateKey, + mnemonic, + rollupAddress, + log, + debugLogger, +}: RollupCommandArgs & LoggerArgs) { + const dualLog = makeDualLog(log, debugLogger); + const publicClient = getPublicClient(rpcUrl, chainId); + const walletClient = getWalletClient(rpcUrl, chainId, privateKey, mnemonic); + const rollup = getContract({ + address: rollupAddress.toString(), + abi: RollupAbi, + client: walletClient, + }); + + dualLog(`Trying prune`); + const txHash = await rollup.write.prune(); + dualLog(`Transaction hash: ${txHash}`); + await publicClient.waitForTransactionReceipt({ hash: txHash }); +} + export async function fastForwardEpochs({ rpcUrl, chainId, diff --git a/yarn-project/sequencer-client/src/publisher/l1-publisher-metrics.ts b/yarn-project/sequencer-client/src/publisher/l1-publisher-metrics.ts index 4a11fad1e54..29d8bb4b527 100644 --- a/yarn-project/sequencer-client/src/publisher/l1-publisher-metrics.ts +++ b/yarn-project/sequencer-client/src/publisher/l1-publisher-metrics.ts @@ -83,6 +83,7 @@ export class L1PublisherMetrics { private recordTx(txType: L1TxType, durationMs: number, stats: Omit) { const attributes = { [Attributes.L1_TX_TYPE]: txType, + [Attributes.L1_SENDER]: stats.sender, } as const; this.txCount.add(1, { diff --git a/yarn-project/telemetry-client/src/attributes.ts b/yarn-project/telemetry-client/src/attributes.ts index 0a1d3839eaf..f94f4fd6512 100644 --- a/yarn-project/telemetry-client/src/attributes.ts +++ b/yarn-project/telemetry-client/src/attributes.ts @@ -64,6 +64,8 @@ export const OK = 'aztec.ok'; export const STATUS = 'aztec.status'; /** The type of the transaction */ export const L1_TX_TYPE = 'aztec.l1.tx_type'; +/** The L1 address of the entity that sent a transaction to L1 */ +export const L1_SENDER = 'aztec.l1.sender'; /** The phase of the transaction */ export const TX_PHASE_NAME = 'aztec.tx.phase_name'; /** The proving job type */ diff --git a/yarn-project/validator-client/src/validator.ts b/yarn-project/validator-client/src/validator.ts index a3d72931695..1c516b195dd 100644 --- a/yarn-project/validator-client/src/validator.ts +++ b/yarn-project/validator-client/src/validator.ts @@ -86,6 +86,10 @@ export class ValidatorClient extends WithTracer implements Validator { async attestToProposal(proposal: BlockProposal): Promise { // Check that all of the tranasctions in the proposal are available in the tx pool before attesting + this.log.verbose(`request to attest`, { + archive: proposal.payload.archive.toString(), + txHashes: proposal.payload.txHashes, + }); try { await this.ensureTransactionsAreAvailable(proposal); } catch (error: any) { diff --git a/yarn-project/yarn.lock b/yarn-project/yarn.lock index 8fab10e11a8..ecd52a2eb69 100644 --- a/yarn-project/yarn.lock +++ b/yarn-project/yarn.lock @@ -3393,6 +3393,7 @@ __metadata: "@noir-lang/acvm_js": 0.51.0 "@noir-lang/noirc_abi": 0.35.0 "@noir-lang/types": 0.35.0 + checksum: 785c9cabed8bc7d13231f1437cd667f07746380bed88b9e75091bb35df6913b50aae86dad054e7a1bf83fdfc5689b3c9b7aed1a44172de5056a81b24527caf41 languageName: node linkType: hard