Commit Graph

58 Commits

Author SHA1 Message Date
pezkuwichain 45784e1196 fix: handle pruned state in event fetch to prevent crash loops
When SubQuery restarts and the last processed block's state has been
pruned by the RPC node, fetchEventsRange would crash the indexer in a
loop. Now returns empty events for pruned blocks so the indexer can
skip forward gracefully.
2026-02-21 17:30:34 +03:00
pezkuwichain a4a5314f79 Add auto-payout bot for AH staking rewards
- payout-bot/bot.js: Periodically calls payoutStakersByPage for all
  validators in completed eras. Runs every 10 minutes.
- payout-bot/Dockerfile: Node 20 alpine with @pezkuwi/api
- docker-compose.prod.yml: Add payout-bot service with secret mnemonic
2026-02-21 17:03:13 +03:00
pezkuwichain 9259b68a3d Refactor: remove dead relay staking code, add AH reward handlers
- Delete NewEra.ts (all relay staking code was dead)
- Refactor Rewards.ts: remove relay/parachain handlers, add handleAHRewarded/handleAHSlashed for Asset Hub staking rewards
- Add staking::Rewarded and staking::Slashed handlers to pezkuwi-assethub.yaml
- Remove dead cachedStakingRewardEraIndex from Cache.ts
- Clean unused PEZKUWI_RELAY_GENESIS import from PoolRewards.ts
2026-02-21 14:23:58 +03:00
pezkuwichain fc5d101b75 fix: noter bot queries staking data from Asset Hub instead of Relay Chain
Staking pallet moved from RC to AH. Updated noter to query
assetHubApi.query.staking.* for direct staking data.
2026-02-21 14:12:48 +03:00
pezkuwichain 6c5b7ae879 feat: save direct nominators and validators as activeStakers on AH
Previously only pool stash accounts were saved as activeStakers.
Direct nominators/validators on Asset Hub were missing, causing
the wallet dashboard to show INACTIVE for direct stakers.
2026-02-21 02:42:18 +03:00
pezkuwichain 727deaefb6 Fix Prettier formatting 2026-02-21 01:49:53 +03:00
pezkuwichain 57563c7fc0 Remove obsolete docker-compose version attribute 2026-02-21 01:46:24 +03:00
pezkuwichain 3cc7a7b245 Remove relay staking handlers after pallet removal (spec 1_020_006)
Staking pallet (index 9), FastUnstake (15), and VoterBagsList (100)
were removed from the relay chain. The relay indexer now only tracks
transfers and signed extrinsics. Added safety try-catch to staking
queries in case handlers are accidentally re-enabled.
2026-02-21 01:40:34 +03:00
pezkuwichain 8a5681db33 fix: use GITHUB_TOKEN instead of PAT_TOKEN for branch sync 2026-02-19 06:21:26 +03:00
pezkuwichain ae0dac0a11 ci: add sync-branches workflow to keep main and master in sync 2026-02-19 05:55:42 +03:00
pezkuwichain fe95e137b3 fix: use explicit yaml path for codegen and build in deploy 2026-02-19 04:38:59 +03:00
pezkuwichain 37ee9ffd9f fix: add yarn build to deploy workflow
dist/ is gitignored so VPS needs to build TypeScript
handlers locally after git pull.
2026-02-19 04:34:16 +03:00
pezkuwichain dcbd38fb5f fix: set startBlock to current chain height
RPC nodes run in pruned mode (~256 blocks state history).
Setting startBlock to recent blocks ensures all required
state is available. Old blocks have no significant user
transactions to index.
2026-02-19 02:33:47 +03:00
pezkuwichain 0130c5984a fix: also patch @polkadot/api Init.js for pruned state
The _getBlockRegistryViaHash method in @polkadot/api calls
getRuntimeVersion.raw(header.parentHash) which fails for genesis
and other pruned blocks. Add fallback to current runtime version.
2026-02-19 02:28:40 +03:00
pezkuwichain d270504c9a fix: handle pruned RPC state in SubQuery node
Substrate nodes prune historical state by default (~256 blocks).
When SubQuery restarts and tries to fetch runtime version for old
blocks, it crashes with "State already discarded". This patch adds
a fallback to current runtime version when historical state is
unavailable, preventing crash loops on pruned RPC endpoints.

Also removes --pull from deploy workflow to avoid unnecessary
full rebuilds on every push.
2026-02-19 02:22:52 +03:00
pezkuwichain 151389a0cc style: fix prettier formatting across mapping files 2026-02-19 01:51:15 +03:00
pezkuwichain 71f0cce337 feat(governance): add OpenGov v2 indexer for referenda, votes, delegations
Index convictionVoting and referenda pallet data to support PezWallet
governance UI — referendum tracking, casting votes, delegation stats,
and delegator vote propagation.
2026-02-19 01:40:21 +03:00
pezkuwichain f717173d3d fix: use AH totalIssuance for APY, filter tiny-stake validator outliers 2026-02-18 06:13:31 +03:00
pezkuwichain b4e765ee50 fix: use relay total supply constant for AH APY calculation 2026-02-18 06:04:21 +03:00
pezkuwichain a7d11ce6a2 feat: add APY computation to AH SubQuery, clean relay SubQuery from AH pool logic 2026-02-18 06:00:45 +03:00
pezkuwichain 5447579477 feat: save pool stash active stakers with AH genesis from relay SubQuery 2026-02-18 05:55:05 +03:00
pezkuwichain 9c9c2a132f fix: add 'modl' prefix to pool stash derivation to match Substrate PalletId::into_sub_account_truncating 2026-02-18 05:42:45 +03:00
pezkuwichain c22f9b90e0 fix: convert Uint8Array to hex string for AccountId createType 2026-02-18 05:23:45 +03:00
pezkuwichain 358f13db50 fix: save pool stash accounts with relaychain type for wallet compat
The wallet queries activeStakers with the pool's bonded stash address
and stakingType="relaychain" (unwrapped from nomination-pool). Derive
pool stash accounts from bondedPools and save with correct type.
2026-02-18 05:18:44 +03:00
pezkuwichain 81c6c89bfb fix: read validators from overview to capture all active stakers
Validators with only self-stake (no nominator pages) were missing.
Now reads erasStakersOverview for complete validator list.
2026-02-18 04:50:18 +03:00
pezkuwichain 3dc7a19dee fix: add relay block handler to init active stakers from chain state
The event-based StakersElected handler had a bug where paged exposure
data wasn't properly extracted. Add handleRelayBlock that queries
erasStakersPaged directly from live chain state on first block to
ensure all validators and nominators are captured.
2026-02-18 04:44:57 +03:00
pezkuwichain 7b58fa0e4a feat: add AH GraphQL engine + block handler for pool stakers init
- Add handleBlock to query live chain state for existing pool members
- Add second GraphQL engine container for Asset Hub schema (port 3001)
- Register block handler in pezkuwi-assethub.yaml
2026-02-18 04:07:45 +03:00
pezkuwichain 1c79402d5c feat: track nomination pool members as active stakers
Add handlePoolBonded/handlePoolUnbonded handlers to Asset Hub SubQuery.
When a user bonds to a nomination pool, they are saved as an ActiveStaker
with networkId=AssetHub and stakingType=nomination-pool. This fixes the
wallet showing INACTIVE for HEZ stakers.
2026-02-18 03:14:44 +03:00
pezkuwichain 407cba9aef fix: noter bot RPC endpoints point to VPS3 chain nodes 2026-02-17 01:55:05 +03:00
pezkuwichain 64c5f9e5d6 feat: add noter secret setup script 2026-02-17 01:35:02 +03:00
pezkuwichain 174bd41d6e feat: add noter bot service for staking score data submission 2026-02-17 01:32:51 +03:00
pezkuwichain eefae7469d Update genesis hashes and startBlock for mainnet relaunch
- Relay chain: 0xbb4a61ab... -> 0x1aa94987...
- Asset Hub: 0x00d0e1d0... -> 0xe7c15092...
- Reset startBlock to 1 for full re-index from genesis
2026-02-15 22:18:07 +03:00
pezkuwichain 8f051d719a Fix prettier formatting 2026-02-14 04:45:15 +03:00
pezkuwichain 9ca7f8d00f Add TZ=UTC to SubQuery node environments 2026-02-14 04:37:14 +03:00
pezkuwichain a8b7d16b97 Patch api-augment exports map instead of filesystem shim
Node.js checks package.json exports before filesystem, so the
mkdir+echo shim didn't work. Now patches the exports map with
node -e to add ./substrate pointing to pezkuwi augmentation.
2026-02-14 04:33:32 +03:00
pezkuwichain 01ec544b84 Add rpc-augment alias and substrate shim to Dockerfile.node
- Add missing @polkadot/rpc-augment alias to @pezkuwi/rpc-augment
- Create substrate shim for @polkadot/api-augment/substrate that
  re-exports @pezkuwi/api-augment's pezkuwi augmentation, fixing
  ERR_PACKAGE_PATH_NOT_EXPORTED when @subql/node requires it
2026-02-14 04:27:04 +03:00
pezkuwichain 43e4a5d939 Use custom Dockerfile.node with @pezkuwi API aliases instead of generic subql-node 2026-02-14 04:15:57 +03:00
pezkuwichain dd2c3c7d1b Lower relay startBlock to 199000 to capture StakersElected event 2026-02-14 03:32:37 +03:00
pezkuwichain 6123284d95 Lower relay startBlock to 199500 to capture era 6 transition 2026-02-14 03:22:00 +03:00
pezkuwichain 433553e4d0 Set Asset Hub startBlock closer to head for pruned RPC 2026-02-14 02:54:47 +03:00
pezkuwichain a4b711f7b4 Update startBlock to recent values for pruned RPC compatibility 2026-02-14 02:47:03 +03:00
pezkuwichain 04f0042e0d Add explicit --db-schema to separate relay and assethub schemas 2026-02-14 02:41:23 +03:00
pezkuwichain 076b54bdc9 Add multi-staking entities, APY calculation, Asset Hub indexer support
- Add StakingApy, ActiveStaker, Reward entities to schema.graphql
- Add APY calculation engine in NewEra.ts (inflation curve + validator commission)
- Add saveMultiStakingReward to Rewards.ts and PoolRewards.ts
- Add handleAssetTransfer for assets.Transferred events
- Add constants.ts with genesis hashes and inflation params
- Add docker-compose.prod.yml for production deployment (relay + assethub nodes)
- Add deploy-vps.yml GitHub Actions workflow for auto-deploy on push
2026-02-14 02:38:22 +03:00
pezkuwichain 9922e8ba89 Fix query service schema and set startBlock for pruned RPC
- Change query service --name=app to --name=project to match node schema
- Set startBlock to 185900 (RPC endpoints are pruned, no archive available)
2026-02-13 02:51:44 +03:00
pezkuwichain 74e29b92f4 Use standard onfinality/subql-node - chainTypes handles Pezkuwi recognition 2026-02-13 02:32:14 +03:00
pezkuwichain a18cb0019e Fix wasm-crypto package versions (7.5.x) 2026-02-13 02:28:15 +03:00
pezkuwichain dcf901660a Add wasm-crypto packages to SubQuery node aliases 2026-02-13 02:27:09 +03:00
pezkuwichain 30899df0a4 Add self-hosted SubQuery node with @pezkuwi aliases
- Custom Dockerfile.node that aliases @polkadot/* to @pezkuwi/* packages
- Updated docker-compose.yml to build custom node image
- Added chainTypes/pezkuwi.json with Pezkuwi type definitions
- Updated pezkuwi.yaml manifest with chaintypes reference
- Added @subql/common-substrate dependency

This allows running SubQuery node with Pezkuwi chain recognition
instead of showing "Unknown Network" error.
2026-02-13 02:17:48 +03:00
pezkuwichain 0b0519bff8 Add codegen step to security workflow and fix prettier formatting 2026-02-13 01:51:37 +03:00
pezkuwichain 62550b442b Fix subql CLI syntax and remove non-existent validate command 2026-02-13 01:48:50 +03:00