{"id":13398286,"url":"https://github.com/etherspot/skandha","last_synced_at":"2025-05-14T22:07:50.463Z","repository":{"id":103244133,"uuid":"586821913","full_name":"etherspot/skandha","owner":"etherspot","description":"A modular typescript implementation of ERC4337 (Account Abstraction) bundler client.","archived":false,"fork":false,"pushed_at":"2025-05-08T09:17:03.000Z","size":4270,"stargazers_count":587,"open_issues_count":12,"forks_count":64,"subscribers_count":15,"default_branch":"develop","last_synced_at":"2025-05-08T09:38:40.688Z","etag":null,"topics":["account-abstraction","bundler","eip4337","erc4337","ethereum","smart-wallet","typescript"],"latest_commit_sha":null,"homepage":"https://etherspot.io","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/etherspot.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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}},"created_at":"2023-01-09T10:08:15.000Z","updated_at":"2025-05-08T06:58:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"c63d2d39-4956-4e92-965c-9a5c5111dada","html_url":"https://github.com/etherspot/skandha","commit_stats":{"total_commits":299,"total_committers":11,"mean_commits":"27.181818181818183","dds":"0.16387959866220736","last_synced_commit":"c97f5ac7a5c1c370ad02b22b3df51bdc4c9f2461"},"previous_names":["etherspot/etherspot-bundler"],"tags_count":176,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etherspot%2Fskandha","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etherspot%2Fskandha/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etherspot%2Fskandha/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etherspot%2Fskandha/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/etherspot","download_url":"https://codeload.github.com/etherspot/skandha/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254235696,"owners_count":22036963,"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","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":["account-abstraction","bundler","eip4337","erc4337","ethereum","smart-wallet","typescript"],"created_at":"2024-07-30T19:00:21.830Z","updated_at":"2025-05-14T22:07:45.453Z","avatar_url":"https://github.com/etherspot.png","language":"TypeScript","funding_links":[],"categories":["Open Source bundlers","Uncategorized"],"sub_categories":["Uncategorized"],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1 align=\"center\"\u003eSkandha\u003c/h1\u003e\n\u003c/div\u003e\n\n\u003c!-- PROJECT LOGO --\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://public.etherspot.io/assets/etherspot.gif\" width=\"200\" height=\"200\"\u003e\n  \u003cp\u003e\n    \u003cb\u003e\n      A modular, developer-friendly Typescript Bundler for Ethereum EIP-4337 Account Abstraction\n    \u003c/b\u003e\n   \u003c/p\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cp\u003e\n    \u003cb\u003e\n       Warning! This repo/software is under active development\n    \u003c/b\u003e\n   \u003c/p\u003e\n\u003c/div\u003e\n\n\u003e [!IMPORTANT]\n\u003e **Skandha v1** - supports EntryPoint 0.6.0 and can be found on [releases/v0.6](https://github.com/etherspot/skandha/tree/releases/v0.6)\n\u003e \n\u003e **Skandha v2** - supports EntryPoint 0.7.0 and can be found on [releases/v0.7](https://github.com/etherspot/skandha/tree/releases/v0.7)\n\u003e \n\u003e **Skandha v3** - supports EntryPoint 0.8.0 and can be found on [master](https://github.com/etherspot/skandha/tree/master)\n\n## Important links\n\n**[Install Skandha](https://etherspot.fyi/skandha/installation)**\n| [Chains supported](https://etherspot.fyi/prime-sdk/chains-supported)\n| [UserOp Fee history](https://etherspot.fyi/skandha/feehistory)\n\n## ⚙️ How to run (from Source code)\n\nRun with one-liner:\n\n```sh\ncurl -fsSL https://skandha.run | bash\n```\nOr follow the steps below:\n\n1. install all dependencies by running `yarn`\n2. build `yarn build`\n3. `cp config.json.default config.json`\n4. edit `config.json`\n5. (optional) run local geth-node from `test/geth-dev`\n6. run `./skandha standalone`\n7. The bundler will be available on `http://localhost:14337/rpc/`\n\n## 🐳 How to run (a Docker image)\n\n1. `cp config.json.default config.json`\n2. edit `config.json`\n3. `docker build -t etherspot/skandha .`\n4. `docker run --mount type=bind,source=\"$(pwd)\"/config.json,target=/usr/app/config.json,readonly -dp 14337:14337 etherspot/skandha standalone`\n\n\n## 📜 Additional features\n- [x] Unsafe mode - bypass opcode \u0026 stake validation\n- [x] Redirect RPC - Redirect ETH rpc calls to the underlying execution client. This is needed if you use UserOp.js\n\n### ⚡️ CLI Options\n- `--unsafeMode` - enables unsafeMode\n- `--redirectRpc` - enables redirecting eth rpc calls\n- `--executor.bundlingMode manual|auto` - sets bundling mode to `manual` or `auto` on start. Default value is `auto`\n- `--metrics.enable false|true` - enable Prometheus metrics (default - `false`)\n- `--metrics.host` - metrics host (default - `127.0.0.1`)\n- `--metrics.port` - metrics port (default - `8008`)\n\n## 🔑 Relayer Configuration\n\n#### Simplest config.json\n```yaml\n{\n  \"entryPoints\": [\n    \"0x0000000071727De22E5E9d8BAf0edAc6f37da032\"\n  ],\n  \"relayers\": [\n    \"0x{RELAYER-PRIVATE-KEY}\"\n  ],\n  \"rpcEndpoint\": \"https://polygon-mumbai.blockpi.network/v1/rpc/public\"\n}\n```\n\n#### config.json with a default value of each config parameter\n\n```yaml\n{\n  \"entryPoints\": [ # supported entry points\n    \"0x0000000071727De22E5E9d8BAf0edAc6f37da032\"\n  ],\n  \"relayers\": [\n    \"0x0101010101010101010101010101010101010101010101010101010101010101\",\n    \"test test test test test test test test test test test junk\"\n  ], # relayers private keys, can access from here or via environment variables (SKANDHA_MUMBAI_RELAYERS | SKANDHA_DEV_RELAYERS | etc.)\n  \"beneficiary\": \"0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266\", # optional, fee collector, avaiable via env var (SKANDHA_MUMBAI_BENEFICIARY | etc) - if not set, relayer will be used\n  \"rpcEndpoint\": \"http://localhost:8545\", # rpc provider, also available via env variable (SKANDHA_MUMBAI_RPC | etc)\n  \"minInclusionDenominator\": 10, # optional, see EIP-4337\n  \"throttlingSlack\": 10, # optional, see EIP-4337\n  \"banSlack\": 50 # optional, see EIP-4337\n  \"minStake\": 10000000000, # optional, min stake of an entity (in wei)\n  \"minUnstakeDelay\": 0, # optional, min unstake delay of an entity\n  \"minSignerBalance\": 1, # optional, default is 0.1 ETH. If the relayer's balance drops lower than this, it will be selected as a fee collector\n  \"multicall\": \"0xcA11bde05977b3631167028862bE2a173976CA11\", # optional, multicall3 contract (see https://github.com/mds1/multicall#multicall3-contract-addresses)\n  \"estimationStaticBuffer\": 21000, # optional,adds certain amount of gas to callGasLimit on estimation\n  \"validationGasLimit\": 10e6, # optional,gas limit during simulateHandleOps and simulateValidation calls\n  \"receiptLookupRange\": 1024, # optional,limits the block range of getUserOperationByHash and getUserOperationReceipt\n  \"etherscanApiKey\": \"\", # optional,etherscan api is used to fetch gas prices\n  \"conditionalTransactions\": false, # optional,enable conditional transactions\n  \"rpcEndpointSubmit\": \"\", # optional,rpc endpoint that is used only during submission of a bundle\n  \"gasPriceMarkup\": 0, # optional,adds % markup on reported gas price via skandha_getGasPrice, 10000 = 100.00%, 500 = 5%\n  \"enforceGasPrice\": false, # optional,do not bundle userops with low gas prices\n  \"enforceGasPriceThreshold\": 1000, # optional,gas price threshold in bps. If set to 500, userops' gas price is allowed to be 5% lower than the network's gas price\n  \"eip2930\": false, # optional, enables eip-2930\n  \"useropsTTL\": 300, # optional, Userops time to live (in seconds)\n  \"whitelistedEntities\": { # optional, Entities that bypass stake and opcode validation (array of addresses)\n    \"factory\": [],\n    \"paymaster\": [],\n    \"account\": []\n  },\n  \"bundleGasLimitMarkup\": 25000, # optional, adds some amount of additional gas to a bundle tx\n  \"relayingMode\": \"classic\"; # optional, \"flashbots\" for Flashbots Builder API, \"merkle\" for Merkle.io\n  \"bundleInterval\": 10000, # bundle creation interval\n  \"bundleSize\": 4, # optional, max size of a bundle, 4 userops by default\n  \"pvgMarkup\": 0 # optional, adds some gas on top of estimated PVG\n}\n```\n## 💬 Contact\n\nIf you have any questions or feedback about the ERC-4337 Bundler project, please feel free to reach out to us.\n\n- [Follow on Twitter](https://twitter.com/etherspot)\n- [Join our discord](https://discord.etherspot.io/)\n\n## 📄 License\n\nLicensed under the [MIT License](https://github.com/etherspot/skandha/blob/master/LICENSE).\n\n## 🤝 Shared Mempool (P2P)\n\n\u003e [!WARNING]  \n\u003e This version of the bundler only supports Entry Point v7, which does not have the p2p mempool yet.\n\n\n## 🔢 Statistics\n![Alt](https://repobeats.axiom.co/api/embed/4d7ec3ece88b2461c5b1757574321f4f6540cdd5.svg \"Skandha analytics image\")\n\n## 🙏 Acknowledgements\n\n- [eth-infinitsm](https://github.com/eth-infinitism)\n- [lodestar](https://github.com/ChainSafe/lodestar) \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fetherspot%2Fskandha","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fetherspot%2Fskandha","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fetherspot%2Fskandha/lists"}