• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

safe-global / safe-decoder-service
91%

Build:
DEFAULT BRANCH: main
Repo Added 13 Nov 2024 11:18AM UTC
Token aJ7RE6PGXsad02XNJbf6iGkymMsB2hJ3H regen
Build 764 Last
Files 68
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH main
branch: main
CHANGE BRANCH
x
Reset
Sync Branches
  • main
  • Uxio0-patch-1
  • add-accuracy
  • add-admin
  • add-chain-id-endpoint
  • add-data-decoder-endpoint
  • add-decoder
  • add-default-metadata-providers-sources
  • add-dramatiq-task-planner-
  • add-events-logging
  • add-index
  • add-missing-test
  • add-models-to-env-migrations
  • add-new-fields-contract-abi
  • add-proxy-information-to-contract
  • add-psql-docker
  • add-the-rabbitmq-consumer
  • add_command
  • add_command_to_download_contracts
  • add_contracts_endpoint
  • add_ipython_profile
  • add_list_contracts_endpoint
  • add_locker
  • add_logging_midleware
  • add_worker_conf
  • async-tasks-proof-of-concept
  • autodiscover_chains
  • bug/c-middleware-exception
  • bug/d-admin-timing-safe
  • bug/e-abi-cache-invalidation
  • bug/f-abi-cursor
  • bump-database-version
  • bump-fastapi
  • bump-redis-dramatiq-deps
  • bump-safe-eth-py
  • bump-safe-eth-py-version
  • bump-safe-eth-py-web3-versions
  • bump-version
  • bump-web3-and-safe-eth-py
  • bump_safe_eth_py
  • bump_version
  • catch-overflow-error
  • chore/bump-taskiq-redis-1.2.3
  • chore/claude-worktree-setup
  • chore/optimize-dependabot-config
  • chore/pin-github-actions
  • chore/update-safe-eth-py-7.22.0
  • clean-after-logout
  • connect-consumer-to-get-metadata-task
  • decode-multisend
  • dependabot/docker/docker/web/docker-352b94eed7
  • dependabot/docker/docker/web/docker-6dafb4a59b
  • dependabot/docker/docker/web/python-3.13-slim
  • dependabot/docker/docker/web/python-3.14-slim
  • dependabot/github_actions/actions/checkout-5
  • dependabot/github_actions/actions/checkout-6.0.3
  • dependabot/github_actions/actions/checkout-7.0.0
  • dependabot/github_actions/actions/setup-python-6
  • dependabot/github_actions/astral-sh/setup-uv-10.0.1
  • dependabot/github_actions/astral-sh/setup-uv-7
  • dependabot/github_actions/astral-sh/setup-uv-8.2.0
  • dependabot/github_actions/docker/build-push-action-7
  • dependabot/github_actions/docker/build-push-action-7.2.0
  • dependabot/github_actions/docker/login-action-4
  • dependabot/github_actions/docker/login-action-4.2.0
  • dependabot/github_actions/docker/setup-buildx-action-4
  • dependabot/github_actions/docker/setup-buildx-action-4.1.0
  • dependabot/github_actions/docker/setup-qemu-action-4
  • dependabot/github_actions/docker/setup-qemu-action-4.1.0
  • dependabot/github_actions/github-actions-03db81fe05
  • dependabot/github_actions/github-actions-721db4f79a
  • dependabot/github_actions/github-actions-7532becb39
  • dependabot/github_actions/github-actions-9a35141b6c
  • dependabot/github_actions/github-actions-a4bab1a544
  • dependabot/github_actions/github-actions-f90a4f977d
  • dependabot/pip/aio-pika-9.5.4
  • dependabot/pip/aio-pika-9.5.5
  • dependabot/pip/aio-pika-9.5.6
  • dependabot/pip/aio-pika-9.5.7
  • dependabot/pip/alembic-1.14.1
  • dependabot/pip/alembic-1.15.1
  • dependabot/pip/alembic-1.15.2
  • dependabot/pip/alembic-1.16.1
  • dependabot/pip/alembic-1.16.2
  • dependabot/pip/alembic-1.16.4
  • dependabot/pip/alembic-1.16.5
  • dependabot/pip/alembic-1.17.0
  • dependabot/pip/async-lru-2.0.5
  • dependabot/pip/asyncpg-0.31.0
  • dependabot/pip/dramatiq-rediswatch--1.18.0
  • dependabot/pip/fastapi-all--0.115.11
  • dependabot/pip/fastapi-all--0.115.12
  • dependabot/pip/fastapi-all--0.115.13
  • dependabot/pip/fastapi-all--0.115.14
  • dependabot/pip/fastapi-all--0.115.5
  • dependabot/pip/fastapi-all--0.115.6
  • dependabot/pip/fastapi-all--0.115.7
  • dependabot/pip/fastapi-all--0.115.8
  • dependabot/pip/fastapi-all--0.116.1
  • dependabot/pip/fastapi-all--0.117.1
  • dependabot/pip/fastapi-all--0.118.0
  • dependabot/pip/fastapi-all--0.120.1
  • dependabot/pip/fastapi-all--0.128.0
  • dependabot/pip/gunicorn-25.0.1
  • dependabot/pip/pydantic-settings-2.10.0
  • dependabot/pip/pydantic-settings-2.10.1
  • dependabot/pip/pydantic-settings-2.11.0
  • dependabot/pip/pydantic-settings-2.12.0
  • dependabot/pip/pydantic-settings-2.7.0
  • dependabot/pip/pydantic-settings-2.7.1
  • dependabot/pip/pydantic-settings-2.8.0
  • dependabot/pip/pydantic-settings-2.8.1
  • dependabot/pip/redis-hiredis--5.2.1
  • dependabot/pip/redis-hiredis--6.2.0
  • dependabot/pip/redis-hiredis--6.4.0
  • dependabot/pip/safe-eth-py-6.3.0
  • dependabot/pip/safe-eth-py-7.13.0
  • dependabot/pip/safe-eth-py-7.14.0
  • dependabot/pip/safe-eth-py-7.17.1
  • dependabot/pip/sqladmin-full--0.21.0
  • dependabot/pip/sqladmin-full--0.22.0
  • dependabot/pip/sqlmodel-0.0.23
  • dependabot/pip/sqlmodel-0.0.24
  • dependabot/pip/sqlmodel-0.0.25
  • dependabot/pip/sqlmodel-0.0.27
  • dependabot/pip/uvicorn-worker-0.4.0
  • dependabot/pip/web3-7.10.0
  • dependabot/pip/web3-7.11.1
  • dependabot/pip/web3-7.12.0
  • dependabot/pip/web3-7.12.1
  • dependabot/pip/web3-7.13.0
  • dependabot/pip/web3-7.14.0
  • dependabot/uv/aio-pika-10.0.1
  • dependabot/uv/aio-pika-9.6.2
  • dependabot/uv/async-lru-2.3.0
  • dependabot/uv/asyncpg-0.31.0
  • dependabot/uv/dependencies-1412c5467b
  • dependabot/uv/dependencies-27185ef8db
  • dependabot/uv/dependencies-4235d1e556
  • dependabot/uv/dependencies-5301bb8690
  • dependabot/uv/dependencies-8b69ed3868
  • dependabot/uv/dependencies-aab6f62eee
  • dependabot/uv/dependencies-d336ab2aa6
  • dependabot/uv/dependencies-d731b72c15
  • dependabot/uv/dependencies-fca4dd3604
  • dependabot/uv/dependencies-fcaff1a6c6
  • dependabot/uv/eth-9e3d9d2f44
  • dependabot/uv/eth-d228cf059e
  • dependabot/uv/eth-dc61973cfc
  • dependabot/uv/faker-40.15.0
  • dependabot/uv/fastapi-31e0d6b070
  • dependabot/uv/fastapi-6d0e83d746
  • dependabot/uv/mypy-1.20.1
  • dependabot/uv/periodiq-0.14.0
  • dependabot/uv/pydantic-settings-2.13.1
  • dependabot/uv/pydantic-settings-2.14.0
  • dependabot/uv/pydantic-settings-2.14.1
  • dependabot/uv/pytest-9.0.3
  • dependabot/uv/pytest-asyncio-1.4.0
  • dependabot/uv/setuptools-82.0.1
  • dependabot/uv/setuptools-83.0.0
  • dependabot/uv/setuptools-84.0.0
  • deps-fastapi-standard-transitive-upgrade
  • disable_access_logs
  • dont-index-eoas
  • dont-run-mypy-twice
  • download_contract_metadata
  • feat/add-1.5.0-abis
  • feat/add-contracts-cache
  • feat/add-explicit-permissions-to-github-actions
  • feat/fix-taskiq-logs
  • feat/infsec-1215-decoder-images-to-ghcr
  • feat/infsec-1223-ci-push-to-ghcr
  • feat/log-route-path
  • feat/support-proxy-header
  • feature-improve-abi-hash
  • feature/replace-dramatiq-with-taskiq
  • felipe/pla-1619-decouple-db-session-lifecycle-from-request-to-prevent-pool
  • fix-admin-nginx
  • fix-bugs
  • fix-database-issues
  • fix-examples
  • fix-log-level
  • fix-middleware
  • fix-nested-decoding
  • fix-rabbitmq-config
  • fix-redoc-proxy-aware
  • fix-setup-config
  • fix-tuple-decoding
  • fix-typo
  • fix-warnings
  • fix/abi-json-null-cleanup
  • fix/bug-h
  • fix/bug-i
  • fix/bug-j
  • fix/bug-k
  • fix/bug-l
  • fix/bug-m
  • fix/bug-n
  • fix/cla-action-permissions
  • fix/decoder-review-nits
  • fix/filter-null-addresses
  • fix/fix-data-decoder-session-scope
  • fix/handle-undecodable-multisend-event-data
  • fix/infsec-1217-mirror-all-published-tags
  • fix/large-chainId-not-supported
  • fix/taskiq-redis-connection-resilience
  • fix/trim-taskiq-stream-on-ack
  • fix_abi_foreign_key
  • fix_admin_address
  • fix_contract_name_could_be_none
  • fix_db_session_context_missing
  • fix_dependencies
  • fix_log
  • fix_missing_messages_on_restart
  • fix_no_abi
  • fix_null_abi_json
  • fix_session_issue
  • fix_switch_names
  • fix_unacked_messages
  • fixes
  • improve-docs
  • improve-open-api-description
  • improve-serializer
  • init-data-decoder-service
  • init_database_orm
  • load-core-abis-service-startup
  • lowecase-tags
  • migrate/pip-to-uv
  • move-cache-datasources
  • move-requirements
  • move-urls
  • only-load-new-abis
  • optimize-add-abi-query
  • optimize-decoder-reload
  • periodiq_missing_contracts
  • pipeline-cache-redis-write
  • refactor_json_log_format
  • refactor_session
  • reload-abis
  • remove-core-api
  • remove-fallback-decoding
  • remove-unbind-delete-existing-queue
  • rename-db-async
  • return-contract-if-no-abi
  • revert-console-log-debug
  • run_migrations_on_test
  • set_version
  • setup-service
  • support-multichain-decoding
  • support_proxy_decoding
  • update-dependencies
  • update-precommit
  • update-to-python-3.13
  • update_proxies
  • use-camelcase
  • use-fast-checksum
  • use-gunicorn
  • use-ruff
  • use-run-in-thread-for-cpu
  • uxio/fix-idle-in-transaction-connection-leak
  • uxio/pla-1617-decoder-service-bound-db-connection-pool-to-prevent-postgres
  • uxio/pla-1938-deployment-fix-web-entrypoint-worker-class-worker-count-and
  • uxio/pla-1953-decoder-service-survive-a-slow-or-failing-startup-instead-of
  • uxio/pla-1954-decoder-service-keep-the-abi-reload-cursor-consistent-when-a
  • uxio/pla-2002-decoder-service-stop-one-malformed-abi-row-from-blocking
  • uxio/pla-2045-decoder-service-reject-oversized-calldata-and-limit-nested
  • uxio/pla-2079-backend-show-the-deployed-commit-in-about-for-all-services
  • uxio/pla-2087-backend-align-the-pre-commit-config-of-the-python-repos-with
  • uxio/use-module-logger-cleanups
  • v1.0.0
  • v1.0.1
  • v1.0.2
  • v1.1.0
  • v1.10.0
  • v1.11.0
  • v1.12.0
  • v1.14.0
  • v1.15.0
  • v1.15.1
  • v1.16.0
  • v1.16.1
  • v1.17.0
  • v1.2.0
  • v1.3.0
  • v1.4.0
  • v1.5.0
  • v1.5.1
  • v1.5.2
  • v1.6.0
  • v1.7.0
  • v1.7.1
  • v1.8.0
  • v1.9.0
  • worktree
  • worktree-agent-a8783267

01 Oct 2026 09:26AM UTC coverage: 91.077% (+0.03%) from 91.049%
36842707300

push

github

web-flow
fix: Reject oversized calldata and limit nested decoding depth (#355)

Nested execTransaction/MultiSend calldata was decoded recursively with no
depth limit. Every level keeps a hex copy of its inner payload, so memory
grows with the square of the payload size: 208 KB used 405 MB and ~830 KB
killed the process. py-evm raises the Python recursion limit to 100000, so
the recursion guard does not stop it, and the endpoint is public.

- DECODER_MAX_DATA_BYTES (default 131072, 128 KiB) caps `data` on
  POST /api/v1/data-decoder. Larger requests get a 422 before any decoding.
  Same value and style as API_MAX_TRANSACTION_DATA_BYTES in Safe Queue
  Service.
- DECODER_MAX_NESTED_DEPTH (default 8) caps nested decoding. Deeper inner
  data keeps its raw `value` and has no `value_decoded`, the same shape as
  inner data that cannot be decoded, so the response shape does not change.

Closes PLA-2045

5 of 5 new or added lines in 2 files covered. (100.0%)

1429 of 1569 relevant lines covered (91.08%)

0.91 hits per line

Relevant lines Covered
Build:
Build:
1569 RELEVANT LINES 1429 COVERED LINES
0.91 HITS PER LINE
Source Files on main
  • Tree
  • List 68
  • Changed 3
  • Source Changed 0
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
36842707300 main fix: Reject oversized calldata and limit nested decoding depth (#355) Nested execTransaction/MultiSend calldata was decoded recursively with no depth limit. Every level keeps a hex copy of its inner payload, so memory grows with the square of the... push 01 Oct 2026 09:27AM UTC web-flow github
91.08
36842479771 main chore(deps): bump the github-actions group across 1 directory with 4 updates (#356) Bumps the github-actions group with 4 updates in the / directory: [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv), [docker/setup-qemu-action](https://... push 01 Oct 2026 09:25AM UTC web-flow github
91.05
36842486388 main chore(deps): bump safe-eth-py from 7.25.0 to 7.26.1 in the eth group (#357) Bumps the eth group with 1 update: [safe-eth-py](https://github.com/safe-global/safe-eth-py). Updates `safe-eth-py` from 7.25.0 to 7.26.1 - [Release notes](https://gith... push 01 Oct 2026 09:25AM UTC web-flow github
91.05
36739740965 main feat: Show the deployed commit in /about (#359) Staging autodeploys a fixed image tag, and the version only changes on release, so /about could not tell which code was running. CI now passes github.sha as the BUILD_COMMIT build argument, and the... push 30 Sep 2026 03:51PM UTC web-flow github
91.05
35846874139 main docs: add AGENTS.md and Claude Code worktree config (#354) AGENTS.md is the canonical agent guide. CLAUDE.md is a symlink to it so both names load the same file. Ignore the root .claude worktree and local settings paths. Add .worktreeinclude so n... push 23 Sep 2026 10:07AM UTC web-flow github
91.03
35327124152 main fix: Skip an ABI function that cannot be indexed (#351) * fix: Skip an ABI function that cannot be indexed Rows in the abi table come from third party sources, so an element can be missing the fields a selector needs. selectors_from_abis read fn... push 18 Sep 2026 09:00AM UTC web-flow github
91.03
35231585975 main fix: Keep the ABI reload cursor consistent when a reload fails (#350) `load_new_abis` read the latest ABI id into `last_abi_id` before streaming and applying the rows. Any failure in between (connection drop, bad ABI json) left the cursor past ro... push 17 Sep 2026 02:09PM UTC web-flow github
90.97
35074041763 main ci: Push images to GHCR alongside Docker Hub (#348) * ci: Push images to GHCR alongside Docker Hub * docs: Point the image badge at GHCR * docs: Drop the Docker Hub image badge push 16 Sep 2026 08:30AM UTC web-flow github
90.74
35069805385 main ci: Mirror every published tag, not just the current release (#349) push 16 Sep 2026 07:42AM UTC web-flow github
90.74
34971382895 main Bump version from 1.16.1 to 1.17.0 (#347) push 15 Sep 2026 12:53PM UTC web-flow github
90.74
See All Builds (759)

Badge your Repo: safe-decoder-service

We detected this repo isn’t badged! Grab the embed code to the right, add it to your repo to show off your code coverage, and when the badge is live hit the refresh button to remove this message.

Could not find badge in README.

Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

Refresh
  • Settings
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc