MCPcopy Create free account
hub / github.com/Sifchain/sifnode / BalanceModuleAccountCheck

Method BalanceModuleAccountCheck

x/clp/keeper/invariants.go:14–48  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

12}
13
14func (k Keeper) BalanceModuleAccountCheck() sdk.Invariant {
15 return func(ctx sdk.Context) (string, bool) {
16 // Get Rowan Balance from CLP Module
17 clpModuleTotalNativeBalance := k.GetBankKeeper().GetBalance(ctx, types.GetCLPModuleAddress(), types.GetSettlementAsset().Symbol)
18 clpModuleTotalNativeBalanceUint := sdk.NewUintFromString(clpModuleTotalNativeBalance.Amount.String())
19
20 pools := k.GetPools(ctx)
21 poolsTotalNativeBalanceUint := sdk.ZeroUint()
22 poolsTotalNativeCustodyUint := sdk.ZeroUint()
23 for _, pool := range pools {
24 poolsTotalNativeBalanceUint = poolsTotalNativeBalanceUint.Add(pool.NativeAssetBalance)
25 poolsTotalNativeCustodyUint = poolsTotalNativeCustodyUint.Add(pool.NativeCustody)
26
27 clpModuleTotalExternalBalance := k.GetBankKeeper().GetBalance(ctx, types.GetCLPModuleAddress(), pool.ExternalAsset.Symbol)
28 clpModuleTotalExternalBalanceUint := sdk.NewUintFromString(clpModuleTotalExternalBalance.Amount.String())
29
30 ok := pool.ExternalAssetBalance.Add(pool.ExternalCustody).Equal(clpModuleTotalExternalBalanceUint)
31 if !ok {
32 return fmt.Sprintf("external balance mismatch in pool %s (module: %s != pool: %s)",
33 pool.ExternalAsset.Symbol,
34 clpModuleTotalExternalBalanceUint.String(),
35 pool.ExternalAssetBalance.String()), true
36 }
37 }
38
39 ok := poolsTotalNativeBalanceUint.Add(poolsTotalNativeCustodyUint).Equal(clpModuleTotalNativeBalanceUint)
40 if !ok {
41 return fmt.Sprintf("native balance mismatch across all pools (module: %s != pools: %s)",
42 clpModuleTotalNativeBalanceUint.String(),
43 poolsTotalNativeBalanceUint.String()), true
44 }
45
46 return "pool and module account balances match", false
47 }
48}
49
50func (k Keeper) SingleExternalBalanceModuleAccountCheck(externalAsset string) sdk.Invariant {
51 return func(ctx sdk.Context) (string, bool) {

Callers 2

endBlockFunction · 0.80

Calls 6

GetBankKeeperMethod · 0.95
GetPoolsMethod · 0.95
AddMethod · 0.80
GetBalanceMethod · 0.65
StringMethod · 0.45
EqualMethod · 0.45

Tested by 2

endBlockFunction · 0.64