- Constante :
ASSET_WEIGHTS_OPTIMIZATION_ACTIVATION_BLOCK = 1000000 - Fonction :
shouldUseOptimizedAssetWeights()- vérifie le block height - Actif seulement après le block d'activation
getValidatorTotalAssetWeightsFromStore()- lecture cachesetValidatorTotalAssetWeightsInStore()- écriture cacheupdateValidatorAssetWeightsCache()- mise à jour incrémentalecalculateAssetWeightChanges()- calcul des différences
sort.Strings(denoms)dans toutes les fonctions- Ordre des asset weights toujours identique
- Maps converties en slices triées
SetDelegation(): récupère l'ancienne délégation AVANT de stocker la nouvelleRemoveDelegation(): soustrait les asset weights du cache- Pas de code dupliqué
- 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
- Si cache non trouvé → recalcul complet et stockage
- Si optimisation désactivée → calcul standard
- Pas de breaking changes
- ❌
asset_weights_cache.go(fichier inutile) - ❌
UpdateValidatorTotalAssetWeights()(fonction wrapper inutile) - ❌
updateValidatorAssetWeightsCacheWithDelta()(dupliqué)
- ✅ Déterministe
- ✅ Performant
- ✅ Activation contrôlée
- ✅ Code clean
- ✅ Compatible avec le système d'epochs