After the discussion on Point d'étape sur la Ğ1v2, it appears that the urgent need of a full featured indexer is not obvious. I will detail here:
- TypeScript: this will be of great help to use typescript everywhere in the indexer code. It will make future developments easier and code reuse more efficient.
- smith-related events: with the goal to welcome more smith in ĞDev network, we have to build tools making easier to read the state of smith subwot and smith statuses. Some info can be found in a very tedious way in polkadotjs, some other can not be found at all (like the cert history of smiths, the history of declared metadata (endpoints, session keys)… This is necessary for @guenoel’s internship.
- technical-committee-related events: while polkadotjs has good support for current votes, we need to get an history of the ĞDev votes who were submitted, expired, were accepted or rejected, and succeeded or failed. For example last vote to update technical committee failed with bad origin because we did not wrap it in upgrade origin, and this is very difficult to find this information back. Indexing these events is a limiting factor to migrate to Ğ1v2 and is urgent to explain the role of the technical committee and discuss its scope.
Here is a non-exhaustive list of events with checks when implemented. Please, precise if it is in your whishlist with a .
- duniter
- authorities
- IncomingAuthorities
- OutgoingAuthorities
- MemberGoOffline
- MemberGoOnline
- MemberRemoved
- cert
- NewCert
- RemovedCert
- RenewedCert
- duniter-account
- ForceDestroy
- RandomIdAssigned
- identity
- IdtyCreated
- IdtyConfirmed
- IdtyValidated
- IdtyChangedOwnerKey
- IdtyRemoved
- membership
- MembershipAcquired
- MembershipExpired
- MembershipRenewed
- MembershipRequested
- MembershipRevoked
- PendingMembershipExpired
- oneshot account
- OneshotAccountCreated
- OneshotAccountConsumed
- Withdraw
- provide randomness
- FilledRandomness
- RequestedRandomness
- universal dividend
- NewUdCreated
- UdReevalued
- UdsAutoPaidAtRemoval
- UdsClaimed
- upgrade origin
- DispatchedAsRoot
- authorities
- substrate
- frame-system
- ExtrinsicSuccess
- ExtrinsicFailed
- NewAccount
- KilledAccount
- Remarked
- pallet-atomic-swap
- pallet-authority-discovery
- pallet-authorship
- pallet-babe
- pallet-balances
- Endowed
- DustLost
- Transfer
- BalanceSet
- Reserved
- Unreserved
- ReserveRepatriated
- Deposit
- Withdraw
- Slashed
- pallet-collective
- Proposed
- Voted
- Approved
- Disapproved
- Executed
- MemberExecuted
- Closed
- pallet-grandpa
- NewAuthorities
- Paused
- Resumed
- pallet-im-online
- HeartbeatReceived
- AllGood
- SomeOffline
- pallet-offences
- Offence
- pallet-multisig
- NewMultisig
- MultisigApproval
- MultisigExecuted
- MultisigCancelled
- pallet-preimage
- Noted
- Requested
- Cleared
- pallet-proxy
- ProxyExecuted
- PureCreated
- Announced
- ProxyAdded
- ProxyRemoved
- pallet-scheduler
- Scheduled
- Canceled
- Dispatched
- CallUnavailable
- PeriodicFailed
- PermanentlyOverweight
- pallet-session
- NewSession
- pallet-sudo
- Sudid
- KeyChanged
- SudoAsDone
- pallet-timestamp
- pallet-transaction-payment
- TransactionFeePaid
- pallet-treasury
- Proposed
- Spending
- Awarded
- Rejected
- Burnt
- Rollover
- Deposit
- SpendApproved
- UpdatedInactive
- pallet-utility
- BatchInterrupted
- BatchCompleted
- BatchCompletedWithErrors
- ItemCompleted
- ItemFailed
- DispatchedAs
- frame-system
Because implementing all of this manually is a great effort, I think we should combine two strategies: a custom indexer with manual implementation and a generic indexer like Elois did setup with hasura to work with for specific applications that do not require manual implementation.
If somebody wants to work on the generic approach:
- revive Elois Hasura : Subsquid (ancienne Hydra): indexer de blockchain substrate exposant des API GraphQL - #19 by ManUtopiK
- setup new indexer based on subsquid : Subsquid for ĞDev