- Full changelog: ...0.0.13
- Docker Image:
ghcr.io/erpc/erpc:0.0.13
Changelog
- 0f94bfb: Create LICENSE (@kasrakhosravi)
- 25a4dcf: Merge pull request #16: feat: update healthcheck mechanism and keep per-method scores (@aramalipoor)
- 7aeefdb: Merge pull request #2 from flair-sdk/feat/store-and-dal (@aramalipoor)
- cde455f: Merge pull request #21: optimized retries, ignored unsupported methods, unfinalized block responses (@aramalipoor)
- b1c83b8: Merge pull request #22: improve error details and more optimized retries (@aramalipoor)
- f2eb3a7: Merge pull request #23: add sane defaults for configs and various error optimizations (@aramalipoor)
- ab34eaa: Merge pull request #26: consistent code for reverts across providers + avoid redundant writes (@aramalipoor)
- 256deee: Merge pull request #29 feat: add various auth modules (@aramalipoor)
- c6ef06b: Merge pull request #31 feat: add batching for json rpc client (@aramalipoor)
- 548194c: Merge pull request #35: add rate limiter auto-tuner (@aramalipoor)
- ee18a1c: Merge pull request #37: admin endpoints and performance improvements (@aramalipoor)
- ca64465: Merge pull request #6: errors and failsafe policies (@aramalipoor)
- 2a9a12a: Merge pull request #9 (@aramalipoor)
- e0970cc: Merge remote-tracking branch 'origin/main' into feat/call-exceptions (@aramalipoor)
- e3ce0a5: Merge remote-tracking branch 'origin/main' into feat/health-and-scores (@aramalipoor)
- 400259c: Merge remote-tracking branch 'origin/main' into feat/store-and-dal (@aramalipoor)
- b94ba68: Update README (@kasrakhosravi)
- f97afcc: Update README (@kasrakhosravi)
- 887d519: Update README.md (@aramalipoor)
- 8ad4e30: Update README.md (@kasrakhosravi)
- ac0e36f: Update README.md (@kasrakhosravi)
- 4f7867d: feat: add 2 second timeout for reading cache (@aramalipoor)
- 7a9428c: feat: add Pimlico upstream for erc4337 requests (#34) (@aramalipoor)
- b86b9fb: feat: add barebone structure for upstream and proxy modules (@aramalipoor)
- 8752010: feat: add base store and dal objects (@aramalipoor)
- 9619c23: feat: add basic grafana charts (#10) (@kasrakhosravi)
- 70b1c4c: feat: add basic network-based auth (@aramalipoor)
- 7877975: feat: add basic prometheus and grafana infra (@aramalipoor)
- ed8478f: feat: add basic rate limiting per upstream and method (@aramalipoor)
- b2f5d15: feat: add basic working jwt auth strategy (@aramalipoor)
- a5deb57: feat: add basic working siwe auth strategy (@aramalipoor)
- 25343f0: feat: add batching for json rpc client (@aramalipoor)
- f401a26: feat: add correct error map when legacy block numbers are not supported with debug_ (@aramalipoor)
- 53da67b: feat: add cors config per project (#30) (@aramalipoor)
- 90832c6: feat: add custom handlers for failsafe policies (@aramalipoor)
- ecd01e5: feat: add data interface (@aramalipoor)
- 614c6e6: feat: add docs based on nextra (#11) (@aramalipoor)
- 7dd6820: feat: add docs for rate limit auto-tuner (@aramalipoor)
- 3c3faa3: feat: add dynamodb store driver (@aramalipoor)
- 11c1b00: feat: add envio hyper-rpc upstream type (#32) (@aramalipoor)
- dbd24c6: feat: add erpc_health and erpc_config under admin endpoint (@aramalipoor)
- dd3f4f2: feat: add evm block tracker (@aramalipoor)
- 4d07b64: feat: add evm json-rpc cache (@aramalipoor)
- 3c71baf: feat: add evm json-rpc cache (@aramalipoor)
- 6e5215a: feat: add extended client types (@aramalipoor)
- 9be0269: feat: add happy path test for main (@aramalipoor)
- cb78cfc: feat: add json annotation for configs (@aramalipoor)
- 5ba2882: feat: add llama vendor (#7) (@kasrakhosravi)
- 6fce9e5: feat: add memory and redis based dal for basic caching (@aramalipoor)
- 3898cf9: feat: add more vendor-specific errors (@aramalipoor)
- 33758ad: feat: add postgresql store driver (#3) (@aramalipoor)
- 3c9f28e: feat: add proper http status code for rate limit errors (@aramalipoor)
- 0c56ca4: feat: add query func to connector (@aramalipoor)
- 2006b83: feat: add rate limiter auto-tuner (@aramalipoor)
- 2de374a: feat: add sane defaults for various configs (@aramalipoor)
- 9370477: feat: add stress test scripts (@aramalipoor)
- 74ca2d0: feat: add tests for network retry policy (@aramalipoor)
- 2a59741: feat: add timeout and hedge policies (@aramalipoor)
- c2f342e: feat: add upstream-level failsafe and enable circuit breaker logic (@aramalipoor)
- 9acf316: feat: add vendor-spcific error normalization (@aramalipoor)
- e4bab5a: feat: alchemy supported evm chains (#12) (@kasrakhosravi)
- 9abf05d: feat: auto-configure batching for known vendors (@aramalipoor)
- cb82936: feat: auto-resolve network ids (@aramalipoor)
- 70fb20d: feat: basic forward logic for json rpc requests (@aramalipoor)
- 29e8fa2: feat: cache only finalized data (@aramalipoor)
- ae0169a: feat: cache trace methods and a simple get logs caching for now (@aramalipoor)
- 284525b: feat: complete data drivers with basic set and get (@aramalipoor)
- 28d05e9: feat: consider genesis is not traceable as a server-side error (@aramalipoor)
- 9363fd2: feat: consolidate resiliency module and add basic empty response handling (@aramalipoor)
- 11b9ff3: feat: create singleton clients per upstream (@aramalipoor)
- 291ac1b: feat: do not retry reverted eth_call requests (@aramalipoor)
- 061f7f8: feat: dynamically ignore methods when upstream does not support them (@aramalipoor)
- bd4ca08: feat: enable race condition detection (@aramalipoor)
- 1b71eca: feat: expand rate limiter auto-tuning config (@aramalipoor)
- 5ba840a: feat: expose headers and used upstream on responses (@aramalipoor)
- ae31848: feat: expose response metadata on errors (@aramalipoor)
- d2d3357: feat: extending rpc json methods for caching (#18) (@kasrakhosravi)
- 857cd58: feat: implement a working secret auth strategy (@aramalipoor)
- 938a934: feat: implement project-level rate limiting (#27) (@aramalipoor)
- 3f14e93: feat: increase idle conns on transport (@aramalipoor)
- 8ac24dc: feat: init auth package and configs (@aramalipoor)
- 8c0e51d: feat: lazy loading projects and networks with adapters (@aramalipoor)
- 0d706f1: feat: lazy parsing of rpc response (@aramalipoor)
- 831c207: feat: marshal responses for easier post-processing (#5) (@aramalipoor)
- f663377: feat: more details in failsafe errors (#28) (@aramalipoor)
- 6ec965a: feat: multiplex redundant network-level requests (@aramalipoor)
- 58fe1bc: feat: normalize errors and granular failsafe handling logic (@aramalipoor)
- 42c49bf: feat: re-add weighted randomized selection for fair distribution (@aramalipoor)
- 03db4a3: feat: record separate metrics for skipped requests (@aramalipoor)
- e9465c5: feat: record total network or upstream durations in errors (@aramalipoor)
- ee9001a: feat: redact secret values in config (@aramalipoor)
- 30f579a: feat: return json-rpc format for internal errors (@aramalipoor)
- 11d397f: feat: separate metric for not-synced-yet errors (@aramalipoor)
- 855824f: feat: separate project, network and upstream objects with score-based ordering (@aramalipoor)
- 4d60f34: feat: skip negative score upstreams (@aramalipoor)
- a2c5b01: feat: skip when cb is open for an upstream (@aramalipoor)
- 44aaa6b: feat: skip when cb is open for an upstream (@aramalipoor)
- 9d5b02d: feat: support env var (#14) (@KONFeature)
- 60fa53f: feat: track scores per network and method for each upstream (@aramalipoor)
- aaae408: feat: track upstreams basic error rate and p90 latency (@aramalipoor)
- 0bc565f: feat: try with sonic json marshaler (@aramalipoor)
- affe9a2: feat: use buffer pool for response encoding (@aramalipoor)
- 3a4f669: feat: use consistent error structure on responses (@aramalipoor)
- c5b6af6: feat: use fasthttp instead of net/http (@aramalipoor)
- 6bdf066: feat: use goccy for json marshaling (@aramalipoor)
- 32d72d9: fix: add another case for unsupported methods (@aramalipoor)
- fbfe56b: fix: add header, upstream docs (@kasrakhosravi)
- 0b8ba6c: fix: add more error cases based on actual rpc reports (@aramalipoor)
- 127c6a5: fix: add mutex for rate limiter rules (@aramalipoor)
- d5d8546: fix: add out of gas as client-side exception (@aramalipoor)
- 0235ea7: fix: add useful details on server errors (@aramalipoor)
- 157ae45: fix: add various mutexes (@aramalipoor)
- 9e692b8: fix: alchemy base rpc endpoint (#15) (@KONFeature)
- 9c68e47: fix: badges (@kasrakhosravi)
- d9b77e4: fix: badges (@kasrakhosravi)
- 1e2efd7: fix: badges (@kasrakhosravi)
- 636f08a: fix: cleaning up readme and docs (@kasrakhosravi)
- 1a34568: fix: consider insufficient funds as client error (@aramalipoor)
- 7a88221: fix: consider response when determining block number during cache (@aramalipoor)
- 2c7aecc: fix: consider unknown errors as server-side by default to retry (@aramalipoor)
- 16a08f8: fix: consistent cache timeout on pg driver and more edge-cases for client-side errors (@aramalipoor)
- 2accb14: fix: consistent code for reverts across providers (@aramalipoor)
- fa59bdb: fix: consistent data and code for revert response across providers (#24) (@aramalipoor)
- 29d4384: fix: consistent scheme for special upstream type (@aramalipoor)
- 53af1b6: fix: correct condition for not-synced error (@aramalipoor)
- 88580c0: fix: correct context and mutex for concurrent access (@aramalipoor)
- c8ed7b8: fix: correct context for requests (@aramalipoor)
- 2318eb7: fix: correct data conversion (@aramalipoor)
- 02fd710: fix: correct error resp handling for retry failures (@aramalipoor)
- 024824d: fix: correct error response for reverted eth_calls (@aramalipoor)
- 643a036: fix: correct handling of abnormal rpc error responses (@aramalipoor)
- 5251ced: fix: correct hedge and retry behavior in network-level forward (@aramalipoor)
- 2a98116: fix: correct logger instance propagating (@aramalipoor)
- f823585: fix: correct method for checking for options reqs (@aramalipoor)
- 7abfbcc: fix: correct mutex locking for sorted upstreams (@aramalipoor)
- 93f92db: fix: correct original code for unsupported legacy blocks (@aramalipoor)
- a3cee42: fix: correct original code for unsupported legacy blocks (@aramalipoor)
- 24e4019: fix: correct retry on empty response when block number unavailable (@aramalipoor)
- bbc7544: fix: correct return when last result is empty (@aramalipoor)
- 29b6f51: fix: correct skip logic for upstream forward (@aramalipoor)
- 7714dd4: fix: correct structure for json-rpc err (@aramalipoor)
- 004de4a: fix: count unsupported and cb opens as skipped (@aramalipoor)
- f276eab: fix: disable auto-ignore for drpc free tier plans (@aramalipoor)
- b4dd494: fix: do not print reverts as errors (@aramalipoor)
- 41d60e1: fix: do not print warn for client-side errors (@aramalipoor)
- f31c61f: fix: do not record client-side errors as upstream failures (@aramalipoor)
- 35db8eb: fix: do not retry billing issues (@aramalipoor)
- eabefd7: fix: do not retry on all non-retryable errors (@aramalipoor)
- a8edb6d: fix: do not retry when 3rd party provider is out of capacity (#20) (@aramalipoor)
- cafe32b: fix: docs (@kasrakhosravi)
- 33315aa: fix: explicitly fail when cannot initialize network + cover more error cases (@aramalipoor)
- 719743e: fix: expose more details for upstream errors (@aramalipoor)
- f88e571: fix: favicon (@kasrakhosravi)
- 2c6c52a: fix: give higher multiplier for latency (@aramalipoor)
- f2f1ee1: fix: handle single error object edge-case for certain providers (@aramalipoor)
- 14b44c2: fix: handle single error object edge-case for certain providers (@aramalipoor)
- 8d542bf: fix: hot fix for timeout policy on upstream (@aramalipoor)
- f2222be: fix: if all upstreams skip then do not retry (@aramalipoor)
- 1c56f82: fix: in-flight multiplexr close mechanism and tests (@aramalipoor)
- 40e5c96: fix: legend for grafana charts (@kasrakhosravi)
- 6b4679a: fix: lock response writing across goroutines (@aramalipoor)
- fd97952: fix: log which upstream is opening the CB (@aramalipoor)
- 8979c5a: fix: make network-level timeout for overall request lifecycle (@aramalipoor)
- eea49ad: fix: more cases for emptyish responses (@aramalipoor)
- 00a1239: fix: more optimized handling of upstream capacity and empty responses (@aramalipoor)
- de48cbc: fix: move request up a level to avoid redundant bodies (@aramalipoor)
- b78a25f: fix: move the response writer mutex to top-most handler (@aramalipoor)
- 852b3a0: fix: multiplex network initialization (@aramalipoor)
- 79761a5: fix: network might be nil if request is to detect network (@aramalipoor)
- 551956a: fix: normalize rpc error label for lower cardinality (@aramalipoor)
- 5ec01fa: fix: only print debug if client-side exception (@aramalipoor)
- cb11d01: fix: pass logger to pg connector (@aramalipoor)
- ac3593b: fix: peek only once for headers (@aramalipoor)
- 9c3f94c: fix: properly translate cause to normalize CB errors (@aramalipoor)
- aa7325a: fix: race conditions on tracker and rate limiters (@aramalipoor)
- 2b3a937: fix: random docs fixes (@kasrakhosravi)
- e605e0d: fix: readme (@kasrakhosravi)
- 32600b9: fix: readme (@kasrakhosravi)
- fc8bc29: fix: readme (@kasrakhosravi)
- 847a6b7: fix: readme (@kasrakhosravi)
- 8c95986: fix: readme (@kasrakhosravi)
- 9ab12ef: fix: redact address first + consider missing trie as NotSyncedYet error (@aramalipoor)
- e62d48d: fix: reduce noise for upstream sorting (@aramalipoor)
- e275a90: fix: remove duration metrics for rate limiter test (@aramalipoor)
- b8a25f8: fix: remove redundant http writes (@aramalipoor)
- fcbfeb8: fix: remove unnecessary endpoint revert err (@aramalipoor)
- 18dffa5: fix: return error when upstream cannot initialize so it retries (@aramalipoor)
- 4cd0df1: fix: separate preparation and test logics for TestUpstreamsRegistry_ScoreCalculations (@kasrakhosravi)
- 4a10ded: fix: simplify health checks as many are covered by failsafe policies (@aramalipoor)
- 9c77a07: fix: single mutex for upstream updates (@aramalipoor)
- 8515ca2: fix: site preview (@kasrakhosravi)
- 3480ee8: fix: skip auto-ignore when not defined (@aramalipoor)
- 88bc08f: fix: skip retry on CB only for upstream-level (@aramalipoor)
- 31726cf: fix: standard errors for incoming request errors (@aramalipoor)
- c6e3a92: fix: typo in image path (@aramalipoor)
- 6a43fa8: fix: typo in image path (@aramalipoor)
- f36f450: fix: update readme (@kasrakhosravi)
- 189ff0b: fix: update test fake responder (@aramalipoor)
- 87c6a3e: fix: wrap all rpc exceptions for proper code normalization (@aramalipoor)
- db495f3: test- re-write TestUpstreamsRegistry_ScoreCalculations tests with sub-tests format (@kasrakhosravi)
- 1507bee: wip: before decoupling stress func (@aramalipoor)
- a7147e9: wip: before file-based sampels (@aramalipoor)
- b72861d: wip: checkpoint to add weighted selection (@aramalipoor)
- 796bb98: wip: lazy loading of projects, networks and upstreams (@aramalipoor)
Quick start
- Create your
erpc.yaml
configuration file:
touch erpc.yaml
code erpc.yaml
- Use the Docker image:
docker run \
-v $(pwd)/erpc.yaml:/root/erpc.yaml
-p 4000:4000 -p 4001:4001 \
ghcr.io/erpc/erpc:0.0.13
- Send your first request:
curl --location 'http://localhost:4000/main/evm/42161' \
--header 'Content-Type: application/json' \
--data '{
"method": "eth_getBlockByNumber",
"params": [
"0x1203319",
false
],
"id": 9199,
"jsonrpc": "2.0"
}'