From 83279f6f501c1a3070a6dc37c37c8d4889493317 Mon Sep 17 00:00:00 2001 From: afkbyte Date: Sat, 6 Apr 2024 13:28:09 -0400 Subject: [PATCH] Squashed Orbit Progress Commit bumped arbitrum nitro to v2.3.3 modify some module versions Bump EigenDA version to v0.6.1 Update nitro-contracts to include fixes. fix header byte related bug feat(Arbitrator): Add support for EigenDA preimage targetting feat(Arbitrator): Add support for EigenDA preimage targetting - fmt & rm dbug stmts feat(Arbitrator): Add support for EigenDA preimage targetting - fmt & rm dbug stmts init so can debug commit and reinstall the repo bump kzg library version, new encoding issues aaa generates proof now but in a really gross way, probably incorrect update rest to use updated hash now matches preimage oracle hash serialize uncompressed bytes, not compressed rename variables appropriately the sanity checks work now holy shit clean up update submodules Update submodules to point to private develop branches update submodules rm use of bn256 kzg deps rm use of bn256 kzg deps Set submodule versions correctly, fix go dependency conflicts Revert brotli submodule to correct version Update contracts repo version --- .github/workflows/docker-eigenda.yml | 73 ++++++ .gitmodules | 11 +- Dockerfile | 1 + README.md | 4 +- arbitrator/Cargo.lock | 2 +- arbitrator/arbutil/src/types.rs | 1 + arbitrator/jit/Cargo.lock | 7 - arbitrator/jit/src/gostack.rs | 4 +- arbitrator/prover/src/host.rs | 8 + arbitrator/prover/src/kzgbn254.rs | 170 +++++++++++++ arbitrator/prover/src/lib.rs | 1 + arbitrator/prover/src/machine.rs | 20 +- arbitrator/prover/src/main.rs | 1 + arbitrator/prover/src/test-files/g1.point | Bin 0 -> 96000 bytes arbitrator/prover/src/test-files/g2.point | Bin 0 -> 192000 bytes .../prover/src/test-files/g2.point.powerOf2 | Bin 0 -> 768 bytes arbitrator/prover/src/utils.rs | 40 +++ arbitrator/prover/test-cases/go/main.go | 6 + .../prover/test-cases/rust/src/bin/host-io.rs | 13 + arbitrator/wasm-libraries/host-io/src/lib.rs | 2 + arbnode/batch_poster.go | 55 ++-- arbnode/delayed_seq_reorg_test.go | 2 +- arbnode/inbox_tracker.go | 7 +- arbnode/node.go | 15 +- arbstate/inbox.go | 31 ++- arbstate/inbox_fuzz_test.go | 2 +- arbutil/preimage_type.go | 1 + cmd/nitro/nitro.go | 2 +- cmd/pruning/pruning.go | 2 +- cmd/replay/main.go | 41 ++- contracts | 2 +- das/eigenda/eigenda.go | 213 ++++++++++++++++ err.txt | 0 go.mod | 116 +++++---- go.sum | 235 +++++++++--------- scripts/create-test-preimages.py | 18 ++ staker/l1_validator.go | 6 +- staker/staker.go | 2 +- staker/stateless_block_validator.go | 33 ++- system_tests/full_challenge_impl_test.go | 4 +- system_tests/staker_test.go | 2 + system_tests/state_fuzz_test.go | 2 +- 42 files changed, 920 insertions(+), 235 deletions(-) create mode 100644 .github/workflows/docker-eigenda.yml delete mode 100644 arbitrator/jit/Cargo.lock create mode 100644 arbitrator/prover/src/kzgbn254.rs create mode 100644 arbitrator/prover/src/test-files/g1.point create mode 100644 arbitrator/prover/src/test-files/g2.point create mode 100644 arbitrator/prover/src/test-files/g2.point.powerOf2 create mode 100644 das/eigenda/eigenda.go create mode 100644 err.txt diff --git a/.github/workflows/docker-eigenda.yml b/.github/workflows/docker-eigenda.yml new file mode 100644 index 000000000..c719384d7 --- /dev/null +++ b/.github/workflows/docker-eigenda.yml @@ -0,0 +1,73 @@ +name: Build nitro-eigenda Docker Image +on: + push: + tags: ['*'] + +jobs: + docker: + runs-on: ubuntu-latest + strategy: + matrix: + include: + - name: build and push nitro-eigenda + image: nitro-eigenda + dockerfile: Dockerfile + context: . + buildargs: '' + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: 'recursive' + + - # Add support for more platforms with QEMU (optional) + # https://github.com/docker/setup-qemu-action + name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Prepare Environment Variables + run: | + echo "SHORT_SHA=${GITHUB_SHA::7}" | tee -a $GITHUB_ENV + GIT_TAG=$(git tag --points-at HEAD) + echo "GIT_TAG=$GIT_TAG" | tee -a $GITHUB_ENV + echo "REF_NAME=$(echo ${GIT_TAG:-$GITHUB_REF_NAME} | sed 's/[^a-zA-Z0-9._]/-/g')" | tee -a $GITHUB_ENV + + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + aws-access-key-id: ${{ secrets.ECR_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.ECR_ACCESS_KEY }} + aws-region: us-west-2 + + - name: Login to Amazon ECR + id: login-ecr + uses: aws-actions/amazon-ecr-login@v2 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: | + ${{ secrets.ECR_REGISTRY }}/${{ matrix.image }} + tags: | + type=ref,event=branch + type=ref,event=pr + type=ref,event=tag + type=ref,event=tag,suffix={{sha}} + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=sha,prefix=,format=short,enable=true + type=raw,value=latest,enable={{is_default_branch}} + type=match,pattern=^(v\d+\.\d+\.\d+-\w*)\..*$,value=$1,enable={{is_default_branch}} + + - name: ${{ matrix.name }} + uses: docker/build-push-action@v5 + with: + context: ${{ matrix.context }} + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + file: ${{ matrix.dockerfile }} + provenance: false diff --git a/.gitmodules b/.gitmodules index 7c78791c7..be77fd1a6 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,13 +10,14 @@ [submodule "brotli"] path = brotli url = https://github.com/google/brotli.git -[submodule "contracts"] - path = contracts - url = https://github.com/OffchainLabs/nitro-contracts.git - branch = develop [submodule "arbitrator/wasm-testsuite/testsuite"] path = arbitrator/wasm-testsuite/testsuite url = https://github.com/WebAssembly/testsuite.git +[submodule "contracts"] + path = contracts + url = git@github.com:Layr-Labs/nitro-contracts-private.git + branch = develop [submodule "nitro-testnode"] path = nitro-testnode - url = https://github.com/OffchainLabs/nitro-testnode.git + url = git@github.com:Layr-Labs/nitro-testnode-private.git + branch = develop diff --git a/Dockerfile b/Dockerfile index 947d6b5a4..1b870b760 100644 --- a/Dockerfile +++ b/Dockerfile @@ -66,6 +66,7 @@ COPY ./blsSignatures ./blsSignatures COPY ./cmd/chaininfo ./cmd/chaininfo COPY ./cmd/replay ./cmd/replay COPY ./das/dastree ./das/dastree +COPY ./das/eigenda ./das/eigenda COPY ./precompiles ./precompiles COPY ./statetransfer ./statetransfer COPY ./util ./util diff --git a/README.md b/README.md index 4a522be82..0e463f50a 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Logo -

Arbitrum Nitro

+

Arbitrum Nitro + EigenDA

Next Generation Ethereum L2 Technology ยป @@ -12,6 +12,8 @@

+This is a fork of Arbitrum Nitro developed by [AltLayer](https://altlayer.io/), in a technical partnership with EigenLabs. + ## About Arbitrum Nitro Logo diff --git a/arbitrator/Cargo.lock b/arbitrator/Cargo.lock index 165fee89c..6a0042b3d 100644 --- a/arbitrator/Cargo.lock +++ b/arbitrator/Cargo.lock @@ -2415,4 +2415,4 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.45", -] +] \ No newline at end of file diff --git a/arbitrator/arbutil/src/types.rs b/arbitrator/arbutil/src/types.rs index 9b6cf4638..9cc67cec7 100644 --- a/arbitrator/arbutil/src/types.rs +++ b/arbitrator/arbutil/src/types.rs @@ -13,4 +13,5 @@ pub enum PreimageType { Keccak256, Sha2_256, EthVersionedHash, + EigenDAHash, } diff --git a/arbitrator/jit/Cargo.lock b/arbitrator/jit/Cargo.lock deleted file mode 100644 index c07db044d..000000000 --- a/arbitrator/jit/Cargo.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "runtime-validator" -version = "0.1.0" diff --git a/arbitrator/jit/src/gostack.rs b/arbitrator/jit/src/gostack.rs index bf7ac4767..20b59a247 100644 --- a/arbitrator/jit/src/gostack.rs +++ b/arbitrator/jit/src/gostack.rs @@ -28,7 +28,9 @@ impl MemoryViewContainer { fn closure<'a>( store: &'a StoreRef, ) -> impl (for<'b> FnOnce(&'b Memory) -> MemoryView<'b>) + 'a { - move |memory: &Memory| memory.view(&store) + move |memory: &Memory| { + memory.view(&store.clone()) + } } let store = env.as_store_ref(); diff --git a/arbitrator/prover/src/host.rs b/arbitrator/prover/src/host.rs index cb8b222ca..c0823b24a 100644 --- a/arbitrator/prover/src/host.rs +++ b/arbitrator/prover/src/host.rs @@ -52,6 +52,7 @@ pub enum Hostio { WavmReadKeccakPreimage, WavmReadSha256Preimage, WavmReadEthVersionedHashPreimage, + WavmReadEigenDAHashPreimage, WavmReadInboxMessage, WavmReadDelayedInboxMessage, WavmHaltAndSetFinished, @@ -76,6 +77,7 @@ impl FromStr for Hostio { ("env", "wavm_read_keccak_256_preimage") => WavmReadKeccakPreimage, ("env", "wavm_read_sha2_256_preimage") => WavmReadSha256Preimage, ("env", "wavm_read_eth_versioned_hash_preimage") => WavmReadEthVersionedHashPreimage, + ("env", "wavm_read_eigen_da_hash_preimage") => WavmReadEigenDAHashPreimage, ("env", "wavm_read_inbox_message") => WavmReadInboxMessage, ("env", "wavm_read_delayed_inbox_message") => WavmReadDelayedInboxMessage, ("env", "wavm_halt_and_set_finished") => WavmHaltAndSetFinished, @@ -114,6 +116,7 @@ impl Hostio { WavmReadKeccakPreimage => func!([I32, I32], [I32]), WavmReadSha256Preimage => func!([I32, I32], [I32]), WavmReadEthVersionedHashPreimage => func!([I32, I32], [I32]), + WavmReadEigenDAHashPreimage => func!([I32, I32], [I32]), WavmReadInboxMessage => func!([I64, I32, I32], [I32]), WavmReadDelayedInboxMessage => func!([I64, I32, I32], [I32]), WavmHaltAndSetFinished => func!(), @@ -188,6 +191,11 @@ impl Hostio { opcode!(LocalGet, 1); opcode!(ReadPreImage, PreimageType::EthVersionedHash); } + WavmReadEigenDAHashPreimage => { + opcode!(LocalGet, 0); + opcode!(LocalGet, 1); + opcode!(ReadPreImage, PreimageType::EigenDAHash); + } WavmReadInboxMessage => { opcode!(LocalGet, 0); opcode!(LocalGet, 1); diff --git a/arbitrator/prover/src/kzgbn254.rs b/arbitrator/prover/src/kzgbn254.rs new file mode 100644 index 000000000..f8fdf75ff --- /dev/null +++ b/arbitrator/prover/src/kzgbn254.rs @@ -0,0 +1,170 @@ + +use crate::utils::Bytes32; +// use ark_ec::{AffineRepr, CurveGroup,pairing::Pairing}; +// use kzgbn254::{ +// kzg::Kzg, +// blob::Blob, +// helpers::{remove_empty_byte_from_padded_bytes, to_fr_array} +// }; +use eyre::{ensure, Result}; +// use ark_bn254::{Bn254, G1Affine, G1Projective, G2Affine}; +use num::BigUint; +use sha2::{Digest, Sha256}; +use std::{convert::TryFrom, io::Write}; +// use ark_serialize::CanonicalSerialize; +use num::Zero; + +lazy_static::lazy_static! { + + // note that we are loading 3000 for testing purposes atm, but for production use these values: + // g1 and g2 points from the operator setup guide + // srs_order = 268435456 + // srs_points_to_load = 131072 + + // pub static ref KZG: Kzg = Kzg::setup( + // "./arbitrator/prover/src/test-files/g1.point", + // "./arbitrator/prover/src/test-files/g2.point", + // "./arbitrator/prover/src/test-files/g2.point.powerOf2", + // 3000, + // 3000 + // ).unwrap(); + + // modulus for the underlying field F_r of the elliptic curve + // see https://docs.eigenlayer.xyz/eigenda/integrations-guides/dispersal/blob-serialization-requirements + pub static ref BLS_MODULUS: BigUint = "21888242871839275222246405745257275088548364400416034343698204186575808495617".parse().unwrap(); + + // (2*1024*1024)/32 = 65536 + pub static ref FIELD_ELEMENTS_PER_BLOB: usize = 65536; +} + +// pub fn prove_kzg_preimage_bn254( +// hash: Bytes32, +// preimage: &[u8], +// offset: u32, +// out: &mut impl Write, +// ) -> Result<()> { + +// let mut kzg = KZG.clone(); + +// // expand the roots of unity, should work as long as it's longer than chunk length and chunks +// // from my understanding the data_setup_mins pads both min_chunk_len and min_num_chunks to +// // the next power of 2 so we can load a max of 2048 from the test values here +// // then we can take the roots of unity we actually need (len polynomial) and pass them in +// // @anup, this is a really gross way to do this, pls tell better way +// kzg.data_setup_mins(1, 2048)?; + +// // we are expecting the preimage to be unpadded when turned into a blob function so need to unpad it first +// let unpadded_preimage_vec: Vec = remove_empty_byte_from_padded_bytes(preimage); +// let unpadded_preimage = unpadded_preimage_vec.as_slice(); + +// // repad it here, TODO: need to ask to change the interface for this +// let blob = Blob::from_bytes_and_pad(unpadded_preimage); +// let blob_polynomial = blob.to_polynomial().unwrap(); +// let blob_commitment = kzg.commit(&blob_polynomial).unwrap(); + +// let mut commitment_bytes = Vec::new(); +// blob_commitment.serialize_uncompressed(&mut commitment_bytes).unwrap(); + +// let mut expected_hash: Bytes32 = Sha256::digest(&*commitment_bytes).into(); +// expected_hash[0] = 1; + +// ensure!( +// hash == expected_hash, +// "Trying to prove versioned hash {} preimage but recomputed hash {}", +// hash, +// expected_hash, +// ); + +// ensure!( +// offset % 32 == 0, +// "Cannot prove blob preimage at unaligned offset {}", +// offset, +// ); + +// let offset_usize = usize::try_from(offset)?; +// let mut proving_offset = offset; + +// // address proving past end edge case later +// let proving_past_end = offset_usize >= preimage.len(); +// if proving_past_end { +// // Proving any offset proves the length which is all we need here, +// // because we're past the end of the preimage. +// proving_offset = 0; +// } + +// let proving_offset_bytes = proving_offset.to_le_bytes(); +// let mut padded_proving_offset_bytes = [0u8; 32]; +// padded_proving_offset_bytes[32 - proving_offset_bytes.len()..].copy_from_slice(&proving_offset_bytes); + +// // in production we will first need to perform an IFFT on the blob data to get the expected y value +// let mut proven_y = blob.get_blob_data(); +// let offset_usize = offset as usize; // Convert offset to usize +// proven_y = proven_y[offset_usize..(offset_usize + 32)].to_vec(); + +// let proven_y_fr = to_fr_array(&proven_y); + +// let polynomial = blob.to_polynomial().unwrap(); + +// let g2_generator = G2Affine::generator(); +// let z_g2= (g2_generator * proven_y_fr[0]).into_affine(); + +// let g2_tau: G2Affine = kzg.get_g2_points().get(1).unwrap().clone(); +// let g2_tau_minus_g2_z = (g2_tau - z_g2).into_affine(); + +// // required roots of unity are the first polynomial length roots in the expanded set +// let roots_of_unity = kzg.get_expanded_roots_of_unity(); +// let required_roots_of_unity = &roots_of_unity[0..polynomial.len()]; +// // TODO: ask for interface alignment later +// let kzg_proof = match kzg.compute_kzg_proof(&blob_polynomial, offset as u64, &required_roots_of_unity.to_vec()) { +// Ok(proof) => proof, +// Err(err) => return Err(err.into()), +// }; + +// let mut kzg_proof_uncompressed_bytes = Vec::new(); +// kzg_proof.serialize_uncompressed(&mut kzg_proof_uncompressed_bytes).unwrap(); + +// let xminusz_x0: BigUint = g2_tau_minus_g2_z.x.c0.into(); +// let xminusz_x1: BigUint = g2_tau_minus_g2_z.x.c1.into(); +// let xminusz_y0: BigUint = g2_tau_minus_g2_z.y.c0.into(); +// let xminusz_y1: BigUint = g2_tau_minus_g2_z.y.c1.into(); + +// // turn each element of xminusz into bytes, then pad each to 32 bytes, then append in order x1,x0,y1,y0 +// let mut xminusz_encoded_bytes = Vec::with_capacity(128); +// append_left_padded_biguint_be(&mut xminusz_encoded_bytes, &xminusz_x1); +// append_left_padded_biguint_be(&mut xminusz_encoded_bytes, &xminusz_x0); +// append_left_padded_biguint_be(&mut xminusz_encoded_bytes, &xminusz_y1); +// append_left_padded_biguint_be(&mut xminusz_encoded_bytes, &xminusz_y0); + +// // encode the commitment +// let commitment_x_bigint: BigUint = blob_commitment.x.into(); +// let commitment_y_bigint: BigUint = blob_commitment.y.into(); +// let mut commitment_encoded_bytes = Vec::with_capacity(32); +// append_left_padded_biguint_be(&mut commitment_encoded_bytes, &commitment_x_bigint); +// append_left_padded_biguint_be(&mut commitment_encoded_bytes, &commitment_y_bigint); + + +// // encode the proof +// let proof_x_bigint: BigUint = kzg_proof.x.into(); +// let proof_y_bigint: BigUint = kzg_proof.y.into(); +// let mut proof_encoded_bytes = Vec::with_capacity(64); +// append_left_padded_biguint_be(&mut proof_encoded_bytes, &proof_x_bigint); +// append_left_padded_biguint_be(&mut proof_encoded_bytes, &proof_y_bigint); + +// out.write_all(&*hash)?; // hash [:32] +// out.write_all(&padded_proving_offset_bytes)?; // evaluation point [32:64] +// out.write_all(&*proven_y)?; // expected output [64:96] +// out.write_all(&xminusz_encoded_bytes)?; // g2TauMinusG2z [96:224] +// out.write_all(&*commitment_encoded_bytes)?; // kzg commitment [224:288] +// out.write_all(&proof_encoded_bytes)?; // proof [288:352] + + +// Ok(()) +// } +// // Helper function to append BigUint bytes into the vector with padding; left padded big endian bytes to 32 +// fn append_left_padded_biguint_be(vec: &mut Vec, biguint: &BigUint) { +// let bytes = biguint.to_bytes_be(); +// let padding = 32 - bytes.len(); +// vec.extend_from_slice(&vec![0; padding]); +// vec.extend_from_slice(&bytes); +// } + diff --git a/arbitrator/prover/src/lib.rs b/arbitrator/prover/src/lib.rs index c7610ab31..54be8e535 100644 --- a/arbitrator/prover/src/lib.rs +++ b/arbitrator/prover/src/lib.rs @@ -7,6 +7,7 @@ pub mod binary; mod host; mod kzg; pub mod machine; +mod kzgbn254; /// cbindgen:ignore mod memory; mod merkle; diff --git a/arbitrator/prover/src/machine.rs b/arbitrator/prover/src/machine.rs index 85ea14e10..e9f1b909f 100644 --- a/arbitrator/prover/src/machine.rs +++ b/arbitrator/prover/src/machine.rs @@ -5,6 +5,7 @@ use crate::{ binary::{parse, FloatInstruction, Local, NameCustomSection, WasmBinary}, host, kzg::prove_kzg_preimage, + // kzgbn254::prove_kzg_preimage_bn254, memory::Memory, merkle::{Merkle, MerkleType}, reinterpret::{ReinterpretAsSigned, ReinterpretAsUnsigned}, @@ -1885,6 +1886,12 @@ impl Machine { preimage.len(), ); } + + if preimage_ty == PreimageType::EigenDAHash { + println!("EIGENDA HASH PREIMAGE: {:?}", preimage); + } + + let offset = usize::try_from(offset).unwrap(); let len = std::cmp::min(32, preimage.len().saturating_sub(offset)); let read = preimage.get(offset..(offset + len)).unwrap_or_default(); @@ -1897,8 +1904,8 @@ impl Machine { "Missing requested preimage".red(), hash.red(), ); - self.eprint_backtrace(); - bail!("missing requested preimage for hash {}", hash); + // self.eprint_backtrace(); + // bail!("missing requested preimage for hash {}", hash); } } else { error!(); @@ -2310,7 +2317,7 @@ impl Machine { .get_const(self.context, preimage_ty, hash) { Some(b) => b, - None => panic!("Missing requested preimage for hash {}", hash), + None => CBytes::new(), }; data.push(0); // preimage proof type match preimage_ty { @@ -2322,6 +2329,13 @@ impl Machine { prove_kzg_preimage(hash, &preimage, offset, &mut data) .expect("Failed to generate KZG preimage proof"); } + PreimageType::EigenDAHash => { + // TODO - Add eigenDA kzg preimage verification here + // println!("Generating proof for EigenDA preimage"); + // prove_kzg_preimage_bn254(hash, &preimage, offset, &mut data) + // .expect("Failed to generate eigenDA KZG preimage proof"); + data.extend(preimage); + } } } else if next_inst.opcode == Opcode::ReadInboxMessage { let msg_idx = self diff --git a/arbitrator/prover/src/main.rs b/arbitrator/prover/src/main.rs index 089111da1..31f48aff6 100644 --- a/arbitrator/prover/src/main.rs +++ b/arbitrator/prover/src/main.rs @@ -166,6 +166,7 @@ fn main() -> Result<()> { .insert(hash.into(), buf.as_slice().into()); } } + let preimage_resolver = Arc::new(move |_, ty, hash| preimages.get(&ty).and_then(|m| m.get(&hash)).cloned()) as PreimageResolver; diff --git a/arbitrator/prover/src/test-files/g1.point b/arbitrator/prover/src/test-files/g1.point new file mode 100644 index 0000000000000000000000000000000000000000..afa9a885fd422274c30e98eac687f153b53f7e8b GIT binary patch literal 96000 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 literal 0 HcmV?d00001 diff --git a/arbitrator/prover/src/test-files/g2.point b/arbitrator/prover/src/test-files/g2.point new file mode 100644 index 0000000000000000000000000000000000000000..d6bc8299a0906af33cdb59fa3b5b94162477d33b GIT binary patch literal 192000 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

%TFI5$t4G1z#4SVmMbCMJ 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 literal 0 HcmV?d00001 diff --git a/arbitrator/prover/src/test-files/g2.point.powerOf2 b/arbitrator/prover/src/test-files/g2.point.powerOf2 new file mode 100644 index 0000000000000000000000000000000000000000..3b97a47975690b57e4e65dab9b5d003712cfa042 GIT binary patch literal 768 zcmV+b1ONQ4gb>fh+U`S&a21p~u~(QEFV8*|S2-Y1am@WZAY@Dtel^^C8{;EL8kE91 zP5$N(3VFh#i~O%vF8&}W9~`rtBu@aCoi=+lKfEf+fbPqO*$LYjvsmIvmUDD6HerG(Mw_@x?-DT6ab1&?HVu*TkOy z5AR!*+oB<(MuCic4pSAnS|!|PF4apVzO%3cd8MQ^{eX0jdcR3!hG&_RUpj1Q^*9Nl5dF2g{n{jeR+^iT%hG+9ZkcGMypfz*P_)u?xezdq&;TOuY zMgzk14=sHPNa)uh3J(L97j)qRR%y~(5L$bawrI8tES0jSDiT2cCOk{ymUEg4EaT4G zxzzzfFMi8~s{2>&WS#P#bnqfV{KR)J()q)n70;6#RT^}3|C~&0h-B)JA0NfnHmSD; z#6HHRw!YgXVFXfn%N;hJ^Z65hvS8 zr-Hfk@CjU0e<=#iV{s-}=kN3a%c}8%LEd+ofdW9b2fpbwj#@!(Bm(WTj|Ra-2nr0% zpDE8+sa;3V3Kh!`S?({J*$J;#X$P8laNB-9-Nm33;`ay)1_)*tpl z-E!3}b;QP1%eKVGk-xiNGbBOw6vbRsyex6_>;OgG<4qH_dNXm1zA$|R<0E<|ttrpI zMwAs~4%zl!99eJj&=zbtJH@B@ad;QuWtHYho3|cwi9vat>Ja4xwt%>};T>=)n3s#n z-M&TvC$Ws7bAup@3U|e~Bm*EIk=?FZ4Und&QajhjuhnGWZ5H`2z>tDZW1T- Result<[u8; 32]> { commitment_hash[0] = 1; Ok(commitment_hash) } + PreimageType::EigenDAHash => { + Ok(Sha256::digest(preimage).into()) + + // let kzg_bn254: KzgBN254 = KzgBN254::setup( + // "./arbitrator/prover/src/test-files/g1.point", + // "./arbitrator/prover/src/test-files/g2.point", + // "./arbitrator/prover/src/test-files/g2.point.powerOf2", + // 3000, + // 3000 + // ).unwrap(); + + // // we are expecting the preimage to be unpadded when turned into a blob function so need to unpad it first + // let unpadded_preimage_vec = remove_empty_byte_from_padded_bytes(preimage); + // let unpadded_preimage = unpadded_preimage_vec.as_slice(); + + // // repad it here, TODO: need to ask to change the interface for this + // let blob = EigenDABlob::from_bytes_and_pad(unpadded_preimage); + + // let commitment = kzg_bn254.blob_to_kzg_commitment(&blob).unwrap(); + + // let mut commitment_bytes = Vec::new(); + // commitment.serialize_uncompressed(&mut commitment_bytes).unwrap(); + + // let mut commitment_hash: [u8; 32] = Sha256::digest(&commitment_bytes).into(); + // commitment_hash[0] = 1; + + // println!("commitment_hash UTILS.rs: {:?}", commitment_hash); + + // Ok(commitment_hash) + + //Ok(Sha256::digest(preimage).into()) + } } } diff --git a/arbitrator/prover/test-cases/go/main.go b/arbitrator/prover/test-cases/go/main.go index 549a83f15..235bb5c6e 100644 --- a/arbitrator/prover/test-cases/go/main.go +++ b/arbitrator/prover/test-cases/go/main.go @@ -140,5 +140,11 @@ func main() { } } + // _, err = wavmio.ResolveTypedPreimage(arbutil.EigenDaPreimageType, common.HexToHash("b071b0cf4fc3288ada3977d7b5b0ff621d238f0f8bebb1def70cf7cf0aa59f41")) + _, err = wavmio.ResolveTypedPreimage(arbutil.EigenDaPreimageType, common.HexToHash("0115550c37432fd41441956b06b83722bf797452eb47ea5d03386932ca84762d")) + if err != nil { + panic(fmt.Sprintf("failed to resolve eigenda preimage: %v", err)) + } + println("verified preimage resolution!\n") } diff --git a/arbitrator/prover/test-cases/rust/src/bin/host-io.rs b/arbitrator/prover/test-cases/rust/src/bin/host-io.rs index 679ee1448..a462dbed8 100644 --- a/arbitrator/prover/test-cases/rust/src/bin/host-io.rs +++ b/arbitrator/prover/test-cases/rust/src/bin/host-io.rs @@ -6,6 +6,7 @@ extern "C" { pub fn wavm_read_keccak_256_preimage(ptr: *mut u8, offset: usize) -> usize; pub fn wavm_read_sha2_256_preimage(ptr: *mut u8, offset: usize) -> usize; pub fn wavm_read_eth_versioned_hash_preimage(ptr: *mut u8, offset: usize) -> usize; + pub fn wavm_read_eigen_da_hash_preimage(ptr: *mut u8, offset: usize) -> usize; pub fn wavm_read_inbox_message(msg_num: u64, ptr: *mut u8, offset: usize) -> usize; pub fn wavm_read_delayed_inbox_message(seq_num: u64, ptr: *mut u8, offset: usize) -> usize; pub fn wavm_halt_and_set_finished(); @@ -102,6 +103,18 @@ fn main() { expected_hash[32-scalar_bytes.len()..].copy_from_slice(&scalar_bytes); assert_eq!(bytebuffer.0, expected_hash); } + + println!("eigenda preimage"); + //let eigen_hash = hex!("b071b0cf4fc3288ada3977d7b5b0ff621d238f0f8bebb1def70cf7cf0aa59f41"); + let eigen_hash = hex!("0115550c37432fd41441956b06b83722bf797452eb47ea5d03386932ca84762d"); + + bytebuffer = Bytes32(eigen_hash); + let expected_len = 32; + + let actual_len = wavm_read_eigen_da_hash_preimage(bytebuffer.0.as_mut_ptr(), 0); + assert_eq!(actual_len, expected_len); + // Ensure that 0th index is zero padded + assert_eq!(bytebuffer.0[..actual_len][0] as u8, 0); } println!("Done!"); } diff --git a/arbitrator/wasm-libraries/host-io/src/lib.rs b/arbitrator/wasm-libraries/host-io/src/lib.rs index 733d14335..824678e75 100644 --- a/arbitrator/wasm-libraries/host-io/src/lib.rs +++ b/arbitrator/wasm-libraries/host-io/src/lib.rs @@ -10,6 +10,7 @@ extern "C" { pub fn wavm_read_keccak_256_preimage(ptr: *mut u8, offset: usize) -> usize; pub fn wavm_read_sha2_256_preimage(ptr: *mut u8, offset: usize) -> usize; pub fn wavm_read_eth_versioned_hash_preimage(ptr: *mut u8, offset: usize) -> usize; + pub fn wavm_read_eigen_da_hash_preimage(ptr: *mut u8, offset: usize) -> usize; pub fn wavm_read_inbox_message(msg_num: u64, ptr: *mut u8, offset: usize) -> usize; pub fn wavm_read_delayed_inbox_message(seq_num: u64, ptr: *mut u8, offset: usize) -> usize; } @@ -152,6 +153,7 @@ pub unsafe extern "C" fn go__github_com_offchainlabs_nitro_wavmio_resolveTypedPr PreimageType::Keccak256 => wavm_read_keccak_256_preimage, PreimageType::Sha2_256 => wavm_read_sha2_256_preimage, PreimageType::EthVersionedHash => wavm_read_eth_versioned_hash_preimage, + PreimageType::EigenDAHash => wavm_read_eigen_da_hash_preimage, }; let read = preimage_reader(our_ptr, offset as usize); assert!(read <= 32); diff --git a/arbnode/batch_poster.go b/arbnode/batch_poster.go index e9cfe1dd3..ea96c11fd 100644 --- a/arbnode/batch_poster.go +++ b/arbnode/batch_poster.go @@ -42,6 +42,7 @@ import ( "github.com/offchainlabs/nitro/cmd/chaininfo" "github.com/offchainlabs/nitro/cmd/genericconf" "github.com/offchainlabs/nitro/das" + "github.com/offchainlabs/nitro/das/eigenda" "github.com/offchainlabs/nitro/execution" "github.com/offchainlabs/nitro/solgen/go/bridgegen" "github.com/offchainlabs/nitro/util" @@ -89,6 +90,7 @@ type BatchPoster struct { gasRefunderAddr common.Address building *buildingBatch daWriter das.DataAvailabilityServiceWriter + eigenDAWriter eigenda.EigenDAWriter dataPoster *dataposter.DataPoster redisLock *redislock.Simple messagesPerBatch *arbmath.MovingAverage[uint64] @@ -118,8 +120,9 @@ const ( ) type BatchPosterConfig struct { - Enable bool `koanf:"enable"` - DisableDasFallbackStoreDataOnChain bool `koanf:"disable-das-fallback-store-data-on-chain" reload:"hot"` + Enable bool `koanf:"enable"` + DisableDasFallbackStoreDataOnChain bool `koanf:"disable-das-fallback-store-data-on-chain" reload:"hot"` + DisableEigenDAFallbackStoreDataOnChain bool `koanf:"disable-eigenda-fallback-store-data-on-chain" reload:"hot"` // Max batch size. MaxSize int `koanf:"max-size" reload:"hot"` // Maximum 4844 blob enabled batch size. @@ -270,6 +273,7 @@ type BatchPosterOpts struct { TransactOpts *bind.TransactOpts DAWriter das.DataAvailabilityServiceWriter ParentChainID *big.Int + EigenDAWriter eigenda.EigenDAWriter } func NewBatchPoster(ctx context.Context, opts *BatchPosterOpts) (*BatchPoster, error) { @@ -302,20 +306,20 @@ func NewBatchPoster(ctx context.Context, opts *BatchPosterOpts) (*BatchPoster, e return nil, err } b := &BatchPoster{ - l1Reader: opts.L1Reader, - inbox: opts.Inbox, - streamer: opts.Streamer, - arbOSVersionGetter: opts.VersionGetter, - syncMonitor: opts.SyncMonitor, - config: opts.Config, - bridge: bridge, - seqInbox: seqInbox, - seqInboxABI: seqInboxABI, - seqInboxAddr: opts.DeployInfo.SequencerInbox, - gasRefunderAddr: opts.Config().gasRefunder, - bridgeAddr: opts.DeployInfo.Bridge, - daWriter: opts.DAWriter, - redisLock: redisLock, + l1Reader: opts.L1Reader, + inbox: opts.Inbox, + streamer: opts.Streamer, + syncMonitor: opts.SyncMonitor, + config: opts.Config, + bridge: bridge, + seqInbox: seqInbox, + seqInboxABI: seqInboxABI, + seqInboxAddr: opts.DeployInfo.SequencerInbox, + gasRefunderAddr: opts.Config().gasRefunder, + bridgeAddr: opts.DeployInfo.Bridge, + daWriter: opts.DAWriter, + eigenDAWriter: opts.EigenDAWriter, + redisLock: redisLock, } b.messagesPerBatch, err = arbmath.NewMovingAverage[uint64](20) if err != nil { @@ -1220,6 +1224,25 @@ func (b *BatchPoster) maybePostSequencerBatch(ctx context.Context) (bool, error) } } + if b.daWriter == nil && b.eigenDAWriter != nil { + log.Info("Start to write data to eigenda: ", "data", hex.EncodeToString(sequencerMsg)) + daRef, err := b.eigenDAWriter.Store(ctx, sequencerMsg) + if err != nil { + if config.DisableEigenDAFallbackStoreDataOnChain { + log.Warn("Falling back to storing data on chain", "err", err) + return false, errors.New("unable to post batch to EigenDA and fallback storing data on chain is disabled") + } + } + + pointer, err := b.eigenDAWriter.Serialize(daRef) + if err != nil { + log.Warn("DaRef serialization failed", "err", err) + return false, errors.New("DaRef serialization failed") + } + log.Info("EigenDA transaction receipt(data pointer): ", "hash", hex.EncodeToString(daRef.BatchHeaderHash), "index", daRef.BlobIndex) + sequencerMsg = pointer + } + data, kzgBlobs, err := b.encodeAddBatch(new(big.Int).SetUint64(batchPosition.NextSeqNum), batchPosition.MessageCount, b.building.msgCount, sequencerMsg, b.building.segments.delayedMsg, b.building.use4844) if err != nil { return false, err diff --git a/arbnode/delayed_seq_reorg_test.go b/arbnode/delayed_seq_reorg_test.go index beb2656e2..821b8af0b 100644 --- a/arbnode/delayed_seq_reorg_test.go +++ b/arbnode/delayed_seq_reorg_test.go @@ -19,7 +19,7 @@ func TestSequencerReorgFromDelayed(t *testing.T) { defer cancel() exec, streamer, db, _ := NewTransactionStreamerForTest(t, common.Address{}) - tracker, err := NewInboxTracker(db, streamer, nil, nil) + tracker, err := NewInboxTracker(db, streamer, nil, nil, nil) Require(t, err) err = streamer.Start(ctx) diff --git a/arbnode/inbox_tracker.go b/arbnode/inbox_tracker.go index f98f93a3e..17ec55766 100644 --- a/arbnode/inbox_tracker.go +++ b/arbnode/inbox_tracker.go @@ -23,6 +23,7 @@ import ( "github.com/offchainlabs/nitro/arbutil" "github.com/offchainlabs/nitro/broadcaster" m "github.com/offchainlabs/nitro/broadcaster/message" + "github.com/offchainlabs/nitro/das/eigenda" "github.com/offchainlabs/nitro/staker" "github.com/offchainlabs/nitro/util/containers" ) @@ -39,12 +40,13 @@ type InboxTracker struct { validator *staker.BlockValidator das arbstate.DataAvailabilityReader blobReader arbstate.BlobReader + eigenDA eigenda.EigenDAReader batchMetaMutex sync.Mutex batchMeta *containers.LruCache[uint64, BatchMetadata] } -func NewInboxTracker(db ethdb.Database, txStreamer *TransactionStreamer, das arbstate.DataAvailabilityReader, blobReader arbstate.BlobReader) (*InboxTracker, error) { +func NewInboxTracker(db ethdb.Database, txStreamer *TransactionStreamer, das arbstate.DataAvailabilityReader, blobReader arbstate.BlobReader, eigenDAReader eigenda.EigenDAReader) (*InboxTracker, error) { // We support a nil txStreamer for the pruning code if txStreamer != nil && txStreamer.chainConfig.ArbitrumChainParams.DataAvailabilityCommittee && das == nil { return nil, errors.New("data availability service required but unconfigured") @@ -54,6 +56,7 @@ func NewInboxTracker(db ethdb.Database, txStreamer *TransactionStreamer, das arb txStreamer: txStreamer, das: das, blobReader: blobReader, + eigenDA: eigenDAReader, batchMeta: containers.NewLruCache[uint64, BatchMetadata](1000), } return tracker, nil @@ -613,7 +616,7 @@ func (t *InboxTracker) AddSequencerBatches(ctx context.Context, client arbutil.L if t.blobReader != nil { daProviders = append(daProviders, arbstate.NewDAProviderBlobReader(t.blobReader)) } - multiplexer := arbstate.NewInboxMultiplexer(backend, prevbatchmeta.DelayedMessageCount, daProviders, arbstate.KeysetValidate) + multiplexer := arbstate.NewInboxMultiplexer(backend, prevbatchmeta.DelayedMessageCount, daProviders, t.eigenDA, arbstate.KeysetValidate) batchMessageCounts := make(map[uint64]arbutil.MessageIndex) currentpos := prevbatchmeta.MessageCount + 1 for { diff --git a/arbnode/node.go b/arbnode/node.go index c19e02ddd..b2bf1a1a6 100644 --- a/arbnode/node.go +++ b/arbnode/node.go @@ -33,6 +33,7 @@ import ( "github.com/offchainlabs/nitro/broadcaster" "github.com/offchainlabs/nitro/cmd/chaininfo" "github.com/offchainlabs/nitro/das" + "github.com/offchainlabs/nitro/das/eigenda" "github.com/offchainlabs/nitro/execution" "github.com/offchainlabs/nitro/execution/gethexec" "github.com/offchainlabs/nitro/solgen/go/bridgegen" @@ -87,6 +88,7 @@ type Config struct { Staker staker.L1ValidatorConfig `koanf:"staker" reload:"hot"` SeqCoordinator SeqCoordinatorConfig `koanf:"seq-coordinator"` DataAvailability das.DataAvailabilityConfig `koanf:"data-availability"` + EigenDA eigenda.EigenDAConfig `koanf:"eigen-da"` SyncMonitor SyncMonitorConfig `koanf:"sync-monitor"` Dangerous DangerousConfig `koanf:"dangerous"` TransactionStreamer TransactionStreamerConfig `koanf:"transaction-streamer" reload:"hot"` @@ -510,6 +512,8 @@ func createNodeImpl( var daWriter das.DataAvailabilityServiceWriter var daReader das.DataAvailabilityServiceReader var dasLifecycleManager *das.LifecycleManager + var eigenDAReader eigenda.EigenDAReader + var eigenDAWriter eigenda.EigenDAWriter if config.DataAvailability.Enable { if config.BatchPoster.Enable { daWriter, daReader, dasLifecycleManager, err = das.CreateBatchPosterDAS(ctx, &config.DataAvailability, dataSigner, l1client, deployInfo.SequencerInbox) @@ -533,9 +537,16 @@ func createNodeImpl( } } else if l2Config.ArbitrumChainParams.DataAvailabilityCommittee { return nil, errors.New("a data availability service is required for this chain, but it was not configured") + } else if config.EigenDA.Enable { + eigenDAService, err := eigenda.NewEigenDA(config.EigenDA.Rpc) + if err != nil { + return nil, err + } + eigenDAReader = eigenDAService + eigenDAWriter = eigenDAService } - inboxTracker, err := NewInboxTracker(arbDb, txStreamer, daReader, blobReader) + inboxTracker, err := NewInboxTracker(arbDb, txStreamer, daReader, blobReader, eigenDAReader) if err != nil { return nil, err } @@ -555,6 +566,7 @@ func createNodeImpl( rawdb.NewTable(arbDb, storage.BlockValidatorPrefix), daReader, blobReader, + eigenDAReader, func() *staker.BlockValidatorConfig { return &configFetcher.Get().BlockValidator }, stack, ) @@ -672,6 +684,7 @@ func createNodeImpl( DeployInfo: deployInfo, TransactOpts: txOptsBatchPoster, DAWriter: daWriter, + EigenDAWriter: eigenDAWriter, ParentChainID: parentChainID, }) if err != nil { diff --git a/arbstate/inbox.go b/arbstate/inbox.go index 3105ee92b..7d00273bb 100644 --- a/arbstate/inbox.go +++ b/arbstate/inbox.go @@ -7,6 +7,7 @@ import ( "bytes" "context" "encoding/binary" + "encoding/hex" "errors" "fmt" "io" @@ -24,6 +25,7 @@ import ( "github.com/offchainlabs/nitro/arbos/l1pricing" "github.com/offchainlabs/nitro/arbutil" "github.com/offchainlabs/nitro/das/dastree" + "github.com/offchainlabs/nitro/das/eigenda" "github.com/offchainlabs/nitro/util/blobs" "github.com/offchainlabs/nitro/zeroheavy" ) @@ -68,7 +70,7 @@ var ( ErrInvalidBlobDataFormat = errors.New("blob batch data is not a list of hashes as expected") ) -func parseSequencerMessage(ctx context.Context, batchNum uint64, batchBlockHash common.Hash, data []byte, daProviders []DataAvailabilityProvider, keysetValidationMode KeysetValidationMode) (*sequencerMessage, error) { +func parseSequencerMessage(ctx context.Context, batchNum uint64, batchBlockHash common.Hash, data []byte, daProviders []DataAvailabilityProvider, eigenDAReader eigenda.EigenDAReader, keysetValidationMode KeysetValidationMode) (*sequencerMessage, error) { if len(data) < 40 { return nil, errors.New("sequencer message missing L1 header") } @@ -81,12 +83,13 @@ func parseSequencerMessage(ctx context.Context, batchNum uint64, batchBlockHash segments: [][]byte{}, } payload := data[40:] + log.Info("Inbox parse sequencer message: ", "payload", hex.EncodeToString(payload)) // Stage 0: Check if our node is out of date and we don't understand this batch type // If the parent chain sequencer inbox smart contract authenticated this batch, // an unknown header byte must mean that this node is out of date, // because the smart contract understands the header byte and this node doesn't. - if len(payload) > 0 && IsL1AuthenticatedMessageHeaderByte(payload[0]) && !IsKnownHeaderByte(payload[0]) { + if len(payload) > 0 && IsL1AuthenticatedMessageHeaderByte(payload[0]) && !IsKnownHeaderByte(payload[0]) && !eigenda.IsEigenDAMessageHeaderByte(payload[0]) { return nil, fmt.Errorf("%w: batch has unsupported authenticated header byte 0x%02x", arbosState.ErrFatalNodeOutOfDate, payload[0]) } @@ -97,6 +100,24 @@ func parseSequencerMessage(ctx context.Context, batchNum uint64, batchBlockHash if len(payload) > 0 { foundDA := false var err error + + // detect eigenda message from byte + if eigenda.IsEigenDAMessageHeaderByte(payload[0]) { + if eigenDAReader == nil { + log.Error("No EigenDA Reader configured, but sequencer message found with EigenDA header") + } else { + var err error + payload, err = eigenda.RecoverPayloadFromEigenDABatch(ctx, payload[1:], eigenDAReader, nil) + if err != nil { + return nil, err + } + if payload == nil { + return parsedMsg, nil + } + foundDA = true + } + } + for _, provider := range daProviders { if provider != nil && provider.IsValidHeaderByte(payload[0]) { payload, err = provider.RecoverPayloadFromBatch(ctx, batchNum, batchBlockHash, data, nil, keysetValidationMode) @@ -374,6 +395,7 @@ type inboxMultiplexer struct { backend InboxBackend delayedMessagesRead uint64 daProviders []DataAvailabilityProvider + eigenDAReader eigenda.EigenDAReader cachedSequencerMessage *sequencerMessage cachedSequencerMessageNum uint64 cachedSegmentNum uint64 @@ -383,11 +405,12 @@ type inboxMultiplexer struct { keysetValidationMode KeysetValidationMode } -func NewInboxMultiplexer(backend InboxBackend, delayedMessagesRead uint64, daProviders []DataAvailabilityProvider, keysetValidationMode KeysetValidationMode) arbostypes.InboxMultiplexer { +func NewInboxMultiplexer(backend InboxBackend, delayedMessagesRead uint64, daProviders []DataAvailabilityProvider, eigenDAReader eigenda.EigenDAReader, keysetValidationMode KeysetValidationMode) arbostypes.InboxMultiplexer { return &inboxMultiplexer{ backend: backend, delayedMessagesRead: delayedMessagesRead, daProviders: daProviders, + eigenDAReader: eigenDAReader, keysetValidationMode: keysetValidationMode, } } @@ -409,7 +432,7 @@ func (r *inboxMultiplexer) Pop(ctx context.Context) (*arbostypes.MessageWithMeta } r.cachedSequencerMessageNum = r.backend.GetSequencerInboxPosition() var err error - r.cachedSequencerMessage, err = parseSequencerMessage(ctx, r.cachedSequencerMessageNum, batchBlockHash, bytes, r.daProviders, r.keysetValidationMode) + r.cachedSequencerMessage, err = parseSequencerMessage(ctx, r.cachedSequencerMessageNum, batchBlockHash, bytes, r.daProviders, r.eigenDAReader, r.keysetValidationMode) if err != nil { return nil, err } diff --git a/arbstate/inbox_fuzz_test.go b/arbstate/inbox_fuzz_test.go index b34c02534..dcf43fd0d 100644 --- a/arbstate/inbox_fuzz_test.go +++ b/arbstate/inbox_fuzz_test.go @@ -67,7 +67,7 @@ func FuzzInboxMultiplexer(f *testing.F) { delayedMessage: delayedMsg, positionWithinMessage: 0, } - multiplexer := NewInboxMultiplexer(backend, 0, nil, KeysetValidate) + multiplexer := NewInboxMultiplexer(backend, 0, nil, nil, KeysetValidate) _, err := multiplexer.Pop(context.TODO()) if err != nil { panic(err) diff --git a/arbutil/preimage_type.go b/arbutil/preimage_type.go index 72a39431b..cc4d6304a 100644 --- a/arbutil/preimage_type.go +++ b/arbutil/preimage_type.go @@ -11,4 +11,5 @@ const ( Keccak256PreimageType PreimageType = iota Sha2_256PreimageType EthVersionedHashPreimageType + EigenDaPreimageType ) diff --git a/cmd/nitro/nitro.go b/cmd/nitro/nitro.go index 65577d067..09c9b554e 100644 --- a/cmd/nitro/nitro.go +++ b/cmd/nitro/nitro.go @@ -213,7 +213,7 @@ func mainImpl() int { return 1 } - log.Info("Running Arbitrum nitro node", "revision", vcsRevision, "vcs.time", vcsTime) + log.Info("Running Arbitrum nitro node with eigenda integration", "revision", vcsRevision, "vcs.time", vcsTime) if nodeConfig.Node.Dangerous.NoL1Listener { nodeConfig.Node.ParentChainReader.Enable = false diff --git a/cmd/pruning/pruning.go b/cmd/pruning/pruning.go index da015ac52..e9f593eb8 100644 --- a/cmd/pruning/pruning.go +++ b/cmd/pruning/pruning.go @@ -189,7 +189,7 @@ func findImportantRoots(ctx context.Context, chainDb ethdb.Database, stack *node return nil, fmt.Errorf("failed to get finalized block: %w", err) } l1BlockNum := l1Block.NumberU64() - tracker, err := arbnode.NewInboxTracker(arbDb, nil, nil, nil) + tracker, err := arbnode.NewInboxTracker(arbDb, nil, nil, nil, nil) if err != nil { return nil, err } diff --git a/cmd/replay/main.go b/cmd/replay/main.go index 7ab59fc51..a1a2ee877 100644 --- a/cmd/replay/main.go +++ b/cmd/replay/main.go @@ -6,6 +6,7 @@ package main import ( "bytes" "context" + "crypto/sha256" "encoding/hex" "encoding/json" "fmt" @@ -30,6 +31,7 @@ import ( "github.com/offchainlabs/nitro/arbutil" "github.com/offchainlabs/nitro/cmd/chaininfo" "github.com/offchainlabs/nitro/das/dastree" + "github.com/offchainlabs/nitro/das/eigenda" "github.com/offchainlabs/nitro/gethhook" "github.com/offchainlabs/nitro/wavmio" ) @@ -119,8 +121,9 @@ func (dasReader *PreimageDASReader) ExpirationPolicy(ctx context.Context) (arbst return arbstate.DiscardImmediately, nil } -type BlobPreimageReader struct { -} +type BlobPreimageReader struct{} + +type PreimageEigenDAReader struct{} func (r *BlobPreimageReader) GetBlobs( ctx context.Context, @@ -147,6 +150,20 @@ func (r *BlobPreimageReader) Initialize(ctx context.Context) error { return nil } +// struct for recovering data from preimage, impl interface EigenDAReader + +func (dasReader *PreimageEigenDAReader) QueryBlob(ctx context.Context, ref *eigenda.EigenDARef) ([]byte, error) { + dataPointer, err := ref.Serialize() + if err != nil { + return nil, err + } + shaDataHash := sha256.New() + shaDataHash.Write(dataPointer) + dataHash := shaDataHash.Sum([]byte{}) + // check function eigenda.RecoverPayloadFromEigenDABatch, the data population and data reading should be matched. + return wavmio.ResolveTypedPreimage(arbutil.Sha2_256PreimageType, common.BytesToHash(dataHash)) +} + // To generate: // key, _ := crypto.HexToECDSA("0000000000000000000000000000000000000000000000000000000000000001") // sig, _ := crypto.Sign(make([]byte, 32), key) @@ -201,9 +218,13 @@ func main() { if lastBlockHeader != nil { delayedMessagesRead = lastBlockHeader.Nonce.Uint64() } - var dasReader arbstate.DataAvailabilityReader + // due to the lack of abstraction, we have to define our own Reader here. + // once we have a way to unify the interface between DataAvailabilityReader and EigenDAReader, we should be able to retain the old struct. + // todo make it compatible with dasReader + // var dasReader arbstate.DataAvailabilityReader + var dasReader eigenda.EigenDAReader if dasEnabled { - dasReader = &PreimageDASReader{} + dasReader = &PreimageEigenDAReader{} } backend := WavmInbox{} var keysetValidationMode = arbstate.KeysetPanicIfInvalid @@ -211,11 +232,12 @@ func main() { keysetValidationMode = arbstate.KeysetDontValidate } var daProviders []arbstate.DataAvailabilityProvider - if dasReader != nil { - daProviders = append(daProviders, arbstate.NewDAProviderDAS(dasReader)) - } + // TODO: add dasReader of type eigenda.EigenDAReader when it conforms to interface + // if dasReader != nil { + // daProviders = append(daProviders, arbstate.NewDAProviderDAS(dasReader)) + // } daProviders = append(daProviders, arbstate.NewDAProviderBlobReader(&BlobPreimageReader{})) - inboxMultiplexer := arbstate.NewInboxMultiplexer(backend, delayedMessagesRead, daProviders, keysetValidationMode) + inboxMultiplexer := arbstate.NewInboxMultiplexer(backend, delayedMessagesRead, daProviders, dasReader, keysetValidationMode) ctx := context.Background() message, err := inboxMultiplexer.Pop(ctx) if err != nil { @@ -267,7 +289,8 @@ func main() { } } - message := readMessage(chainConfig.ArbitrumChainParams.DataAvailabilityCommittee) + // message := readMessage(chainConfig.ArbitrumChainParams.DataAvailabilityCommittee) + message := readMessage(true) chainContext := WavmChainContext{} batchFetcher := func(batchNum uint64) ([]byte, error) { diff --git a/contracts b/contracts index 1cab72ff3..6bd3cf1d2 160000 --- a/contracts +++ b/contracts @@ -1 +1 @@ -Subproject commit 1cab72ff3dfcfe06ceed371a9db7a54a527e3bfb +Subproject commit 6bd3cf1d27af8089dfa80cde7044fdc357ef7268 diff --git a/das/eigenda/eigenda.go b/das/eigenda/eigenda.go new file mode 100644 index 000000000..fbae6b6aa --- /dev/null +++ b/das/eigenda/eigenda.go @@ -0,0 +1,213 @@ +// Copyright 2024-2024, Alt Research, Inc. +// For license information, see https://github.com/nitro/blob/master/LICENSE + +package eigenda + +import ( + "bytes" + "context" + "crypto/sha256" + "crypto/tls" + "encoding/binary" + "encoding/hex" + "errors" + "fmt" + "time" + + "github.com/Layr-Labs/eigenda/api/grpc/disperser" + "github.com/Layr-Labs/eigenda/encoding/utils/codec" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/log" + "github.com/offchainlabs/nitro/arbutil" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials" +) + +// EigenDAMessageHeaderFlag indicated that the message is a EigenDARef which will be used to retrieve data from EigenDA +const EigenDAMessageHeaderFlag byte = 0xed + +func IsEigenDAMessageHeaderByte(header byte) bool { + return (EigenDAMessageHeaderFlag & header) > 0 +} + +type EigenDAWriter interface { + Store(context.Context, []byte) (*EigenDARef, error) + Serialize(eigenDARef *EigenDARef) ([]byte, error) +} + +type EigenDAReader interface { + QueryBlob(ctx context.Context, ref *EigenDARef) ([]byte, error) +} + +type EigenDAConfig struct { + Enable bool `koanf:"enable"` + Rpc string `koanf:"rpc"` +} + +func (ec *EigenDAConfig) String() { + fmt.Println(ec.Enable) + fmt.Println(ec.Rpc) + // fmt.Sprintf("enable: %b, rpc: %s", ec.Enable, ec.Rpc) +} + +type EigenDARef struct { + BatchHeaderHash []byte + BlobIndex uint32 +} + +func (b *EigenDARef) Serialize() ([]byte, error) { + buf := new(bytes.Buffer) + err := binary.Write(buf, binary.BigEndian, b.BlobIndex) + if err != nil { + return nil, err + } + _, err = buf.Write(b.BatchHeaderHash) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +func (b *EigenDARef) Deserialize(data []byte) error { + buf := bytes.NewReader(data) + err := binary.Read(buf, binary.BigEndian, &b.BlobIndex) + if err != nil { + return err + } + // _, err = buf.Read(b.BatchHeaderHash) + err = binary.Read(buf, binary.BigEndian, &b.BatchHeaderHash) + if err != nil { + return err + } + return nil +} + +type EigenDA struct { + client disperser.DisperserClient +} + +func NewEigenDA(rpc string) (*EigenDA, error) { + creds := credentials.NewTLS(&tls.Config{ + InsecureSkipVerify: true, + }) + conn, err := grpc.Dial(rpc, grpc.WithTransportCredentials(creds)) + if err != nil { + return nil, err + } + return &EigenDA{ + client: disperser.NewDisperserClient(conn), + }, nil +} + +func (e *EigenDA) QueryBlob(ctx context.Context, ref *EigenDARef) ([]byte, error) { + res, err := e.client.RetrieveBlob(ctx, &disperser.RetrieveBlobRequest{ + BatchHeaderHash: ref.BatchHeaderHash, + BlobIndex: ref.BlobIndex, + }) + if err != nil { + return nil, err + } + decodedData := codec.RemoveEmptyByteFromPaddedBytes(res.GetData()) + return decodedData, nil +} + +func (e *EigenDA) Store(ctx context.Context, data []byte) (*EigenDARef, error) { + encodedData := codec.ConvertByPaddingEmptyByte(data) + disperseBlobRequest := &disperser.DisperseBlobRequest{ + Data: encodedData, + } + + res, err := e.client.DisperseBlob(ctx, disperseBlobRequest) + if err != nil { + return nil, err + } + + ticker := time.NewTicker(time.Second * 5) + defer ticker.Stop() + + var ref *EigenDARef + for range ticker.C { + statusReply, err := e.GetBlobStatus(ctx, res.GetRequestId()) + if err != nil { + log.Error("[eigenda]: GetBlobStatus: ", "error", err.Error()) + continue + } + switch statusReply.GetStatus() { + case disperser.BlobStatus_CONFIRMED, disperser.BlobStatus_FINALIZED: + ref = &EigenDARef{ + BatchHeaderHash: statusReply.GetInfo().GetBlobVerificationProof().GetBatchMetadata().GetBatchHeaderHash(), + BlobIndex: statusReply.GetInfo().GetBlobVerificationProof().GetBlobIndex(), + } + return ref, nil + case disperser.BlobStatus_FAILED: + return nil, errors.New("disperser blob failed") + default: + continue + } + } + return nil, errors.New("disperser blob query status timeout") + +} + +func (e *EigenDA) GetBlobStatus(ctx context.Context, reqeustId []byte) (*disperser.BlobStatusReply, error) { + blockStatusRequest := &disperser.BlobStatusRequest{ + RequestId: reqeustId, + } + return e.client.GetBlobStatus(ctx, blockStatusRequest) +} + +// Serialize implements EigenDAWriter. +func (e *EigenDA) Serialize(eigenDARef *EigenDARef) ([]byte, error) { + eigenDARefData, err := eigenDARef.Serialize() + if err != nil { + log.Warn("eigenDARef serialize error", "err", err) + return nil, err + } + buf := new(bytes.Buffer) + err = binary.Write(buf, binary.BigEndian, EigenDAMessageHeaderFlag) + if err != nil { + log.Warn("batch type byte serialization failed", "err", err) + return nil, err + } + err = binary.Write(buf, binary.BigEndian, eigenDARefData) + + if err != nil { + log.Warn("data pointer serialization failed", "err", err) + return nil, err + } + serializedBlobPointerData := buf.Bytes() + return serializedBlobPointerData, nil +} + +func RecoverPayloadFromEigenDABatch(ctx context.Context, + sequencerMsg []byte, + daReader EigenDAReader, + preimages map[arbutil.PreimageType]map[common.Hash][]byte, +) ([]byte, error) { + log.Info("Start recovering payload from eigenda: ", "data", hex.EncodeToString(sequencerMsg)) + var shaPreimages map[common.Hash][]byte + if preimages != nil { + if preimages[arbutil.EigenDaPreimageType] == nil { + preimages[arbutil.EigenDaPreimageType] = make(map[common.Hash][]byte) + } + shaPreimages = preimages[arbutil.EigenDaPreimageType] + } + var daRef EigenDARef + daRef.BlobIndex = binary.BigEndian.Uint32(sequencerMsg[:4]) + daRef.BatchHeaderHash = sequencerMsg[4:] + log.Info("Data pointer: ", "info", hex.EncodeToString(daRef.BatchHeaderHash), "index", daRef.BlobIndex) + data, err := daReader.QueryBlob(ctx, &daRef) + if err != nil { + log.Error("Failed to query data from EigenDA", "err", err) + return nil, err + } + // record preimage data + log.Info("Recording preimage data for EigenDA") + shaDataHash := sha256.New() + shaDataHash.Write(sequencerMsg) + dataHash := shaDataHash.Sum([]byte{}) + if shaPreimages != nil { + shaPreimages[common.BytesToHash(dataHash)] = data + } + return data, nil +} diff --git a/err.txt b/err.txt new file mode 100644 index 000000000..e69de29bb diff --git a/go.mod b/go.mod index cf9e61f9b..4bca21dc6 100644 --- a/go.mod +++ b/go.mod @@ -6,27 +6,33 @@ replace github.com/VictoriaMetrics/fastcache => ./fastcache replace github.com/ethereum/go-ethereum => ./go-ethereum +replace github.com/wealdtech/go-merkletree => github.com/wealdtech/go-merkletree v1.0.0 + +replace github.com/cockroachdb/pebble => github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 + require ( github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible + github.com/Layr-Labs/eigenda v0.6.1 + github.com/Layr-Labs/eigenda/api v0.6.1 github.com/Shopify/toxiproxy v2.1.4+incompatible github.com/alicebob/miniredis/v2 v2.21.0 github.com/andybalholm/brotli v1.0.4 - github.com/aws/aws-sdk-go-v2 v1.16.4 - github.com/aws/aws-sdk-go-v2/config v1.15.5 - github.com/aws/aws-sdk-go-v2/credentials v1.12.0 - github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.10 - github.com/aws/aws-sdk-go-v2/service/s3 v1.26.9 + github.com/aws/aws-sdk-go-v2 v1.26.0 + github.com/aws/aws-sdk-go-v2/config v1.27.9 + github.com/aws/aws-sdk-go-v2/credentials v1.17.9 + github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.16.13 + github.com/aws/aws-sdk-go-v2/service/s3 v1.53.0 github.com/cavaliergopher/grab/v3 v3.0.1 github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 github.com/codeclysm/extract/v3 v3.0.2 github.com/dgraph-io/badger/v4 v4.2.0 github.com/enescakir/emoji v1.0.0 - github.com/ethereum/go-ethereum v1.10.26 + github.com/ethereum/go-ethereum v1.13.14 github.com/fatih/structtag v1.2.0 github.com/gdamore/tcell/v2 v2.6.0 github.com/google/go-cmp v0.6.0 - github.com/hashicorp/golang-lru/v2 v2.0.2 - github.com/holiman/uint256 v1.2.3 + github.com/hashicorp/golang-lru/v2 v2.0.7 + github.com/holiman/uint256 v1.2.4 github.com/ipfs/go-cid v0.4.1 github.com/ipfs/go-libipfs v0.6.2 github.com/ipfs/interface-go-ipfs-core v0.11.0 @@ -38,11 +44,12 @@ require ( github.com/r3labs/diff/v3 v3.0.1 github.com/rivo/tview v0.0.0-20230814110005-ccc2c8119703 github.com/spf13/pflag v1.0.5 - github.com/wealdtech/go-merkletree v1.0.0 - golang.org/x/crypto v0.21.0 - golang.org/x/sys v0.18.0 - golang.org/x/term v0.18.0 - golang.org/x/tools v0.13.0 + github.com/wealdtech/go-merkletree v1.0.1-0.20230205101955-ec7a95ea11ca + golang.org/x/crypto v0.18.0 + golang.org/x/sys v0.16.0 + golang.org/x/term v0.16.0 + golang.org/x/tools v0.15.0 + google.golang.org/grpc v1.59.0 gopkg.in/natefinch/lumberjack.v2 v2.0.0 ) @@ -56,31 +63,32 @@ require ( github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect github.com/alexbrainman/goissue34681 v0.0.0-20191006012335-3fc7a47baff5 // indirect github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a // indirect - github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.1 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.4 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.11 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.5 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.3.11 // indirect - github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.1 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.1 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.5 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.4 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.4 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.11.4 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.16.4 // indirect - github.com/aws/smithy-go v1.11.2 // indirect + github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.1 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.0 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.4 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.4 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect + github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.4 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.1 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.6 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.6 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.4 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.20.3 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.3 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.28.5 // indirect + github.com/aws/smithy-go v1.20.1 // indirect github.com/benbjohnson/clock v1.3.0 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/bits-and-blooms/bitset v1.7.0 // indirect + github.com/bits-and-blooms/bitset v1.10.0 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/btcsuite/btcd/btcec/v2 v2.2.0 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.0.2 // indirect github.com/cenkalti/backoff v2.2.1+incompatible // indirect - github.com/cenkalti/backoff/v4 v4.1.3 // indirect + github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/ceramicnetwork/go-dag-jose v0.1.0 // indirect github.com/cockroachdb/errors v1.9.1 // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect - github.com/cockroachdb/redact v1.1.3 // indirect + github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/consensys/bavard v0.1.13 // indirect github.com/consensys/gnark-crypto v0.12.1 // indirect @@ -109,14 +117,15 @@ require ( github.com/gammazero/deque v0.2.1 // indirect github.com/gdamore/encoding v1.0.0 // indirect github.com/getsentry/sentry-go v0.18.0 // indirect - github.com/go-logr/logr v1.2.3 // indirect + github.com/go-logr/logr v1.2.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect + github.com/go-stack/stack v1.8.1 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect github.com/godbus/dbus/v5 v5.1.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v4 v4.3.0 // indirect - github.com/golang/glog v1.2.0 // indirect + github.com/golang-jwt/jwt/v4 v4.5.0 // indirect + github.com/golang/glog v1.1.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/mock v1.6.0 // indirect github.com/golang/protobuf v1.5.4 // indirect @@ -130,7 +139,7 @@ require ( github.com/hannahhoward/go-pubsub v0.0.0-20200423002714-8d62886cc36e // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/holiman/billy v0.0.0-20230718173358-1c7e68d277a7 // indirect + github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 // indirect github.com/huin/goupnp v1.3.0 // indirect github.com/ipfs/bbloom v0.0.4 // indirect github.com/ipfs/go-bitfield v1.1.0 // indirect @@ -183,8 +192,8 @@ require ( github.com/jbenet/goprocess v0.1.4 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/juju/errors v0.0.0-20181118221551-089d3ea4e4d5 // indirect - github.com/klauspost/compress v1.17.7 // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect + github.com/klauspost/compress v1.16.4 // indirect + github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/koron/go-ssdp v0.0.4 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect @@ -209,7 +218,6 @@ require ( github.com/libp2p/zeroconf/v2 v2.2.0 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/miekg/dns v1.1.53 // indirect github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect @@ -227,17 +235,17 @@ require ( github.com/multiformats/go-multicodec v0.8.1 // indirect github.com/multiformats/go-multistream v0.4.1 // indirect github.com/multiformats/go-varint v0.0.7 // indirect - github.com/onsi/ginkgo/v2 v2.9.2 // indirect + github.com/onsi/ginkgo/v2 v2.11.0 // indirect github.com/opencontainers/runtime-spec v1.0.2 // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/openzipkin/zipkin-go v0.4.0 // indirect github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/polydawn/refmt v0.89.0 // indirect - github.com/prometheus/client_golang v1.14.0 // indirect - github.com/prometheus/client_model v0.3.0 // indirect - github.com/prometheus/common v0.42.0 // indirect - github.com/prometheus/procfs v0.9.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect + github.com/prometheus/client_model v0.5.0 // indirect + github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/procfs v0.12.0 // indirect github.com/quic-go/qpack v0.4.0 // indirect github.com/quic-go/qtls-go1-19 v0.3.3 // indirect github.com/quic-go/qtls-go1-20 v0.2.3 // indirect @@ -246,12 +254,12 @@ require ( github.com/raulk/go-watchdog v1.3.0 // indirect github.com/rhnvrm/simples3 v0.6.1 // indirect github.com/rivo/uniseg v0.4.3 // indirect - github.com/rogpeppe/go-internal v1.9.0 // indirect + github.com/rogpeppe/go-internal v1.10.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/samber/lo v1.36.0 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/supranational/blst v0.3.11 // indirect - github.com/urfave/cli/v2 v2.25.7 // indirect + github.com/urfave/cli/v2 v2.27.1 // indirect github.com/vmihailenco/msgpack/v5 v5.3.5 // indirect github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect github.com/whyrusleeping/base32 v0.0.0-20170828182744-c30ac30633cc // indirect @@ -277,19 +285,18 @@ require ( go.uber.org/dig v1.16.1 // indirect go.uber.org/fx v1.19.2 // indirect go.uber.org/multierr v1.11.0 // indirect - go.uber.org/zap v1.24.0 // indirect + go.uber.org/zap v1.27.0 // indirect go4.org v0.0.0-20200411211856-f5505b9728dd // indirect - golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect - golang.org/x/mod v0.12.0 // indirect - golang.org/x/net v0.22.0 // indirect - golang.org/x/sync v0.3.0 // indirect + golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect + golang.org/x/mod v0.16.0 // indirect + golang.org/x/net v0.20.0 // indirect + golang.org/x/sync v0.5.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.3.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b // indirect google.golang.org/genproto/googleapis/api v0.0.0-20231012201019-e917dd12ba7a // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405 // indirect - google.golang.org/grpc v1.59.0 // indirect google.golang.org/protobuf v1.33.0 // indirect gopkg.in/square/go-jose.v2 v2.5.1 // indirect lukechampine.com/blake3 v1.1.7 // indirect @@ -308,23 +315,22 @@ require ( require ( github.com/StackExchange/wmi v1.2.1 // indirect - github.com/VictoriaMetrics/fastcache v1.6.0 // indirect + github.com/VictoriaMetrics/fastcache v1.12.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5 // indirect + github.com/fjl/memsize v0.0.2 // indirect github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff // indirect - github.com/go-ole/go-ole v1.2.5 // indirect + github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-redis/redis/v8 v8.11.4 - github.com/go-stack/stack v1.8.1 // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect - github.com/google/uuid v1.3.1 // indirect + github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/hashicorp/go-bexpr v0.1.10 // indirect github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect github.com/holiman/bloomfilter/v2 v2.0.3 // indirect github.com/jackpal/go-nat-pmp v1.0.2 // indirect github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.18 // indirect + github.com/mattn/go-isatty v0.0.19 // indirect github.com/mattn/go-runewidth v0.0.14 // indirect github.com/mitchellh/mapstructure v1.4.2 github.com/mitchellh/pointerstructure v1.2.0 // indirect diff --git a/go.sum b/go.sum index f2b4c668c..05f581be0 100644 --- a/go.sum +++ b/go.sum @@ -55,6 +55,10 @@ github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKz github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Kubuxu/go-os-helper v0.0.1/go.mod h1:N8B+I7vPCT80IcP58r50u4+gEEcsZETFUpAzWW2ep1Y= +github.com/Layr-Labs/eigenda v0.6.1 h1:uU04t+dsR5oHsbr+A5XIeJdyZIfNW3YvG03dMTKLSK4= +github.com/Layr-Labs/eigenda v0.6.1/go.mod h1:XongI0xM6ks66DzxvTpF2yi4x2QH0X2RgEbKl/WFebY= +github.com/Layr-Labs/eigenda/api v0.6.1 h1:TAstOttTmFZQoFlZtgu/rNktNOhx62TwRFMxGOhUx8M= +github.com/Layr-Labs/eigenda/api v0.6.1/go.mod h1:kVXqWM13s/1hXyv9QdHweWAbKin9MeOBbS4i8c9rLbU= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -104,54 +108,53 @@ github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQ github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/aws/aws-sdk-go-v2 v1.9.2/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= -github.com/aws/aws-sdk-go-v2 v1.16.3/go.mod h1:ytwTPBG6fXTZLxxeeCCWj2/EMYp/xDUgX+OET6TLNNU= -github.com/aws/aws-sdk-go-v2 v1.16.4 h1:swQTEQUyJF/UkEA94/Ga55miiKFoXmm/Zd67XHgmjSg= -github.com/aws/aws-sdk-go-v2 v1.16.4/go.mod h1:ytwTPBG6fXTZLxxeeCCWj2/EMYp/xDUgX+OET6TLNNU= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.1 h1:SdK4Ppk5IzLs64ZMvr6MrSficMtjY2oS0WOORXTlxwU= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.1/go.mod h1:n8Bs1ElDD2wJ9kCRTczA83gYbBmjSwZp3umc6zF4EeM= +github.com/aws/aws-sdk-go-v2 v1.26.0 h1:/Ce4OCiM3EkpW7Y+xUnfAFpchU78K7/Ug01sZni9PgA= +github.com/aws/aws-sdk-go-v2 v1.26.0/go.mod h1:35hUlJVYd+M++iLI3ALmVwMOyRYMmRqUXpTtRGW+K9I= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.1 h1:gTK2uhtAPtFcdRRJilZPx8uJLL2J85xK11nKtWL0wfU= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.1/go.mod h1:sxpLb+nZk7tIfCWChfd+h4QwHNUR57d8hA1cleTkjJo= github.com/aws/aws-sdk-go-v2/config v1.8.3/go.mod h1:4AEiLtAb8kLs7vgw2ZV3p2VZ1+hBavOc84hqxVNpCyw= -github.com/aws/aws-sdk-go-v2/config v1.15.5 h1:P+xwhr6kabhxDTXTVH9YoHkqjLJ0wVVpIUHtFNr2hjU= -github.com/aws/aws-sdk-go-v2/config v1.15.5/go.mod h1:ZijHHh0xd/A+ZY53az0qzC5tT46kt4JVCePf2NX9Lk4= +github.com/aws/aws-sdk-go-v2/config v1.27.9 h1:gRx/NwpNEFSk+yQlgmk1bmxxvQ5TyJ76CWXs9XScTqg= +github.com/aws/aws-sdk-go-v2/config v1.27.9/go.mod h1:dK1FQfpwpql83kbD873E9vz4FyAxuJtR22wzoXn3qq0= github.com/aws/aws-sdk-go-v2/credentials v1.4.3/go.mod h1:FNNC6nQZQUuyhq5aE5c7ata8o9e4ECGmS4lAXC7o1mQ= -github.com/aws/aws-sdk-go-v2/credentials v1.12.0 h1:4R/NqlcRFSkR0wxOhgHi+agGpbEr5qMCjn7VqUIJY+E= -github.com/aws/aws-sdk-go-v2/credentials v1.12.0/go.mod h1:9YWk7VW+eyKsoIL6/CljkTrNVWBSK9pkqOPUuijid4A= +github.com/aws/aws-sdk-go-v2/credentials v1.17.9 h1:N8s0/7yW+h8qR8WaRlPQeJ6czVMNQVNtNdUqf6cItao= +github.com/aws/aws-sdk-go-v2/credentials v1.17.9/go.mod h1:446YhIdmSV0Jf/SLafGZalQo+xr2iw7/fzXGDPTU1yQ= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.6.0/go.mod h1:gqlclDEZp4aqJOancXK6TN24aKhT0W0Ae9MHk3wzTMM= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.4 h1:FP8gquGeGHHdfY6G5llaMQDF+HAf20VKc8opRwmjf04= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.4/go.mod h1:u/s5/Z+ohUQOPXl00m2yJVyioWDECsbpXTQlaqSlufc= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.10 h1:JL7cY85hyjlgfA29MMyAlItX+JYIH9XsxgMBS7jtlqA= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.10/go.mod h1:p+ul5bLZSDRRXCZ/vePvfmZBH9akozXBJA5oMshWa5U= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.10/go.mod h1:F+EZtuIwjlv35kRJPyBGcsA4f7bnSoz15zOQ2lJq1Z4= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.11 h1:gsqHplNh1DaQunEKZISK56wlpbCg0yKxNVvGWCFuF1k= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.11/go.mod h1:tmUB6jakq5DFNcXsXOA/ZQ7/C8VnSKYkx58OI7Fh79g= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.4/go.mod h1:8glyUqVIM4AmeenIsPo0oVh3+NUwnsQml2OFupfQW+0= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.5 h1:PLFj+M2PgIDHG//hw3T0O0KLI4itVtAjtxrZx4AHPLg= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.5/go.mod h1:fV1AaS2gFc1tM0RCb015FJ0pvWVUfJZANzjwoO4YakM= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.0 h1:af5YzcLf80tv4Em4jWVD75lpnOHSBkPUZxZfGkrI3HI= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.0/go.mod h1:nQ3how7DMnFMWiU1SpECohgC82fpn4cKZ875NDMmwtA= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.16.13 h1:F+PUZee9mlfpEJVZdgyewRumKekS9O3fftj8fEMt0rQ= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.16.13/go.mod h1:Rl7i2dEWGHGsBIJCpUxlRt7VwK/HyXxICxdvIRssQHE= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.4 h1:0ScVK/4qZ8CIW0k8jOeFVsyS/sAiXpYxRBLolMkuLQM= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.4/go.mod h1:84KyjNZdHC6QZW08nfHI6yZgPd+qRgaWcYsyLUo3QY8= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.4 h1:sHmMWWX5E7guWEFQ9SVo6A3S4xpPrWnd77a6y4WM6PU= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.4/go.mod h1:WjpDrhWisWOIoS9n3nk67A3Ll1vfULJ9Kq6h29HTD48= github.com/aws/aws-sdk-go-v2/internal/ini v1.2.4/go.mod h1:ZcBrrI3zBKlhGFNYWvju0I3TR93I7YIgAfy82Fh4lcQ= -github.com/aws/aws-sdk-go-v2/internal/ini v1.3.11 h1:6cZRymlLEIlDTEB0+5+An6Zj1CKt6rSE69tOmFeu1nk= -github.com/aws/aws-sdk-go-v2/internal/ini v1.3.11/go.mod h1:0MR+sS1b/yxsfAPvAESrw8NfwUoxMinDyw6EYR9BS2U= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.1 h1:C21IDZCm9Yu5xqjb3fKmxDoYvJXtw1DNlOmLZEIlY1M= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.1/go.mod h1:l/BbcfqDCT3hePawhy4ZRtewjtdkl6GWtd9/U+1penQ= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.4 h1:SIkD6T4zGQ+1YIit22wi37CGNkrE7mXV1vNA5VpI3TI= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.4/go.mod h1:XfeqbsG0HNedNs0GT+ju4Bs+pFAwsrlzcRdMvdNVf5s= github.com/aws/aws-sdk-go-v2/service/appconfig v1.4.2/go.mod h1:FZ3HkCe+b10uFZZkFdvf98LHW21k49W8o8J366lqVKY= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.1 h1:T4pFel53bkHjL2mMo+4DKE6r6AuoZnM0fg7k1/ratr4= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.1/go.mod h1:GeUru+8VzrTXV/83XyMJ80KpH8xO89VPoUileyNQ+tc= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.5 h1:9LSZqt4v1JiehyZTrQnRFf2mY/awmyYNNY/b7zqtduU= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.5/go.mod h1:S8TVP66AAkMMdYYCNZGvrdEq9YRm+qLXjio4FqRnrEE= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.1 h1:EyBZibRTVAs6ECHZOw5/wlylS9OcTzwyjeQMudmREjE= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.1/go.mod h1:JKpmtYhhPs7D97NL/ltqz7yCkERFW5dOlHyVl66ZYF8= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.6 h1:NkHCgg0Ck86c5PTOzBZ0JRccI51suJDg5lgFtxBu1ek= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.6/go.mod h1:mjTpxjC8v4SeINTngrnKFgm2QUi+Jm+etTbCxh8W4uU= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2/go.mod h1:72HRZDLMtmVQiLG2tLfQcaWLCssELvGl+Zf2WVxMmR8= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.4 h1:b16QW0XWl0jWjLABFc1A+uh145Oqv+xDcObNk0iQgUk= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.4/go.mod h1:uKkN7qmSIsNJVyMtxNQoCEYMvFEXbOg9fwCJPdfp2u8= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.4 h1:RE/DlZLYrz1OOmq8F28IXHLksuuvlpzUbvJ+SESCZBI= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.4/go.mod h1:oudbsSdDtazNj47z1ut1n37re9hDsKpk2ZI3v7KSxq0= -github.com/aws/aws-sdk-go-v2/service/s3 v1.26.9 h1:LCQKnopq2t4oQS3VKivlYTzAHCTJZZoQICM9fny7KHY= -github.com/aws/aws-sdk-go-v2/service/s3 v1.26.9/go.mod h1:iMYipLPXlWpBJ0KFX7QJHZ84rBydHBY8as2aQICTPWk= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.6 h1:b+E7zIUHMmcB4Dckjpkapoy47W6C9QBv/zoUP+Hn8Kc= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.6/go.mod h1:S2fNV0rxrP78NhPbCZeQgY8H9jdDMeGtwcfZIRxzBqU= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.4 h1:uDj2K47EM1reAYU9jVlQ1M5YENI1u6a/TxJpf6AeOLA= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.4/go.mod h1:XKCODf4RKHppc96c2EZBGV/oCUC7OClxAo2MEyg4pIk= +github.com/aws/aws-sdk-go-v2/service/s3 v1.53.0 h1:r3o2YsgW9zRcIP3Q0WCmttFVhTuugeKIvT5z9xDspc0= +github.com/aws/aws-sdk-go-v2/service/s3 v1.53.0/go.mod h1:w2E4f8PUfNtyjfL6Iu+mWI96FGttE03z3UdNcUEC4tA= github.com/aws/aws-sdk-go-v2/service/sso v1.4.2/go.mod h1:NBvT9R1MEF+Ud6ApJKM0G+IkPchKS7p7c2YPKwHmBOk= -github.com/aws/aws-sdk-go-v2/service/sso v1.11.4 h1:Uw5wBybFQ1UeA9ts0Y07gbv0ncZnIAyw858tDW0NP2o= -github.com/aws/aws-sdk-go-v2/service/sso v1.11.4/go.mod h1:cPDwJwsP4Kff9mldCXAmddjJL6JGQqtA3Mzer2zyr88= +github.com/aws/aws-sdk-go-v2/service/sso v1.20.3 h1:mnbuWHOcM70/OFUlZZ5rcdfA8PflGXXiefU/O+1S3+8= +github.com/aws/aws-sdk-go-v2/service/sso v1.20.3/go.mod h1:5HFu51Elk+4oRBZVxmHrSds5jFXmFj8C3w7DVF2gnrs= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.3 h1:uLq0BKatTmDzWa/Nu4WO0M1AaQDaPpwTKAeByEc6WFM= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.3/go.mod h1:b+qdhjnxj8GSR6t5YfphOffeoQSQ1KmpoVVuBn+PWxs= github.com/aws/aws-sdk-go-v2/service/sts v1.7.2/go.mod h1:8EzeIqfWt2wWT4rJVu3f21TfrhJ8AEMzVybRNSb/b4g= -github.com/aws/aws-sdk-go-v2/service/sts v1.16.4 h1:+xtV90n3abQmgzk1pS++FdxZTrPEDgQng6e4/56WR2A= -github.com/aws/aws-sdk-go-v2/service/sts v1.16.4/go.mod h1:lfSYenAXtavyX2A1LsViglqlG9eEFYxNryTZS5rn3QE= +github.com/aws/aws-sdk-go-v2/service/sts v1.28.5 h1:J/PpTf/hllOjx8Xu9DMflff3FajfLxqM5+tepvVXmxg= +github.com/aws/aws-sdk-go-v2/service/sts v1.28.5/go.mod h1:0ih0Z83YDH/QeQ6Ori2yGE2XvWYv/Xm+cZc01LC6oK0= github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= -github.com/aws/smithy-go v1.11.2 h1:eG/N+CcUMAvsdffgMvjMKwfyDzIkjM6pfxMJ8Mzc6mE= -github.com/aws/smithy-go v1.11.2/go.mod h1:3xHYmszWVx2c0kIwQeEVf9uSm4fYZt67FBJnwub1bgM= +github.com/aws/smithy-go v1.20.1 h1:4SZlSlMr36UEqC7XOyRVb27XMeZubNcBNN+9IgEPIQw= +github.com/aws/smithy-go v1.20.1/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= @@ -161,8 +164,8 @@ github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+Ce github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bits-and-blooms/bitset v1.7.0 h1:YjAGVd3XmtK9ktAbX8Zg2g2PwLIMjGREZJHlV4j7NEo= -github.com/bits-and-blooms/bitset v1.7.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= +github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= +github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= @@ -188,13 +191,15 @@ github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= +github.com/bytedance/sonic v1.9.2 h1:GDaNjuWSGu09guE9Oql0MSTNhNCLlWwO8y/xM5BzcbM= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cavaliergopher/grab/v3 v3.0.1 h1:4z7TkBfmPjmLAAmkkAZNX/6QJ1nNFdv3SdIHXju0Fr4= github.com/cavaliergopher/grab/v3 v3.0.1/go.mod h1:1U/KNnD+Ft6JJiYoYBAimKH2XrYptb8Kl3DFGmsjpq4= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= +github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/ceramicnetwork/go-dag-jose v0.1.0 h1:yJ/HVlfKpnD3LdYP03AHyTvbm3BpPiz2oZiOeReJRdU= github.com/ceramicnetwork/go-dag-jose v0.1.0/go.mod h1:qYA1nYt0X8u4XoMAVoOV3upUVKtrxy/I670Dg5F0wjI= @@ -205,6 +210,7 @@ github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cheekybits/genny v1.0.0/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= +github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 h1:qSGYFH7+jGhDF8vLC+iwCD4WpbV1EBDSzWkJODFLams= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= @@ -232,8 +238,9 @@ github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZe github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 h1:aPEJyR4rPBvDmeyi+l/FS/VtA00IWvjeFvjen1m1l1A= github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593/go.mod h1:6hk1eMY/u5t+Cf18q5lFMUA1Rc+Sm5I6Ra1QuPyxXCo= -github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5wfSQ= github.com/cockroachdb/redact v1.1.3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= +github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= @@ -348,8 +355,8 @@ github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5Kwzbycv github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= -github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5 h1:FtmdgXiUlNeRsoNMFlKLDt+S+6hbjVMEW6RGQ7aUf7c= -github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= +github.com/fjl/memsize v0.0.2 h1:27txuSD9or+NZlnOWdKUxeBzTAUkWCVh+4Gf2dWFOzA= +github.com/fjl/memsize v0.0.2/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/flynn/noise v1.0.0 h1:DlTHqmzmvcEiKj+4RYo/imoswx/4r6iBlCMfVtrMXpQ= github.com/flynn/noise v1.0.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= @@ -365,6 +372,7 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= github.com/gammazero/deque v0.2.1 h1:qSdsbG6pgp6nL7A0+K/B7s12mcCY/5l5SIUpMOl+dC0= github.com/gammazero/deque v0.2.1/go.mod h1:LFroj8x4cMYCukHJDbxFCkT+r9AndaJnFMuZDV34tuU= github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= @@ -383,7 +391,7 @@ github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= -github.com/gin-gonic/gin v1.8.1 h1:4+fr/el88TOO3ewCmQr8cx/CtZ/umlIRIs5M4NTNjf8= +github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg= github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= @@ -399,20 +407,22 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9 github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= -github.com/go-ole/go-ole v1.2.5 h1:t4MGB5xEDZvXI+0rMjjsfBsD7yAgp/s9ZDkL1JndXwY= github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= +github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= -github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= -github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= -github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ= +github.com/go-playground/validator/v10 v10.14.1 h1:9c50NUPC30zyuKprjL3vNZ0m5oG+jU0zvx4AqHGnv4k= github.com/go-redis/redis/v8 v8.11.4 h1:kHoYkfZP6+pe04aFTnhDH6GDROa5yJdHJVNxV3F46Tg= github.com/go-redis/redis/v8 v8.11.4/go.mod h1:2Z2wHZXdQpCDXEGzqMockDpNyYvi2l4Pxt6RJr792+w= github.com/go-sourcemap/sourcemap v2.1.3+incompatible h1:W1iEw64niKVGogNgBN3ePyLFfuisuzeidWPMPWmECqU= @@ -437,7 +447,7 @@ github.com/gobwas/ws v1.1.0 h1:7RFti/xnNkMJnrK7D1yQ/iCIB5OrrY/54/H930kIbHA= github.com/gobwas/ws v1.1.0/go.mod h1:nzvNcVha5eUziGrbxFCo6qFIojQHjJV5cLYIbezhfL0= github.com/gobwas/ws-examples v0.0.0-20190625122829-a9e8908d9484 h1:XC9N1eiAyO1zg62dpOU8bex8emB/zluUtKcbLNjJxGI= github.com/gobwas/ws-examples v0.0.0-20190625122829-a9e8908d9484/go.mod h1:5nDZF4afNA1S7ZKcBXCMvDo4nuCTp1931DND7/W4aXo= -github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk= +github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= @@ -456,12 +466,12 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= -github.com/golang-jwt/jwt/v4 v4.3.0 h1:kHL1vqdqWNfATmA0FNMdmZNMyZI1U6O31X4rlIPoBog= -github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= -github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= -github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo= +github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191027212112-611e8accdfc9/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -547,8 +557,8 @@ github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= -github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= @@ -619,8 +629,8 @@ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/golang-lru/v2 v2.0.2 h1:Dwmkdr5Nc/oBiXgJS3CDHNhJtIHkuZ3DZF5twqnfBdU= -github.com/hashicorp/golang-lru/v2 v2.0.2/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= @@ -631,12 +641,12 @@ github.com/hashicorp/vault/api v1.0.4/go.mod h1:gDcqh3WGcR1cpF5AJz/B1UFheUEneMoI github.com/hashicorp/vault/sdk v0.1.13/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvhkWnjtSYCaS2M= github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= -github.com/holiman/billy v0.0.0-20230718173358-1c7e68d277a7 h1:3JQNjnMRil1yD0IfZKHF9GxxWKDJGj8I0IqOUol//sw= -github.com/holiman/billy v0.0.0-20230718173358-1c7e68d277a7/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc= +github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 h1:X4egAf/gcS1zATw6wn4Ej8vjuVGxeHdan+bRb2ebyv4= +github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc= github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= -github.com/holiman/uint256 v1.2.3 h1:K8UWO1HUJpRMXBxbmaY1Y8IAMZC/RsKB+ArEnnK4l5o= -github.com/holiman/uint256 v1.2.3/go.mod h1:SC8Ryt4n+UBbPbIBKaG9zbbDlp4jOru9xFZmPzLUTxw= +github.com/holiman/uint256 v1.2.4 h1:jUc4Nk8fm9jZabQuqr2JzednajVmBpC+oiTiXZJEApU= +github.com/holiman/uint256 v1.2.4/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc= @@ -882,8 +892,8 @@ github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9Y github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= @@ -927,13 +937,13 @@ github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0 github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg= -github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.16.4 h1:91KN02FnsOYhuunwU4ssRe8lc2JosWmizWa91B5v1PU= +github.com/klauspost/compress v1.16.4/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= +github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= +github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/knadh/koanf v1.4.0 h1:/k0Bh49SqLyLNfte9r6cvuZWrApOQhglOmhIU3L/zDw= github.com/knadh/koanf v1.4.0/go.mod h1:1cfH5223ZeZUOs8FU2UdTmaNfHpqgtjV0+NHjRO43gs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -959,7 +969,7 @@ github.com/labstack/echo/v4 v4.5.0/go.mod h1:czIriw4a0C1dFun+ObrXp7ok03xON0N1awS github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= +github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q= github.com/libp2p/go-addr-util v0.0.1/go.mod h1:4ac6O7n9rIAKB1dnd+s8IbbMXkt+oBpzX4/+RACcnlQ= github.com/libp2p/go-addr-util v0.0.2/go.mod h1:Ecd6Fb3yIuLzq4bD7VcywcVSBtefcAwnUISBM3WG15E= github.com/libp2p/go-buffer-pool v0.0.1/go.mod h1:xtyIz9PMobb13WaxR6Zo1Pd1zXJKYg0a8KiIvDp3TzQ= @@ -1204,16 +1214,14 @@ github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Ky github.com/mattn/go-isatty v0.0.13/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= -github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= -github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= @@ -1374,8 +1382,8 @@ github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9k github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -github.com/onsi/ginkgo/v2 v2.9.2 h1:BA2GMJOtfGAfagzYtrAlufIP0lq6QERkFmHLMLPwFSU= -github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts= +github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU= +github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= @@ -1383,7 +1391,7 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.16.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= -github.com/onsi/gomega v1.27.4 h1:Z2AnStgsdSayCMDiCU42qIz+HLqEPcgiOCXjAU/w+8E= +github.com/onsi/gomega v1.27.8 h1:gegWiwZjBsf2DgiSbf5hpokZ98JVDMcWkUiigk6/KXc= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/runtime-spec v1.0.2 h1:UfAcuLBJB9Coz72x1hgl8O5RVzTdNiaglX6v2DM6FI0= github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= @@ -1409,7 +1417,7 @@ github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtP github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.7.0 h1:7utD74fnzVc/cpcyy8sjrlFr5vYpypUixARcHIMIGuI= github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= -github.com/pelletier/go-toml/v2 v2.0.5 h1:ipoSadvV8oGUjnUbMub59IDPPwfxF694nG/jwbMiyQg= +github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/petar/GoLLRB v0.0.0-20210522233825-ae3b015fd3e9 h1:1/WtZae0yGtPq+TI6+Tv1WTxkukpXeMlviSxvL7SRgk= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= @@ -1439,24 +1447,24 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.10.0/go.mod h1:WJM3cc3yu7XKBKa/I8WeZm+V3eltZnBwfENSU7mdogU= -github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= -github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= -github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= +github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.18.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= -github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -1464,8 +1472,8 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= -github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= +github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= +github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= github.com/quic-go/qtls-go1-19 v0.3.3 h1:wznEHvJwd+2X3PqftRha0SUKmGsnb6dfArMhy9PeJVE= @@ -1495,8 +1503,9 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= -github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= @@ -1581,8 +1590,8 @@ github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5J github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -1592,7 +1601,7 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbeoEm4= github.com/supranational/blst v0.3.11/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= @@ -1607,6 +1616,7 @@ github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9f github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c h1:u6SKchux2yDvFQnDHS3lPnIRmfVJ5Sxy3ao2SIdysLQ= github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM= +github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= @@ -1614,14 +1624,14 @@ github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0= +github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.10/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= -github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= -github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= +github.com/urfave/cli/v2 v2.27.1 h1:8xSQ6szndafKVRmfyeUMxkNUJQMjL1F2zmsZ+qHpfho= +github.com/urfave/cli/v2 v2.27.1/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= @@ -1736,8 +1746,8 @@ go.uber.org/fx v1.19.2 h1:SyFgYQFr1Wl0AYstE8vyYIzP4bFz2URrScjwC4cwUvY= go.uber.org/fx v1.19.2/go.mod h1:43G1VcqSzbIv77y00p1DRAsyZS8WdzuYdhZXmEUkMyQ= go.uber.org/goleak v1.0.0/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= @@ -1751,11 +1761,12 @@ go.uber.org/zap v1.14.1/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= -go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= -go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= go4.org v0.0.0-20200411211856-f5505b9728dd h1:BNJlw5kRTzdmyfh5U8F93HA2OwkP7ZGwA51eJ/0wKOU= go4.org v0.0.0-20200411211856-f5505b9728dd/go.mod h1:CIiUVy99QCPfoE13bO4EZaz5GZMZXMSBGhxRdsvzbkg= +golang.org/x/arch v0.4.0 h1:A8WCeEWhLwPBKNbFi5Wv5UTCBx5zzubnXDlMOFAzFMc= golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180214000028-650f4a345ab4/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1789,8 +1800,8 @@ golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= golang.org/x/crypto v0.0.0-20210920023735-84f357641f63/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= -golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc= +golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1801,8 +1812,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= -golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= +golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= +golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1827,8 +1838,8 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= -golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic= +golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180406214816-61147c48b25b/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1888,8 +1899,8 @@ golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT golang.org/x/net v0.0.0-20210917221730-978cfadd31cf/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= -golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= +golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1911,8 +1922,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= -golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180810173357-98c5dad5d1a0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -2004,23 +2015,23 @@ golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= +golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= -golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= +golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE= +golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2101,8 +2112,8 @@ golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= -golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8= +golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/scripts/create-test-preimages.py b/scripts/create-test-preimages.py index c7ecb36e0..892077c6b 100644 --- a/scripts/create-test-preimages.py +++ b/scripts/create-test-preimages.py @@ -7,6 +7,9 @@ FIELD_ELEMENTS_PER_BLOB = 4096 KZG_ENDIANNESS='big' +BN254_BLS_MODULUS = 21888242871839275222246405745257275088548364400416034343698204186575808495617 +EIGENDA_FIELD_ELEMENTS_PER_BLOB = 65536 + def write_data_to_file(filename, preimages): with open(filename, 'wb') as file: for preimage in preimages: @@ -24,6 +27,20 @@ def kzg_test_data(): data.extend(h) return bytes(data) +def eigen_test_data(): + data = [] + # generate a 32 byte blob + for i in range(0, 1): + bytes_64 = bytearray(hashlib.sha512(bytes(str(i), encoding='utf8')).digest()) + bytes_32 = bytes_64[0:32] + + # 0 padding for 1st byte of 32 byte word + bytes_32[0] = 0 + data.extend(bytes_32) + + print(bytes(data)) + return bytes(data) + if len(sys.argv) < 2: print("Usage: python3 create-test-preimages.py ") sys.exit(1) @@ -34,6 +51,7 @@ def kzg_test_data(): (0, b'hello world'), (1, b'hello world'), (2, kzg_test_data()), + (3, eigen_test_data()) ] write_data_to_file(filename, preimages) diff --git a/staker/l1_validator.go b/staker/l1_validator.go index 4e7aa22cb..567cc15ca 100644 --- a/staker/l1_validator.go +++ b/staker/l1_validator.go @@ -10,7 +10,7 @@ import ( "math/big" "time" - "github.com/offchainlabs/nitro/arbstate" + "github.com/offchainlabs/nitro/das/eigenda" "github.com/offchainlabs/nitro/staker/txbuilder" "github.com/offchainlabs/nitro/util/arbmath" "github.com/offchainlabs/nitro/validator" @@ -50,7 +50,7 @@ type L1Validator struct { wallet ValidatorWalletInterface callOpts bind.CallOpts - das arbstate.DataAvailabilityReader + das eigenda.EigenDAReader inboxTracker InboxTrackerInterface txStreamer TransactionStreamerInterface blockValidator *BlockValidator @@ -62,7 +62,7 @@ func NewL1Validator( wallet ValidatorWalletInterface, validatorUtilsAddress common.Address, callOpts bind.CallOpts, - das arbstate.DataAvailabilityReader, + das eigenda.EigenDAReader, inboxTracker InboxTrackerInterface, txStreamer TransactionStreamerInterface, blockValidator *BlockValidator, diff --git a/staker/staker.go b/staker/staker.go index 2a95e9c9f..f57ba3779 100644 --- a/staker/staker.go +++ b/staker/staker.go @@ -291,7 +291,7 @@ func NewStaker( } client := l1Reader.Client() val, err := NewL1Validator(client, wallet, validatorUtilsAddress, callOpts, - statelessBlockValidator.daService, statelessBlockValidator.inboxTracker, statelessBlockValidator.streamer, blockValidator) + statelessBlockValidator.eigenDAService, statelessBlockValidator.inboxTracker, statelessBlockValidator.streamer, blockValidator) if err != nil { return nil, err } diff --git a/staker/stateless_block_validator.go b/staker/stateless_block_validator.go index fcd1f247c..8d49d7f75 100644 --- a/staker/stateless_block_validator.go +++ b/staker/stateless_block_validator.go @@ -11,6 +11,7 @@ import ( "sync" "testing" + "github.com/offchainlabs/nitro/das/eigenda" "github.com/offchainlabs/nitro/execution" "github.com/offchainlabs/nitro/util/rpcclient" "github.com/offchainlabs/nitro/validator/server_api" @@ -34,12 +35,13 @@ type StatelessBlockValidator struct { recorder execution.ExecutionRecorder - inboxReader InboxReaderInterface - inboxTracker InboxTrackerInterface - streamer TransactionStreamerInterface - db ethdb.Database - daService arbstate.DataAvailabilityReader - blobReader arbstate.BlobReader + inboxReader InboxReaderInterface + inboxTracker InboxTrackerInterface + streamer TransactionStreamerInterface + db ethdb.Database + daService arbstate.DataAvailabilityReader + blobReader arbstate.BlobReader + eigenDAService eigenda.EigenDAReader moduleMutex sync.Mutex currentWasmModuleRoot common.Hash @@ -223,6 +225,7 @@ func NewStatelessBlockValidator( arbdb ethdb.Database, das arbstate.DataAvailabilityReader, blobReader arbstate.BlobReader, + eigenDAService eigenda.EigenDAReader, config func() *BlockValidatorConfig, stack *node.Node, ) (*StatelessBlockValidator, error) { @@ -242,6 +245,7 @@ func NewStatelessBlockValidator( inboxTracker: inbox, streamer: streamer, db: arbdb, + eigenDAService: eigenDAService, daService: das, blobReader: blobReader, } @@ -293,6 +297,11 @@ func (v *StatelessBlockValidator) ValidationEntryRecord(ctx context.Context, e * if len(batch.Data) <= 40 { continue } + + if !arbstate.IsDASMessageHeaderByte(batch.Data[40]) && !arbstate.IsBlobHashesHeaderByte(batch.Data[40]) && eigenda.IsEigenDAMessageHeaderByte(batch.Data[40]) { + continue + } + if arbstate.IsBlobHashesHeaderByte(batch.Data[40]) { payload := batch.Data[41:] if len(payload)%len(common.Hash{}) != 0 { @@ -316,6 +325,7 @@ func (v *StatelessBlockValidator) ValidationEntryRecord(ctx context.Context, e * e.Preimages[arbutil.EthVersionedHashPreimageType][versionedHashes[i]] = b[:] } } + if arbstate.IsDASMessageHeaderByte(batch.Data[40]) { if v.daService == nil { log.Warn("No DAS configured, but sequencer message found with DAS header") @@ -328,6 +338,17 @@ func (v *StatelessBlockValidator) ValidationEntryRecord(ctx context.Context, e * } } } + + if eigenda.IsEigenDAMessageHeaderByte(batch.Data[40]) { + if v.eigenDAService == nil { + log.Warn("EigenDA not configured, but sequencer message found with EigenDA header") + } else { + _, err := eigenda.RecoverPayloadFromEigenDABatch(ctx, batch.Data[41:], v.eigenDAService, e.Preimages) + if err != nil { + return err + } + } + } } e.msg = nil // no longer needed diff --git a/system_tests/full_challenge_impl_test.go b/system_tests/full_challenge_impl_test.go index 1c67cf4d9..665510877 100644 --- a/system_tests/full_challenge_impl_test.go +++ b/system_tests/full_challenge_impl_test.go @@ -387,7 +387,7 @@ func RunChallengeTest(t *testing.T, asserterIsCorrect bool, useStubs bool, chall confirmLatestBlock(ctx, t, l1Info, l1Backend) - asserterValidator, err := staker.NewStatelessBlockValidator(asserterL2.InboxReader, asserterL2.InboxTracker, asserterL2.TxStreamer, asserterExec.Recorder, asserterL2ArbDb, nil, nil, StaticFetcherFrom(t, &conf.BlockValidator), valStack) + asserterValidator, err := staker.NewStatelessBlockValidator(asserterL2.InboxReader, asserterL2.InboxTracker, asserterL2.TxStreamer, asserterExec.Recorder, asserterL2ArbDb, nil, nil, nil, StaticFetcherFrom(t, &conf.BlockValidator), valStack) if err != nil { Fatal(t, err) } @@ -404,7 +404,7 @@ func RunChallengeTest(t *testing.T, asserterIsCorrect bool, useStubs bool, chall if err != nil { Fatal(t, err) } - challengerValidator, err := staker.NewStatelessBlockValidator(challengerL2.InboxReader, challengerL2.InboxTracker, challengerL2.TxStreamer, challengerExec.Recorder, challengerL2ArbDb, nil, nil, StaticFetcherFrom(t, &conf.BlockValidator), valStack) + challengerValidator, err := staker.NewStatelessBlockValidator(challengerL2.InboxReader, challengerL2.InboxTracker, challengerL2.TxStreamer, challengerExec.Recorder, challengerL2ArbDb, nil, nil, nil, StaticFetcherFrom(t, &conf.BlockValidator), valStack) if err != nil { Fatal(t, err) } diff --git a/system_tests/staker_test.go b/system_tests/staker_test.go index d5bbeaa07..1fcc75425 100644 --- a/system_tests/staker_test.go +++ b/system_tests/staker_test.go @@ -209,6 +209,7 @@ func stakerTestImpl(t *testing.T, faultyStaker bool, honestStakerInactive bool) l2nodeA.ArbDB, nil, nil, + nil, StaticFetcherFrom(t, &blockValidatorConfig), valStack, ) @@ -262,6 +263,7 @@ func stakerTestImpl(t *testing.T, faultyStaker bool, honestStakerInactive bool) l2nodeB.ArbDB, nil, nil, + nil, StaticFetcherFrom(t, &blockValidatorConfig), valStack, ) diff --git a/system_tests/state_fuzz_test.go b/system_tests/state_fuzz_test.go index 2c1143548..6e5a825f5 100644 --- a/system_tests/state_fuzz_test.go +++ b/system_tests/state_fuzz_test.go @@ -41,7 +41,7 @@ func BuildBlock( if lastBlockHeader != nil { delayedMessagesRead = lastBlockHeader.Nonce.Uint64() } - inboxMultiplexer := arbstate.NewInboxMultiplexer(inbox, delayedMessagesRead, nil, arbstate.KeysetValidate) + inboxMultiplexer := arbstate.NewInboxMultiplexer(inbox, delayedMessagesRead, nil, nil, arbstate.KeysetValidate) ctx := context.Background() message, err := inboxMultiplexer.Pop(ctx)