{"id":31891947,"url":"https://github.com/zeroxbrock/op-interop-contender","last_synced_at":"2025-10-13T08:19:52.376Z","repository":{"id":297087535,"uuid":"993490492","full_name":"zeroXbrock/op-interop-contender","owner":"zeroXbrock","description":null,"archived":false,"fork":false,"pushed_at":"2025-08-28T02:26:32.000Z","size":597,"stargazers_count":4,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-28T09:37:25.179Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zeroXbrock.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2025-05-30T22:13:23.000Z","updated_at":"2025-07-23T13:21:49.000Z","dependencies_parsed_at":"2025-08-28T04:19:28.428Z","dependency_job_id":"7d6904c8-f194-448b-943b-46632b6e7d93","html_url":"https://github.com/zeroXbrock/op-interop-contender","commit_stats":null,"previous_names":["zeroxbrock/op-interop-contender"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zeroXbrock/op-interop-contender","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeroXbrock%2Fop-interop-contender","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeroXbrock%2Fop-interop-contender/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeroXbrock%2Fop-interop-contender/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeroXbrock%2Fop-interop-contender/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zeroXbrock","download_url":"https://codeload.github.com/zeroXbrock/op-interop-contender/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeroXbrock%2Fop-interop-contender/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279014299,"owners_count":26085490,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":"2025-10-13T08:19:48.870Z","updated_at":"2025-10-13T08:19:52.371Z","avatar_url":"https://github.com/zeroXbrock.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# op-interop-contender\n\n*a custom [contender](https://github.com/flashbots/contender) script designed to spam interop transactions \u0026 relay them directly.*\n\nContender's builtin features are used to measure time-to-inclusion for interop transactions. The duration is measured from when we get the initiating tx response to when the relay tx is included onchain.\n\n## quickstart\n\nIn a terminal, run [supersim](https://github.com/ethereum-optimism/supersim?tab=readme-ov-file#%EF%B8%8F-supersim) (*without* the `--interop.autorelay` flag):\n\n```sh\nsupersim\n```\n\nThis will start a dev environment with 3 nodes: an L1 node on localhost:8545, an L2 node on localhost:9545, and another L2 node on localhost:9546.\n\n💁‍♂️ You can skip this step if you're targeting a different interop deployment. Just set the following variables in your environment to target your nodes:\n\n- `SPAM_SENDER_PRIVATE_KEY` (used to send funds to spammers on src. chain, and to send relay txs on dest. chain)\n- `SPAM_ORIGIN_RPC` (source L2)\n- `SPAM_DEST_RPC` (destination L2)\n- `OP_ADMIN_URL` (must support `admin_getAccessListForIdentifier` RPC method)\n\nIn a new terminal, clone this repo and run the binary:\n\n```sh\ngit clone https://github.com/zeroxbrock/op-interop-contender\ncd op-interop-contender\ncargo run\n```\n\nYou can generate a contender report after spamming by setting `SPAM_MAKE_REPORT` in your environment:\n\n```sh\nexport SPAM_MAKE_REPORT=true\ncargo run\n```\n\n\u003e The default settings should work when running against supersim, but if you need to change them, you can set the desired variables in your environment. See [here](./src/main.rs#L42-L63) for reference.\n\u003e\n\u003e Any variables not set will also show up as a warning when you run the script.\n\n## how it works\n\nBy default, the program runs a [builtin scenario](./src/scenarios/l2MintAndSend.toml) on a timed spammer, which mints tokens on [chain A](http://localhost:9545) and transfers them to [chain B](http://localhost:9546)\n\n[spam_callback.rs](./src/spam_callback.rs) defines a custom callback which holds a JSON-RPC provider connected to the destination chain. This allows us to watch transactions after we relay them, and record information about them in the DB.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzeroxbrock%2Fop-interop-contender","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzeroxbrock%2Fop-interop-contender","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzeroxbrock%2Fop-interop-contender/lists"}