Changelog
- 6b81e83 Create LICENSE
- 5af0aa8 Initial commit
- 0a41b44 Merge pull request erpc#16: feat: update healthcheck mechanism and keep per-method scores
- 6cda5e2 Merge pull request #2 from flair-sdk/feat/store-and-dal
- 7406625 Merge pull request erpc#21: optimized retries, ignored unsupported methods, unfinalized block responses
- 9fd7969 Merge pull request erpc#22: improve error details and more optimized retries
- c29d82d Merge pull request erpc#23: add sane defaults for configs and various error optimizations
- bd47449 Merge pull request erpc#26: consistent code for reverts across providers + avoid redundant writes
- ce4729b Merge pull request erpc#29 feat: add various auth modules
- e9faca8 Merge pull request erpc#31 feat: add batching for json rpc client
- 177ea28 Merge pull request erpc#35: add rate limiter auto-tuner
- c843926 Merge pull request erpc#37: admin endpoints and performance improvements
- 3ffa682 Merge pull request erpc#46 from xJonathanLEI/dev/cache_attempt_wo_finalized_block
- 7d41e71 Merge pull request erpc#52 fix: various http, logging and caching improvements
- 87b9282 Merge pull request erpc#53: pending tx cache, node syncing state tracking, skip-cache directive
- dc7abc1 Merge pull request erpc#61: add use-upstream directive to target specific providers
- 14130a8 Merge pull request erpc#66: efficient json unmarshalling, mutex improvements, various bugs
- dc7aa4e Merge pull request erpc#69: add selection policy for upstreams and typescript support for config
- b1304d9 Merge pull request #6: errors and failsafe policies
- 05f6a81 Merge pull request #7 from KONFeature/release/0.0.37
- 183cb73 Merge pull request erpc#71: fix: reduce potential race deadlocks when caching enabled
- cd890fd Merge pull request erpc#9
- bb240c5 Merge remote-tracking branch 'origin/main' into feat/call-exceptions
- e614250 Merge remote-tracking branch 'origin/main' into feat/health-and-scores
- 966d87b Merge remote-tracking branch 'origin/main' into feat/store-and-dal
- b1484ec Update README
- dc2eec8 Update README
- 887d519 Update README.md
- f891620 Update README.md
- 5b4a769 Update README.md
- 1bb3c81 adds newly supported scroll upstream to alchemy (erpc#73)
- 3760a0e chore(deps): bump golang.org/x/crypto from 0.27.0 to 0.31.0 (erpc#133)
- 3dba133 feat(o11y): add datasource variable, rows and stats (erpc#129)
- 213ae0e feat: add 2 second timeout for reading cache
- 3270c66 feat: add Etherspot upstream for erc4337 requests (erpc#36)
- 099935e feat: add Pimlico upstream for erc4337 requests (erpc#34)
- 104f47a feat: add X-ERPC-Skip-Cache-Read directive to force-refresh cache per request
- d223cde feat: add a simple GET /healthcheck endpoint (erpc#68)
- b86b9fb feat: add barebone structure for upstream and proxy modules
- 8752010 feat: add base store and dal objects
- 94ebd01 feat: add basic grafana charts (erpc#10)
- c07ac5f feat: add basic network-based auth
- e0c546b feat: add basic prometheus and grafana infra
- ed8478f feat: add basic rate limiting per upstream and method
- 9a1c878 feat: add basic working jwt auth strategy
- 6a98520 feat: add basic working siwe auth strategy
- a8772c0 feat: add batching for json rpc client
- 63177e7 feat: add blastapi upstream type
- f2c5158 feat: add config validation command (erpc#139)
- 567769b feat: add connection configs for postgresql (erpc#105)
- 0cabf9d feat: add contribution guidelines (erpc#121)
- 8d070bf feat: add correct error map when legacy block numbers are not supported with debug_
- 71cf406 feat: add cors config for admin endpoints and introduce erpc_taxonomy/erpc_project (erpc#83)
- 92bee3b feat: add cors config per project (erpc#30)
- b1550b9 feat: add custom handlers for failsafe policies
- ecd01e5 feat: add data interface
- dd4ca9b feat: add docs based on nextra (erpc#11)
- 4e2c3e6 feat: add docs for rate limit auto-tuner
- b91e6a3 feat: add domain aliasing to preselect projects or networks
- 9f88c48 feat: add drpc upstream type and disable auto-ignore due to free tiers
- 3c3faa3 feat: add dynamodb store driver
- b325da0 feat: add envio hyper-rpc upstream type (erpc#32)
- e1bbffe feat: add erpc_health and erpc_config under admin endpoint
- 78dc7a4 feat: add error case for block height passed is invalid
- bc121ed feat: add evm block tracker
- 00ea135 feat: add evm chain state poller for block head lags
- f726f7b feat: add evm json-rpc cache
- ea7647e feat: add evm json-rpc cache
- b4586b4 feat: add extended client types
- 5f247f9 feat: add gzip compression on responses (erpc#93)
- 9be0269 feat: add happy path test for main
- 944ec86 feat: add ipv6 support for http and metrics servers
- 6831981 feat: add json annotation for configs
- 1ab6b84 feat: add llama vendor (#7)
- 6fce9e5 feat: add memory and redis based dal for basic caching
- 2beb081 feat: add more rpc error cases
- b16c96b feat: add more vendor-specific errors
- 195a817 feat: add network-level policy evaluator with typescript
- 11f464a feat: add objectives for network request duration metrics
- 5e532f3 feat: add performance benchmark regression tests in ci (erpc#136)
- 03297bd feat: add postgresql store driver (#3)
- 4b846b6 feat: add project-specific healthcheck endpoint
- 2fc702b feat: add proper default values for network failsafe
- 3c9f28e feat: add proper http status code for rate limit errors
- 867a24a feat: add query func to connector
- e6888f0 feat: add rate limiter auto-tuner
- 61fbf79 feat: add sane defaults for various configs
- ce4d4e1 feat: add score multipliers per upstream
- 2150d39 feat: add severity to upstream errors and only count criticals for scoring
- 81098c8 feat: add stress test scripts
- 74ca2d0 feat: add tests for network retry policy
- 2a59741 feat: add timeout and hedge policies
- 8d1ae5c feat: add timeouts for cache connectors
- 4e1bb87 feat: add tls termination for ssl support in http server (erpc#99)
- 8e193cc feat: add ttl and per-method, per-network caching policies (erpc#97)
- 84ea1d4 feat: add upstream score and latest block and finalized block gauge metrics (erpc#94)
- c2f342e feat: add upstream-level failsafe and enable circuit breaker logic
- 6b91758 feat: add upstreamDefaults to apply common configs easier
- 8c5b8f4 feat: add use-upstream directive to target specific providers
- 1af8b8d feat: add vendor-spcific error normalization
- b3e8e48 feat: adds Infura upstream provider for supported networks (erpc#88)
- 5af922f feat: alchemy supported evm chains (erpc#12)
- bc9cab7 feat: allow configuring cacheable methods (erpc#107)
- 0c44182 feat: allow configuring read and write timeouts (erpc#113)
- 5e72391 feat: allow defining default directive values on networks
- d9a7ac9 feat: allow defining defaults for all upstreams
- 3dbe788 feat: allow defining defaults for lazy-loaded networks (erpc#109)
- 1c8bc04 feat: allow disabling evm state poller by setting it to 0
- 49222ef feat: allow returning of empty cached data based on policies
- e86ea02 feat: allow setting a fallback finality depth to reduce costs (erpc#98)
- 7bc8e5f feat: auto-configure batching for known vendors
- 9b6bc27 feat: auto-ignore all methods if allowMethods is defined without ignoreMethods
- 2e080b9 feat: auto-resolve network ids
- 70fb20d feat: basic forward logic for json rpc requests
- 39ff936 feat: better default values for default cache ttl and selection policy (erpc#102)
- 1dbba34 feat: by default configuring no caching storage
- 2b55f22 feat: cache empty responses for synced and finalized blocks (erpc#56)
- 7f19102 feat: cache eth_getLogs if only blockHash is provided
- 4e0ba43 feat: cache only finalized data
- 0f3b679 feat: cache trace methods and a simple get logs caching for now
- 2b5e300 feat: checksum validation during installation
- f9e7218 feat: complete data drivers with basic set and get
- a2370d2 feat: consider capacity issues and rate limits as non-retryable
- 9badd5c feat: consider genesis is not traceable as a server-side error
- 6e1f2fa feat: consider transaction not found as missing data
- b72de98 feat: consolidate resiliency module and add basic empty response handling
- 11b9ff3 feat: create singleton clients per upstream
- 4bf32d1 feat: disable pending tx retrial by default
- c33d7d1 feat: do not retry reverted eth_call requests
- 436acbc feat: dynamically ignore methods when upstream does not support them
- f6c57eb feat: emit attempts number in network success/failed metrics
- 9fbb437 feat: enable cors for admin endpoint by default
- b91556e feat: enable metrics port by default
- bd4ca08 feat: enable race condition detection
- 59e2d1c feat: evaluation selection state on each request
- 9666b98 feat: expand rate limiter auto-tuning config
- 2a0574f feat: explicit error on partial network config
- c83944f feat: explicitly parse the yaml to error on unknown fields
- 14c4e94 feat: expose cache skips metrics
- 21ce1f6 feat: expose gauge metric for auto adjusted rate limit budgets
- f68fe15 feat: expose headers and used upstream on responses
- 8e55b00 feat: expose request body in logs on fatal failures
- 6bafaa9 feat: expose response metadata on errors
- 275b113 feat: extending rpc json methods for caching (erpc#18)
- eab8f39 feat: implement a working secret auth strategy
- 5b2109e feat: implement project-level rate limiting (erpc#27)
- 1100f37 feat: increase idle conns on transport
- 22ae6f3 feat: init auth package and configs
- 43e3994 feat: introduce realtime finality state and add more cacheable evm methods (erpc#104)
- 8c1188e feat: lazy loading projects and networks with adapters
- 6cde3ef feat: lazy parsing of rpc response
- 3da9f88 feat: load typescript config with defaults and validations
- 938cb4e feat: make listening to ipv4 and/or ipv6 optional
- 57cbe98 feat: marshal responses for easier post-processing (#5)
- 8f79adf feat: more cases for billing issues
- 9c2b18b feat: more conditions for missing data errors
- 6182a0a feat: more details in failsafe errors (erpc#28)
- a4f63a6 feat: move db connection attempt in background to unblock main thread
- c410c67 feat: multiplex redundant network-level requests
- 1d65c57 feat: new admin endpoint to get the current config
- 4ca3c91 feat: normalize errors and granular failsafe handling logic
- 93e7d2f feat: re-add weighted randomized selection for fair distribution
- b87e712 feat: record separate metrics for skipped requests
- 5ec3acf feat: record total network or upstream durations in errors
- ae013d5 feat: redact secret values in config
- 5a0e305 feat: remove default cache to avoid user surprises
- 132a2d8 feat: remove upstream and network default failsafe configs
- 6828ff3 feat: retry pending txs when directive is set
- e96d0fb feat: return health on root / endpoint and log bad urls as debug (erpc#82)
- 7cd5fab feat: return json-rpc format for internal errors
- e588bb7 feat: send User-Agent header towards upstreams with project and rate limit budget name
- d6a2acd feat: separate metric for not-synced-yet errors
- 855824f feat: separate project, network and upstream objects with score-based ordering
- ef069f0 feat: set Server and User-Agent headers with version and commit sha
- f7a11e0 feat: skip full-node upstreams when block is present in req and historical (erpc#92)
- 3cbbe28 feat: skip hedging for write methods
- 4d60f34 feat: skip negative score upstreams
- 1b9da88 feat: skip over non-retryable upstreams during network attempts
- ff72998 feat: skip when cb is open for an upstream
- 0cccf05 feat: skip when cb is open for an upstream
- 0be6b1a feat: startup @erpc-cloud/cli
- 080ea40 feat: support env var (erpc#14)
- 5b680d5 feat: support more debug and trace methods for caching
- 6e32e74 feat: support trace execution timeout errors (erpc#86)
- 8012864 feat: thirdweb upstream vendor (erpc#38)
- b25ffff feat: track scores per network and method for each upstream
- aaae408 feat: track upstreams basic error rate and p90 latency
- 72c9733 feat: try with sonic json marshaler
- 93e6514 feat: tune sonic json encoding and decoding for streaming
- cb2d692 feat: update failsafe library to 0.6.8
- 33a3a64 feat: update grafana dashboard with new metrics and larger panels (erpc#49)
- 1433983 feat: upgrade sonic library and configure faster searcher for json-rpc responses
- b9e6903 feat: use buffer pool for response encoding
- b9a3974 feat: use buffer stream for efficient json unmarshalling
- 3a4f669 feat: use consistent error structure on responses
- 7fb73f4 feat: use custom parser for lowest memory usage
- 6b4b13d feat: use ddsketch for optimal quantile tracking (erpc#135)
- 650fe33 feat: use fasthttp instead of net/http
- e4941a3 feat: use goccy for json marshaling
- 3487d87 feat: use histogram for latency metrics
- 2ef7eab feat: use net/http instead of fasthttp for memory improvements (erpc#89)
- 879f0c4 feat: use stream reader on response to reduce mem usage
- 17e804d feat: validate request basics before handling
- ab90e0e fix(selection-policy): use fallback rpc if healthy (erpc#118)
- ef4551f fix: Allow map type from js/ts config
- 62d9532 fix: Cleanup generated file before release commit + fix file path
- f6063da fix: Correct export of cli package
- 1a24d1a fix: Disable git check on publish
- e28c2b2 fix: Dont depend on prepare release for the release step
- d73743b fix: Only build docker with typescript/config package
- 1ba59e0 fix: add another case for unsupported methods
- 03921f4 fix: add blockHash support for certain eth_* methods (eip-1898) (erpc#67)
- a5d8687 fix: add header, upstream docs
- 6f7c769 fix: add more cases for missing data errors
- 2635004 fix: add more context about various timeout errors
- 5f0d466 fix: add more error cases based on actual rpc reports
- b535bbf fix: add more error cases based on real provider reports
- dbc1792 fix: add mutex for rate limiter rules
- 0b422b0 fix: add new case for block missing data errors
- 447f3a0 fix: add out of gas as client-side exception
- 7d274b9 fix: add realtime finality state in yaml unmarshaller
- a166b10 fix: add special cases for upstream errors
- 7738fb2 fix: add suffix for avax chains for blast
- 29dc08a fix: add useful details on server errors
- ba97b22 fix: add various mutexes
- 677de31 fix: alchemy base rpc endpoint (erpc#15)
- d7209fe fix: allow auto-ignore on upstream defaults and disable it by default (erpc#119)
- 0ef6e34 fix: allow numeric enum values in yaml config (erpc#122)
- 8811dd7 fix: allow retrying on unsupported tx types for now
- 2ec63ad fix: always add id and jsonrpc fields for upstreams
- 9a11434 fix: always propagate error.data field from upstream
- 8d28b89 fix: automatically use random id when explicitly 0 is provided (erpc#76)
- 111b78b fix: avoid batching requests with same ID and handle context timeout
- 2d8f5c8 fix: avoid caching empty values for now
- 4b8dee8 fix: avoid null data field on error object
- 646eccc fix: badges
- ab381d2 fix: badges
- f8dc671 fix: badges
- cdf3c14 fix: cache never used for
eth_chainId (erpc#42)
- 471fbb6 fix: cache not attempted w/ finalized block unavailable
- 1a81c75 fix: check block finality on the exact upstream before cache (erpc#90)
- a1b8d07 fix: check for nil response when trace logs are enabled
- bbc7cd3 fix: cleaning up readme and docs
- 25ca6f6 fix: cleanup multiplexer on context deadline or timeout
- a84317d fix: consider gas too low a client-side call exception
- 274fedb fix: consider insufficient funds as client error
- a47071d fix: consider invalid argument errors as client-side (erpc#63)
- ffb2887 fix: consider response when determining block number during cache
- 222ae49 fix: consider trie not found as missing data to allow retries (erpc#131)
- 762b2c9 fix: consider unknown errors as server-side by default to retry
- f6a08d4 fix: consistent cache timeout on pg driver and more edge-cases for client-side errors
- e610a6a fix: consistent code for reverts across providers
- ec97305 fix: consistent data and code for revert response across providers (erpc#24)
- a094ffc fix: consistent float64 type for json-rpc id
- 3a3cc23 fix: consistent scheme for special upstream type
- 876ad93 fix: consistent timeout error codes for requests
- b8bfa7d fix: continue with other upstreams if one fails during network check
- 7dff6c4 fix: correct cache policy config parsing
- f25eb66 fix: correct caching condition for block-less methods
- 4c21b79 fix: correct condition for not-synced error
- 30cc4d4 fix: correct content-type for error responses and more useful info on logs
- 88580c0 fix: correct context and mutex for concurrent access
- 041bc5d fix: correct context for requests
- 60013c2 fix: correct context propagation for batching and clients
- d7b4726 fix: correct context propagation for upstream timeout
- 631ed3a fix: correct data conversion
- c60b39e fix: correct error resp handling for retry failures
- c6a40bf fix: correct error response for reverted eth_calls
- f8b1c08 fix: correct handling of abnormal rpc error responses
- 9ac274a fix: correct handling of unexpected text response during batch
- 4512364 fix: correct handling when upstream responds single object to batch
- 5251ced fix: correct hedge and retry behavior in network-level forward
- cafd385 fix: correct label for upstream rate-limited err
- ffc7bea fix: correct logger instance propagating
- f723399 fix: correct method for checking for options reqs
- 226897c fix: correct metric labels for empty responses
- 69b7ee6 fix: correct mutex locking for sorted upstreams
- 584899c fix: correct original code for unsupported legacy blocks
- 3b141ee fix: correct original code for unsupported legacy blocks
- 8510114 fix: correct path parsing for CORS options requests (erpc#78)
- 9c74b3a fix: correct resp parsing for unknown network checks
- bbd5da3 fix: correct retry on empty response when block number unavailable
- a08156d fix: correct return when last result is empty
- 6b20ede fix: correct skip finalization check flag
- 28fceeb fix: correct skip logic for upstream forward
- a57d37d fix: correct structure for json-rpc err
- 75edd2a fix: correctly ignore unsupported responses for drpc
- c196445 fix: count unsupported and cb opens as skipped
- 1e8a27d fix: disable auto-ignore for drpc free tier plans
- cd34f5e fix: disable caching by default to avoid confusion (erpc#108)
- fd7da63 fix: do not print reverts as errors
- 5271bc4 fix: do not print warn for client-side errors
- d123419 fix: do not record client-side errors as upstream failures
- c3b5034 fix: do not retry billing issues
- 4738e28 fix: do not retry on all non-retryable errors
- dbb9268 fix: do not retry when 3rd party provider is out of capacity (erpc#20)
- dc48974 fix: docs
- ecc1613 fix: enable auto tuner by default
- c08acac fix: ensure consistent json-rpc IDs
- 7239d43 fix: exact parity for default cache config
- 5805871 fix: explicitly check for boolean type for syncing state response
- f9ad8e5 fix: explicitly fail when cannot initialize network + cover more error cases
- 7c60f72 fix: explicitly throw an error for filter methods until subscriptions is properly implemented
- 007d2ca fix: expose more details for upstream errors
- 90d1cc5 fix: extend too-large error to cover address limits
- d6ec75c fix: extract status code from exhausted error children
- 5dbe0b1 fix: favicon
- e877a82 fix: give higher multiplier for latency
- 80eeb00 fix: grafana latency per network/upstream
- 5672e19 fix: handle single error object edge-case for certain providers
- dfec97a fix: handle single error object edge-case for certain providers
- f8c3121 fix: hot fix for timeout policy on upstream
- 53ae5c7 fix: if all upstreams skip then do not retry
- 5ba1bfa fix: ignore response release on errors
- 8c338fe fix: ignore setting metadata headers if response is error
- 3f5c124 fix: improve multiplex race condition handling
- b6cf66f fix: improve thread-safety of request handling for high load (erpc#65)
- cd1781b fix: imrove lock contention and performance of metrics tracker (erpc#137)
- e910b7d fix: in-flight multiplexr close mechanism and tests
- 89a6985 fix: install latest ca certificates on base image
- 6162113 fix: invalid normalization for eth_getStorageAt (erpc#41)
- 1e95e41 fix: isolated context per batch request item
- 7ec6c80 fix: keep explicitly set id of 0 to comply with json-rpc standard
- 8fa3607 fix: legend for grafana charts
- 1a52389 fix: less aggressive default circuit-breaker
- 6b4679a fix: lock response writing across goroutines
- 9e4136e fix: log which upstream is opening the CB
- 1d96a22 fix: lower default batch size to cover lowest usual setting
- 3e43419 fix: lower default value for memory-based cache
- 0648b1a fix: make erpc initialization non-blocking
- 9f41b28 fix: make feature-detection an optional flow
- f6fa994 fix: make network-level timeout for overall request lifecycle
- c558d14 fix: make request normalization more robust
- 5c89a15 fix: make upstream syncing state atomic for high concurrency
- a87be19 fix: monitoring and metrics improvements (cache/latency) (erpc#103)
- f395d8b fix: more broad reverted call err matcher
- d0cd26c fix: more cases for emptyish responses
- 75cb253 fix: more optimized handling of upstream capacity and empty responses
- d0b3fe0 fix: more robust directive apply with more trace logs
- f0c0520 fix: move cause outside error object to comply with subgraphs
- 9e1dcee fix: move request up a level to avoid redundant bodies
- b78a25f fix: move the response writer mutex to top-most handler
- f04c807 fix: multiplex network initialization
- 1caff45 fix: mutex for json-rpc response during parsing and reading
- 258bd0e fix: network might be nil if request is to detect network
- 9f2d396 fix: normalize rpc error label for lower cardinality
- 972508f fix: only add healthy nodes and fallbacks in default policy
- 6586374 fix: only initialize network once and parallelize different networks
- 273114b fix: only print debug if client-side exception
- e9d437d fix: parallelize per-network initializations
- 66ead5b fix: pass correct upstreams array to eval func
- f109e91 fix: pass logger to pg connector
- d39cb5b fix: peek only once for headers
- b9dfc3d fix: poll state before first policy evaluation
- 1b1531b fix: print full response when IDs were not found
- 091f964 fix: print provided project-id for ProjectNotFound errors (erpc#64)
- b7a1883 fix: propagate timeout policy duration via context
- 43781a9 fix: proper copy headers and args to avoid fasthttp crashes
- 3ed2cb0 fix: properly set default configs for lazy-loaded networks
- 262fd8b fix: properly translate cause to normalize CB errors
- 1027da6 fix: protect request params against race conditions
- fc413c6 fix: race conditions on tracker and rate limiters
- 3a9a408 fix: random docs fixes
- 42bc5a0 fix: readme
- ff4d92d fix: readme
- bf44f7c fix: readme
- 64f60e4 fix: readme
- c4acfae fix: readme
- 5f12cf5 fix: recover from request-level panics
- b399977 fix: recover panics per batch item request
- 3269903 fix: redact address first + consider missing trie as NotSyncedYet error
- 0c38648 fix: reduce noise for upstream sorting
- 473b46c fix: reduce potential race deadlocks when caching enabled
- 69bf0b9 fix: remove duration metrics for rate limiter test
- 65d3fc5 fix: remove missing multiplex entries
- 41a975a fix: remove redundant http writes
- 367dbf6 fix: remove response closure for multiplexed requests (erpc#96)
- 8506867 fix: remove tag substituion to avoid tracker deadlock
- d6fa3cb fix: remove unnecessary endpoint revert err
- c6922da fix: remove upstream read lock during forward loop
- c81d6b4 fix: report hedge cancellation as warn
- 9c352a8 fix: retry requests if they are cancelled as part of a batch
- d87fd60 fix: return an error when nothing written for batch items
- 47a94f5 fix: return error when upstream cannot initialize so it retries
- 016ae84 fix: return pending data even if all retries exhausted (erpc#77)
- 4cd0df1 fix: separate preparation and test logics for TestUpstreamsRegistry_ScoreCalculations
- 208e56c fix: simplify health checks as many are covered by failsafe policies
- 2bad145 fix: single mutex for upstream updates
- ff82b91 fix: site preview
- 61dd88d fix: skip auto-ignore when not defined
- e8e3e93 fix: skip caching for unfinalized txs without blockNumber
- 69f74f9 fix: skip checking finality state when state poller not initialized yet (erpc#124)
- 8f55e29 fix: skip finalized block request if upstream doesn't support it (erpc#126)
- 0b846ea fix: skip method exclusion for internal calls from evm state poller
- 56d08e2 fix: skip multiplexing if cannot calculate cache hash
- 2711192 fix: skip non-retriable upstreams within failover loop
- e71c985 fix: skip parsing ID when missing in response
- 7b412c1 fix: skip project check on admin endpoint
- 1b4acea fix: skip retry on CB only for upstream-level
- f413b71 fix: standard errors for incoming request errors
- 62a2c21 fix: stop fetchign finalized if node complains with missing data
- c5524fb fix: summarize upstream exhaust error for easier reading
- 4e267b2 fix: support best-effort block number and hash refrencing
- 3c55d67 fix: support blockHash for eth_getBlockReceipts and eth_getAccount
- 4944174 fix: support both int and string types for ID for different wallets (erpc#81)
- 38f1219 fix: support js config file + more types (erpc#123)
- 36264be fix: typo in image path
- 3ee6629 fix: typo in image path
- 2403954 fix: update alchemy chains subdomains
- 15feb36 fix: update readme
- 189ff0b fix: update test fake responder
- 5bc0ed9 fix: use -32000 for generic call exceptions for consistency with major providers
- 19d4392 fix: use atomic values for leaner race condition handling
- 021b857 fix: use client-side error when finalized/safe/pending is not supported
- e834476 fix: use exponential curve for score calculation for bigger gap between worst and best upstreams
- b239cb8 fix: use int64 for id across the board for requests and responses
- 78c1c2b fix: use mutex when iterating upstreams errors
- 2c9b21b fix: use mutex when reading and manipulating request
- c92cab4 fix: use mutex when updating evaluator state
- 13911fb fix: use node timeout error code for execution time on all providers
- c493f42 fix: use same mutex for any request-related manipulation
- 840b62f fix: use sync.Map and atomic values for metrics tracker
- 1a46dce fix: use sync.Map for prepared networks for concurrency safety
- af2f087 fix: wrap all rpc exceptions for proper code normalization
- db495f3 test- re-write TestUpstreamsRegistry_ScoreCalculations tests with sub-tests format
- 4c68954 wip: before decoupling stress func
- 824c33d wip: before file-based sampels
- 3248f1a wip: checkpoint to add weighted selection
- 41c9103 wip: lazy loading of projects, networks and upstreams
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.37
- 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"
}'