Skip to content

Latest commit

 

History

History
46 lines (37 loc) · 1.7 KB

File metadata and controls

46 lines (37 loc) · 1.7 KB

Asset Weights Optimization - Clean Implementation

✅ Code propre et déterministe

1. Activation contrôlée

  • Constante : ASSET_WEIGHTS_OPTIMIZATION_ACTIVATION_BLOCK = 1000000
  • Fonction : shouldUseOptimizedAssetWeights() - vérifie le block height
  • Actif seulement après le block d'activation

2. Fonctions optimisées dans delegation.go

  • getValidatorTotalAssetWeightsFromStore() - lecture cache
  • setValidatorTotalAssetWeightsInStore() - écriture cache
  • updateValidatorAssetWeightsCache() - mise à jour incrémentale
  • calculateAssetWeightChanges() - calcul des différences

3. Déterminisme garanti

  • sort.Strings(denoms) dans toutes les fonctions
  • Ordre des asset weights toujours identique
  • Maps converties en slices triées

4. Intégration propre

  • SetDelegation() : récupère l'ancienne délégation AVANT de stocker la nouvelle
  • RemoveDelegation() : soustrait les asset weights du cache
  • Pas de code dupliqué

5. Performance

  • Avant : O(total_delegations) par validateur à chaque historisation
  • Après : O(1) par validateur (cache pré-calculé)
  • Cache mis à jour seulement lors des modifications de délégation

6. Fallback sécurisé

  • Si cache non trouvé → recalcul complet et stockage
  • Si optimisation désactivée → calcul standard
  • Pas de breaking changes

Code supprimé

  • asset_weights_cache.go (fichier inutile)
  • UpdateValidatorTotalAssetWeights() (fonction wrapper inutile)
  • updateValidatorAssetWeightsCacheWithDelta() (dupliqué)

Prêt pour production

  • ✅ Déterministe
  • ✅ Performant
  • ✅ Activation contrôlée
  • ✅ Code clean
  • ✅ Compatible avec le système d'epochs