{"id":36765192,"url":"https://github.com/ethpandaops/assertoor","last_synced_at":"2026-04-14T13:01:31.041Z","repository":{"id":210493972,"uuid":"726252284","full_name":"ethpandaops/assertoor","owner":"ethpandaops","description":"Ethereum Testnet Testing Tool","archived":false,"fork":false,"pushed_at":"2026-04-09T13:04:52.000Z","size":11856,"stargazers_count":70,"open_issues_count":14,"forks_count":24,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-04-09T14:10:57.288Z","etag":null,"topics":["ethereum","testing"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ethpandaops.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-12-01T21:41:35.000Z","updated_at":"2026-04-09T13:00:29.000Z","dependencies_parsed_at":"2026-01-14T15:03:09.354Z","dependency_job_id":null,"html_url":"https://github.com/ethpandaops/assertoor","commit_stats":null,"previous_names":["ethpandaops/minccino","ethpandaops/assertoor"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/ethpandaops/assertoor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethpandaops%2Fassertoor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethpandaops%2Fassertoor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethpandaops%2Fassertoor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethpandaops%2Fassertoor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ethpandaops","download_url":"https://codeload.github.com/ethpandaops/assertoor/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethpandaops%2Fassertoor/sbom","scorecard":{"id":384180,"data":{"date":"2025-08-11","repo":{"name":"github.com/ethpandaops/assertoor","commit":"e47284f60d4515c07d57a84955ec2a9573c93eb7"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.4,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":5,"reason":"Found 4/8 approved changesets -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/_shared-build.yaml:1","Warn: no topLevel permission defined: .github/workflows/_shared-check.yaml:1","Warn: topLevel 'contents' permission set to 'write': .github/workflows/build-dev-latest.yml:12","Warn: no topLevel permission defined: .github/workflows/build-dev.yml:1","Warn: topLevel 'contents' permission set to 'write': .github/workflows/build-master.yml:15","Warn: topLevel 'contents' permission set to 'write': .github/workflows/build-release.yml:12","Warn: no topLevel permission defined: .github/workflows/test-pr.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact snapshot not signed: https://api.github.com/repos/ethpandaops/assertoor/releases/239172481","Warn: release artifact v0.0.15 not signed: https://api.github.com/repos/ethpandaops/assertoor/releases/234177822","Warn: release artifact v0.0.14 not signed: https://api.github.com/repos/ethpandaops/assertoor/releases/214430133","Warn: release artifact v0.0.13 not signed: https://api.github.com/repos/ethpandaops/assertoor/releases/195117415","Warn: release artifact snapshot does not have provenance: https://api.github.com/repos/ethpandaops/assertoor/releases/239172481","Warn: release artifact v0.0.15 does not have provenance: https://api.github.com/repos/ethpandaops/assertoor/releases/234177822","Warn: release artifact v0.0.14 does not have provenance: https://api.github.com/repos/ethpandaops/assertoor/releases/214430133","Warn: release artifact v0.0.13 does not have provenance: https://api.github.com/repos/ethpandaops/assertoor/releases/195117415"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Pinned-Dependencies","score":7,"reason":"dependency not pinned by hash detected -- score normalized to 7","details":["Warn: containerImage not pinned by hash: Dockerfile:2","Warn: containerImage not pinned by hash: Dockerfile:9: pin your Docker image by updating ubuntu:latest to ubuntu:latest@sha256:7c06e91f61fa88c08cc74f7e1b7c69ae24910d745357e0dfe1d2c0322aaf20f9","Warn: containerImage not pinned by hash: Dockerfile-local:2","Warn: containerImage not pinned by hash: Dockerfile-local:12: pin your Docker image by updating debian:stable-slim to debian:stable-slim@sha256:8810492a2dd16b7f59239c1e0cc1e56c1a1a5957d11f639776bd6798e795608b","Warn: containerImage not pinned by hash: Dockerfile-stub:3: pin your Docker image by updating debian:stable-slim to debian:stable-slim@sha256:8810492a2dd16b7f59239c1e0cc1e56c1a1a5957d11f639776bd6798e795608b","Warn: goCommand not pinned by hash: .github/workflows/_shared-check.yaml:31","Info:  40 out of  40 GitHub-owned GitHubAction dependencies pinned","Info:  10 out of  10 third-party GitHubAction dependencies pinned","Info:   0 out of   5 containerImage dependencies pinned","Info:   4 out of   5 goCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: all commits (27) are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T16:12:20.898Z","repository_id":210493972,"created_at":"2025-08-18T16:12:20.898Z","updated_at":"2025-08-18T16:12:20.898Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31797376,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T11:13:53.975Z","status":"ssl_error","status_checked_at":"2026-04-14T11:13:53.299Z","response_time":153,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ethereum","testing"],"created_at":"2026-01-12T12:59:05.414Z","updated_at":"2026-04-14T13:01:31.033Z","avatar_url":"https://github.com/ethpandaops.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg align=\"left\" src=\"./.github/resources/assertoor.png\" width=\"60\"\u003e\n\u003ch1\u003eAssertoor: Ethereum Testnet Testing Tool\u003c/h1\u003e\n\n## Overview\nAssertoor is a robust and versatile tool designed for comprehensive testing of the Ethereum network. It orchestrates a series of tests from a YAML file, with each test comprising a sequence of tasks executed in a defined order to assess various aspects of the Ethereum network.\n\n## Key Features\n\n- **Connection to Ethereum Clients**:\\\n  Assertoor connects to multiple Consensus and Execution Clients via their HTTP RPC API, ensuring compatibility with all clients and providing a resilient view of the network status.\n\n- **YAML-Based Test \u0026 Task Definition**:\\\n  Tests, defined and executed through YAML, can include tasks specified in the test configuration or sideloaded from external URLs, offering flexible and organized test management.\n\n- **Task Orchestrator**:\\\n  Enables execution of tasks in a predefined order, supporting both parallelization and sequential steps with dependencies.\n\n- **Versatile Task Capabilities**:\\\n  Includes tasks ranging from simple shell scripts to complex built-in logic, such as:\n    - **Generating Transactions**: Simulating transaction types to test network response and throughput.\n    - **Generating Deposits \u0026 Exits**: Evaluating network handling of deposit and exit transactions.\n    - **Generating BLS Changes**: Testing network capability to process BLS signature changes.\n    - **Checking Network Stability**: Assessing network resilience under various conditions.\n    - **Checking Forks \u0026 Reorgs**: Analyzing network behavior during forks and reorganizations.\n    - **Checking Block Properties**: Testing for specific block properties.\n    - ... and more\n\n- **Web Interface for Monitoring**:\\\n  A user-friendly web interface displays real-time test and task status, logs, and results for easy monitoring and analysis.\n\n- **Web API**:\\\n  An API interface provides real-time test and task status, logs, and results for easy programmatic access. \\\n  This feature enables simple integration with other systems and facilitates automated monitoring and analysis workflows.\\\n  eg. for running [scheduled tests with github workflows](https://github.com/ethpandaops/assertoor-test)\n\n## Getting Started\n\n1. **Clone the repository \u0026 build the tool**:\n    ```\n    git clone https://github.com/ethpandaops/assertoor.git\n    cd assertoor\n    make build\n    ```\n2. **Configure Your Tests**:\\\n   Prepare tests in a YAML file. See example configurations [here](https://github.com/ethpandaops/assertoor/tree/master/example/config). \\\n  Provide RPC URLs for at least one Client Pair (consensus \u0026 execution).\n3. **Run Assertoor**:\\\n   Launch the tool to execute defined tests.\n   ```\n   ./bin/assertoor --config=./example/config/check_proposals.yaml\n   ```\n4. **Monitor and Analyze**:\\\n   Use the web interface to track progress, view logs, and analyze results in real-time.\n\n## Documentation and Examples\n\nRefer to our [documentation](https://github.com/ethpandaops/assertoor/wiki) for installation, configuration, and usage guidelines. \\\nExample tests are available [here](https://github.com/ethpandaops/assertoor/tree/master/playbooks).\n\n## Contributing\n\nContributions to Assertoor are welcome. Please fork the repository, create a feature branch, and submit a pull request for review.\n\n## License\n\n[![License: GPL-3.0](https://img.shields.io/badge/license-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) - see the LICENSE file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethpandaops%2Fassertoor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fethpandaops%2Fassertoor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethpandaops%2Fassertoor/lists"}