Skip to content

Commit

Permalink
add guardian invariant
Browse files Browse the repository at this point in the history
  • Loading branch information
tkxkd0159 committed May 3, 2024
1 parent 77959dd commit d0d5dfb
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 1 deletion.
27 changes: 27 additions & 0 deletions x/fbridge/module/abci.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package module

import (
"fmt"
sdk "github.com/Finschia/finschia-sdk/types"
"github.com/Finschia/finschia-sdk/x/fbridge/keeper"
"github.com/Finschia/finschia-sdk/x/fbridge/types"
Expand Down Expand Up @@ -39,3 +40,29 @@ func EndBlocker(ctx sdk.Context, k keeper.Keeper) {
}
}
}

// RegisterInvariants registers the fbridge module invariants
func RegisterInvariants(ir sdk.InvariantRegistry, k keeper.Keeper) {
ir.RegisterRoute(types.ModuleName, "guardian-invariant", GuardianInvariant(k))
}

func GuardianInvariant(k keeper.Keeper) sdk.Invariant {
return func(ctx sdk.Context) (string, bool) {

numGuardian := 0
for _, p := range k.GetRolePairs(ctx) {
if p.Role == types.RoleGuardian {
numGuardian++
}
}

numBridgeSw := len(k.GetBridgeSwitches(ctx))

broken := numGuardian != numBridgeSw

return sdk.FormatInvariant(
types.ModuleName, "guardian-invariant",
fmt.Sprintf("number of guardians(%d) != number of bridge switches(%d)", numGuardian, numBridgeSw),
), broken
}
}
4 changes: 3 additions & 1 deletion x/fbridge/module/module.go
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,9 @@ func (am AppModule) EndBlock(ctx sdk.Context, _ abci.RequestEndBlock) []abci.Val
}

// RegisterInvariants does nothing, there are no invariants to enforce
func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {}
func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {
RegisterInvariants(ir, am.keeper)
}

// Deprecated: Route does nothing.
func (am AppModule) Route() sdk.Route { return sdk.NewRoute("", nil) }
Expand Down

0 comments on commit d0d5dfb

Please sign in to comment.