17 Commits

Author SHA1 Message Date
KirillPamPam
f2c1bd0628 Update deps (#877) 2026-06-30 16:59:58 +04:00
dependabot[bot]
e56bfae287 Bump org.yaml:snakeyaml from 1.24 to 2.6 in /buildSrc (#834)
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:49:36 +03:00
dependabot[bot]
08763f3815 Bump com.squareup:kotlinpoet from 1.14.2 to 2.3.0 in /buildSrc (#833)
Bumps [com.squareup:kotlinpoet](https://github.com/square/kotlinpoet) from 1.14.2 to 2.3.0.
- [Release notes](https://github.com/square/kotlinpoet/releases)
- [Changelog](https://github.com/square/kotlinpoet/blob/main/docs/changelog.md)
- [Commits](https://github.com/square/kotlinpoet/compare/1.14.2...2.3.0)

---
updated-dependencies:
- dependency-name: com.squareup:kotlinpoet
  dependency-version: 2.3.0
  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:49:20 +03: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
Vadim Filin
9a72a3232c Introduce Morph chain (#802)
* Introduce Morph chain

* Temp bind app type to ETHEREUM
2026-03-13 16:00:52 +01: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
Andrey Bronin
8b999d5439 Kadena support (#650)
* kadena support

* add kadena mempool endpoits

* createQuorumFor fix
2025-04-09 14:54:40 +03:00
oke11o
eca16ba30d Support Ripple blockchain (#630)
* Support Ripple blockchain
2025-02-13 15:13:31 +01:00
Aarif Khamdi
750310702a add toncenter (#580)
* add toncenter

* upd dep

* toncenter->ton

* toncenter->ton
2024-10-23 11:57:42 +05:00
KirillPamPam
e184bb3547 Predict lower height and use lower height matcher (#552) 2024-08-22 19:52:57 +04:00
a10zn8
4aff35994f add cosmos rpc support 2024-05-31 14:24:54 +03:00
KirillPamPam
d44b72ec69 Support beacon chain (#436) 2024-03-15 17:46:29 +04:00
a10zn8
8c5e69a7f5 near protocol support 2024-02-28 18:11:05 +03:00
a10zn8
2e80da58df solana support (#339) 2023-11-13 17:01:58 +03:00
a10zn8
66b9b00454 add base support of polkadot/substrate/vara chain (#332) 2023-11-02 16:18:54 +03:00
a10zn8
f3bf34768a generic upstreams introduced (#317)
- added base implementation of upstreams/multistreams
- connectors were generalised, chain specific logic was extracted to ChainSpecific class
- StarkNet network support based on generic upstreams added
2023-10-09 23:17:16 +04:00
Vyacheslav
ef6af898e0 Chains config refactoring (#311)
Generate code from chains config
2023-09-29 13:36:34 +03:00