MCPcopy Create free account
hub / github.com/akash-network/node / validateProviderPrerequisites

Method validateProviderPrerequisites

x/verification/keeper/msg.go:1279–1320  ·  view source on GitHub ↗
(ctx sdk.Context, provider sdk.AccAddress, tier vtypes.VerificationTier)

Source from the content-addressed store, hash-verified

1277}
1278
1279func (k *keeper) validateProviderPrerequisites(ctx sdk.Context, provider sdk.AccAddress, tier vtypes.VerificationTier) error {
1280 if !vtypes.TierRequiresSnapshot(tier) {
1281 return nil
1282 }
1283
1284 params := k.GetParams(ctx)
1285 if err := k.validateProviderAge(ctx, provider, tier, params); err != nil {
1286 return err
1287 }
1288 if err := k.validateProviderLeaseCompletion(ctx, provider, tier, params); err != nil {
1289 return err
1290 }
1291
1292 snapshot, found := k.GetProviderSnapshot(ctx, provider)
1293 if !found {
1294 return moduletypes.ErrSnapshotNonCompliant
1295 }
1296 if snapshot.Suspended || snapshot.ComplianceDeadline.Before(ctx.BlockTime()) {
1297 return moduletypes.ErrProviderSnapshotSuspended
1298 }
1299
1300 var bond vtypes.ProviderBondRecord
1301 if vtypes.TierRequiresProviderBond(tier) {
1302 var found bool
1303 bond, found = k.GetProviderBond(ctx, provider)
1304 if !found {
1305 return moduletypes.ErrInsufficientProviderBond
1306 }
1307 required := requiredProviderBond(params, tier, snapshot.ResourceSummary)
1308 if err := requireCoinAtLeast(bond.BondedAmount, required, moduletypes.ErrInsufficientProviderBond); err != nil {
1309 return err
1310 }
1311 }
1312 if err := k.validateProviderSlashingHistory(ctx, tier, params, bond); err != nil {
1313 return err
1314 }
1315 if vtypes.TierAtLeast(tier, vtypes.TierTrusted) && !k.hasContinuousL3History(ctx, provider, params.MinL3DurationForL4) {
1316 return moduletypes.ErrInsufficientL3History
1317 }
1318
1319 return nil
1320}
1321
1322func (k *keeper) validateProviderLeaseCompletion(ctx sdk.Context, provider sdk.AccAddress, tier vtypes.VerificationTier, params vtypes.Params) error {
1323 if k.market == nil || !vtypes.TierAtLeast(tier, vtypes.TierEstablished) {

Callers 1

SubmitAttestationMethod · 0.95

Calls 10

GetParamsMethod · 0.95
validateProviderAgeMethod · 0.95
GetProviderSnapshotMethod · 0.95
GetProviderBondMethod · 0.95
requiredProviderBondFunction · 0.85
requireCoinAtLeastFunction · 0.85
BeforeMethod · 0.80

Tested by

no test coverage detected