57 lines
3.6 KiB
Markdown
57 lines
3.6 KiB
Markdown
<!-- file: kb_materializer_staking/README.md -->
|
|
<!-- version: 3 -->
|
|
|
|
# kb_materializer_staking
|
|
|
|
Ce crate produit des projections instructionnelles stables pour les observations natives Stake et Vote décodées par `kb_decoder_solana_core`.
|
|
|
|
## Statut
|
|
|
|
`0.4.1-pre.021` active le matérialiseur sous l'identité :
|
|
|
|
```text
|
|
solana_native_staking
|
|
```
|
|
|
|
Le matérialiseur est enregistré par `kb_app_demo::demo_decode_replay` avec les autres matérialiseurs natifs. Il applique `SuccessfulCommittedOnly` : une transaction échouée ou une observation non commitée reste décodable, mais ne produit aucune sortie métier mutable.
|
|
|
|
## Surfaces couvertes
|
|
|
|
### Stake Program
|
|
|
|
Les projections sont instructionnelles et ne prétendent pas reconstruire l'état final du compte Stake.
|
|
|
|
| Domaine | Entrées |
|
|
|-------------------|-----------------------------------------------------------------------------------|
|
|
| `stake_account` | initialize, initialize_checked, delegate_stake, deactivate, deactivate_delinquent |
|
|
| `stake_value` | split, withdraw, merge, move_stake, move_lamports |
|
|
| `stake_authority` | authorize, authorize_with_seed, authorize_checked, authorize_checked_with_seed |
|
|
| `stake_lockup` | set_lockup, set_lockup_checked |
|
|
|
|
`redelegate` reste ignoré : l'instruction est conservée par le décodeur comme intention historique officiellement désactivée, mais elle ne doit pas produire une mutation staking réussie.
|
|
|
|
### Vote Program
|
|
|
|
| Domaine | Entrées |
|
|
|------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
| `vote_account` | initialize_account, initialize_account_v2 |
|
|
| `vote_authority` | authorize, authorize_checked, authorize_with_seed, authorize_checked_with_seed |
|
|
| `vote_admin` | update_validator_identity, update_commission, update_commission_collector, update_commission_bps |
|
|
| `vote_state` | vote, vote_switch, update_vote_state, update_vote_state_switch, compact_update_vote_state, compact_update_vote_state_switch, tower_sync, tower_sync_switch |
|
|
| `vote_value` | withdraw |
|
|
| `vote_reward` | deposit_delegator_rewards |
|
|
|
|
`deposit_delegator_rewards` produit une sortie de famille `Reward`; les autres sorties produisent une famille matérialisée `Staking`.
|
|
|
|
## Limites explicites
|
|
|
|
Le crate ne reconstruit pas :
|
|
|
|
- activation/désactivation effective d'un stake par epoch ;
|
|
- crédits Vote cumulés ;
|
|
- statut final exact d'un compte après withdraw ;
|
|
- état antérieur et état suivant du compte ;
|
|
- sysvars historiques non portées par le core replay.
|
|
|
|
Ces projections doivent donc être lues comme des événements instructionnels commités. Les snapshots d'état final seront un futur contrat distinct lorsque le replay core transportera les données de comptes et sysvars nécessaires.
|