Latest commit

History

615 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

eRPC Hero

Build StatusDocsLicenseContributorsTelegram

eRPC is a fault-tolerant EVM RPC proxy and re-org aware permanent caching solution. It is built with read-heavy use-cases in mind, such as data indexing and high-load frontend usage.

Architecture Diagram

⚠️ Note: eRPC is still under development. We recommend using it for testnets or as a fallback provider for production RPC calls.


Quick Start

With the below setup, you get immediate access to 2,000+ chains and 4,000+ public free EVM RPC endpoints.

Run an eRPC instance:

Using npx:

npx start-erpc

Or, using Docker:

docker run -p 4000:4000 ghcr.io/erpc/erpc

Or, using Railway:

Deploy on Railway

Send a request to your eRPC instance:

curl 'http://localhost:4000/main/evm/42161' \
--header 'Content-Type: application/json' \
--data '{ "method": "eth_getBlockByNumber", "params": ["latest", false], "id": 9199, "jsonrpc": "2.0"}'

Next Steps:

This setup is ideal for development and testing purposes. For production environments, we recommend extending your configuration with dedicated premium providers and advanced failover settings. See our Configuration Guide for more details.


Key Features

  • Retries, circuit breakers, failovers, and hedged requests: Ensures the fastest, most reliable upstream is always used
  • Configurable rate limits: Set hourly or daily rate limits per upstream to control usage and costs
  • Local re-org aware cache: Avoid redundant upstream calls and maintain data consistency when blockchain reorgs occur
  • Automatic method routing: No need to worry which provider supports which eth_* method
  • Unified error handling: Consistent error codes and detailed messages across multiple providers
  • Single dashboard: Observe throughput (RPS), errors, and average latency across all providers
  • Flexible authentication: Supports basic auth, secrets, JWT, SIWE and more
  • Smart batching: Aggregate multiple RPC or contract calls into one
  • Selection policy: Allows you to influence how upstreams are selected to serve traffic (or not) w/ selection policies.
  • Data integrity: Ensures accurate, up-to-date responses by levering several data integrity mechanisms.

Case Studies


Local Development

  1. Clone this repository:
git clone https://github.com/erpc/erpc.git
  1. Install Go dependencies:
make setup
  1. Create a configuration file:
cp erpc.yaml.dist erpc.yaml
vi erpc.yaml
  1. Run the eRPC server:
make run

Contributors

Contributors

By contributing to this project, you agree that your contributions may be used in both the open-source and enterprise versions of the software. Please review our Contributing Guidelines and Contributor License Agreement before submitting your contributions.


License

Apache 2.0

About

eRPC — fault-tolerant evm rpc proxy

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

615 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

eRPC Hero

Build StatusDocsLicenseContributorsTelegram

eRPC is a fault-tolerant EVM RPC proxy and re-org aware permanent caching solution. It is built with read-heavy use-cases in mind, such as data indexing and high-load frontend usage.

Architecture Diagram

⚠️ Note: eRPC is still under development. We recommend using it for testnets or as a fallback provider for production RPC calls.


Quick Start

With the below setup, you get immediate access to 2,000+ chains and 4,000+ public free EVM RPC endpoints.

Run an eRPC instance:

Using npx:

npx start-erpc

Or, using Docker:

docker run -p 4000:4000 ghcr.io/erpc/erpc

Or, using Railway:

Deploy on Railway

Send a request to your eRPC instance:

curl 'http://localhost:4000/main/evm/42161' \
--header 'Content-Type: application/json' \
--data '{ "method": "eth_getBlockByNumber", "params": ["latest", false], "id": 9199, "jsonrpc": "2.0"}'

Next Steps:

This setup is ideal for development and testing purposes. For production environments, we recommend extending your configuration with dedicated premium providers and advanced failover settings. See our Configuration Guide for more details.


Key Features

  • Retries, circuit breakers, failovers, and hedged requests: Ensures the fastest, most reliable upstream is always used
  • Configurable rate limits: Set hourly or daily rate limits per upstream to control usage and costs
  • Local re-org aware cache: Avoid redundant upstream calls and maintain data consistency when blockchain reorgs occur
  • Automatic method routing: No need to worry which provider supports which eth_* method
  • Unified error handling: Consistent error codes and detailed messages across multiple providers
  • Single dashboard: Observe throughput (RPS), errors, and average latency across all providers
  • Flexible authentication: Supports basic auth, secrets, JWT, SIWE and more
  • Smart batching: Aggregate multiple RPC or contract calls into one
  • Selection policy: Allows you to influence how upstreams are selected to serve traffic (or not) w/ selection policies.
  • Data integrity: Ensures accurate, up-to-date responses by levering several data integrity mechanisms.

Case Studies


Local Development

  1. Clone this repository:
git clone https://github.com/erpc/erpc.git
  1. Install Go dependencies:
make setup
  1. Create a configuration file:
cp erpc.yaml.dist erpc.yaml
vi erpc.yaml
  1. Run the eRPC server:
make run

Contributors

Contributors

By contributing to this project, you agree that your contributions may be used in both the open-source and enterprise versions of the software. Please review our Contributing Guidelines and Contributor License Agreement before submitting your contributions.


License

Apache 2.0

About

eRPC — fault-tolerant evm rpc proxy

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

615 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

eRPC Hero

Build StatusDocsLicenseContributorsTelegram

eRPC is a fault-tolerant EVM RPC proxy and re-org aware permanent caching solution. It is built with read-heavy use-cases in mind, such as data indexing and high-load frontend usage.

Architecture Diagram

⚠️ Note: eRPC is still under development. We recommend using it for testnets or as a fallback provider for production RPC calls.


Quick Start

With the below setup, you get immediate access to 2,000+ chains and 4,000+ public free EVM RPC endpoints.

Run an eRPC instance:

Using npx:

npx start-erpc

Or, using Docker:

docker run -p 4000:4000 ghcr.io/erpc/erpc

Or, using Railway:

Deploy on Railway

Send a request to your eRPC instance:

curl 'http://localhost:4000/main/evm/42161' \
--header 'Content-Type: application/json' \
--data '{ "method": "eth_getBlockByNumber", "params": ["latest", false], "id": 9199, "jsonrpc": "2.0"}'

Next Steps:

This setup is ideal for development and testing purposes. For production environments, we recommend extending your configuration with dedicated premium providers and advanced failover settings. See our Configuration Guide for more details.


Key Features

  • Retries, circuit breakers, failovers, and hedged requests: Ensures the fastest, most reliable upstream is always used
  • Configurable rate limits: Set hourly or daily rate limits per upstream to control usage and costs
  • Local re-org aware cache: Avoid redundant upstream calls and maintain data consistency when blockchain reorgs occur
  • Automatic method routing: No need to worry which provider supports which eth_* method
  • Unified error handling: Consistent error codes and detailed messages across multiple providers
  • Single dashboard: Observe throughput (RPS), errors, and average latency across all providers
  • Flexible authentication: Supports basic auth, secrets, JWT, SIWE and more
  • Smart batching: Aggregate multiple RPC or contract calls into one
  • Selection policy: Allows you to influence how upstreams are selected to serve traffic (or not) w/ selection policies.
  • Data integrity: Ensures accurate, up-to-date responses by levering several data integrity mechanisms.

Case Studies


Local Development

  1. Clone this repository:
git clone https://github.com/erpc/erpc.git
  1. Install Go dependencies:
make setup
  1. Create a configuration file:
cp erpc.yaml.dist erpc.yaml
vi erpc.yaml
  1. Run the eRPC server:
make run

Contributors

Contributors

By contributing to this project, you agree that your contributions may be used in both the open-source and enterprise versions of the software. Please review our Contributing Guidelines and Contributor License Agreement before submitting your contributions.


License

Apache 2.0

About

eRPC — fault-tolerant evm rpc proxy

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

615 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

eRPC Hero

Build StatusDocsLicenseContributorsTelegram

eRPC is a fault-tolerant EVM RPC proxy and re-org aware permanent caching solution. It is built with read-heavy use-cases in mind, such as data indexing and high-load frontend usage.

Architecture Diagram

⚠️ Note: eRPC is still under development. We recommend using it for testnets or as a fallback provider for production RPC calls.


Quick Start

With the below setup, you get immediate access to 2,000+ chains and 4,000+ public free EVM RPC endpoints.

Run an eRPC instance:

Using npx:

npx start-erpc

Or, using Docker:

docker run -p 4000:4000 ghcr.io/erpc/erpc

Or, using Railway:

Deploy on Railway

Send a request to your eRPC instance:

curl 'http://localhost:4000/main/evm/42161' \
--header 'Content-Type: application/json' \
--data '{ "method": "eth_getBlockByNumber", "params": ["latest", false], "id": 9199, "jsonrpc": "2.0"}'

Next Steps:

This setup is ideal for development and testing purposes. For production environments, we recommend extending your configuration with dedicated premium providers and advanced failover settings. See our Configuration Guide for more details.


Key Features

  • Retries, circuit breakers, failovers, and hedged requests: Ensures the fastest, most reliable upstream is always used
  • Configurable rate limits: Set hourly or daily rate limits per upstream to control usage and costs
  • Local re-org aware cache: Avoid redundant upstream calls and maintain data consistency when blockchain reorgs occur
  • Automatic method routing: No need to worry which provider supports which eth_* method
  • Unified error handling: Consistent error codes and detailed messages across multiple providers
  • Single dashboard: Observe throughput (RPS), errors, and average latency across all providers
  • Flexible authentication: Supports basic auth, secrets, JWT, SIWE and more
  • Smart batching: Aggregate multiple RPC or contract calls into one
  • Selection policy: Allows you to influence how upstreams are selected to serve traffic (or not) w/ selection policies.
  • Data integrity: Ensures accurate, up-to-date responses by levering several data integrity mechanisms.

Case Studies


Local Development

  1. Clone this repository:
git clone https://github.com/erpc/erpc.git
  1. Install Go dependencies:
make setup
  1. Create a configuration file:
cp erpc.yaml.dist erpc.yaml
vi erpc.yaml
  1. Run the eRPC server:
make run

Contributors

Contributors

By contributing to this project, you agree that your contributions may be used in both the open-source and enterprise versions of the software. Please review our Contributing Guidelines and Contributor License Agreement before submitting your contributions.


License

Apache 2.0

About

eRPC — fault-tolerant evm rpc proxy

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

615 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

eRPC Hero

Build StatusDocsLicenseContributorsTelegram

eRPC is a fault-tolerant EVM RPC proxy and re-org aware permanent caching solution. It is built with read-heavy use-cases in mind, such as data indexing and high-load frontend usage.

Architecture Diagram

⚠️ Note: eRPC is still under development. We recommend using it for testnets or as a fallback provider for production RPC calls.


Quick Start

With the below setup, you get immediate access to 2,000+ chains and 4,000+ public free EVM RPC endpoints.

Run an eRPC instance:

Using npx:

npx start-erpc

Or, using Docker:

docker run -p 4000:4000 ghcr.io/erpc/erpc

Or, using Railway:

Deploy on Railway

Send a request to your eRPC instance:

curl 'http://localhost:4000/main/evm/42161' \
--header 'Content-Type: application/json' \
--data '{ "method": "eth_getBlockByNumber", "params": ["latest", false], "id": 9199, "jsonrpc": "2.0"}'

Next Steps:

This setup is ideal for development and testing purposes. For production environments, we recommend extending your configuration with dedicated premium providers and advanced failover settings. See our Configuration Guide for more details.


Key Features

  • Retries, circuit breakers, failovers, and hedged requests: Ensures the fastest, most reliable upstream is always used
  • Configurable rate limits: Set hourly or daily rate limits per upstream to control usage and costs
  • Local re-org aware cache: Avoid redundant upstream calls and maintain data consistency when blockchain reorgs occur
  • Automatic method routing: No need to worry which provider supports which eth_* method
  • Unified error handling: Consistent error codes and detailed messages across multiple providers
  • Single dashboard: Observe throughput (RPS), errors, and average latency across all providers
  • Flexible authentication: Supports basic auth, secrets, JWT, SIWE and more
  • Smart batching: Aggregate multiple RPC or contract calls into one
  • Selection policy: Allows you to influence how upstreams are selected to serve traffic (or not) w/ selection policies.
  • Data integrity: Ensures accurate, up-to-date responses by levering several data integrity mechanisms.

Case Studies


Local Development

  1. Clone this repository:
git clone https://github.com/erpc/erpc.git
  1. Install Go dependencies:
make setup
  1. Create a configuration file:
cp erpc.yaml.dist erpc.yaml
vi erpc.yaml
  1. Run the eRPC server:
make run

Contributors

Contributors

By contributing to this project, you agree that your contributions may be used in both the open-source and enterprise versions of the software. Please review our Contributing Guidelines and Contributor License Agreement before submitting your contributions.


License

Apache 2.0

About

eRPC — fault-tolerant evm rpc proxy

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

615 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

eRPC Hero

Build StatusDocsLicenseContributorsTelegram

eRPC is a fault-tolerant EVM RPC proxy and re-org aware permanent caching solution. It is built with read-heavy use-cases in mind, such as data indexing and high-load frontend usage.

Architecture Diagram

⚠️ Note: eRPC is still under development. We recommend using it for testnets or as a fallback provider for production RPC calls.


Quick Start

With the below setup, you get immediate access to 2,000+ chains and 4,000+ public free EVM RPC endpoints.

Run an eRPC instance:

Using npx:

npx start-erpc

Or, using Docker:

docker run -p 4000:4000 ghcr.io/erpc/erpc

Or, using Railway:

Deploy on Railway

Send a request to your eRPC instance:

curl 'http://localhost:4000/main/evm/42161' \
--header 'Content-Type: application/json' \
--data '{ "method": "eth_getBlockByNumber", "params": ["latest", false], "id": 9199, "jsonrpc": "2.0"}'

Next Steps:

This setup is ideal for development and testing purposes. For production environments, we recommend extending your configuration with dedicated premium providers and advanced failover settings. See our Configuration Guide for more details.


Key Features

  • Retries, circuit breakers, failovers, and hedged requests: Ensures the fastest, most reliable upstream is always used
  • Configurable rate limits: Set hourly or daily rate limits per upstream to control usage and costs
  • Local re-org aware cache: Avoid redundant upstream calls and maintain data consistency when blockchain reorgs occur
  • Automatic method routing: No need to worry which provider supports which eth_* method
  • Unified error handling: Consistent error codes and detailed messages across multiple providers
  • Single dashboard: Observe throughput (RPS), errors, and average latency across all providers
  • Flexible authentication: Supports basic auth, secrets, JWT, SIWE and more
  • Smart batching: Aggregate multiple RPC or contract calls into one
  • Selection policy: Allows you to influence how upstreams are selected to serve traffic (or not) w/ selection policies.
  • Data integrity: Ensures accurate, up-to-date responses by levering several data integrity mechanisms.

Case Studies


Local Development

  1. Clone this repository:
git clone https://github.com/erpc/erpc.git
  1. Install Go dependencies:
make setup
  1. Create a configuration file:
cp erpc.yaml.dist erpc.yaml
vi erpc.yaml
  1. Run the eRPC server:
make run

Contributors

Contributors

By contributing to this project, you agree that your contributions may be used in both the open-source and enterprise versions of the software. Please review our Contributing Guidelines and Contributor License Agreement before submitting your contributions.


License

Apache 2.0

About

eRPC — fault-tolerant evm rpc proxy

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

615 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

eRPC Hero

Build StatusDocsLicenseContributorsTelegram

eRPC is a fault-tolerant EVM RPC proxy and re-org aware permanent caching solution. It is built with read-heavy use-cases in mind, such as data indexing and high-load frontend usage.

Architecture Diagram

⚠️ Note: eRPC is still under development. We recommend using it for testnets or as a fallback provider for production RPC calls.


Quick Start

With the below setup, you get immediate access to 2,000+ chains and 4,000+ public free EVM RPC endpoints.

Run an eRPC instance:

Using npx:

npx start-erpc

Or, using Docker:

docker run -p 4000:4000 ghcr.io/erpc/erpc

Or, using Railway:

Deploy on Railway

Send a request to your eRPC instance:

curl 'http://localhost:4000/main/evm/42161' \
--header 'Content-Type: application/json' \
--data '{ "method": "eth_getBlockByNumber", "params": ["latest", false], "id": 9199, "jsonrpc": "2.0"}'

Next Steps:

This setup is ideal for development and testing purposes. For production environments, we recommend extending your configuration with dedicated premium providers and advanced failover settings. See our Configuration Guide for more details.


Key Features

  • Retries, circuit breakers, failovers, and hedged requests: Ensures the fastest, most reliable upstream is always used
  • Configurable rate limits: Set hourly or daily rate limits per upstream to control usage and costs
  • Local re-org aware cache: Avoid redundant upstream calls and maintain data consistency when blockchain reorgs occur
  • Automatic method routing: No need to worry which provider supports which eth_* method
  • Unified error handling: Consistent error codes and detailed messages across multiple providers
  • Single dashboard: Observe throughput (RPS), errors, and average latency across all providers
  • Flexible authentication: Supports basic auth, secrets, JWT, SIWE and more
  • Smart batching: Aggregate multiple RPC or contract calls into one
  • Selection policy: Allows you to influence how upstreams are selected to serve traffic (or not) w/ selection policies.
  • Data integrity: Ensures accurate, up-to-date responses by levering several data integrity mechanisms.

Case Studies


Local Development

  1. Clone this repository:
git clone https://github.com/erpc/erpc.git
  1. Install Go dependencies:
make setup
  1. Create a configuration file:
cp erpc.yaml.dist erpc.yaml
vi erpc.yaml
  1. Run the eRPC server:
make run

Contributors

Contributors

By contributing to this project, you agree that your contributions may be used in both the open-source and enterprise versions of the software. Please review our Contributing Guidelines and Contributor License Agreement before submitting your contributions.


License

Apache 2.0

About

eRPC — fault-tolerant evm rpc proxy

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

615 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

eRPC Hero

Build StatusDocsLicenseContributorsTelegram

eRPC is a fault-tolerant EVM RPC proxy and re-org aware permanent caching solution. It is built with read-heavy use-cases in mind, such as data indexing and high-load frontend usage.

Architecture Diagram

⚠️ Note: eRPC is still under development. We recommend using it for testnets or as a fallback provider for production RPC calls.


Quick Start

With the below setup, you get immediate access to 2,000+ chains and 4,000+ public free EVM RPC endpoints.

Run an eRPC instance:

Using npx:

npx start-erpc

Or, using Docker:

docker run -p 4000:4000 ghcr.io/erpc/erpc

Or, using Railway:

Deploy on Railway

Send a request to your eRPC instance:

curl 'http://localhost:4000/main/evm/42161' \
--header 'Content-Type: application/json' \
--data '{ "method": "eth_getBlockByNumber", "params": ["latest", false], "id": 9199, "jsonrpc": "2.0"}'

Next Steps:

This setup is ideal for development and testing purposes. For production environments, we recommend extending your configuration with dedicated premium providers and advanced failover settings. See our Configuration Guide for more details.


Key Features

  • Retries, circuit breakers, failovers, and hedged requests: Ensures the fastest, most reliable upstream is always used
  • Configurable rate limits: Set hourly or daily rate limits per upstream to control usage and costs
  • Local re-org aware cache: Avoid redundant upstream calls and maintain data consistency when blockchain reorgs occur
  • Automatic method routing: No need to worry which provider supports which eth_* method
  • Unified error handling: Consistent error codes and detailed messages across multiple providers
  • Single dashboard: Observe throughput (RPS), errors, and average latency across all providers
  • Flexible authentication: Supports basic auth, secrets, JWT, SIWE and more
  • Smart batching: Aggregate multiple RPC or contract calls into one
  • Selection policy: Allows you to influence how upstreams are selected to serve traffic (or not) w/ selection policies.
  • Data integrity: Ensures accurate, up-to-date responses by levering several data integrity mechanisms.

Case Studies


Local Development

  1. Clone this repository:
git clone https://github.com/erpc/erpc.git
  1. Install Go dependencies:
make setup
  1. Create a configuration file:
cp erpc.yaml.dist erpc.yaml
vi erpc.yaml
  1. Run the eRPC server:
make run

Contributors

Contributors

By contributing to this project, you agree that your contributions may be used in both the open-source and enterprise versions of the software. Please review our Contributing Guidelines and Contributor License Agreement before submitting your contributions.


License

Apache 2.0

About

eRPC — fault-tolerant evm rpc proxy

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages