Custom Extension Hooks
Custom Approval Criteria Checkers
Example: Require Specific Address
// Usage in app.go:
app.BadgesKeeper.RegisterCustomApprovalCriteriaChecker(func(approval *types.CollectionApproval) []approvalcriteria.ApprovalCriteriaChecker {
if approval.ApprovalId == "special-approval" {
return []approvalcriteria.ApprovalCriteriaChecker{
NewRequireSpecificAddressChecker("bb1abc123..."),
}
}
return nil
})
// Implementation
type RequireSpecificAddressChecker struct {
requiredAddress string
}
func (c *RequireSpecificAddressChecker) Name() string {
return "RequireSpecificAddressChecker"
}
func (c *RequireSpecificAddressChecker) Check(
ctx sdk.Context,
approval *types.CollectionApproval,
collection *types.TokenCollection,
to string,
from string,
initiator string,
// ... other params
) (detErrMsg string, err error) {
if initiator != c.requiredAddress {
return "initiator must be " + c.requiredAddress,
fmt.Errorf("initiator address mismatch")
}
return "", nil
}Custom Global Transfer Checkers
Example: Require Specific Memo
Custom Collection Verifiers
Example: Require Specific Manager
Last updated