{"id":39978028,"url":"https://github.com/init4tech/trevm","last_synced_at":"2026-03-05T12:07:43.411Z","repository":{"id":250204507,"uuid":"830187385","full_name":"init4tech/trevm","owner":"init4tech","description":"the EVM, simplified","archived":false,"fork":false,"pushed_at":"2026-02-16T12:05:48.000Z","size":1456,"stargazers_count":99,"open_issues_count":3,"forks_count":11,"subscribers_count":7,"default_branch":"main","last_synced_at":"2026-02-16T20:45:06.211Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/init4tech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","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":"2024-07-17T19:15:08.000Z","updated_at":"2026-02-16T12:05:52.000Z","dependencies_parsed_at":"2024-09-07T14:43:20.539Z","dependency_job_id":"2f369460-0b9a-4a14-b792-f0aa622bf86e","html_url":"https://github.com/init4tech/trevm","commit_stats":null,"previous_names":["init4tech/trevm"],"tags_count":80,"template":false,"template_full_name":null,"purl":"pkg:github/init4tech/trevm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/init4tech%2Ftrevm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/init4tech%2Ftrevm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/init4tech%2Ftrevm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/init4tech%2Ftrevm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/init4tech","download_url":"https://codeload.github.com/init4tech/trevm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/init4tech%2Ftrevm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30123789,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T11:11:57.947Z","status":"ssl_error","status_checked_at":"2026-03-05T11:11:29.001Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":[],"created_at":"2026-01-18T23:02:17.008Z","updated_at":"2026-03-05T12:07:43.380Z","avatar_url":"https://github.com/init4tech.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Trevm\n\nTrevm is a [typestate] API wrapper for [revm]. It provides an ergonomic way to\ninteract with the revm API, shortcuts for common tasks, and straightforward API\nextensibility. Trevm does NOT try to provide low-level EVM management, but\nrather to shortcut and simplify common tasks like simulating transactions.\n\nTrevm is NOT a replacement for revm. It is a wrapper around the revm API. It is\nNOT a drop-in upgrade, integrating trevm into your project will require changes\nto your code.\n\nSee the [documentation on docs.rs] for information on usage.\n\n## Why use Trevm?\n\nTrevm is for building complex high-level flows on top of the low-level revm\nAPI. It provides a state machine that ensures you can only take actions that are\nvalid in the current state. This makes it easier to reason about the state of\nyour EVM instance and ensures you don't make mistakes.\n\nTrevm is useful for:\n\n- full node implementations\n- block builders\n- searchers\n- any other transaction simulation usecase\n\n## Note on Trevm Versioning\n\nTrevm generally uses [semantic versioning](https://semver.org/). While pre-1.0,\nwe also strive to indicate the MAJOR version of revm in the MINOR version of\ntrevm. For example, trevm `0.19.x` SHOULD BE compatible with revm `19.x.x`. In\ngeneral, we will try to maintain compatibility with the latest revm version,\nand will not backport trevm fixes to older trevm or revm versions. It is\ngenerally not advised to use old revm versions, as the EVM is a living spec.\n\nIn order to maintain this relationship (that trevm MINOR == revm MAJOR) we will\nsometimes make breaking changes in patch versions. This is technically semver\ncompliant pre-1.0, but will cause build breakage downstream for users of those\nfeatures. We will take care to document breaking changes in patch releases\nvia github release notes.\n\n## Limitations\n\nTrevm is a work in progress and is not feature complete. In particular, trevm\ndoes not currently have lifecycle support for blocks before Shanghai. This means\nit cannot produce correct post-block states for blocks before Shanghai.\n\n### The Trevm State Machine\n\nTrevm provides a state machine that represents the internal state of a revm EVM\ninstance. It ensures that at each step you can only take actions that are valid\nin the current state. This is done by using the [typestate] pattern.\n\nAs you progress between states, the API will change to reflect the available\noperations. For example, you can't call `open_block()` on a `EvmNeedsTx` state,\nas the block is already open. You can't call `close_block()` on a `EvmReady`\nstate, without explicitly clearing or running the transaction that has been\nready.\n\n![typestates are cool](./assets/states.png)\n\n[typestate]: https://cliffle.com/blog/rust-typestate/\n[revm]: https://github.com/bluealloy/revm\n[docs.rs]: https://docs.rs/trevm/latest/trevm/\n[documentation on docs.rs]: https://docs.rs/trevm/latest/trevm/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finit4tech%2Ftrevm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finit4tech%2Ftrevm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finit4tech%2Ftrevm/lists"}