From bfac431a67b259b12abb3c8ce3944aa4e0035909 Mon Sep 17 00:00:00 2001 From: Jason Paulos Date: Tue, 13 Feb 2024 10:47:46 -0500 Subject: [PATCH] Add account min balance field --- accounting/rewind.go | 3 + api/generated/common/routes.go | 275 ++++++++++++------------- api/generated/common/types.go | 5 + api/generated/v2/routes.go | 357 +++++++++++++++++---------------- api/generated/v2/types.go | 5 + api/indexer.oas2.json | 5 + api/indexer.oas3.yml | 5 + idb/postgres/postgres.go | 21 +- types/min_balance.go | 85 ++++++++ 9 files changed, 438 insertions(+), 323 deletions(-) create mode 100644 types/min_balance.go diff --git a/accounting/rewind.go b/accounting/rewind.go index de8895c80..cfc6cdcf7 100644 --- a/accounting/rewind.go +++ b/accounting/rewind.go @@ -178,6 +178,9 @@ func AccountAtRound(ctx context.Context, account models.Account, round uint64, d acct.PendingRewards = 0 acct.Amount = acct.AmountWithoutPendingRewards + // MinBalance is not supported. + acct.MinBalance = 0 + // TODO: Clear out the closed-at field as well. Like Rewards we cannot know this value for all accounts. //acct.ClosedAt = 0 diff --git a/api/generated/common/routes.go b/api/generated/common/routes.go index 5c1233eca..bf1f44d7f 100644 --- a/api/generated/common/routes.go +++ b/api/generated/common/routes.go @@ -117,143 +117,144 @@ var swaggerSpec = []string{ "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", - "75avVqCzHoP5/wEAAP//Z01abaXfAAA=", + "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", + "+ge3+k7gAAA=", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/api/generated/common/types.go b/api/generated/common/types.go index 8877540cf..3a0e083ca 100644 --- a/api/generated/common/types.go +++ b/api/generated/common/types.go @@ -127,6 +127,11 @@ type Account struct { // LastProposed The round in which this account last proposed the block. LastProposed *uint64 `json:"last-proposed,omitempty"` + // MinBalance MicroAlgo balance required by the account. + // + // The requirement grows based on asset and application usage. + MinBalance uint64 `json:"min-balance"` + // Participation AccountParticipation describes the parameters used by this account in consensus protocol. Participation *AccountParticipation `json:"participation,omitempty"` diff --git a/api/generated/v2/routes.go b/api/generated/v2/routes.go index 6ffd25359..14159f619 100644 --- a/api/generated/v2/routes.go +++ b/api/generated/v2/routes.go @@ -1257,184 +1257,185 @@ var swaggerSpec = []string{ "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", - "X9HFgqnMzowwPzl5PPn0/wIAAP//csXxQ8d9AQA=", + "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", + "/l8AAAD//84PGZ5wfgEA", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/api/generated/v2/types.go b/api/generated/v2/types.go index 3b73be557..eeef46d88 100644 --- a/api/generated/v2/types.go +++ b/api/generated/v2/types.go @@ -215,6 +215,11 @@ type Account struct { // LastProposed The round in which this account last proposed the block. LastProposed *uint64 `json:"last-proposed,omitempty"` + // MinBalance MicroAlgo balance required by the account. + // + // The requirement grows based on asset and application usage. + MinBalance uint64 `json:"min-balance"` + // Participation AccountParticipation describes the parameters used by this account in consensus protocol. Participation *AccountParticipation `json:"participation,omitempty"` diff --git a/api/indexer.oas2.json b/api/indexer.oas2.json index 5cab4503c..ae495ea16 100644 --- a/api/indexer.oas2.json +++ b/api/indexer.oas2.json @@ -1028,6 +1028,7 @@ "amount-without-pending-rewards", "rewards", "status", + "min-balance", "total-apps-opted-in", "total-assets-opted-in", "total-box-bytes", @@ -1044,6 +1045,10 @@ "description": "total number of MicroAlgos in the account", "type": "integer" }, + "min-balance": { + "description": "MicroAlgo balance required by the account.\n\nThe requirement grows based on asset and application usage.", + "type": "integer" + }, "amount-without-pending-rewards": { "description": "specifies the amount of MicroAlgos in the account, without the pending rewards.", "type": "integer" diff --git a/api/indexer.oas3.yml b/api/indexer.oas3.yml index 95377909f..9611bb81b 100644 --- a/api/indexer.oas3.yml +++ b/api/indexer.oas3.yml @@ -767,6 +767,10 @@ "description": "The round in which this account last proposed the block.", "type": "integer" }, + "min-balance": { + "description": "MicroAlgo balance required by the account.\n\nThe requirement grows based on asset and application usage.", + "type": "integer" + }, "participation": { "$ref": "#/components/schemas/AccountParticipation" }, @@ -828,6 +832,7 @@ "address", "amount", "amount-without-pending-rewards", + "min-balance", "pending-rewards", "rewards", "round", diff --git a/idb/postgres/postgres.go b/idb/postgres/postgres.go index e0c56b083..0a095e51e 100644 --- a/idb/postgres/postgres.go +++ b/idb/postgres/postgres.go @@ -996,6 +996,17 @@ func (db *IndexerDb) yieldAccountsThread(req *getAccountsRequest) { db.log.Warnf("long query %fs: %s", dt.Seconds(), req.query) } }() + var proto config.ConsensusParams + { + var ok bool + // temporarily cast req.blockheader.CurrentProtocol(string) to protocol.ConsensusVersion + proto, ok = config.Consensus[protocol.ConsensusVersion(req.blockheader.CurrentProtocol)] + if !ok { + err := fmt.Errorf("get protocol err (%s)", req.blockheader.CurrentProtocol) + req.out <- idb.AccountRow{Error: err} + return + } + } for req.rows.Next() { var addr []byte var microalgos uint64 @@ -1131,20 +1142,14 @@ func (db *IndexerDb) yieldAccountsThread(req *getAccountsRequest) { account.IncentiveEligible = omitEmpty(accountData.IncentiveEligible) account.LastHeartbeat = omitEmpty(uint64(accountData.LastHeartbeat)) account.LastProposed = omitEmpty(uint64(accountData.LastProposed)) + + account.MinBalance = itypes.AccountMinBalance(accountData, &proto) } if account.Status == "NotParticipating" { account.PendingRewards = 0 } else { // TODO: pending rewards calculation doesn't belong in database layer (this is just the most covenient place which has all the data) - // TODO: replace config.Consensus. config.Consensus map[protocol.ConsensusVersion]ConsensusParams - // temporarily cast req.blockheader.CurrentProtocol(string) to protocol.ConsensusVersion - proto, ok := config.Consensus[protocol.ConsensusVersion(req.blockheader.CurrentProtocol)] - if !ok { - err = fmt.Errorf("get protocol err (%s)", req.blockheader.CurrentProtocol) - req.out <- idb.AccountRow{Error: err} - break - } rewardsUnits := uint64(0) if proto.RewardUnit != 0 { rewardsUnits = microalgos / proto.RewardUnit diff --git a/types/min_balance.go b/types/min_balance.go new file mode 100644 index 000000000..b385c3ae4 --- /dev/null +++ b/types/min_balance.go @@ -0,0 +1,85 @@ +package types + +import ( + "github.com/algorand/go-algorand-sdk/v2/protocol/config" + + sdk "github.com/algorand/go-algorand-sdk/v2/types" +) + +// stateSchemaMinBalance computes the MinBalance requirements for a StateSchema +// based on the consensus parameters +func stateSchemaMinBalance(sm sdk.StateSchema, proto *config.ConsensusParams) uint64 { + // Flat cost for each key/value pair + flatCost := proto.SchemaMinBalancePerEntry * (sm.NumUint + sm.NumByteSlice) + + // Cost for uints + uintCost := proto.SchemaUintMinBalance * sm.NumUint + + // Cost for byte slices + bytesCost := proto.SchemaBytesMinBalance * sm.NumByteSlice + + // Sum the separate costs + return flatCost + uintCost + bytesCost +} + +// minBalance computes the minimum balance requirements for an account based on +// some consensus parameters. MinBalance should correspond roughly to how much +// storage the account is allowed to store on disk. +func minBalance( + proto *config.ConsensusParams, + totalAssets uint64, + totalAppSchema sdk.StateSchema, + totalAppParams uint64, totalAppLocalStates uint64, + totalExtraAppPages uint64, + totalBoxes uint64, totalBoxBytes uint64, +) uint64 { + var min uint64 + + // First, base MinBalance + min = proto.MinBalance + + // MinBalance for each Asset + assetCost := proto.MinBalance * totalAssets + min += assetCost + + // Base MinBalance for each created application + appCreationCost := proto.AppFlatParamsMinBalance * totalAppParams + min += appCreationCost + + // Base MinBalance for each opted in application + appOptInCost := proto.AppFlatOptInMinBalance * totalAppLocalStates + min += appOptInCost + + // MinBalance for state usage measured by LocalStateSchemas and + // GlobalStateSchemas + schemaCost := stateSchemaMinBalance(totalAppSchema, proto) + min += schemaCost + + // MinBalance for each extra app program page + extraAppProgramLenCost := proto.AppFlatParamsMinBalance * totalExtraAppPages + min += extraAppProgramLenCost + + // Base MinBalance for each created box + boxBaseCost := proto.BoxFlatMinBalance * totalBoxes + min += boxBaseCost + + // Per byte MinBalance for boxes + boxByteCost := proto.BoxByteMinBalance * totalBoxBytes + min += boxByteCost + + return min +} + +// AccountMinBalance computes the minimum balance requirements for an account +// based on some consensus parameters. MinBalance should correspond roughly to +// how much storage the account is allowed to store on disk. +func AccountMinBalance(account sdk.AccountData, proto *config.ConsensusParams) uint64 { + return minBalance( + proto, + account.TotalAssets, + account.TotalAppSchema, + account.TotalAppParams, account.TotalAppLocalStates, + uint64(account.TotalExtraAppPages), + account.TotalBoxes, account.TotalBoxBytes, + ) +}