Skip to content

0.0.37

Latest

Choose a tag to compare

@github-actions github-actions released this 04 Jan 16:07
· 70 commits to main since this release
05f6a81

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

  1. Create your erpc.yaml configuration file:
touch erpc.yaml
code erpc.yaml
  1. 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
  1. 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"
}'