216 Commits

Author SHA1 Message Date
Artem Rootman
66d9e8078a chore: bump public submodule to 2120281 (adds Mova chain) (#882)
Bumps foundation/src/main/resources/public 0a070aac -> 2120281, pulling in
drpcorg/public#237, #238, #240, #241:

- Add Mova chain (MOVA_MAINNET 0xf1cc / grpcId 1170, MOVA_TESTNET 0x2853 /
  grpcId 10205) — the deployed dshackle image did not know the chain, so the
  mova-nodecore upstream in dshackle-public-multiregion was silently skipped
- aptos: fork-choice: height
- jovay: disable-log-index-validation
- tron: support-safe-block-tag: false (new optional schema key, ignored by
  ChainsConfigReader which reads keys explicitly)

Diff is additive only (+28 lines): no chain-id/grpcId changes to existing chains.
2026-07-27 13:16:54 +00:00
KirillPamPam
f2c1bd0628 Update deps (#877) 2026-06-30 16:59:58 +04:00
Vadim Filin
634291bc98 Fix hl (#869)
* fix(hyperliquid): derive native-tx routing labels from the ?hl= URL flag

The include_hl_native_tx/exclude_hl_native_tx detector classified a node by scanning the last 300 blocks for a system (native) topup tx from a per-chain address. That cannot work on testnet:

- the configured testnet address 0x6ed35e7d6de4b45f4efb8a91eff31afa49362569 was a regular bot (non-zero gasPrice, not filtered by hl-compliant mode, present on both node types);
- real testnet system txs (from 0x2222...) are far too sparse and bursty (median gap ~1200 blocks, max ~9000 = ~2.5h at ~1s/block) for any practical window;
- eth_getLogs is identical between compliant and non-compliant modes, so there is no cheap wide-range signal either.

Our hl-node upstreams already encode the mode in the URL (?hl=false serves native txs, ?hl=true is compliant). Read that flag directly:
- GenericUpstream captures the configured RPC/WS URL and exposes getRpcConnectionUrl();
- detectHlNativeTx emits include/exclude_hl_native_tx straight from ?hl= when present (cheap, exact, drift-free), for both mainnet and testnet;
- it falls back to the recent-blocks scan only when there is no ?hl= flag, and only on mainnet (testnet without the flag is too sparse to classify);
- the bogus HL_NATIVE_TX_FROM_TESTNET constant is removed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Fix hl

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 13:41:41 +02:00
Vadim Filin
2ddd9c8889 Update emerald-grpc and foundation submodule references (#866)
* add Humanity chain (grpcId 1167)

Bump emerald-grpc and foundation public submodules to include
CHAIN_HUMANITY__MAINNET. Chain.kt is generated at build time.

* add Humanity testnet (grpcId 10202)

bump emerald-grpc and foundation public submodules

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-06-02 14:47:19 +02:00
msizov
6dd2ee566f add kite mainnet, robinhood mainnet (#865) 2026-05-29 16:19:47 +05:00
KirillPamPam
998e1ac933 newPedningTransactions validator (#864) 2026-05-26 17:13:31 +04:00
KirillPamPam
47dcf9a832 Botanix (#859) 2026-05-22 15:23:02 +04:00
KirillPamPam
c4502ce513 Add chains (#856) 2026-05-19 12:57:20 +04:00
EugeneDrpc
ca08c8f474 adi update (#854) 2026-05-18 16:41:33 +02:00
dependabot[bot]
afa254d3c0 Bump org.yaml:snakeyaml from 1.24 to 2.6 in /foundation (#840)
Bumps [org.yaml:snakeyaml](https://bitbucket.org/snakeyaml/snakeyaml) from 1.24 to 2.6.
- [Commits](https://bitbucket.org/snakeyaml/snakeyaml/branches/compare/snakeyaml-2.6..snakeyaml-1.24)

---
updated-dependencies:
- dependency-name: org.yaml:snakeyaml
  dependency-version: '2.6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-18 14:58:26 +03:00
dependabot[bot]
91d2745382 Bump the gradle-minor-and-patch group in /foundation with 3 updates (#839)
Bumps the gradle-minor-and-patch group in /foundation with 3 updates: [org.junit.jupiter:junit-jupiter](https://github.com/junit-team/junit-framework), [org.jetbrains.kotlin.jvm](https://github.com/JetBrains/kotlin) and [gradle-wrapper](https://github.com/gradle/gradle).


Updates `org.junit.jupiter:junit-jupiter` from 6.0.1 to 6.0.3
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](https://github.com/junit-team/junit-framework/compare/r6.0.1...r6.0.3)

Updates `org.jetbrains.kotlin.jvm` from 2.3.0 to 2.3.21
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v2.3.0...v2.3.21)

Updates `gradle-wrapper` from 9.2.0 to 9.5.1
- [Release notes](https://github.com/gradle/gradle/releases)
- [Commits](https://github.com/gradle/gradle/compare/v9.2.0...v9.5.1)

---
updated-dependencies:
- dependency-name: org.junit.jupiter:junit-jupiter
  dependency-version: 6.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-minor-and-patch
- dependency-name: org.jetbrains.kotlin.jvm
  dependency-version: 2.3.21
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-minor-and-patch
- dependency-name: gradle-wrapper
  dependency-version: 9.5.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gradle-minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-18 14:50:27 +03:00
EugeneDrpc
3c4fe8985e Update submodules (#828) 2026-05-13 11:09:59 +02:00
a10zn8
43b9d50484 Add B² Network mainnet support (#826) 2026-05-08 11:56:37 +03:00
a10zn8
5f454f5247 Feat/autodetect trace rawtx and storage values (#825) 2026-05-05 16:25:17 +03:00
Vadim Filin
06ce6927e2 Add abcore (#817) 2026-04-28 19:16:37 +02:00
Vadim Filin
08713cef56 Add orderly support (#816) 2026-04-24 13:09:58 +02:00
Vadim Filin
24d54d34d7 Update chains (#814) 2026-04-23 17:45:41 +02:00
Vadim Filin
5414e06e46 Add support for Algorand Virtual Machine (AVM) blockchain (#813)
* add AVM blockchain type support for Algorand

Introduce a new blockchain type `avm` (Algorand Virtual Machine) so
Algorand-based chains (Mainnet, Testnet, Betanet) declared in chains.yaml
can be parsed and driven through dshackle's generic polling pipeline.

Key additions:
- BlockchainType.AVM (JSON_RPC) and `avm` mapping in chain codegen
- AvmChainSpecific: polls `algod_getBlock` for latest block and uses
  `algod_status` / `algod_genesis` for health and settings validation
- DefaultAvmMethods: allowed algod_* RPC surface with send-transaction
  broadcast quorum and hardcoded `algod_chainId` / `algod_genesisId`
- AvmLowerBoundService / AvmLowerBoundStateDetector for lower-bound tracking
- Registration in ChainSpecificRegistry and CallTargetsHolder
- Unit tests for block parsing, sync validation and method policies

https://claude.ai/code/session_01TZ64DZis9YaJSU3oMwtRLe

* inline DummyChainReader in AVM test

Match the Starknet test pattern and drop the dedicated DummyChainReader
file; instead pass an anonymous ChainReader directly where needed.

https://claude.ai/code/session_01TZ64DZis9YaJSU3oMwtRLe

* fix AVM network validation logic

Validation used AND across all conditions, so when netVersion was 0
(typical for non-EVM chains) the check short-circuited and allowed a
mismatching chain.chainId through. Simplify to the Cosmos pattern:
reject when chain.chainId is set and doesn't match genesis.network.

https://claude.ai/code/session_01TZ64DZis9YaJSU3oMwtRLe

* switch AVM to REST transport for native algod nodes

Native Algorand algod nodes expose a REST API (/v2/status, /v2/blocks,
/v2/transactions, ...) rather than JSON-RPC, so drive AVM upstreams
through dshackle's REST reader instead:

- BlockchainType.AVM is now ApiType.REST
- AvmChainSpecific polls GET#/v2/status for latest block info and uses
  GET#/v2/genesis for chain-id validation, both via RestParams
- DefaultAvmMethods exposes the algod /v2 endpoints with VERB#/path
  identifiers (POST#/v2/transactions uses BroadcastQuorum for sends)
- Tests updated to match the REST-based method names

https://claude.ai/code/session_01TZ64DZis9YaJSU3oMwtRLe

* align AVM endpoints with algod OpenAPI spec

Validated the AVM method surface against the official algod spec
(algorand/go-algorand algod.oas3.yml) and corrected mismatches:

Wrong paths removed:
- GET /v2/genesis, /v2/versions, /v2/health, /v2/ready, /v2/metrics
  (these exist at root level, not under /v2/)
- GET /v2/blocks/{round}/header (use header-only query on /v2/blocks/{round})
- GET /v2/blocks/{round}/transactions (no such path)
- GET /v2/lightheader/{round} (real path is /v2/blocks/{round}/lightheader/proof)
- POST /v2/transactions/dryrun (real path is /v2/teal/dryrun, already listed)

Added real endpoints:
- Root: GET /genesis, /health, /ready, /metrics, /versions, /swagger.json
- /v2/blocks/*/txids, /v2/blocks/*/logs, /v2/blocks/*/lightheader/proof
- /v2/accounts/*/transactions/pending
- /v2/deltas/*, /v2/deltas/*/txn/group, /v2/deltas/txn/group/*

Also fixed AvmChainSpecific settings validator: use GET#/genesis (root)
instead of the non-existent GET#/v2/genesis.

Added regression test asserting the spurious paths are NOT callable.

https://claude.ai/code/session_01TZ64DZis9YaJSU3oMwtRLe

* fetch real AVM block data via chained api.read

parseBlock now uses the ChainReader passed through AbstractPollChainSpecific
to fetch GET#/v2/blocks/{lastRound}?header-only=true after /v2/status,
so BlockContainer.timestamp comes from block.ts and hash/parentHash
decode from block.seed/block.prev (base64 -> 32 raw bytes) instead of
being synthesized from the round number.

Also differentiate quorum per method in DefaultAvmMethods: single-
resource lookups (/v2/blocks/{round}, /v2/accounts/{addr}, etc.) now
use NotNullQuorum so a single replica returning empty/404 doesn't
shadow a valid response from another upstream. List and status
endpoints keep AlwaysQuorum; send endpoints keep BroadcastQuorum.

https://claude.ai/code/session_01TZ64DZis9YaJSU3oMwtRLe

* Update submodules

* Update chains

* Fix settings validation

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-04-23 13:10:56 +02:00
msizov
e8232231df add lower bound cronos (#810) 2026-04-16 18:20:46 +05:00
msizov
f38bc660c3 update public repo (#809) 2026-04-16 17:26:15 +05:00
Anton
56f6bb3a7b Add Robinhood and TAC Chains (#804)
* add Robinhood Chain testnet support

Update emerald-grpc submodule with CHAIN_ROBINHOOD__TESTNET = 10190.

* update submodules to include TAC chain merge

Sync emerald-grpc and public submodules to latest.
2026-03-17 19:31:18 +03:00
msizov
d259c3933a update polygon's chains.yaml entry (#803) 2026-03-17 15:41:18 +05:00
Vadim Filin
9a72a3232c Introduce Morph chain (#802)
* Introduce Morph chain

* Temp bind app type to ETHEREUM
2026-03-13 16:00:52 +01:00
KirillPamPam
fc85b68175 New pub (#798) 2026-03-02 17:43:47 +04:00
KirillPamPam
7d73099e72 New pub (#797) 2026-02-26 17:39:00 +04:00
Anton
b375fd34b4 Update saigon chain id (#791) 2026-02-06 00:15:11 +03:00
Vadim Filin
ee72ca37be Update saigon chain id (#790) 2026-02-06 00:10:48 +03:00
Anton
1c4b0e93d2 feat: add Moca mainnet and testnet chain (#789) 2026-02-05 16:17:59 +03:00
Artem Rootman
21d36f07af update chains.yaml (#786) 2026-01-30 19:20:42 +03:00
Artem Rootman
4d4a2ed655 add aztec networks (#785)
* add aztec networks

* fix linter errors & checkout from main (public)

* fix AztecLowerBoundService
2026-01-30 19:04:05 +03:00
Vadim Filin
116807054a Add tempo support (#784) 2026-01-29 21:12:40 +07:00
Vadim Filin
5b4e8884ba Handle 429 error (#782) 2026-01-28 18:06:14 +07:00
KirillPamPam
3b5940cc20 Integrate rx/receipts gold bounds (#781) 2026-01-28 12:54:50 +04:00
KirillPamPam
897d98dfb1 MegaETH support (#779) 2026-01-23 13:49:58 +04:00
msizov
40fdabe790 add tempo moderato testnet (#778) 2026-01-21 16:31:22 +05:00
Anton
cd57300751 Solana Head Detection: slotSubscribe (#772)
* Implement Solana head detection strategies with metrics tracking and testing

* Add benchmark tests for Solana BlockSubscribe and SlotSubscribe strategies

* Implement metrics logging and strategy configuration for Solana head detection

* Add metrics logging and comparison for SLOT_SUBSCRIBE strategy

* Refactor SolanaChainSpecificTest: Consolidate tests for slotSubscribe strategy, remove BlockSubscribe tests, and enhance caching logic. Delete SolanaStrategyBenchmark for performance comparison.

* add synthetic parentHash, improve tests

* Fix linter

* Optimize Solana getLatestBlock to use single getEpochInfo call
Replace two separate RPC calls (getSlot + getBlockHeight) with a single getEpochInfo call that returns both absoluteSlot and blockHeight

* Enhance height estimation logic in SolanaChainSpecific: Implement optimistic height estimation and improve error handling for RPC failures. Update tests to validate new behavior.

* Refactor height verification in SolanaChainSpecific: Replace getBlockHeight with getEpochInfo for improved efficiency and accuracy in height estimation. Update logic to handle actual slot and height retrieval.
2026-01-19 11:25:16 +03:00
KirillPamPam
4a9de83815 New chains (#769) 2026-01-08 17:42:29 +04:00
KirillPamPam
536c663b2a Update dependencies (#767) 2026-01-06 16:32:03 +04:00
Anton
9d4f4a185e add tempo tesnet and update xlayer testnet (#764) 2025-12-24 11:59:13 +03:00
KirillPamPam
0f42f34061 Update pub (#753) 2025-12-09 15:12:42 +04:00
a10zn8
080d92a6c1 update public (#748) 2025-12-02 14:26:52 +03:00
EugeneDrpc
ea7e8ef07c public submodule update (#747) 2025-12-01 16:12:58 +01:00
KirillPamPam
1381400a98 Update deps (#742) 2025-11-11 18:44:54 +04:00
KirillPamPam
a491983a87 Fix bsc state bound detection (#741) 2025-11-06 13:46:19 +04:00
a10zn8
8d042f4a10 update taiko chainid (#735) 2025-10-28 15:52:34 +03:00
a10zn8
475829249e add arc (#734) 2025-10-27 00:32:17 +03:00
a10zn8
fba0b139c3 add sophor support (#732) 2025-10-10 16:07:24 +03:00
a10zn8
3bd4ab3b28 add doma network (#731) 2025-10-09 00:12:29 +03:00
Anton
b7f6f4b0d4 0g upd chainid (#729) 2025-10-01 14:35:05 +03:00
Anton
cb1dbc9510 Add Taiko Hoodi & fix katana testnet (#728) 2025-09-30 13:06:13 +03:00