Releases: Layr-Labs/eigenda-proxy
v1.6.0
Summary
This release is MANDATORY if upgrading your op-stack to 1.9.4 where op-batcher sends with new /put route) instead of the old /put/
route. This release supports both routes.
Added
- [New Feature] Failover signaling via 503 status code when EigenDA is down (implementing our proposed spec). This can be used by rollup batchers to temporarily failover to other DA destinations (e.g, 4844).
- Optional async writes to secondary storage. This allows for minimized latency during dispersals to provide better confirmation throughput to the rollup.
Fixed
- Support for
/put
as well as the old/put/
. - GCP compatibility bug where GCS would unintentionally wrap blob contents with chunk signature encoding metadata.
- HTTP routes are now strict and only accept for each resource the HTTP method specified in the altda spec.
- Properly handle http status codes in log/metrics middlewares.
Security
- All secret values in the config now log as
*****
at startup.
What's Changed
- Allow Google storage endpoints without http/s by @jcortejoso in #179
- fix: change put route put/ -> put by @samlaf in #168
- fix(ci): update go1.21->1.22 everywhere by @samlaf in #183
- Improve local test setup by @samlaf in #177
- refactor: cleaner routing using gorilla mux regexps by @samlaf in #185
- fix: fetch quorum parameters from edasm at RBN instead of latest block by @samlaf in #190
- feat: Optional async decoupling for secondary writes and reworked E2E metric assertions by @epociask in #182
- refactor: use batch confirmation that was upstreamed to eigenda client by @samlaf in #192
- fix(e2e tests): missing new eigenda-client required config fields by @samlaf in #196
- fix(#191): Routing namespace --> Storage by @epociask in #195
- feat(failover): return 503 to batcher when eigenda is down by @samlaf in #193
- fix: Hide other sensitive cfg values by @epociask in #194
- refactor: rename client -> SimpleCommitmentClient and add comments by @samlaf in #201
- fix(middleware): proper handling of handler status codes in log/metrics middlewares by @samlaf in #200
Full Changelog: v1.5.0...v1.6.0-rc
v1.5.0
Summary
This release is optional but recommended.
The release also contains breaking changes on the ENVs and flag initialization when starting the binary, please refer to the table at the end for the mapping from the old to the new flags and ENV. This release also affects the existing way to run a docker container, please see the section at the end for instruction.
Notable changes
Revamp Flags
-
Flags now are categorized and ENVs comply with standard prefixes
-
Using old flags will prompt with an error message pointing out the new ENV name
-
Making DA cert verification enabled by default
Container initialization
- Update command line to run eigenda-proxy with docker
Feature
- Add Redis backend option for both S3 cache or fallback
- Add metrics to EigenDA proxy for GET and PUT
Bug fixes
- Fix issues with Google Cloud Storage
- Simplify logics for waiting for batch finalization
Instruction to run docker container
Before the 1.5.0 release docker run eigenda-proxy:latest ./eigenda-proxy
After the 1.5.0 release docker run eigenda-proxy:latest
Flags and ENV mapping
If any old flag is supplied, the binary will break loudly and print the updated ENV name, for example,
lvl=crit msg="Application failed" message="env var MEMSTORE_EXPIRATION is deprecated for flag memstore.expiration, use EIGENDA_PROXY_MEMSTORE_EXPIRATION instead"
Old flag (1.4.1) | old env | new flag | new env |
---|---|---|---|
--eigenda-cache-path | EIGENDA_PROXY_TARGET_CACHE_PATH | --eigenda.cache-path | EIGENDA_PROXY_EIGENDA_TARGET_CACHE_PATH |
--eigenda-custom-quorum-ids | EIGENDA_PROXY_CUSTOM_QUORUM_IDS | --eigenda.custom-quorum-ids | EIGENDA_PROXY_EIGENDA_CUSTOM_QUORUM_IDS |
--eigenda-disable-point-verification-mode | EIGENDA_PROXY_DISABLE_POINT_VERIFICATION_MODE | --eigenda.disable-point-verification-mode | EIGENDA_PROXY_EIGENDA_DISABLE_POINT_VERIFICATION_MODE |
--eigenda-disable-tls | EIGENDA_PROXY_GRPC_DISABLE_TLS | --eigenda.disable-tls | EIGENDA_PROXY_EIGENDA_GRPC_DISABLE_TLS |
--eigenda-disperser-rpc | EIGENDA_PROXY_EIGENDA_DISPERSER_RPC | --eigenda.disperser-rpc | EIGENDA_PROXY_EIGENDA_DISPERSER_RPC |
--eigenda-put-blob-encoding-version | EIGENDA_PROXY_PUT_BLOB_ENCODING_VERSION | --eigenda.put-blob-encoding-version | EIGENDA_PROXY_EIGENDA_PUT_BLOB_ENCODING_VERSION |
--eigenda-response-timeout | EIGENDA_PROXY_RESPONSE_TIMEOUT | --eigenda.response-timeout | EIGENDA_PROXY_EIGENDA_RESPONSE_TIMEOUT |
--eigenda-signer-private-key-hex | EIGENDA_PROXY_SIGNER_PRIVATE_KEY_HEX | --eigenda.signer-private-key-hex | EIGENDA_PROXY_EIGENDA_SIGNER_PRIVATE_KEY_HEX |
--eigenda-status-query-retry-interval | EIGENDA_PROXY_STATUS_QUERY_INTERVAL | --eigenda.status-query-retry-interval | EIGENDA_PROXY_EIGENDA_STATUS_QUERY_INTERVAL |
--eigenda-status-query-timeout | EIGENDA_PROXY_STATUS_QUERY_TIMEOUT | --eigenda.status-query-timeout | EIGENDA_PROXY_EIGENDA_STATUS_QUERY_TIMEOUT |
--eigenda-eth-confirmation-depth | EIGENDA_PROXY_ETH_CONFIRMATION_DEPTH | --eigenda.eth-confirmation-depth | EIGENDA_PROXY_EIGENDA_ETH_CONFIRMATION_DEPTH |
--eigenda-eth-rpc | EIGENDA_PROXY_ETH_RPC | --eigenda.eth-rpc | EIGENDA_PROXY_EIGENDA_ETH_RPC |
--eigenda-g1-path | EIGENDA_PROXY_TARGET_KZG_G1_PATH | --eigenda.g1-path | EIGENDA_PROXY_EIGENDA_TARGET_KZG_G1_PATH |
--eigenda-g2-tau-path | EIGENDA_PROXY_TARGET_G2_TAU_PATH | --eigenda.g2-power-of-2-path | EIGENDA_PROXY_EIGENDA_TARGET_KZG_G2_POWER_OF_2_PATH |
--eigenda-max-blob-length | EIGENDA_PROXY_MAX_BLOB_LENGTH | --eigenda.max-blob-length | EIGENDA_PROXY_EIGENDA_MAX_BLOB_LENGTH |
--eigenda-svc-manager-addr | EIGENDA_PROXY_SERVICE_MANAGER_ADDR | --eigenda.svc-manager-addr | EIGENDA_PROXY_EIGENDA_SERVICE_MANAGER_ADDR |
--memstore.enabled | MEMSTORE_ENABLED | --memstore.enabled | EIGENDA_PROXY_MEMSTORE_ENABLED |
--memstore.expiration | MEMSTORE_EXPIRATION | --memstore.expiration | EIGENDA_PROXY_MEMSTORE_EXPIRATION |
What's Changed
- Feat memstore artificial latency by @samlaf in #114
- chore: rename memstore eventLoop -> pruningLoop by @samlaf in #117
- BREAKING suggestion: change dockerfile to use entrypoint instead of cmd by @samlaf in #116
- Chore give docker image fullname by @samlaf in #119
- feat: Redis backend target by @epociask in #111
- Update Makefile: add disperse-test-blob by @samlaf in #115
- chore(breaking): add EIGENDA_PROXY prefix to memstore flags by @samlaf in #121
- fix: wrap crit entrypoint error for easier debugging by @samlaf in #122
- fix: negative confDepth bug in verifier by @samlaf in #131
- fix: request record label with commitment mode and version by @hopeyen in #109
- chore: bunch of small refactors for improved devex by @samlaf in #124
- Fix s3 panic from keccak commitment put requests by @samlaf in #129
- dep: update eigenda to latest version for latest eigenda-client logging behavior by @samlaf in #132
- Fix metric middleware panic by @samlaf in #133
- fix: HandlePut uses hardcoded default version by @hopeyen in #135
- chore: remove unused tls logic by @samlaf in #139
- Eigenda client subsystem logger by @samlaf in #136
- initial set of edge cases by @anupsv in #110
- fix: custom error wrapped around error and commitment meta by @hopeyen in #134
- fix: Return 400 when blobs exceed max limit by @epociask in #140
- Fix config checker logic by @samlaf in #138
- show response commitment by @bxue-l2 in #144
- rename commitment mode by @bxue-l2 in #151
- ci: give holesky-test workflow access to secrets via pull_request_target by @samlaf in #153
- Update Optimism dependency to OP-Stack 1.9.2 by @karlb in #150
- refactor: clean up flags and configs by @samlaf in #146
- feat: update eigenda latest release v0.8.4 by @samlaf in #158
- fix: verifier srs flags paths by @samlaf in #159
- fix: import and expose the verifier flags by @samlaf in #161
- fix: don't allow to configure fallback or cache with nil Redis|S3 ins… by @mcortesi in #155
- Added --s3.enable-tls flag by @jcortejoso in #148
- chore: Don't return commitment for OP Keccak256 mode on PUT requests by @epociask in #147
- chore: add deprecated flags to force early crash when used by @samlaf in #165
- update readme and template by @bxue-l2 in #170
- hide eth rpc, format hidden string by @bxue-l2 in #171
- docs: better usage docs for signer-private-key flag by @samlaf in #174
- Disable chunk encoding for
put
requests to Google Cloud Storage by @jcortejoso in #167 - fix env variable in docker compose by @bxue-l2 in #180
New Contributors
v1.4.1: 16MiB blob support & configurable secondary storage
What's Changed
- 16 MiB blob support
- Explicit support for read fallback and cache targeting using secondary storage provides (currently just supports S3). This allows users to differentiate between a cache target vs. a read fallback.
- Minor bug fixes
PRs
- refactor(metrics): remove dependency on optimism metrics by @samlaf in #94
- docs: fix file misnaming by @charmful0x in #103
- change disperseBlob response timeout to 60sec by @bxue-l2 in #105
- feat: Support explict modes for read fallbacks and caching by @epociask in #104
- chore: Update large blob test to use 16mb by @epociask in #108
- fix: Commitment decoding bug && server handler tests by @epociask in #112
New Contributors
- @charmful0x made their first contribution in #103
Full Changelog: v1.4.0...v1.4.1
v1.4.0: Support for OP `v1.9.0`, larger blobs, and bug fixes
Summary
This release is optional but highly recommended. It supports higher max blob size, improves performance and fixes memory utilization bug.
Notable Feature
- Larger blobs support: eigenda-proxy now supports larger blobs size. The corresponding release on EigenDA (v0.8.1) allows maximal 16MiB blob on testnet and 4MiB blob on mainnet. To disperse a 16MiB blob in eigenda-proxy, set the env variable EIGENDA_PROXY_MAX_BLOB_LENGTH=16MiB
- Improvement on KZG verification: eigenda-proxy now spends less resources on KZG verification after receiving the DA certificate for a blob
- Support for Optimism v1.9.0
- S3 fallback mode where dispersed blobs are persisted to a S3 bucket and read in the event of eigenda read failures
What's Changed
- Inomurko/iam by @InoMurko in #70
- remove ext data type by @bxue-l2 in #78
- fix: Oversized blob test by @epociask in #79
- Optimize verifier by @bxue-l2 in #75
- chore: Update G1 default value by @epociask in #74
- fix: Resolve commitment decoding bug by @epociask in #65
- Add badges for github actions by @cody-littley in #80
- feat: Optimism v1.9 support by @epociask in #81
- S3 backup by @InoMurko in #77
- docs(README.md): fix typo by @samlaf in #83
- chore: lagniappe v1.4 updates by @epociask in #84
- replace g1.point with larger g1.point that supports 32MiB by @bxue-l2 in #87
- Fix syntax in op-devnet-allocs.sh by @karlb in #89
- chore: go fmt by @epociask in #91
- fix: rpc server metric label shortened to commitment header by @samlaf in #93
- chore: bump eigenda dep to v8 and add linting by @epociask in #92
- Update lint.yml by @samlaf in #98
- chore: Update commitment schemas in README by @epociask in #95
- chore: less verbose PR template by @epociask in #99
- chore: Update eigenda dep to v0.8.1 && update tests for 16MB blobs by @epociask in #100
New Contributors
- @cody-littley made their first contribution in #80
- @samlaf made their first contribution in #83
- @karlb made their first contribution in #89
Full Changelog: v1.3.2...v1.4.0
change default grpc option
v1.3.3-2 pin grpc option
HotFix to support max blob size
This release is a hotfix to support larger blob size on the disperser RetrieveBlob grpc receiver size.
v1.3.1
v1.3.0
What's Changed
- feat: GHCR push support by @epociask in #52
- chore: Add SRS points to dockerfile by @epociask in #54
- chore: Update dockerfile to use srs points by @epociask in #55
- chore: Update dockerfile by @epociask in #56
- chore: shorten mem-store key by @epociask in #57
- Update README.md docker by @InoMurko in #60
- fix: Remove finalized block client by @epociask in #61
- feat: OP Keccak commitment support by @epociask in #59
New Contributors
Full Changelog: v1.2.0...v1.3.0
v1.2.0
What's Changed
- Use local SRS points, remove operator-setup submodule by @teddyknox in #49
- Enable release-drafter by @teddyknox in #48
- Readme update by @teddyknox in #50
- Add query param to GET and PUT for commitment interpretation type by @teddyknox in #37
- Add configurable finalization by @teddyknox in #51
Full Changelog: v1.1.1...v1.2.0
eigenda-proxy v1.1.1
Compatibility with OP Plasma spec for Optimism v1.7.6