From 6993d7f78c19d5a3c2fd55b36caf87983d050324 Mon Sep 17 00:00:00 2001 From: Gary Malouf <982483+gmalouf@users.noreply.github.com> Date: Mon, 29 Apr 2024 20:42:33 -0400 Subject: [PATCH 01/18] Initial cut of support for a full assets for account endpoint. Support includes always grabbing corresponding asset parameters, supporting pagination via the next / limit parameters, and enforcing max batch caps. --- daemon/algod/api/algod.oas2.json | 109 ++++ daemon/algod/api/algod.oas3.yml | 148 +++++ .../api/server/v2/generated/data/routes.go | 428 ++++++------- .../v2/generated/experimental/routes.go | 473 +++++++------- .../api/server/v2/generated/model/types.go | 37 ++ .../nonparticipating/private/routes.go | 386 ++++++------ .../nonparticipating/public/routes.go | 588 +++++++++--------- .../generated/participating/private/routes.go | 392 ++++++------ .../generated/participating/public/routes.go | 452 +++++++------- daemon/algod/api/server/v2/handlers.go | 105 ++++ .../server/v2/test/handlers_resources_test.go | 5 + ledger/acctupdates.go | 73 +++ ledger/ledger.go | 6 + ledger/ledgercore/accountresource.go | 8 + ledger/store/trackerdb/data.go | 8 + .../trackerdb/dualdriver/accounts_reader.go | 36 ++ .../trackerdb/generickv/accounts_reader.go | 5 + ledger/store/trackerdb/interface.go | 1 + ledger/store/trackerdb/sqlitedriver/sql.go | 93 ++- 19 files changed, 2011 insertions(+), 1342 deletions(-) diff --git a/daemon/algod/api/algod.oas2.json b/daemon/algod/api/algod.oas2.json index 9bd5e5c735..9ca69765c6 100644 --- a/daemon/algod/api/algod.oas2.json +++ b/daemon/algod/api/algod.oas2.json @@ -344,6 +344,73 @@ } ] }, + "/v2/accounts/{address}/assets": { + "get": { + "description": "Lookup an account's asset holdings.", + "tags": [ + "public", + "experimental" + ], + "produces": [ + "application/json" + ], + "schemes": [ + "http" + ], + "summary": "Get a list of assets held by an account, inclusive of asset params.", + "operationId": "AccountAssetsInformation", + "parameters": [ + { + "pattern": "[A-Z0-9]{58}", + "type": "string", + "description": "An account public key", + "name": "address", + "in": "path", + "required": true + }, + { + "$ref": "#/parameters/limit" + }, + { + "$ref": "#/parameters/next" + } + ], + "responses": { + "200": { + "$ref": "#/responses/AccountAssetHoldingsResponse" + }, + "400": { + "description": "Malformed address", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Invalid API Token", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "Internal Error", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "default": { + "description": "Unknown Error" + } + } + }, + "parameters": [ + { + "type": "string", + "name": "address", + "in": "path", + "required": true + } + ] + }, "/v2/accounts/{address}/applications/{application-id}": { "get": { "description": "Given a specific account public key and application ID, this call returns the account's application local state and global state (AppLocalState and AppParams, if either exists). Global state will only be returned if the provided address is the application's creator.", @@ -3087,6 +3154,23 @@ } } }, + "AccountAssetHolding": { + "description": "AccountAssetHolding describes the account's asset holding and asset parameters (if either exist) for a specific asset ID.", + "type": "object", + "required": [ + "asset-holding" + ], + "properties": { + "asset-holding": { + "description": "\\[asset\\] Details about the asset held by this account.\n\nThe raw account uses `AssetHolding` for this type.", + "$ref": "#/definitions/AssetHolding" + }, + "asset-params": { + "description": "\\[apar\\] parameters of the asset held by this account.\n\nThe raw account uses `AssetParams` for this type.", + "$ref": "#/definitions/AssetParams" + } + } + }, "AccountParticipation": { "description": "AccountParticipation describes the parameters used by this account in consensus protocol.", "type": "object", @@ -4818,6 +4902,31 @@ } } }, + "AccountAssetHoldingsResponse": { + "description": "AccountAssetHoldingsResponse contains a list of assets held by an account.", + "schema": { + "type": "object", + "required": [ + "round" + ], + "properties": { + "round": { + "description": "The round for which this information is relevant.", + "type": "integer" + }, + "next-token": { + "description": "Used for pagination, when making another request provide this token with the next parameter.", + "type": "string" + }, + "asset-holdings": { + "type": "array", + "items": { + "$ref": "#/definitions/AccountAssetHolding" + } + } + } + } + }, "AccountApplicationResponse": { "description": "AccountApplicationResponse describes the account's application local state and global state (AppLocalState and AppParams, if either exists) for a specific application ID. Global state will only be returned if the provided address is the application's creator.", "schema": { diff --git a/daemon/algod/api/algod.oas3.yml b/daemon/algod/api/algod.oas3.yml index ee29ce7176..994142e980 100644 --- a/daemon/algod/api/algod.oas3.yml +++ b/daemon/algod/api/algod.oas3.yml @@ -249,6 +249,35 @@ }, "description": "AccountApplicationResponse describes the account's application local state and global state (AppLocalState and AppParams, if either exists) for a specific application ID. Global state will only be returned if the provided address is the application's creator." }, + "AccountAssetHoldingsResponse": { + "content": { + "application/json": { + "schema": { + "properties": { + "asset-holdings": { + "items": { + "$ref": "#/components/schemas/AccountAssetHolding" + }, + "type": "array" + }, + "next-token": { + "description": "Used for pagination, when making another request provide this token with the next parameter.", + "type": "string" + }, + "round": { + "description": "The round for which this information is relevant.", + "type": "integer" + } + }, + "required": [ + "round" + ], + "type": "object" + } + } + }, + "description": "AccountAssetHoldingsResponse contains a list of assets held by an account." + }, "AccountAssetResponse": { "content": { "application/json": { @@ -1177,6 +1206,21 @@ ], "type": "object" }, + "AccountAssetHolding": { + "description": "AccountAssetHolding describes the account's asset holding and asset parameters (if either exist) for a specific asset ID.", + "properties": { + "asset-holding": { + "$ref": "#/components/schemas/AssetHolding" + }, + "asset-params": { + "$ref": "#/components/schemas/AssetParams" + } + }, + "required": [ + "asset-holding" + ], + "type": "object" + }, "AccountParticipation": { "description": "AccountParticipation describes the parameters used by this account in consensus protocol.", "properties": { @@ -3079,6 +3123,110 @@ ] } }, + "/v2/accounts/{address}/assets": { + "get": { + "description": "Lookup an account's asset holdings.", + "operationId": "AccountAssetsInformation", + "parameters": [ + { + "description": "An account public key", + "in": "path", + "name": "address", + "required": true, + "schema": { + "pattern": "[A-Z0-9]{58}", + "type": "string" + } + }, + { + "description": "Maximum number of results to return.", + "in": "query", + "name": "limit", + "schema": { + "type": "integer" + } + }, + { + "description": "The next page of results. Use the next token provided by the previous results.", + "in": "query", + "name": "next", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "asset-holdings": { + "items": { + "$ref": "#/components/schemas/AccountAssetHolding" + }, + "type": "array" + }, + "next-token": { + "description": "Used for pagination, when making another request provide this token with the next parameter.", + "type": "string" + }, + "round": { + "description": "The round for which this information is relevant.", + "type": "integer" + } + }, + "required": [ + "round" + ], + "type": "object" + } + } + }, + "description": "AccountAssetHoldingsResponse contains a list of assets held by an account." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Malformed address" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Invalid API Token" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Internal Error" + }, + "default": { + "content": {}, + "description": "Unknown Error" + } + }, + "summary": "Get a list of assets held by an account, inclusive of asset params.", + "tags": [ + "public", + "experimental" + ] + } + }, "/v2/accounts/{address}/assets/{asset-id}": { "get": { "description": "Given a specific account public key and asset ID, this call returns the account's asset holding and asset parameters (if either exist). Asset parameters will only be returned if the provided address is the asset's creator.", diff --git a/daemon/algod/api/server/v2/generated/data/routes.go b/daemon/algod/api/server/v2/generated/data/routes.go index 58b6e77fee..e3d0abda34 100644 --- a/daemon/algod/api/server/v2/generated/data/routes.go +++ b/daemon/algod/api/server/v2/generated/data/routes.go @@ -114,219 +114,221 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", + "o+0ENXt88nD28X8HAAD//2PohBGwAwEA", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/daemon/algod/api/server/v2/generated/experimental/routes.go b/daemon/algod/api/server/v2/generated/experimental/routes.go index 7f2723f067..a934be90dd 100644 --- a/daemon/algod/api/server/v2/generated/experimental/routes.go +++ b/daemon/algod/api/server/v2/generated/experimental/routes.go @@ -8,17 +8,22 @@ import ( "compress/gzip" "encoding/base64" "fmt" + "net/http" "net/url" "path" "strings" . "github.com/algorand/go-algorand/daemon/algod/api/server/v2/generated/model" + "github.com/algorand/oapi-codegen/pkg/runtime" "github.com/getkin/kin-openapi/openapi3" "github.com/labstack/echo/v4" ) // ServerInterface represents all server handlers. type ServerInterface interface { + // Get a list of assets held by an account, inclusive of asset params. + // (GET /v2/accounts/{address}/assets) + AccountAssetsInformation(ctx echo.Context, address string, params AccountAssetsInformationParams) error // Returns OK if experimental API is enabled. // (GET /v2/experimental) ExperimentalCheck(ctx echo.Context) error @@ -32,6 +37,40 @@ type ServerInterfaceWrapper struct { Handler ServerInterface } +// AccountAssetsInformation converts echo context to params. +func (w *ServerInterfaceWrapper) AccountAssetsInformation(ctx echo.Context) error { + var err error + // ------------- Path parameter "address" ------------- + var address string + + err = runtime.BindStyledParameterWithLocation("simple", false, "address", runtime.ParamLocationPath, ctx.Param("address"), &address) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter address: %s", err)) + } + + ctx.Set(Api_keyScopes, []string{""}) + + // Parameter object where we will unmarshal all parameters from the context + var params AccountAssetsInformationParams + // ------------- Optional query parameter "limit" ------------- + + err = runtime.BindQueryParameter("form", true, false, "limit", ctx.QueryParams(), ¶ms.Limit) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter limit: %s", err)) + } + + // ------------- Optional query parameter "next" ------------- + + err = runtime.BindQueryParameter("form", true, false, "next", ctx.QueryParams(), ¶ms.Next) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter next: %s", err)) + } + + // Invoke the callback with all the unmarshalled arguments + err = w.Handler.AccountAssetsInformation(ctx, address, params) + return err +} + // ExperimentalCheck converts echo context to params. func (w *ServerInterfaceWrapper) ExperimentalCheck(ctx echo.Context) error { var err error @@ -82,6 +121,7 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL Handler: si, } + router.GET(baseURL+"/v2/accounts/:address/assets", wrapper.AccountAssetsInformation, m...) router.GET(baseURL+"/v2/experimental", wrapper.ExperimentalCheck, m...) router.POST(baseURL+"/v2/transactions/async", wrapper.RawTransactionAsync, m...) @@ -90,219 +130,226 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", + "//9lucWJkwQBAA==", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/daemon/algod/api/server/v2/generated/model/types.go b/daemon/algod/api/server/v2/generated/model/types.go index 435d296215..ce0a946219 100644 --- a/daemon/algod/api/server/v2/generated/model/types.go +++ b/daemon/algod/api/server/v2/generated/model/types.go @@ -251,6 +251,23 @@ type Account struct { // * lsig type AccountSigType string +// AccountAssetHolding AccountAssetHolding describes the account's asset holding and asset parameters (if either exist) for a specific asset ID. +type AccountAssetHolding struct { + // AssetHolding Describes an asset held by an account. + // + // Definition: + // data/basics/userBalance.go : AssetHolding + AssetHolding AssetHolding `json:"asset-holding"` + + // AssetParams AssetParams specifies the parameters for an asset. + // + // \[apar\] when part of an AssetConfig transaction. + // + // Definition: + // data/transactions/asset.go : AssetParams + AssetParams *AssetParams `json:"asset-params,omitempty"` +} + // AccountParticipation AccountParticipation describes the parameters used by this account in consensus protocol. type AccountParticipation struct { // SelectionParticipationKey \[sel\] Selection public key (if any) currently registered for this round. @@ -1071,6 +1088,17 @@ type AccountApplicationResponse struct { Round uint64 `json:"round"` } +// AccountAssetHoldingsResponse defines model for AccountAssetHoldingsResponse. +type AccountAssetHoldingsResponse struct { + AssetHoldings *[]AccountAssetHolding `json:"asset-holdings,omitempty"` + + // NextToken Used for pagination, when making another request provide this token with the next parameter. + NextToken *string `json:"next-token,omitempty"` + + // Round The round for which this information is relevant. + Round uint64 `json:"round"` +} + // AccountAssetResponse defines model for AccountAssetResponse. type AccountAssetResponse struct { // AssetHolding Describes an asset held by an account. @@ -1425,6 +1453,15 @@ type AccountApplicationInformationParams struct { // AccountApplicationInformationParamsFormat defines parameters for AccountApplicationInformation. type AccountApplicationInformationParamsFormat string +// AccountAssetsInformationParams defines parameters for AccountAssetsInformation. +type AccountAssetsInformationParams struct { + // Limit Maximum number of results to return. + Limit *uint64 `form:"limit,omitempty" json:"limit,omitempty"` + + // Next The next page of results. Use the next token provided by the previous results. + Next *string `form:"next,omitempty" json:"next,omitempty"` +} + // AccountAssetInformationParams defines parameters for AccountAssetInformation. type AccountAssetInformationParams struct { // Format Configures whether the response object is JSON or MessagePack encoded. If not provided, defaults to JSON. diff --git a/daemon/algod/api/server/v2/generated/nonparticipating/private/routes.go b/daemon/algod/api/server/v2/generated/nonparticipating/private/routes.go index 2ad021e012..c855fbdb59 100644 --- a/daemon/algod/api/server/v2/generated/nonparticipating/private/routes.go +++ b/daemon/algod/api/server/v2/generated/nonparticipating/private/routes.go @@ -163,198 +163,200 @@ var swaggerSpec = []string{ "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", - "04A1VcMmT04eTT7+3wAAAP//lhM0FGMCAQA=", + "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", + "yZOTR5OP/zcAAP//+kXjhv8FAQA=", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/daemon/algod/api/server/v2/generated/nonparticipating/public/routes.go b/daemon/algod/api/server/v2/generated/nonparticipating/public/routes.go index 8c43f44310..da89a5d7fa 100644 --- a/daemon/algod/api/server/v2/generated/nonparticipating/public/routes.go +++ b/daemon/algod/api/server/v2/generated/nonparticipating/public/routes.go @@ -747,299 +747,301 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL var swaggerSpec = []string{ "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", - "V3SxYKoxIR49mT46evd/AwAA//+i458bR7YBAA==", + "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", + "mBCPnkwfHb37vwEAAP//MrApguO5AQA=", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/daemon/algod/api/server/v2/generated/participating/private/routes.go b/daemon/algod/api/server/v2/generated/participating/private/routes.go index 0d73a322b2..6fce6a062f 100644 --- a/daemon/algod/api/server/v2/generated/participating/private/routes.go +++ b/daemon/algod/api/server/v2/generated/participating/private/routes.go @@ -227,201 +227,203 @@ var swaggerSpec = []string{ "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", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/daemon/algod/api/server/v2/generated/participating/public/routes.go b/daemon/algod/api/server/v2/generated/participating/public/routes.go index 518cbf482e..8c6a1ff064 100644 --- a/daemon/algod/api/server/v2/generated/participating/public/routes.go +++ b/daemon/algod/api/server/v2/generated/participating/public/routes.go @@ -177,231 +177,233 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", - "PwAA//+yhC5iNxkBAA==", + "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", + "//K4m1zTHAEA", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/daemon/algod/api/server/v2/handlers.go b/daemon/algod/api/server/v2/handlers.go index 995363a491..7d3b74d3fb 100644 --- a/daemon/algod/api/server/v2/handlers.go +++ b/daemon/algod/api/server/v2/handlers.go @@ -26,6 +26,7 @@ import ( "math" "net/http" "os" + "strconv" "strings" "time" @@ -69,6 +70,19 @@ const MaxTealSourceBytes = 200_000 // become quite large, so we allow up to 1MB const MaxTealDryrunBytes = 1_000_000 +// MaxAssetResults sets a size limit for the number of assets returned in a single request to the +// /v2/accounts/{address}/assets endpoint +const MaxAssetResults = 10000 + +// DefaultAssetResults sets a default size limit for the number of assets returned in a single request to the +// /v2/accounts/{address}/assets endpoint +const DefaultAssetResults = uint64(1000) + +const ( + errInvalidLimit = "limit parameter must be a positive integer" + errUnableToParseNext = "unable to parse next token" +) + // WaitForBlockTimeout is the timeout for the WaitForBlock endpoint. var WaitForBlockTimeout = 1 * time.Minute @@ -91,6 +105,7 @@ type LedgerForAPI interface { ConsensusParams(r basics.Round) (config.ConsensusParams, error) Latest() basics.Round LookupAsset(rnd basics.Round, addr basics.Address, aidx basics.AssetIndex) (ledgercore.AssetResource, error) + LookupAssets(rnd basics.Round, addr basics.Address, assetIDGT basics.AssetIndex, limit uint64) ([]ledgercore.AssetResourceWithIDs, error) LookupApplication(rnd basics.Round, addr basics.Address, aidx basics.AppIndex) (ledgercore.AppResource, error) BlockCert(rnd basics.Round) (blk bookkeeping.Block, cert agreement.Certificate, err error) LatestTotals() (basics.Round, ledgercore.AccountTotals, error) @@ -1096,6 +1111,96 @@ func (v2 *Handlers) RawTransactionAsync(ctx echo.Context) error { return ctx.NoContent(http.StatusOK) } +// AccountAssetsInformation looks up an account's asset holdings. +// (GET /v2/accounts/{address}/assets) +func (v2 *Handlers) AccountAssetsInformation(ctx echo.Context, address string, params model.AccountAssetsInformationParams) error { + if !v2.Node.Config().EnableExperimentalAPI { + return ctx.String(http.StatusNotFound, "/v2/accounts/{address}/assets was not enabled in the configuration file by setting the EnableExperimentalAPI to true") + } + + addr, err := basics.UnmarshalChecksumAddress(address) + if err != nil { + return badRequest(ctx, err, errFailedToParseAddress, v2.Log) + } + + var assetGreaterThan uint64 = 0 + if params.Next != nil { + agt, err0 := strconv.ParseUint(*params.Next, 10, 64) + if err0 != nil { + return badRequest(ctx, err0, fmt.Sprintf("%s: %v", errUnableToParseNext, err0), v2.Log) + } + assetGreaterThan = agt + } + + if params.Limit != nil { + if *params.Limit <= 0 { + return badRequest(ctx, errors.New(errInvalidLimit), errInvalidLimit, v2.Log) + } + + if *params.Limit > MaxAssetResults { + limitErrMsg := fmt.Sprintf("limit %d exceeds max assets single batch limit %d", *params.Limit, MaxAssetResults) + return badRequest(ctx, errors.New(limitErrMsg), limitErrMsg, v2.Log) + } + } else { + // default limit + l := DefaultAssetResults + params.Limit = &l + } + + ledger := v2.Node.LedgerForAPI() + + // Logic + // 1. Get the account's asset holdings subject to limits + // 2. Handle empty response + // 3. Prepare JSON response + lastRound := ledger.Latest() + + records, err := ledger.LookupAssets(lastRound, addr, basics.AssetIndex(assetGreaterThan), *params.Limit) + + if err != nil { + return internalError(ctx, err, errFailedLookingUpLedger, v2.Log) + } + + // prepare JSON response + response := model.AccountAssetHoldingsResponse{Round: uint64(lastRound)} + + // We always are setting the next token, the client-side can use the total app counts to determine if there are more. + nextTk := strconv.FormatUint(uint64(records[len(records)-1].AssetID), 10) + response.NextToken = &nextTk + + assetHoldings := make([]model.AccountAssetHolding, 0, len(records)) + + for _, record := range records { + if record.AssetHolding == nil { + v2.Log.Warnf("AccountAssetsInformation: asset %d has no holding - should not be possible", record.AssetID) + continue + } + + if record.AssetParams == nil { + v2.Log.Warnf("AccountAssetsInformation: asset %d has no params - should not be possible", record.AssetID) + continue + } + + asset := AssetParamsToAsset(record.Creator.String(), record.AssetID, record.AssetParams) + + aah := model.AccountAssetHolding{ + AssetHolding: model.AssetHolding{ + Amount: record.AssetHolding.Amount, + AssetID: uint64(record.AssetID), + IsFrozen: record.AssetHolding.Frozen, + }, + + AssetParams: &asset.Params, + } + + assetHoldings = append(assetHoldings, aah) + } + + response.AssetHoldings = &assetHoldings + + return ctx.JSON(http.StatusOK, response) +} + // PreEncodedSimulateTxnResult mirrors model.SimulateTransactionResult type PreEncodedSimulateTxnResult struct { Txn PreEncodedTxInfo `codec:"txn-result"` diff --git a/daemon/algod/api/server/v2/test/handlers_resources_test.go b/daemon/algod/api/server/v2/test/handlers_resources_test.go index 8260e54ffb..a8df3e45ff 100644 --- a/daemon/algod/api/server/v2/test/handlers_resources_test.go +++ b/daemon/algod/api/server/v2/test/handlers_resources_test.go @@ -107,6 +107,11 @@ func (l *mockLedger) LookupAsset(rnd basics.Round, addr basics.Address, aidx bas } return ar, nil } + +func (l *mockLedger) LookupAssets(rnd basics.Round, addr basics.Address, assetIDGT basics.AssetIndex, limit uint64) ([]ledgercore.AssetResourceWithIDs, error) { + panic("implement me") +} + func (l *mockLedger) LookupApplication(rnd basics.Round, addr basics.Address, aidx basics.AppIndex) (ar ledgercore.AppResource, err error) { ad, ok := l.accounts[addr] if !ok { diff --git a/ledger/acctupdates.go b/ledger/acctupdates.go index e9c9696711..17b208120e 100644 --- a/ledger/acctupdates.go +++ b/ledger/acctupdates.go @@ -341,6 +341,10 @@ func (au *accountUpdates) LookupResource(rnd basics.Round, addr basics.Address, return au.lookupResource(rnd, addr, aidx, ctype, true /* take lock */) } +func (au *accountUpdates) LookupAssetResources(rnd basics.Round, addr basics.Address, assetIDGT basics.AssetIndex, limit uint64) ([]ledgercore.AssetResourceWithIDs, basics.Round, error) { + return au.lookupAssetResources(rnd, addr, assetIDGT, limit, true /* take lock */) +} + func (au *accountUpdates) LookupKv(rnd basics.Round, key string) ([]byte, error) { return au.lookupKv(rnd, key, true /* take lock */) } @@ -1208,6 +1212,75 @@ func (au *accountUpdates) lookupResource(rnd basics.Round, addr basics.Address, } } +func (au *accountUpdates) lookupAssetResources(rnd basics.Round, addr basics.Address, assetIDGT basics.AssetIndex, limit uint64, synchronized bool) (data []ledgercore.AssetResourceWithIDs, validThrough basics.Round, err error) { + needUnlock := false + if synchronized { + au.accountsMu.RLock() + needUnlock = true + } + defer func() { + if needUnlock { + au.accountsMu.RUnlock() + } + }() + + for { + currentDbRound := au.cachedDBRound + + // This checks that the specified round is >= au.cachedDBRound - if not, it will return an error. + _, err = au.roundOffset(rnd) + if err != nil { + return + } + + if synchronized { + au.accountsMu.RUnlock() + needUnlock = false + } + + // Look for resources on disk + persistedResources, resourceDbRound, err0 := au.accountsq.LookupLimitedResources(addr, basics.CreatableIndex(assetIDGT), limit, basics.AssetCreatable) + if err0 != nil { + return nil, basics.Round(0), err0 + } + + if resourceDbRound == currentDbRound { + data = make([]ledgercore.AssetResourceWithIDs, 0, len(persistedResources)) + for _, pd := range persistedResources { + ah := pd.Data.GetAssetHolding() + ap := pd.Data.GetAssetParams() + data = append(data, ledgercore.AssetResourceWithIDs{ + AssetID: basics.AssetIndex(pd.Aidx), + Creator: pd.Creator, + + AssetResource: ledgercore.AssetResource{ + AssetHolding: &ah, + AssetParams: &ap, + }, + }) + } + // We've found all the resources we could find for this address. + return data, currentDbRound, nil + } + + if synchronized { + if resourceDbRound < currentDbRound { + au.log.Errorf("accountUpdates.lookupAssetResources: resource database round %d is behind in-memory round %d", resourceDbRound, currentDbRound) + return nil, basics.Round(0), &StaleDatabaseRoundError{databaseRound: resourceDbRound, memoryRound: currentDbRound} + } + au.accountsMu.RLock() + needUnlock = true + for currentDbRound >= au.cachedDBRound { + au.accountsReadCond.Wait() + } + } else { + // in non-sync mode, we don't wait since we already assume that we're synchronized. + au.log.Errorf("accountUpdates.lookupAssetResources: database round %d mismatching in-memory round %d", resourceDbRound, currentDbRound) + return nil, basics.Round(0), &MismatchingDatabaseRoundError{databaseRound: resourceDbRound, memoryRound: currentDbRound} + } + } +} + func (au *accountUpdates) lookupStateDelta(rnd basics.Round) (ledgercore.StateDelta, error) { au.accountsMu.RLock() defer au.accountsMu.RUnlock() diff --git a/ledger/ledger.go b/ledger/ledger.go index 60cad748f7..d5afe8783d 100644 --- a/ledger/ledger.go +++ b/ledger/ledger.go @@ -583,6 +583,12 @@ func (l *Ledger) LookupAsset(rnd basics.Round, addr basics.Address, aidx basics. return ledgercore.AssetResource{AssetParams: r.AssetParams, AssetHolding: r.AssetHolding}, err } +// LookupAssets loads asset resources that match the request parameters from the ledger. +func (l *Ledger) LookupAssets(rnd basics.Round, addr basics.Address, assetIDGT basics.AssetIndex, limit uint64) ([]ledgercore.AssetResourceWithIDs, error) { + resources, _, err := l.accts.LookupAssetResources(rnd, addr, assetIDGT, limit) + return resources, err +} + // lookupResource loads a resource that matches the request parameters from the accounts update func (l *Ledger) lookupResource(rnd basics.Round, addr basics.Address, aidx basics.CreatableIndex, ctype basics.CreatableType) (ledgercore.AccountResource, error) { l.trackerMu.RLock() diff --git a/ledger/ledgercore/accountresource.go b/ledger/ledgercore/accountresource.go index e1b13e71d7..e8f03bd60e 100644 --- a/ledger/ledgercore/accountresource.go +++ b/ledger/ledgercore/accountresource.go @@ -34,6 +34,14 @@ type AssetResource struct { AssetHolding *basics.AssetHolding } +// AssetResourceWithIDs is used to retrieve a asset resource information from the data tier, +// inclusive of the asset ID and creator address +type AssetResourceWithIDs struct { + AssetResource + AssetID basics.AssetIndex + Creator basics.Address +} + // AppResource used to retrieve a generic app resource information from the data tier type AppResource struct { AppLocalState *basics.AppLocalState diff --git a/ledger/store/trackerdb/data.go b/ledger/store/trackerdb/data.go index 74e67e70b1..8e69f2fc69 100644 --- a/ledger/store/trackerdb/data.go +++ b/ledger/store/trackerdb/data.go @@ -206,6 +206,14 @@ type PersistedResourcesData struct { Round basics.Round } +// PersistedResourcesDataWithCreator is exported view of persistedResourcesData inclusive of creator +type PersistedResourcesDataWithCreator struct { + PersistedResourcesData + + // the address of the account that created this resource + Creator basics.Address +} + // PersistedOnlineAccountData is exported view of persistedOnlineAccountData type PersistedOnlineAccountData struct { Addr basics.Address diff --git a/ledger/store/trackerdb/dualdriver/accounts_reader.go b/ledger/store/trackerdb/dualdriver/accounts_reader.go index b39aadd7cb..5692994636 100644 --- a/ledger/store/trackerdb/dualdriver/accounts_reader.go +++ b/ledger/store/trackerdb/dualdriver/accounts_reader.go @@ -185,3 +185,39 @@ func (ar *accountsReader) LookupResources(addr basics.Address, aidx basics.Creat // return primary results return dataP, nil } + +func (ar *accountsReader) LookupLimitedResources(addr basics.Address, minIdx basics.CreatableIndex, maxCreatables uint64, ctype basics.CreatableType) (data []trackerdb.PersistedResourcesDataWithCreator, rnd basics.Round, err error) { + dataP, rndP, errP := ar.primary.LookupLimitedResources(addr, minIdx, maxCreatables, ctype) + dataS, rndS, errS := ar.secondary.LookupLimitedResources(addr, minIdx, maxCreatables, ctype) + // coalesce errors + err = coalesceErrors(errP, errS) + if err != nil { + return + } + // coalesce refs + if len(dataP) != len(dataS) { + err = ErrInconsistentResult + return + } + var ref trackerdb.AccountRef + for i := range dataP { + ref, err = coalesceAccountRefs(dataP[i].AcctRef, dataS[i].AcctRef) + if err != nil { + return data, rnd, err + } + // update ref in results + dataP[i].AcctRef = ref + dataS[i].AcctRef = ref + } + // check results match + if !cmp.Equal(dataP, dataS, allowAllUnexported) { + err = ErrInconsistentResult + return + } + if rndP != rndS { + err = ErrInconsistentResult + return + } + // return primary results + return dataP, rndP, nil +} diff --git a/ledger/store/trackerdb/generickv/accounts_reader.go b/ledger/store/trackerdb/generickv/accounts_reader.go index 063b5a35f5..0aa9d55a21 100644 --- a/ledger/store/trackerdb/generickv/accounts_reader.go +++ b/ledger/store/trackerdb/generickv/accounts_reader.go @@ -17,6 +17,7 @@ package generickv import ( + "errors" "fmt" "io" @@ -178,6 +179,10 @@ func (r *accountsReader) LookupAllResources(addr basics.Address) (data []tracker return } +func (r *accountsReader) LookupLimitedResources(_ basics.Address, _ basics.CreatableIndex, _ uint64, _ basics.CreatableType) ([]trackerdb.PersistedResourcesDataWithCreator, basics.Round, error) { + return nil, 0, errors.New("not supported") +} + func (r *accountsReader) LookupKeyValue(key string) (pv trackerdb.PersistedKVData, err error) { // read the current db round pv.Round, err = r.AccountsRound() diff --git a/ledger/store/trackerdb/interface.go b/ledger/store/trackerdb/interface.go index df9de98d17..25d7b79e3c 100644 --- a/ledger/store/trackerdb/interface.go +++ b/ledger/store/trackerdb/interface.go @@ -105,6 +105,7 @@ type AccountsReader interface { LookupResources(addr basics.Address, aidx basics.CreatableIndex, ctype basics.CreatableType) (data PersistedResourcesData, err error) LookupAllResources(addr basics.Address) (data []PersistedResourcesData, rnd basics.Round, err error) + LookupLimitedResources(addr basics.Address, minIdx basics.CreatableIndex, maxCreatables uint64, ctype basics.CreatableType) (data []PersistedResourcesDataWithCreator, rnd basics.Round, err error) LookupKeyValue(key string) (pv PersistedKVData, err error) LookupKeysByPrefix(prefix string, maxKeyNum uint64, results map[string]bool, resultCount uint64) (round basics.Round, err error) diff --git a/ledger/store/trackerdb/sqlitedriver/sql.go b/ledger/store/trackerdb/sqlitedriver/sql.go index 634c7f54ef..350b2492c0 100644 --- a/ledger/store/trackerdb/sqlitedriver/sql.go +++ b/ledger/store/trackerdb/sqlitedriver/sql.go @@ -19,7 +19,6 @@ package sqlitedriver import ( "database/sql" "fmt" - "github.com/algorand/go-algorand/data/basics" "github.com/algorand/go-algorand/ledger/ledgercore" "github.com/algorand/go-algorand/ledger/store/trackerdb" @@ -30,12 +29,13 @@ import ( // accountsDbQueries is used to cache a prepared SQL statement to look up // the state of a single account. type accountsDbQueries struct { - lookupAccountStmt *sql.Stmt - lookupResourcesStmt *sql.Stmt - lookupAllResourcesStmt *sql.Stmt - lookupKvPairStmt *sql.Stmt - lookupKeysByRangeStmt *sql.Stmt - lookupCreatorStmt *sql.Stmt + lookupAccountStmt *sql.Stmt + lookupResourcesStmt *sql.Stmt + lookupAllResourcesStmt *sql.Stmt + lookupLimitedResourcesStmt *sql.Stmt + lookupKvPairStmt *sql.Stmt + lookupKeysByRangeStmt *sql.Stmt + lookupCreatorStmt *sql.Stmt } type onlineAccountsDbQueries struct { @@ -87,6 +87,11 @@ func AccountsInitDbQueries(q db.Queryable) (*accountsDbQueries, error) { return nil, err } + qs.lookupLimitedResourcesStmt, err = q.Prepare("SELECT ab.rowid, ar.rnd, r.aidx, ac.creator, r.data, cr.data FROM acctrounds ar JOIN accountbase ab ON ab.address = ? JOIN resources r ON r.addrid = ab.addrid JOIN assetcreators ac ON r.aidx = ac.asset JOIN accountbase cab ON ac.creator = cab.address JOIN resources cr ON cr.addrid = cab.addrid AND cr.aidx = r.aidx WHERE ar.id = 'acctbase' AND ac.ctype = ? AND r.aidx > ? ORDER BY r.aidx ASC LIMIT ?") + if err != nil { + return nil, err + } + qs.lookupKvPairStmt, err = q.Prepare("SELECT acctrounds.rnd, kvstore.key, kvstore.value FROM acctrounds LEFT JOIN kvstore ON key = ? WHERE id='acctbase';") if err != nil { return nil, err @@ -379,9 +384,9 @@ func (qs *accountsDbQueries) LookupResources(addr basics.Address, aidx basics.Cr func (qs *accountsDbQueries) LookupAllResources(addr basics.Address) (data []trackerdb.PersistedResourcesData, rnd basics.Round, err error) { err = db.Retry(func() error { // Query for all resources - rows, err := qs.lookupAllResourcesStmt.Query(addr[:]) - if err != nil { - return err + rows, err0 := qs.lookupAllResourcesStmt.Query(addr[:]) + if err0 != nil { + return err0 } defer rows.Close() @@ -390,7 +395,7 @@ func (qs *accountsDbQueries) LookupAllResources(addr basics.Address) (data []tra data = nil var buf []byte for rows.Next() { - err := rows.Scan(&addrid, &dbRound, &aidx, &buf) + err = rows.Scan(&addrid, &dbRound, &aidx, &buf) if err != nil { return err } @@ -421,6 +426,71 @@ func (qs *accountsDbQueries) LookupAllResources(addr basics.Address) (data []tra return } +func (qs *accountsDbQueries) LookupLimitedResources(addr basics.Address, minIdx basics.CreatableIndex, maxCreatables uint64, ctype basics.CreatableType) (data []trackerdb.PersistedResourcesDataWithCreator, rnd basics.Round, err error) { + err = db.Retry(func() error { + // Query for all resources + rows, err0 := qs.lookupLimitedResourcesStmt.Query(addr[:], ctype, minIdx, maxCreatables) + if err0 != nil { + return err0 + } + defer rows.Close() + + var addrid, aidx sql.NullInt64 + var dbRound basics.Round + data = nil + var actAssetBuf []byte + var crtAssetBuf []byte + var creatorAddrBuf []byte + for rows.Next() { + err = rows.Scan(&addrid, &dbRound, &aidx, &creatorAddrBuf, &actAssetBuf, &crtAssetBuf) + if err != nil { + return err + } + if !addrid.Valid || !aidx.Valid { + // we received an entry without any index. This would happen only on the first entry when there are no resources for this address. + // ensure this is the first entry, set the round and return + if len(data) != 0 { + return fmt.Errorf("LookupLimitedResources: unexpected invalid result on non-first resource record: (%v, %v)", addrid.Valid, aidx.Valid) + } + rnd = dbRound + break + } + var actResData trackerdb.ResourcesData + var crtResData trackerdb.ResourcesData + err = protocol.Decode(actAssetBuf, &actResData) + if err != nil { + return err + } + err = protocol.Decode(crtAssetBuf, &crtResData) + if err != nil { + return err + } + + // Update asset holding data in the creator resource data + crtResData.Amount = actResData.Amount + crtResData.Freeze = actResData.Freeze + crtResData.ResourceFlags = actResData.ResourceFlags + + creatorAddr := basics.Address{} + copy(creatorAddr[:], creatorAddrBuf) + + data = append(data, trackerdb.PersistedResourcesDataWithCreator{ + PersistedResourcesData: trackerdb.PersistedResourcesData{ + AcctRef: sqlRowRef{addrid.Int64}, + Aidx: basics.CreatableIndex(aidx.Int64), + Data: crtResData, + Round: dbRound, + }, + Creator: creatorAddr, + }) + + rnd = dbRound + } + return nil + }) + return +} + // LookupAccount looks up for a the account data given it's address. It returns the persistedAccountData, which includes the current database round and the matching // account data, if such was found. If no matching account data could be found for the given address, an empty account data would // be retrieved. @@ -541,6 +611,7 @@ func (qs *accountsDbQueries) Close() { &qs.lookupAccountStmt, &qs.lookupResourcesStmt, &qs.lookupAllResourcesStmt, + &qs.lookupLimitedResourcesStmt, &qs.lookupKvPairStmt, &qs.lookupKeysByRangeStmt, &qs.lookupCreatorStmt, From e846d55eadf568c942490e3f1373599122dd345a Mon Sep 17 00:00:00 2001 From: Gary Malouf <982483+gmalouf@users.noreply.github.com> Date: Wed, 6 Mar 2024 15:42:26 -0500 Subject: [PATCH 02/18] Patches for cleanly returning no results when next token is set above any existing asset ids for the account. --- daemon/algod/api/server/v2/handlers.go | 12 +++++++----- .../api/server/v2/test/handlers_resources_test.go | 2 +- ledger/acctupdates.go | 2 +- ledger/ledger.go | 6 +++--- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/daemon/algod/api/server/v2/handlers.go b/daemon/algod/api/server/v2/handlers.go index 7d3b74d3fb..5cc9b0e5c0 100644 --- a/daemon/algod/api/server/v2/handlers.go +++ b/daemon/algod/api/server/v2/handlers.go @@ -105,7 +105,7 @@ type LedgerForAPI interface { ConsensusParams(r basics.Round) (config.ConsensusParams, error) Latest() basics.Round LookupAsset(rnd basics.Round, addr basics.Address, aidx basics.AssetIndex) (ledgercore.AssetResource, error) - LookupAssets(rnd basics.Round, addr basics.Address, assetIDGT basics.AssetIndex, limit uint64) ([]ledgercore.AssetResourceWithIDs, error) + LookupAssets(rnd basics.Round, addr basics.Address, assetIDGT basics.AssetIndex, limit uint64) ([]ledgercore.AssetResourceWithIDs, basics.Round, error) LookupApplication(rnd basics.Round, addr basics.Address, aidx basics.AppIndex) (ledgercore.AppResource, error) BlockCert(rnd basics.Round) (blk bookkeeping.Block, cert agreement.Certificate, err error) LatestTotals() (basics.Round, ledgercore.AccountTotals, error) @@ -1155,18 +1155,20 @@ func (v2 *Handlers) AccountAssetsInformation(ctx echo.Context, address string, p // 3. Prepare JSON response lastRound := ledger.Latest() - records, err := ledger.LookupAssets(lastRound, addr, basics.AssetIndex(assetGreaterThan), *params.Limit) + records, lookupRound, err := ledger.LookupAssets(lastRound, addr, basics.AssetIndex(assetGreaterThan), *params.Limit) if err != nil { return internalError(ctx, err, errFailedLookingUpLedger, v2.Log) } // prepare JSON response - response := model.AccountAssetHoldingsResponse{Round: uint64(lastRound)} + response := model.AccountAssetHoldingsResponse{Round: uint64(lookupRound)} // We always are setting the next token, the client-side can use the total app counts to determine if there are more. - nextTk := strconv.FormatUint(uint64(records[len(records)-1].AssetID), 10) - response.NextToken = &nextTk + if len(records) > 0 { + nextTk := strconv.FormatUint(uint64(records[len(records)-1].AssetID), 10) + response.NextToken = &nextTk + } assetHoldings := make([]model.AccountAssetHolding, 0, len(records)) diff --git a/daemon/algod/api/server/v2/test/handlers_resources_test.go b/daemon/algod/api/server/v2/test/handlers_resources_test.go index a8df3e45ff..d4c12d0210 100644 --- a/daemon/algod/api/server/v2/test/handlers_resources_test.go +++ b/daemon/algod/api/server/v2/test/handlers_resources_test.go @@ -108,7 +108,7 @@ func (l *mockLedger) LookupAsset(rnd basics.Round, addr basics.Address, aidx bas return ar, nil } -func (l *mockLedger) LookupAssets(rnd basics.Round, addr basics.Address, assetIDGT basics.AssetIndex, limit uint64) ([]ledgercore.AssetResourceWithIDs, error) { +func (l *mockLedger) LookupAssets(rnd basics.Round, addr basics.Address, assetIDGT basics.AssetIndex, limit uint64) ([]ledgercore.AssetResourceWithIDs, basics.Round, error) { panic("implement me") } diff --git a/ledger/acctupdates.go b/ledger/acctupdates.go index 17b208120e..95daca19c3 100644 --- a/ledger/acctupdates.go +++ b/ledger/acctupdates.go @@ -1244,7 +1244,7 @@ func (au *accountUpdates) lookupAssetResources(rnd basics.Round, addr basics.Add return nil, basics.Round(0), err0 } - if resourceDbRound == currentDbRound { + if resourceDbRound == currentDbRound || len(persistedResources) == 0 { // db round will return 0 in this case data = make([]ledgercore.AssetResourceWithIDs, 0, len(persistedResources)) for _, pd := range persistedResources { ah := pd.Data.GetAssetHolding() diff --git a/ledger/ledger.go b/ledger/ledger.go index d5afe8783d..b17c4d4dcb 100644 --- a/ledger/ledger.go +++ b/ledger/ledger.go @@ -584,9 +584,9 @@ func (l *Ledger) LookupAsset(rnd basics.Round, addr basics.Address, aidx basics. } // LookupAssets loads asset resources that match the request parameters from the ledger. -func (l *Ledger) LookupAssets(rnd basics.Round, addr basics.Address, assetIDGT basics.AssetIndex, limit uint64) ([]ledgercore.AssetResourceWithIDs, error) { - resources, _, err := l.accts.LookupAssetResources(rnd, addr, assetIDGT, limit) - return resources, err +func (l *Ledger) LookupAssets(rnd basics.Round, addr basics.Address, assetIDGT basics.AssetIndex, limit uint64) ([]ledgercore.AssetResourceWithIDs, basics.Round, error) { + resources, lookupRound, err := l.accts.LookupAssetResources(rnd, addr, assetIDGT, limit) + return resources, lookupRound, err } // lookupResource loads a resource that matches the request parameters from the accounts update From d2d1b8e2615da971927d42dfbccc181360e43727 Mon Sep 17 00:00:00 2001 From: Gary Malouf <982483+gmalouf@users.noreply.github.com> Date: Mon, 1 Apr 2024 17:52:53 -0400 Subject: [PATCH 03/18] Unit test of the AccountAssets endpoint. Updated pagination logic to query one item extra each time to see if we have actually tokenized through all results before returning. Handler now deals with asset params being optional (in the case of a deleted asset). --- daemon/algod/api/server/v2/handlers.go | 21 ++- .../server/v2/test/handlers_resources_test.go | 156 +++++++++++++++++- 2 files changed, 165 insertions(+), 12 deletions(-) diff --git a/daemon/algod/api/server/v2/handlers.go b/daemon/algod/api/server/v2/handlers.go index 5cc9b0e5c0..5b9121bf03 100644 --- a/daemon/algod/api/server/v2/handlers.go +++ b/daemon/algod/api/server/v2/handlers.go @@ -1155,7 +1155,8 @@ func (v2 *Handlers) AccountAssetsInformation(ctx echo.Context, address string, p // 3. Prepare JSON response lastRound := ledger.Latest() - records, lookupRound, err := ledger.LookupAssets(lastRound, addr, basics.AssetIndex(assetGreaterThan), *params.Limit) + // We intentionally request one more than the limit to determine if there are more assets. + records, lookupRound, err := ledger.LookupAssets(lastRound, addr, basics.AssetIndex(assetGreaterThan), *params.Limit+1) if err != nil { return internalError(ctx, err, errFailedLookingUpLedger, v2.Log) @@ -1164,8 +1165,10 @@ func (v2 *Handlers) AccountAssetsInformation(ctx echo.Context, address string, p // prepare JSON response response := model.AccountAssetHoldingsResponse{Round: uint64(lookupRound)} - // We always are setting the next token, the client-side can use the total app counts to determine if there are more. - if len(records) > 0 { + // If the total count is greater than the limit, we set the next token to the last asset ID being returned + if uint64(len(records)) > *params.Limit { + // we do not include the last record in the response + records = records[:*params.Limit] nextTk := strconv.FormatUint(uint64(records[len(records)-1].AssetID), 10) response.NextToken = &nextTk } @@ -1178,21 +1181,17 @@ func (v2 *Handlers) AccountAssetsInformation(ctx echo.Context, address string, p continue } - if record.AssetParams == nil { - v2.Log.Warnf("AccountAssetsInformation: asset %d has no params - should not be possible", record.AssetID) - continue - } - - asset := AssetParamsToAsset(record.Creator.String(), record.AssetID, record.AssetParams) - aah := model.AccountAssetHolding{ AssetHolding: model.AssetHolding{ Amount: record.AssetHolding.Amount, AssetID: uint64(record.AssetID), IsFrozen: record.AssetHolding.Frozen, }, + } - AssetParams: &asset.Params, + if record.AssetParams != nil { + asset := AssetParamsToAsset(record.Creator.String(), record.AssetID, record.AssetParams) + aah.AssetParams = &asset.Params } assetHoldings = append(assetHoldings, aah) diff --git a/daemon/algod/api/server/v2/test/handlers_resources_test.go b/daemon/algod/api/server/v2/test/handlers_resources_test.go index d4c12d0210..f4d1f06047 100644 --- a/daemon/algod/api/server/v2/test/handlers_resources_test.go +++ b/daemon/algod/api/server/v2/test/handlers_resources_test.go @@ -21,6 +21,7 @@ import ( "fmt" "net/http" "net/http/httptest" + "strconv" "testing" "github.com/algorand/go-algorand/data/transactions/logic" @@ -109,7 +110,29 @@ func (l *mockLedger) LookupAsset(rnd basics.Round, addr basics.Address, aidx bas } func (l *mockLedger) LookupAssets(rnd basics.Round, addr basics.Address, assetIDGT basics.AssetIndex, limit uint64) ([]ledgercore.AssetResourceWithIDs, basics.Round, error) { - panic("implement me") + ad, ok := l.accounts[addr] + if !ok { + return nil, rnd, nil + } + + var res []ledgercore.AssetResourceWithIDs + for i := assetIDGT + 1; i < assetIDGT+1+basics.AssetIndex(limit); i++ { + apr := ledgercore.AssetResourceWithIDs{} + if ap, ok := ad.AssetParams[i]; ok { + apr.AssetParams = &ap + apr.Creator = basics.Address{} + } + + if ah, ok := ad.Assets[i]; ok { + apr.AssetHolding = &ah + } + + if apr.AssetParams != nil || apr.AssetHolding != nil { + apr.AssetID = i + res = append(res, apr) + } + } + return res, rnd, nil } func (l *mockLedger) LookupApplication(rnd basics.Round, addr basics.Address, aidx basics.AppIndex) (ar ledgercore.AppResource, err error) { @@ -216,6 +239,23 @@ func randomAccountWithAssetParams(N int) basics.AccountData { return a } +func randomAccountWithSomeAssetHoldingsAndOverlappingAssetParams(overlapN int, nonOverlapAssetHoldingsN int) basics.AccountData { + a := ledgertesting.RandomAccountData(0) + a.AssetParams = make(map[basics.AssetIndex]basics.AssetParams) + a.Assets = make(map[basics.AssetIndex]basics.AssetHolding) + // overlapN assets have both asset params and asset holdings + for i := 1; i <= overlapN; i++ { + a.AssetParams[basics.AssetIndex(i)] = ledgertesting.RandomAssetParams() + a.Assets[basics.AssetIndex(i)] = ledgertesting.RandomAssetHolding(false) + } + + // nonOverlapAssetHoldingsN assets have only asset holdings + for i := overlapN + 1; i <= (overlapN + nonOverlapAssetHoldingsN); i++ { + a.Assets[basics.AssetIndex(i)] = ledgertesting.RandomAssetHolding(false) + } + return a +} + func randomAccountWithAppLocalState(N int) basics.AccountData { a := ledgertesting.RandomAccountData(0) a.AppLocalStates = make(map[basics.AppIndex]basics.AppLocalState) @@ -246,6 +286,7 @@ func setupTestForLargeResources(t *testing.T, acctSize, maxResults int, accountM mockNode := makeMockNode(&ml, t.Name(), nil, cannedStatusReportGolden, false) mockNode.config.MaxAPIResourcesPerAccount = uint64(maxResults) + mockNode.config.EnableExperimentalAPI = true dummyShutdownChan := make(chan struct{}) handlers = v2.Handlers{ Node: mockNode, @@ -385,6 +426,119 @@ func accountInformationResourceLimitsTest(t *testing.T, accountMaker func(int) b } } +func accountAssetInformationResourceLimitsTest(t *testing.T, handlers v2.Handlers, addr basics.Address, + acctData basics.AccountData, params model.AccountAssetsInformationParams, inputNextToken int, maxResults int, expectToken bool) { + fakeLatestRound := basics.Round(10) + + ctx, rec := newReq(t) + err := handlers.AccountAssetsInformation(ctx, addr.String(), params) + require.NoError(t, err) + require.Equal(t, 200, rec.Code) + var ret model.AccountAssetHoldingsResponse + err = json.Unmarshal(rec.Body.Bytes(), &ret) + require.NoError(t, err) + assert.Equal(t, fakeLatestRound, basics.Round(ret.Round)) + + if expectToken { + nextRaw, err0 := strconv.ParseUint(*ret.NextToken, 10, 64) + require.NoError(t, err0) + // The next token decoded is actually the last asset id returned + assert.Equal(t, (*ret.AssetHoldings)[maxResults-1].AssetHolding.AssetID, nextRaw) + } + assert.Equal(t, maxResults, len(*ret.AssetHoldings)) + + // Asset holdings should match the first limit assets from the account data + minForResults := 0 + if inputNextToken > 0 { + minForResults = inputNextToken + } + for i := minForResults; i < minForResults+maxResults; i++ { + expectedIndex := i + 1 + + assert.Equal(t, acctData.Assets[basics.AssetIndex(expectedIndex)].Amount, (*ret.AssetHoldings)[i-minForResults].AssetHolding.Amount) + assert.Equal(t, acctData.Assets[basics.AssetIndex(expectedIndex)].Frozen, (*ret.AssetHoldings)[i-minForResults].AssetHolding.IsFrozen) + assert.Equal(t, uint64(expectedIndex), (*ret.AssetHoldings)[i-minForResults].AssetHolding.AssetID) + } +} + +// TestAccountAssetsInformation tests the account asset information endpoint +func TestAccountAssetsInformation(t *testing.T) { + partitiontest.PartitionTest(t) + + accountOverlappingAssetParamsHoldingsCount := 1000 + accountNonOverlappingAssetHoldingsCount := 25 + totalAssetHoldings := accountOverlappingAssetParamsHoldingsCount + accountNonOverlappingAssetHoldingsCount + + handlers, addr, acctData := setupTestForLargeResources(t, accountOverlappingAssetParamsHoldingsCount, 50, func(N int) basics.AccountData { + return randomAccountWithSomeAssetHoldingsAndOverlappingAssetParams(N, accountNonOverlappingAssetHoldingsCount) + }) + + // 1. Query with no limit/pagination - should get DefaultAssetResults back + accountAssetInformationResourceLimitsTest(t, handlers, addr, acctData, model.AccountAssetsInformationParams{}, + 0, int(v2.DefaultAssetResults), false) + + // 2. Query with limit Date: Thu, 4 Apr 2024 15:17:01 -0400 Subject: [PATCH 04/18] Update lookup limited resources sql query to conditionally/left join against asset creator information iff it is available. Updated result parsing logic to handle this data conditionally being present. Added new functional test exercising the limit query itself, including several failure modes. Lastly, tweak handler to check if creator address is set to its zero value in determining whether to return result with asset params set. --- daemon/algod/api/server/v2/handlers.go | 2 +- ledger/acctupdates.go | 35 +++-- ledger/store/trackerdb/sqlitedriver/sql.go | 59 +++++--- .../trackerdb/testsuite/accounts_kv_test.go | 143 ++++++++++++++++++ .../trackerdb/testsuite/sqlitedb_test.go | 3 + 5 files changed, 209 insertions(+), 33 deletions(-) diff --git a/daemon/algod/api/server/v2/handlers.go b/daemon/algod/api/server/v2/handlers.go index 5b9121bf03..44802f09a4 100644 --- a/daemon/algod/api/server/v2/handlers.go +++ b/daemon/algod/api/server/v2/handlers.go @@ -1189,7 +1189,7 @@ func (v2 *Handlers) AccountAssetsInformation(ctx echo.Context, address string, p }, } - if record.AssetParams != nil { + if !record.Creator.IsZero() { asset := AssetParamsToAsset(record.Creator.String(), record.AssetID, record.AssetParams) aah.AssetParams = &asset.Params } diff --git a/ledger/acctupdates.go b/ledger/acctupdates.go index 95daca19c3..4158e90709 100644 --- a/ledger/acctupdates.go +++ b/ledger/acctupdates.go @@ -1248,16 +1248,31 @@ func (au *accountUpdates) lookupAssetResources(rnd basics.Round, addr basics.Add data = make([]ledgercore.AssetResourceWithIDs, 0, len(persistedResources)) for _, pd := range persistedResources { ah := pd.Data.GetAssetHolding() - ap := pd.Data.GetAssetParams() - data = append(data, ledgercore.AssetResourceWithIDs{ - AssetID: basics.AssetIndex(pd.Aidx), - Creator: pd.Creator, - - AssetResource: ledgercore.AssetResource{ - AssetHolding: &ah, - AssetParams: &ap, - }, - }) + + var arwi ledgercore.AssetResourceWithIDs + if !pd.Creator.IsZero() { + ap := pd.Data.GetAssetParams() + + arwi = ledgercore.AssetResourceWithIDs{ + AssetID: basics.AssetIndex(pd.Aidx), + Creator: pd.Creator, + + AssetResource: ledgercore.AssetResource{ + AssetHolding: &ah, + AssetParams: &ap, + }, + } + } else { + arwi = ledgercore.AssetResourceWithIDs{ + AssetID: basics.AssetIndex(pd.Aidx), + + AssetResource: ledgercore.AssetResource{ + AssetHolding: &ah, + }, + } + } + + data = append(data, arwi) } // We've found all the resources we could find for this address. return data, currentDbRound, nil diff --git a/ledger/store/trackerdb/sqlitedriver/sql.go b/ledger/store/trackerdb/sqlitedriver/sql.go index 350b2492c0..048fe09a2b 100644 --- a/ledger/store/trackerdb/sqlitedriver/sql.go +++ b/ledger/store/trackerdb/sqlitedriver/sql.go @@ -87,7 +87,7 @@ func AccountsInitDbQueries(q db.Queryable) (*accountsDbQueries, error) { return nil, err } - qs.lookupLimitedResourcesStmt, err = q.Prepare("SELECT ab.rowid, ar.rnd, r.aidx, ac.creator, r.data, cr.data FROM acctrounds ar JOIN accountbase ab ON ab.address = ? JOIN resources r ON r.addrid = ab.addrid JOIN assetcreators ac ON r.aidx = ac.asset JOIN accountbase cab ON ac.creator = cab.address JOIN resources cr ON cr.addrid = cab.addrid AND cr.aidx = r.aidx WHERE ar.id = 'acctbase' AND ac.ctype = ? AND r.aidx > ? ORDER BY r.aidx ASC LIMIT ?") + qs.lookupLimitedResourcesStmt, err = q.Prepare("SELECT ab.rowid, ar.rnd, r.aidx, ac.creator, r.data, cr.data FROM acctrounds ar JOIN accountbase ab ON ab.address = ? JOIN resources r ON r.addrid = ab.addrid LEFT JOIN assetcreators ac ON r.aidx = ac.asset LEFT JOIN accountbase cab ON ac.creator = cab.address LEFT JOIN resources cr ON cr.addrid = cab.addrid AND cr.aidx = r.aidx WHERE ar.id = 'acctbase' AND r.aidx > ? ORDER BY r.aidx ASC LIMIT ?") if err != nil { return nil, err } @@ -429,7 +429,7 @@ func (qs *accountsDbQueries) LookupAllResources(addr basics.Address) (data []tra func (qs *accountsDbQueries) LookupLimitedResources(addr basics.Address, minIdx basics.CreatableIndex, maxCreatables uint64, ctype basics.CreatableType) (data []trackerdb.PersistedResourcesDataWithCreator, rnd basics.Round, err error) { err = db.Retry(func() error { // Query for all resources - rows, err0 := qs.lookupLimitedResourcesStmt.Query(addr[:], ctype, minIdx, maxCreatables) + rows, err0 := qs.lookupLimitedResourcesStmt.Query(addr[:], minIdx, maxCreatables) if err0 != nil { return err0 } @@ -461,28 +461,43 @@ func (qs *accountsDbQueries) LookupLimitedResources(addr basics.Address, minIdx if err != nil { return err } - err = protocol.Decode(crtAssetBuf, &crtResData) - if err != nil { - return err + + var prdwc trackerdb.PersistedResourcesDataWithCreator + if len(crtAssetBuf) > 0 { + err = protocol.Decode(crtAssetBuf, &crtResData) + if err != nil { + return err + } + + // Update asset holding data in the creator resource data + crtResData.Amount = actResData.Amount + crtResData.Freeze = actResData.Freeze + crtResData.ResourceFlags = actResData.ResourceFlags + + creatorAddr := basics.Address{} + copy(creatorAddr[:], creatorAddrBuf) + + prdwc = trackerdb.PersistedResourcesDataWithCreator{ + PersistedResourcesData: trackerdb.PersistedResourcesData{ + AcctRef: sqlRowRef{addrid.Int64}, + Aidx: basics.CreatableIndex(aidx.Int64), + Data: crtResData, + Round: dbRound, + }, + Creator: creatorAddr, + } + } else { // no creator found, asset was likely deleted, will not have asset params + prdwc = trackerdb.PersistedResourcesDataWithCreator{ + PersistedResourcesData: trackerdb.PersistedResourcesData{ + AcctRef: sqlRowRef{addrid.Int64}, + Aidx: basics.CreatableIndex(aidx.Int64), + Data: actResData, + Round: dbRound, + }, + } } - // Update asset holding data in the creator resource data - crtResData.Amount = actResData.Amount - crtResData.Freeze = actResData.Freeze - crtResData.ResourceFlags = actResData.ResourceFlags - - creatorAddr := basics.Address{} - copy(creatorAddr[:], creatorAddrBuf) - - data = append(data, trackerdb.PersistedResourcesDataWithCreator{ - PersistedResourcesData: trackerdb.PersistedResourcesData{ - AcctRef: sqlRowRef{addrid.Int64}, - Aidx: basics.CreatableIndex(aidx.Int64), - Data: crtResData, - Round: dbRound, - }, - Creator: creatorAddr, - }) + data = append(data, prdwc) rnd = dbRound } diff --git a/ledger/store/trackerdb/testsuite/accounts_kv_test.go b/ledger/store/trackerdb/testsuite/accounts_kv_test.go index 115e958901..283e93d8d7 100644 --- a/ledger/store/trackerdb/testsuite/accounts_kv_test.go +++ b/ledger/store/trackerdb/testsuite/accounts_kv_test.go @@ -27,6 +27,9 @@ func init() { registerTest("accounts-crud", CustomTestAccountsCrud) registerTest("resources-crud", CustomTestResourcesCrud) registerTest("resources-query-all", CustomTestResourcesQueryAll) + // NOTE: this test is disabled because it is not supported by the kv implementation, + // it is only supported by the sqlite implementation and is enabled there (see sqlitedb_test.go) + // registerTest("resources-query-all-limited", CustomTestResourcesQueryAllLimited) registerTest("kv-crud", CustomTestAppKVCrud) registerTest("creatables-crud", CustomTestCreatablesCrud) } @@ -232,6 +235,146 @@ func CustomTestResourcesQueryAll(t *customT) { require.Equal(t, expectedRound, rnd) // db round (from the return) } +func CustomTestResourcesQueryAllLimited(t *customT) { + aow, err := t.db.MakeAccountsOptimizedWriter(true, true, false, true) + require.NoError(t, err) + + aor, err := t.db.MakeAccountsOptimizedReader() + require.NoError(t, err) + + aw, err := t.db.MakeAccountsWriter() + require.NoError(t, err) + + // set round to 3 + // Note: this will be used to check that we read the round + expectedRound := basics.Round(3) + err = aw.UpdateAccountsRound(expectedRound) + require.NoError(t, err) + + // + // pre-fill the db with two accounts for testing - one just owning a creatable + // + + // account A - will own creatables + addrA := RandomAddress() + accDataA := trackerdb.BaseAccountData{RewardsBase: 1000} + refAccA, err := aow.InsertAccount(addrA, accDataA.NormalizedOnlineBalance(t.proto), accDataA) + require.NoError(t, err) + + // account B - will opt into creatables + addrB := RandomAddress() + accDataB := trackerdb.BaseAccountData{RewardsBase: 1000} + refAccB, err := aow.InsertAccount(addrB, accDataB.NormalizedOnlineBalance(t.proto), accDataB) + require.NoError(t, err) + + // resource A-0 for accounts A and B + resDataA0 := trackerdb.ResourcesData{} + aidxResA0 := basics.CreatableIndex(1) + _, err = aow.InsertResource(refAccA, aidxResA0, resDataA0) + require.NoError(t, err) + _, err = aow.InsertResource(refAccB, aidxResA0, resDataA0) + require.NoError(t, err) + + // resource A-1 for accounts A and B + resDataA1 := trackerdb.ResourcesData{ + Total: 10000, + } + aidxResA1 := basics.CreatableIndex(2) + _, err = aow.InsertResource(refAccA, aidxResA1, resDataA1) + require.NoError(t, err) + _, err = aow.InsertResource(refAccB, aidxResA1, resDataA1) + require.NoError(t, err) + + // insert creator account A for A-0 + resA0ctype := basics.AssetCreatable + cRefA0, err := aow.InsertCreatable(aidxResA0, resA0ctype, addrA[:]) + require.NoError(t, err) + require.NotNil(t, cRefA0) + + // insert creator account A for A-1 + resA1ctype := basics.AssetCreatable + cRefA1, err := aow.InsertCreatable(aidxResA1, resA1ctype, addrA[:]) + require.NoError(t, err) + require.NotNil(t, cRefA1) + + // Lookup with limited resources for account A + prs, rnd, err := aor.LookupLimitedResources(addrA, 0, 2, basics.AssetCreatable) + require.NoError(t, err) + require.Equal(t, 2, len(prs)) + require.Equal(t, aidxResA0, prs[0].Aidx) + require.Equal(t, aidxResA1, prs[1].Aidx) + require.Equal(t, addrA, prs[0].Creator) + require.Equal(t, addrA, prs[1].Creator) + require.Equal(t, expectedRound, prs[0].Round) // db round (inside resources) + require.Equal(t, expectedRound, prs[1].Round) + require.Equal(t, resDataA0, prs[0].Data) + require.Equal(t, resDataA1, prs[1].Data) + require.Equal(t, expectedRound, rnd) // db round (from the return) + + // Lookup with limited resources for account B + prs, rnd, err = aor.LookupLimitedResources(addrB, 0, 2, basics.AssetCreatable) + require.NoError(t, err) + require.Equal(t, 2, len(prs)) + require.Equal(t, aidxResA0, prs[0].Aidx) + require.Equal(t, aidxResA1, prs[1].Aidx) + // Creator should be present and set to address A + require.Equal(t, addrA, prs[0].Creator) + require.Equal(t, addrA, prs[1].Creator) + require.Equal(t, expectedRound, prs[0].Round) // db round (inside resources) + require.Equal(t, expectedRound, prs[1].Round) + require.Equal(t, resDataA0, prs[0].Data) + require.Equal(t, resDataA1, prs[1].Data) + require.Equal(t, expectedRound, rnd) // db round (from the return) + + // Set limit to 1, should return only 1 resource + prs, rnd, err = aor.LookupLimitedResources(addrB, 0, 1, basics.AssetCreatable) + require.NoError(t, err) + require.Equal(t, 1, len(prs)) + require.Equal(t, aidxResA0, prs[0].Aidx) + require.Equal(t, addrA, prs[0].Creator) + require.Equal(t, expectedRound, prs[0].Round) // db round (inside resources) + require.Equal(t, resDataA0, prs[0].Data) + require.Equal(t, expectedRound, rnd) // db round (from the return) + + // Set min to 1, should return only 1 resource (index 1) + prs, rnd, err = aor.LookupLimitedResources(addrB, 1, 1, basics.AssetCreatable) + require.NoError(t, err) + require.Equal(t, 1, len(prs)) + require.Equal(t, aidxResA1, prs[0].Aidx) + require.Equal(t, addrA, prs[0].Creator) + require.Equal(t, expectedRound, prs[0].Round) // db round (inside resources) + require.Equal(t, resDataA1, prs[0].Data) + require.Equal(t, expectedRound, rnd) // db round (from the return) + + // Delete both resource creatables + rowsAffected, err := aow.DeleteCreatable(aidxResA0, basics.AssetCreatable) + require.NoError(t, err) + require.Equal(t, int64(1), rowsAffected) + rowsAffected, err = aow.DeleteCreatable(aidxResA1, basics.AssetCreatable) + require.NoError(t, err) + require.Equal(t, int64(1), rowsAffected) + _, err = aow.DeleteResource(refAccA, aidxResA0) + require.NoError(t, err) + _, err = aow.DeleteResource(refAccA, aidxResA1) + require.NoError(t, err) + + // Account A should have no resources, account B should have 2 resources without a creator/params + prs, rnd, err = aor.LookupLimitedResources(addrA, 0, 2, basics.AssetCreatable) + require.NoError(t, err) + require.Equal(t, 0, len(prs)) + prs, rnd, err = aor.LookupLimitedResources(addrB, 0, 2, basics.AssetCreatable) + require.NoError(t, err) + require.Equal(t, 2, len(prs)) + require.Equal(t, aidxResA0, prs[0].Aidx) + require.Equal(t, aidxResA1, prs[1].Aidx) + require.True(t, prs[0].Creator.IsZero()) + require.True(t, prs[1].Creator.IsZero()) + require.Equal(t, expectedRound, prs[0].Round) // db round (inside resources) + require.Equal(t, expectedRound, prs[1].Round) + require.Equal(t, resDataA0, prs[0].Data) + require.Equal(t, resDataA1, prs[1].Data) +} + func CustomTestAppKVCrud(t *customT) { aow, err := t.db.MakeAccountsOptimizedWriter(true, true, true, false) require.NoError(t, err) diff --git a/ledger/store/trackerdb/testsuite/sqlitedb_test.go b/ledger/store/trackerdb/testsuite/sqlitedb_test.go index 5a0d942ab8..3b76e8d04d 100644 --- a/ledger/store/trackerdb/testsuite/sqlitedb_test.go +++ b/ledger/store/trackerdb/testsuite/sqlitedb_test.go @@ -38,6 +38,9 @@ func TestSqliteDB(t *testing.T) { return db } + // Run CustomTestResourcesQueryAllLimited, which is not supported by the k-v store implementation + registerTest("resources-query-all-limited", CustomTestResourcesQueryAllLimited) + // run the suite runGenericTestsWithDB(t, dbFactory) } From 55667f31dfd5be4f74af54d7bd2d2de6b9209062 Mon Sep 17 00:00:00 2001 From: Gary Malouf <982483+gmalouf@users.noreply.github.com> Date: Thu, 4 Apr 2024 16:54:38 -0400 Subject: [PATCH 05/18] Set asset max on account assets pagination query to 1000. --- daemon/algod/api/server/v2/handlers.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/daemon/algod/api/server/v2/handlers.go b/daemon/algod/api/server/v2/handlers.go index 44802f09a4..d9c6f4b021 100644 --- a/daemon/algod/api/server/v2/handlers.go +++ b/daemon/algod/api/server/v2/handlers.go @@ -72,7 +72,7 @@ const MaxTealDryrunBytes = 1_000_000 // MaxAssetResults sets a size limit for the number of assets returned in a single request to the // /v2/accounts/{address}/assets endpoint -const MaxAssetResults = 10000 +const MaxAssetResults = 1000 // DefaultAssetResults sets a default size limit for the number of assets returned in a single request to the // /v2/accounts/{address}/assets endpoint From 7bc9aa1e49e9b11ae49eb012bb07472aafd0448d Mon Sep 17 00:00:00 2001 From: Gary Malouf <982483+gmalouf@users.noreply.github.com> Date: Fri, 5 Apr 2024 21:17:27 -0400 Subject: [PATCH 06/18] Add support for invoking the account assets information endpoint from our restClient and the goal cli. --- cmd/goal/account.go | 79 +++++++++++++++++++ daemon/algod/api/client/restClient.go | 19 +++++ daemon/algod/api/server/v2/handlers.go | 2 +- .../server/v2/test/handlers_resources_test.go | 2 +- libgoal/libgoal.go | 9 +++ 5 files changed, 109 insertions(+), 2 deletions(-) diff --git a/cmd/goal/account.go b/cmd/goal/account.go index 9fe230f670..c4ddd96fa2 100644 --- a/cmd/goal/account.go +++ b/cmd/goal/account.go @@ -71,6 +71,9 @@ var ( listAccountInfo bool onlyShowAssetIds bool partKeyIDToDelete string + + next string + limit uint64 ) func init() { @@ -79,6 +82,7 @@ func init() { accountCmd.AddCommand(listCmd) accountCmd.AddCommand(renameCmd) accountCmd.AddCommand(infoCmd) + accountCmd.AddCommand(assetDetailsCmd) accountCmd.AddCommand(balanceCmd) accountCmd.AddCommand(rewardsCmd) accountCmd.AddCommand(changeOnlineCmd) @@ -136,6 +140,12 @@ func init() { infoCmd.MarkFlagRequired("address") infoCmd.Flags().BoolVar(&onlyShowAssetIds, "onlyShowAssetIds", false, "Only show ASA IDs and not pull asset metadata") + // Asset details flags + assetDetailsCmd.Flags().StringVarP(&accountAddress, "address", "a", "", "Account address to look up (required)") + assetDetailsCmd.MarkFlagRequired("address") + assetDetailsCmd.Flags().StringVarP(&next, "next", "n", "", "The next asset index to use for pagination") + assetDetailsCmd.Flags().Uint64VarP(&limit, "limit", "l", 0, "The maximum number of assets to return") + // Balance flags balanceCmd.Flags().StringVarP(&accountAddress, "address", "a", "", "Account address to retrieve balance (required)") balanceCmd.MarkFlagRequired("address") @@ -539,6 +549,33 @@ var listCmd = &cobra.Command{ }, } +var assetDetailsCmd = &cobra.Command{ + Use: "assetdetails", + Short: "Retrieve information about the assets belonging to the specified account inclusive of asset metadata", + Long: `Retrieve information about the assets the specified account has created or opted into, inclusive of asset metadata.`, + Args: validateNoPosArgsFn, + Run: func(cmd *cobra.Command, args []string) { + dataDir := datadir.EnsureSingleDataDir() + client := ensureAlgodClient(dataDir) + + var nextPtr *string + var limitPtr *uint64 + if next != "" { + nextPtr = &next + } + if limit != 0 { + limitPtr = &limit + } + response, err := client.AccountAssetsInformation(accountAddress, nextPtr, limitPtr) + + if err != nil { + reportErrorf(errorRequestFail, err) + } + + printAccountAssetsInformation(accountAddress, response) + + }, +} var infoCmd = &cobra.Command{ Use: "info", Short: "Retrieve information about the assets and applications belonging to the specified account", @@ -731,6 +768,48 @@ func printAccountInfo(client libgoal.Client, address string, onlyShowAssetIds bo return hasError } +func printAccountAssetsInformation(address string, response model.AccountAssetsInformationResponse) { + fmt.Printf("Account: %s\n", address) + fmt.Printf("Round: %d\n", response.Round) + if response.NextToken != nil { + fmt.Printf("NextToken (to retrieve more account assets): %s\n", *response.NextToken) + } + fmt.Printf("Assets:\n") + for _, asset := range *response.AssetHoldings { + fmt.Printf(" Asset ID: %d\n", asset.AssetHolding.AssetID) + + if asset.AssetParams != nil { + amount := assetDecimalsFmt(asset.AssetHolding.Amount, asset.AssetParams.Decimals) + fmt.Printf(" Amount: %s\n", amount) + fmt.Printf(" IsFrozen: %t\n", asset.AssetHolding.IsFrozen) + fmt.Printf(" Asset Params:\n") + fmt.Printf(" Creator: %s\n", asset.AssetParams.Creator) + + name := "" + if asset.AssetParams.Name != nil { + _, name = unicodePrintable(*asset.AssetParams.Name) + } + fmt.Printf(" Name: %s\n", name) + + units := "units" + if asset.AssetParams.UnitName != nil { + _, units = unicodePrintable(*asset.AssetParams.UnitName) + } + fmt.Printf(" Units: %s\n", units) + fmt.Printf(" Total: %d\n", asset.AssetParams.Total) + fmt.Printf(" Decimals: %d\n", asset.AssetParams.Decimals) + safeURL := "" + if asset.AssetParams.Url != nil { + _, safeURL = unicodePrintable(*asset.AssetParams.Url) + } + fmt.Printf(" URL: %s\n", safeURL) + } else { + fmt.Printf(" Amount (without formatting): %d\n", asset.AssetHolding.Amount) + fmt.Printf(" IsFrozen: %t\n", asset.AssetHolding.IsFrozen) + } + } +} + var balanceCmd = &cobra.Command{ Use: "balance", Short: "Retrieve the balances for the specified account", diff --git a/daemon/algod/api/client/restClient.go b/daemon/algod/api/client/restClient.go index dc9be20543..33b8da8ee1 100644 --- a/daemon/algod/api/client/restClient.go +++ b/daemon/algod/api/client/restClient.go @@ -377,6 +377,11 @@ type accountInformationParams struct { Exclude string `url:"exclude"` } +type pageParams struct { + Next *string `url:"next,omitempty"` + Limit *uint64 `url:"limit,omitempty"` +} + type catchupParams struct { Min uint64 `url:"min"` } @@ -508,6 +513,20 @@ func (client RestClient) RawAccountAssetInformation(accountAddress string, asset return } +// AccountAssetsInformation gets account information about a particular account's assets, subject to pagination. +func (client RestClient) AccountAssetsInformation(accountAddress string, next *string, limit *uint64) (response model.AccountAssetsInformationResponse, err error) { + err = client.get(&response, fmt.Sprintf("/v2/accounts/%s/assets", accountAddress), pageParams{next, limit}) + return +} + +// RawAccountAssetsInformation gets account information about a particular account's assets, subject to pagination. +func (client RestClient) RawAccountAssetsInformation(accountAddress string, next *string, limit *uint64) (response []byte, err error) { + var blob Blob + err = client.getRaw(&blob, fmt.Sprintf("/v2/accounts/%s/assets", accountAddress), pageParams{next, limit}) + response = blob + return +} + // SuggestedParams gets the suggested transaction parameters func (client RestClient) SuggestedParams() (response model.TransactionParametersResponse, err error) { err = client.get(&response, "/v2/transactions/params", nil) diff --git a/daemon/algod/api/server/v2/handlers.go b/daemon/algod/api/server/v2/handlers.go index d9c6f4b021..7df3d2edb4 100644 --- a/daemon/algod/api/server/v2/handlers.go +++ b/daemon/algod/api/server/v2/handlers.go @@ -1163,7 +1163,7 @@ func (v2 *Handlers) AccountAssetsInformation(ctx echo.Context, address string, p } // prepare JSON response - response := model.AccountAssetHoldingsResponse{Round: uint64(lookupRound)} + response := model.AccountAssetsInformationResponse{Round: uint64(lookupRound)} // If the total count is greater than the limit, we set the next token to the last asset ID being returned if uint64(len(records)) > *params.Limit { diff --git a/daemon/algod/api/server/v2/test/handlers_resources_test.go b/daemon/algod/api/server/v2/test/handlers_resources_test.go index f4d1f06047..d4987d7a2a 100644 --- a/daemon/algod/api/server/v2/test/handlers_resources_test.go +++ b/daemon/algod/api/server/v2/test/handlers_resources_test.go @@ -434,7 +434,7 @@ func accountAssetInformationResourceLimitsTest(t *testing.T, handlers v2.Handler err := handlers.AccountAssetsInformation(ctx, addr.String(), params) require.NoError(t, err) require.Equal(t, 200, rec.Code) - var ret model.AccountAssetHoldingsResponse + var ret model.AccountAssetsInformationResponse err = json.Unmarshal(rec.Body.Bytes(), &ret) require.NoError(t, err) assert.Equal(t, fakeLatestRound, basics.Round(ret.Round)) diff --git a/libgoal/libgoal.go b/libgoal/libgoal.go index 720e067019..e72b0588d6 100644 --- a/libgoal/libgoal.go +++ b/libgoal/libgoal.go @@ -664,6 +664,15 @@ func (c *Client) AccountInformation(account string, includeCreatables bool) (res return } +// AccountAssetsInformation returns the assets held by an account, including asset params for non-deleted assets. +func (c *Client) AccountAssetsInformation(account string, next *string, limit *uint64) (resp model.AccountAssetsInformationResponse, err error) { + algod, err := c.ensureAlgodClient() + if err == nil { + resp, err = algod.AccountAssetsInformation(account, next, limit) + } + return +} + // AccountApplicationInformation gets account information about a given app. func (c *Client) AccountApplicationInformation(accountAddress string, applicationID uint64) (resp model.AccountApplicationResponse, err error) { algod, err := c.ensureAlgodClient() From f694abab3ee9459e52dd8b7387edfd36194ec640 Mon Sep 17 00:00:00 2001 From: Gary Malouf <982483+gmalouf@users.noreply.github.com> Date: Tue, 9 Apr 2024 19:51:27 -0400 Subject: [PATCH 07/18] Introduce new database target version, adding a ctype column to the resources table and populating based off resolved asset/application value from data blob row by row. --- ledger/store/trackerdb/sqlitedriver/schema.go | 81 +++++++++++++++++++ ledger/store/trackerdb/sqlitedriver/sql.go | 12 ++- .../trackerdb/sqlitedriver/trackerdbV2.go | 17 ++++ ledger/store/trackerdb/version.go | 2 +- 4 files changed, 109 insertions(+), 3 deletions(-) diff --git a/ledger/store/trackerdb/sqlitedriver/schema.go b/ledger/store/trackerdb/sqlitedriver/schema.go index a36dd2cd90..e302119b7c 100644 --- a/ledger/store/trackerdb/sqlitedriver/schema.go +++ b/ledger/store/trackerdb/sqlitedriver/schema.go @@ -21,6 +21,7 @@ import ( "context" "database/sql" "encoding/hex" + "errors" "fmt" "time" @@ -941,3 +942,83 @@ func convertOnlineRoundParamsTail(ctx context.Context, e db.Executable) error { _, err := e.ExecContext(ctx, createVoteLastValidIndex) return err } + +func accountsAddCreatableTypeColumn(ctx context.Context, e db.Executable) error { + // Run resources migration if it hasn't run yet + var creatableTypeOnResourcesRun bool + err := e.QueryRow("SELECT 1 FROM pragma_table_info('resources') WHERE name='ctype'").Scan(&creatableTypeOnResourcesRun) + if !errors.Is(err, sql.ErrNoRows) { + return nil + } + + applyNewResourcesTableStructure := []string{ + `CREATE TABLE IF NOT EXISTS resources_ctype_migration ( + addrid INTEGER NOT NULL, + aidx INTEGER NOT NULL, + data BLOB NOT NULL, + ctype INTEGER NOT NULL, + PRIMARY KEY (addrid, aidx) ) WITHOUT ROWID`, + `INSERT INTO resources_ctype_migration (addrid, aidx, data, ctype) SELECT addrid, aidx, data, ctype FROM resources`, + `ALTER TABLE resources RENAME TO resources_old`, + `ALTER TABLE resources_ctype_migration RENAME TO resources`, + `DROP TABLE IF EXISTS resources_old`, + } + + _, err = e.ExecContext(ctx, "ALTER TABLE resources ADD COLUMN ctype INTEGER") + if err != nil { + return err + } + + updateStmt, err := e.PrepareContext(ctx, "UPDATE resources SET ctype = ? WHERE addrid = ? AND aidx = ?") + if err != nil { + return err + } + defer updateStmt.Close() + + rows, err := e.QueryContext(ctx, "SELECT ab.rowid, r.aidx, r.data FROM resources r JOIN accountbase ab ON r.addrid = ab.addrid") + if err != nil { + return err + } + defer rows.Close() + + // Update the ctype column for all resources. + for rows.Next() { + var addrid int64 + var aidx int64 + var encodedData []byte + err = rows.Scan(&addrid, &aidx, &encodedData) + if err != nil { + return err + } + + var rd trackerdb.ResourcesData + err = protocol.Decode(encodedData, &rd) + if err != nil { + return err + } + + var ct basics.CreatableType + if rd.IsAsset() { + ct = basics.AssetCreatable + } else if rd.IsApp() { + ct = basics.AppCreatable + } else { // This should never happen! + return fmt.Errorf("unable to discern creatable type for addrid %d, resource %d", addrid, aidx) + } + + _, err = updateStmt.ExecContext(ctx, ct, addrid, aidx) + if err != nil { + return err + } + } + + // Rename the tables to apply the new structure. + for _, stmt := range applyNewResourcesTableStructure { + _, err = e.ExecContext(ctx, stmt) + if err != nil { + return err + } + } + + return rows.Err() +} diff --git a/ledger/store/trackerdb/sqlitedriver/sql.go b/ledger/store/trackerdb/sqlitedriver/sql.go index 048fe09a2b..9483a042a6 100644 --- a/ledger/store/trackerdb/sqlitedriver/sql.go +++ b/ledger/store/trackerdb/sqlitedriver/sql.go @@ -173,7 +173,7 @@ func MakeAccountsSQLWriter(e db.Executable, hasAccounts, hasResources, hasKvPair return } - w.insertResourceStmt, err = e.Prepare("INSERT INTO resources(addrid, aidx, data) VALUES(?, ?, ?)") + w.insertResourceStmt, err = e.Prepare("INSERT INTO resources(addrid, aidx, data, ctype) VALUES(?, ?, ?, ?)") if err != nil { return } @@ -719,7 +719,15 @@ func (w accountsSQLWriter) InsertResource(accountRef trackerdb.AccountRef, aidx return nil, fmt.Errorf("no account could be found for rowid = nil: %w", err) } addrid := accountRef.(sqlRowRef).rowid - result, err := w.insertResourceStmt.Exec(addrid, aidx, protocol.Encode(&data)) + var ctype basics.CreatableType + if data.IsAsset() { + ctype = basics.AssetCreatable + } else if data.IsApp() { + ctype = basics.AppCreatable + } else { + return nil, fmt.Errorf("unable to resolve creatable type for account ref %d, creatable idx %d", addrid, aidx) + } + result, err := w.insertResourceStmt.Exec(addrid, aidx, protocol.Encode(&data), ctype) if err != nil { return } diff --git a/ledger/store/trackerdb/sqlitedriver/trackerdbV2.go b/ledger/store/trackerdb/sqlitedriver/trackerdbV2.go index db1416b521..03386cb69b 100644 --- a/ledger/store/trackerdb/sqlitedriver/trackerdbV2.go +++ b/ledger/store/trackerdb/sqlitedriver/trackerdbV2.go @@ -136,6 +136,12 @@ func RunMigrations(ctx context.Context, e db.Executable, params trackerdb.Params tu.log.Warnf("trackerDBInitialize failed to upgrade accounts database (ledger.tracker.sqlite) from schema 9 : %v", err) return } + case 10: + err = tu.upgradeDatabaseSchema10(ctx, e) + if err != nil { + tu.log.Warnf("trackerDBInitialize failed to upgrade accounts database (ledger.tracker.sqlite) from schema 10 : %v", err) + return + } default: return trackerdb.InitParams{}, fmt.Errorf("trackerDBInitialize unable to upgrade database from schema version %d", tu.schemaVersion) } @@ -507,6 +513,17 @@ func (tu *trackerDBSchemaInitializer) upgradeDatabaseSchema9(ctx context.Context return tu.setVersion(ctx, e, 10) } +// upgradeDatabaseSchema10 upgrades the database schema from version 10 to version 11, +// altering the resources table to add a new column, resources.ctype. +func (tu *trackerDBSchemaInitializer) upgradeDatabaseSchema10(ctx context.Context, e db.Executable) (err error) { + err = accountsAddCreatableTypeColumn(ctx, e) + if err != nil { + return err + } + // update version + return tu.setVersion(ctx, e, 11) +} + func removeEmptyDirsOnSchemaUpgrade(dbDirectory string) (err error) { catchpointRootDir := filepath.Join(dbDirectory, trackerdb.CatchpointDirName) if _, err := os.Stat(catchpointRootDir); os.IsNotExist(err) { diff --git a/ledger/store/trackerdb/version.go b/ledger/store/trackerdb/version.go index bf81dce82d..4cb343f335 100644 --- a/ledger/store/trackerdb/version.go +++ b/ledger/store/trackerdb/version.go @@ -19,4 +19,4 @@ package trackerdb // AccountDBVersion is the database version that this binary would know how to support and how to upgrade to. // details about the content of each of the versions can be found in the upgrade functions upgradeDatabaseSchemaXXXX // and their descriptions. -var AccountDBVersion = int32(10) +var AccountDBVersion = int32(11) From 67263990caf5e9d0c7957dd0bfd184bf79fe579d Mon Sep 17 00:00:00 2001 From: Gary Malouf <982483+gmalouf@users.noreply.github.com> Date: Wed, 10 Apr 2024 14:57:38 -0400 Subject: [PATCH 08/18] Remove join from resources table ctype migration and add a check if data blob matches as both an asset and app. --- ledger/store/trackerdb/sqlitedriver/schema.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ledger/store/trackerdb/sqlitedriver/schema.go b/ledger/store/trackerdb/sqlitedriver/schema.go index e302119b7c..2d855b8107 100644 --- a/ledger/store/trackerdb/sqlitedriver/schema.go +++ b/ledger/store/trackerdb/sqlitedriver/schema.go @@ -975,7 +975,7 @@ func accountsAddCreatableTypeColumn(ctx context.Context, e db.Executable) error } defer updateStmt.Close() - rows, err := e.QueryContext(ctx, "SELECT ab.rowid, r.aidx, r.data FROM resources r JOIN accountbase ab ON r.addrid = ab.addrid") + rows, err := e.QueryContext(ctx, "SELECT addrid, aidx, data FROM resources r") if err != nil { return err } @@ -998,7 +998,10 @@ func accountsAddCreatableTypeColumn(ctx context.Context, e db.Executable) error } var ct basics.CreatableType - if rd.IsAsset() { + if rd.IsAsset() && rd.IsApp() { + // This should never happen! + return fmt.Errorf("unable to discern creatable type for addrid %d, resource %d", addrid, aidx) + } else if rd.IsAsset() { ct = basics.AssetCreatable } else if rd.IsApp() { ct = basics.AppCreatable From 6c3d2823ea770824ad7c4f73312ae10fbeb874a5 Mon Sep 17 00:00:00 2001 From: Gary Malouf <982483+gmalouf@users.noreply.github.com> Date: Wed, 10 Apr 2024 15:20:03 -0400 Subject: [PATCH 09/18] OAS cleanup. --- daemon/algod/api/algod.oas2.json | 6 +- daemon/algod/api/algod.oas3.yml | 34 +- .../api/server/v2/generated/data/routes.go | 382 +++++------ .../v2/generated/experimental/routes.go | 392 ++++++------ .../api/server/v2/generated/model/types.go | 22 +- .../nonparticipating/private/routes.go | 388 ++++++------ .../nonparticipating/public/routes.go | 592 +++++++++--------- .../generated/participating/private/routes.go | 442 ++++++------- .../generated/participating/public/routes.go | 406 ++++++------ ledger/store/trackerdb/sqlitedriver/sql.go | 10 +- .../trackerdb/testsuite/accounts_kv_test.go | 63 +- 11 files changed, 1385 insertions(+), 1352 deletions(-) diff --git a/daemon/algod/api/algod.oas2.json b/daemon/algod/api/algod.oas2.json index 9ca69765c6..704b8a4638 100644 --- a/daemon/algod/api/algod.oas2.json +++ b/daemon/algod/api/algod.oas2.json @@ -377,7 +377,7 @@ ], "responses": { "200": { - "$ref": "#/responses/AccountAssetHoldingsResponse" + "$ref": "#/responses/AccountAssetsInformationResponse" }, "400": { "description": "Malformed address", @@ -4902,8 +4902,8 @@ } } }, - "AccountAssetHoldingsResponse": { - "description": "AccountAssetHoldingsResponse contains a list of assets held by an account.", + "AccountAssetsInformationResponse": { + "description": "AccountAssetsInformationResponse contains a list of assets held by an account.", "schema": { "type": "object", "required": [ diff --git a/daemon/algod/api/algod.oas3.yml b/daemon/algod/api/algod.oas3.yml index 994142e980..734dc4667a 100644 --- a/daemon/algod/api/algod.oas3.yml +++ b/daemon/algod/api/algod.oas3.yml @@ -249,20 +249,16 @@ }, "description": "AccountApplicationResponse describes the account's application local state and global state (AppLocalState and AppParams, if either exists) for a specific application ID. Global state will only be returned if the provided address is the application's creator." }, - "AccountAssetHoldingsResponse": { + "AccountAssetResponse": { "content": { "application/json": { "schema": { "properties": { - "asset-holdings": { - "items": { - "$ref": "#/components/schemas/AccountAssetHolding" - }, - "type": "array" + "asset-holding": { + "$ref": "#/components/schemas/AssetHolding" }, - "next-token": { - "description": "Used for pagination, when making another request provide this token with the next parameter.", - "type": "string" + "created-asset": { + "$ref": "#/components/schemas/AssetParams" }, "round": { "description": "The round for which this information is relevant.", @@ -276,18 +272,22 @@ } } }, - "description": "AccountAssetHoldingsResponse contains a list of assets held by an account." + "description": "AccountAssetResponse describes the account's asset holding and asset parameters (if either exist) for a specific asset ID. Asset parameters will only be returned if the provided address is the asset's creator." }, - "AccountAssetResponse": { + "AccountAssetsInformationResponse": { "content": { "application/json": { "schema": { "properties": { - "asset-holding": { - "$ref": "#/components/schemas/AssetHolding" + "asset-holdings": { + "items": { + "$ref": "#/components/schemas/AccountAssetHolding" + }, + "type": "array" }, - "created-asset": { - "$ref": "#/components/schemas/AssetParams" + "next-token": { + "description": "Used for pagination, when making another request provide this token with the next parameter.", + "type": "string" }, "round": { "description": "The round for which this information is relevant.", @@ -301,7 +301,7 @@ } } }, - "description": "AccountAssetResponse describes the account's asset holding and asset parameters (if either exist) for a specific asset ID. Asset parameters will only be returned if the provided address is the asset's creator." + "description": "AccountAssetsInformationResponse contains a list of assets held by an account." }, "AccountResponse": { "content": { @@ -3183,7 +3183,7 @@ } } }, - "description": "AccountAssetHoldingsResponse contains a list of assets held by an account." + "description": "AccountAssetsInformationResponse contains a list of assets held by an account." }, "400": { "content": { diff --git a/daemon/algod/api/server/v2/generated/data/routes.go b/daemon/algod/api/server/v2/generated/data/routes.go index e3d0abda34..7f5cfbeb7a 100644 --- a/daemon/algod/api/server/v2/generated/data/routes.go +++ b/daemon/algod/api/server/v2/generated/data/routes.go @@ -138,197 +138,197 @@ var swaggerSpec = []string{ "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", - "o+0ENXt88nD28X8HAAD//2PohBGwAwEA", + "2ApjzX1cPm9PUjzP+YsT9m08NoriSpY7dzmQqOHuhqW/tfwt1tiW/BraEe8Zhtup9InbmoAGJ+bfBcWh", + "WrFWpZN6DtKKe/lv/t2YzNzvkz7+5yCxGLfjxIWKlscc6Tj4S6TcfNajnCHheHPPCTvrf3szsnGj7CEY", + "c95i8a6JB38RFjbmICVEEEXU5LeHa813My8kZijsDcnkJwNEIRVfCYnQzp36JNmGX9J+KMS7IwQwjV5E", + "tEQSZGNC9TKnR/3JwM7yT0CtqY0NkqiTVEthLOrV+DJbQ4mCM5eBoGNSuRFlTNjwPYtoYL7WvCJa9k9I", + "7BIS9Xl6iWC95cU78U5Mwhyx+2ijEaobs+WDrDMJCXKNHgxflSq//Bs36zs44Ysw1pD2cRq2Bl6AZmtu", + "1omD06PtdrQp9O1eRJpli2iqk2aJL9XK3MESS3UM66qq57ws3dRDltVbLQ486SCXJXMvM9gINJh7xZEs", + "7KR/sa95vnZiAct5Wc5bU5GqshKuoHRKu5AS9JzZNbft4ceRg16D58iAY3YWWLQab2ZCE5tubBEa2Ibj", + "DbRx2kxVdr9pOKjhG+hJQXgjqhqtCJGicf4irA6uQCJPaoZG8Js1orUmHvzEze0f4cxS0eLIAmiD+67B", + "X8MvOkC7t9v7VLZTKF2Qzdq634RmudI0BN3wfnL3H+C6/Zio87NKQ+aH0PwKtOGlW11vUfcb8r2r03ng", + "ZBbc8uhkeipMK2DEOfA7FO9AJ6w0P+J/eMncYyfFOEpqqUegMKIid2pBF7NDFc3kXkB7q2IbMmWyiueX", + "R0H5vJ08zWYmnbyvyXrqt9AvotmhN1tRmLvaJhxsbK+6J4RsV4EdDWSRvUwnmmsKAt6oihH76IFAnAJH", + "I4So7Z1fa1+pbQqmr9R2cKWpLdzJTrhxJjP7r9T2hYdM6cOYx7GnIN0tUPINGLzdZMw43SytX+5sofTN", + "pIneBSNZ621k3I0aCVPzHpLw1brK/NlMeCzohd5AbYDHfiGgP3wKYx0sXFj+O2DBuFHvAgvdge4aC2pT", + "iRLugPTXSSFuwQ08ecwu/nb2+aPHvzz+/AtHkpVWK803bLGzYNhn3izHjN2VcD+pHaF0kR79i6fBR9Ud", + "NzWOUbXOYcOr4VDk+yLtl15j7r0h1rpoxlU3AE7iiOCuNkI7I7euA+2FME532izuZDPGEFa0sxTMQ1LA", + "QWI6dnntNLt4iXqn67swC4DWSievrkorq3JVZk4+Eiqh2L/ybzD/RrBsVP3fCVp2zQ1zc6PXr5bFiP5u", + "t3I636eh32xli5u9nJ/Wm1idn3fKvnSR30rvFejMbiUrYFGvOmaFpVYbxlmBH+Id/S1YklvEBi4s31Q/", + "Lpd3YyVUOFDC/iE2YNxMjN5wUoOBXEkKgjtg6vCjTkFPHzHBO2PHAfAYudjJHF1Md3Fsx61AGyHR3212", + "Mo9MQg7GEopVhyxvb/oZQwdNdc8kwHHoeImP0cb9AkrLv1H6TSv2fatVXd25kNefc+pyuF+Mt6IX7ttg", + "PhVyVXYDL1cO9pPUGv+QBT1vlG9aA0KPFPlSrNY20rNeaaWWdw9japYUoPiAjCyl+2ZoavlBFY6Z2Nrc", + "gQjWDtZyOEe3MV/jC1VbxplUBeDm1yYtnI2E6mGMEIY22VjeQ71eGLYAR105r91q64ph4M7gvmg/zHhO", + "JzRD1JiRsIUm3oTeoukoDKzUwIsdWwBIphY+NsBHLeAiOUYd2SDeeNEwwS86cFVa5WAMFJk34R4ELbxH", + "V4fdgycEHAFuZmFGsSXXtwb28uognJewyzBGzrDPvvvZ3P8D4LXK8vIAYvGdFHr7dqgh1NOm30dw/clj", + "siMLF1Etswql2RIsjKHwKJyM7l8fosEu3h4tV6AxFON3pfgwye0IqAH1d6b320JbVyOR3169dRKe2zDJ", + "pQqCVWqwkhubHWLL7qWODu5WEHHCFCfGgUcEr5fcWAofErJAWyBdJzgPCWFuinGAR9UQN/LPQQMZjp27", + "e1Ca2jTqiKmrSmkLRWoN6MkcnesH2DZzqWU0dqPzWMVqA4dGHsNSNL5HFq2EEMRt47f0ntDh4tAX7e75", + "XRKVHSBaROwD5CK8FWE3jn4dAUSYFtFEOML0KKcJuZ3PjFVV5biFzWrZfDeGpgt6+8z+1L47JC5yDtC9", + "XSgw6Hjw73vIrwmzFPe85oZ5OIJrGs0gFOc0hNkdxswImUO2j/JRxXNvxUfg4CGtq5XmBWQFlHyXcKrT", + "Y0aP9w2AO96qu8pCRgGs6U1vKTnEC+4ZWuF4JiU8MnzCcncEnSrQEoj/+sDIBeDYKebk6eheMxTOldyi", + "MB4um7Y6MSLehlfKuh339IAge44+BeARPDRD3xwV+HHW6p79Kf4bjJ+gkSOOn2QHZmwJ7fhHLWDEhupz", + "g6Lz0mPvPQ6cZJujbOwAHxk7siMG3VdcW5GLCnWd72B356pff4Kkw5kVYLkooWDRA1IDq/h7RqGX/TFv", + "pgpOsr0NwR8Y3xLLCeEtXeAvYYc69yuK6Y9MHXehyyZGdfcTlwwBDZHCTgSPX4Etz225c4KaXcOOXYMG", + "ZuoFuf6HfgirqiweIOnX2DOj92omfYp73awXOFS0vFSMFukE++F701MMOujwukClVDnBQjZARhKCSTEX", + "rFJu14VPGwqJI4GSOkB6po0u7eb6v2c6aMYVsP9WNcu5RJWrttDINEqjoIACpJvBiWDNnD6or8UQlLAB", + "0iTxyYMH/YU/eOD3XBi2hOuQa+de7KPjwQO047xSxnYO1x3YQ91xO09cH+jwcRef10L6POVwpJAfecpO", + "vuoN3niJ3JkyxhOuW/6tGUDvZG6nrD2mkWlRUjjuJF9ON65msG7c9wuxqUtu78JrBVe8zNQVaC0KOMjJ", + "/cRCya+vePlj8xnmEULuaDSHLMfst4ljwRv3DSXMuXGEFO4AU7D8VIDgnL66oI8OqJhthKfYbKAQ3EK5", + "Y5WGHChPzEmOplnqCaMI8nzN5QoVBq3qlQ8KpXGQ4deGTDO6loMhkkKV3coMjdypC8CHd4VUQSdOAXcq", + "Xd9CTgrMNW/m89mhU27maA/6HoOkk2w+G9V4HVKvWo2XkNPNd5xwGXTkvQg/7cQTXSmIOif7DPEVb4s7", + "TG5zfx+TfTt0CsrhxFGkbPtwLFjWqdvl7g6EHhqIaag0GLyiYjOVoadqGec2hxC7nbGwGVry6dNfRo7f", + "61F9UclSSMg2SsIuWc5DSPgeHyaPE16TIx+jwDL2bV8H6cDfA6s7zxRqvC1+cbf7J7TvsTLfKH1XLlEa", + "cLJ4P8EDedDd7qe8qZ+Ul2XCtegzH/sMwMybIFehGTdG5QJltvPCzH00LXkjfZpkF/2vmnyOOzh7/XF7", + "PrQ4qR5txFBWjLO8FGhBVtJYXef2neRoo4qWmgh+Csr4uNXyeXglbSZNWDH9UO8kx8C3xnKVDNhYQsJM", + "8w1AMF6aerUCY3u6zhLgnfRvCclqKSzOtXHHJaPzUoHGCKQTenPDd2zpaMIq9htoxRa17Ur/mNhrrChL", + "79Bz0zC1fCe5ZSVwY9n3Qr7Z4nDB6R+OrAR7rfRlg4X07b4CCUaYLB2k9S09xXh4v/y1j43HMHF6HII1", + "20oDM7fMTnGR//+z/3z29iz7H5799jD78v86ff/h6cf7DwY/Pv7417/+r+5PTz7+9f5//ntqpwLsqbRT", + "D/n5C68Zn79A9ScKce/D/sns/xshsySRxdEcPdpin2GJBU9A97vGMbuGd9JupSOkK16KwvGWm5BD/4YZ", + "nEU6HT2q6WxEzxgW1nqkUnELLsMSTKbHGm8sRQ3jGtMJ3uiU9DnbeF6WtaStDNI35S+G+DK1nDdJ/FTf", + "6xnDDO81D8GR/s/Hn38xm7eZ2c3z2Xzmn75PULIotqn8+wK2KV0xTi64Z1jFdwZsmnsg7MlQOortiIfd", + "wGYB2qxF9ek5hbFikeZwIdXH25y28lxSYLw7P+ji3HnPiVp+eritBiigsutU3Z+OoIZvtbsJ0As7qbS6", + "Ajln4gRO+jafwumLPqivBL4M6S9aqSnaUHMOiNACVURYjxcyybCSop9eWoC//M2dq0N+4BRc/Tkbf2b4", + "2yp279uv37BTzzDNPSoFQUNHyfsJVdonHXYCkhw3i3Ox3sl38gUs0fqg5LN3suCWny64Ebk5rQ3or3jJ", + "ZQ4nK8WehTzGF9zyd3IgaY0WJIySjVlVL0qRs8tYIWnJk4pMDUd49+4tL1fq3bv3g9iMofrgp0ryF5og", + "c4Kwqm3mS+RkGq65Tvm+TFMiBUemGlj7ZiUhW9VkIA0lePz4aZ7Hq8r0SyUMl19VpVt+RIbGFwJwW8aM", + "VU0elxNQfCqs298flL8YNL8OdpXagGG/bnj1Vkj7nmXv6ocPn2BGXFs74Fd/5Tua3FUw2boyWsqhb1TB", + "hZNaCVureVbxVcrF9u7dWwu8wt1HeXmDNo6yZPhZJ1svBObjUO0CmtTg0Q0gOI5OqsXFXdBXoRxiegn4", + "CLewm7h8q/2K8s5vvF0Hctd5bdeZO9vJVRlH4mFnmippKydkhWgMI1aorfqCcgtg+RryS1/pCzaV3c07", + "n4eAHy9oBtYhDNWAo8w8rEKEDooFsLoquBfFudz1y8EYsDaEFb+GS9i9UW0Ro2Pqv3TLkZixg4qUGkmX", + "jljjY+vH6G++jyoLCZq+qgcmPQayeNbQRfhm/CCTyHsHhzhFFJ1yGWOI4DqBCCL+ERTcYKFuvFuRfmp5", + "QuYgrbiCDEqxEotU+dr/GvrDAqyOKn3FPh+F3AxomFgyp8ov6GL16r3mcgXuenZXqjK8pGqkyaAN1IfW", + "wLVdALd77fwyLuQQoEOV8hozltHCN3dLgK3bb2HRYifh2mkVaCiid3z08sl4/BkBDsUN4Qmft5rCyaiu", + "61GXqNQXbuUGu41a60PzYjpDuOj5BrDUp7p2++KgUL5KJRVDie6X2vAVjOgusfduYh2JjscPBzkkkSRl", + "ELXsixoDSSAJMr2cuTUnzzC4J+4Qo5rZC8gMM5GD2PuMsPi0R9iiRAG2iVylvee640WlarpjoKVZC2jZ", + "ioIBjC5G4uO45iYcR6wzGrjsJOnsdyyXsq+k23kUSxgVE20KtoXbsM9BB3q/L+wWqrmFEm6x0j+hHJvT", + "vTB9IbUdSqJoWkAJK1o4vRwIpS001G6Qg+PH5RJ5S5YKS4wM1JEA4OcAp7k8YIx8I2zyCCkyjsDGwAcc", + "mP2g4rMpV8cAKX2hJB7Gxisi+hvSiX0UqO+EUVW5y1WM+BvzwAF8CYdWsuhFVOMwTMg5c2zuipeOzXld", + "vB1kUFkMFYpeHTEfenN/TNHY45qiK/+oNZGQcJPVxNJsADotau+BeKG2GWX2JnWRxXbh6D2Zu4B5xqmD", + "STXc7hm2UFsM58KrhWLlD8AyDkcAI7K9bIVBesXvxuQsAmbftPvl3BQVGiQZb2htyGVM0Jsy9YhsOUYu", + "n0Vl2W4EQM8M1fY48GaJg+aDrngyvMzbW23elhsNaWGp4z92hJK7NIK/oX2sW0jtb23BvPGiXOFEfZIK", + "ckPL0m0q+9HHFVXrO6awX58cOkDsweqrvhyYRGs31quL1whrKVbimO/QKTlEm4ESUAnOOqJpdpmKFHC6", + "POA9fhE+i4x1uHtc7u5HAYQaVsJYaJ1GIS7ojzDHcyw7rNRyfHW20ku3vtdKNZc/uc3xw84yP/kKMAJ/", + "KbSxGXrckktwL31j0Ij0jXs1LYF2QxSpSL8o0hwXp72EXVaIsk7Tq5/3uxdu2h+ai8bUC7zFhKQArQU2", + "lUgGLu+ZmmLb9y74JS34Jb+z9U47De5VN7F25NKd45/kXPQY2D52kCDAFHEMd20UpXsYZJRwPuSOkTQa", + "xbSc7PM2DA5TEcY+GKUW0t7Hbn4aKbmWqHxeOkNQrVZQhLJgwR8mo+JrpZKrqPtRVe2rNXfCqOQbVmzb", + "U+zNh+HDWBB+JO5nQhawTUMfawUIeZtZh4XqcJIVSCpXkjYLJVETh/jjG5Gt7hP7QvsJAMkg6Dc9Z3Yb", + "nUy71GwnbkAJvPA6iYGwvv3HcrghHnXzsfDpTsXQ/UcIB0SaEjZqCDIsQzDCgHlViWLbczzRqKNGMH6U", + "dXlE2kLW4gc7gIFuEHSS4DolqH2otTewn6LOe+q0Moq99oHFjr557hPwi1qjB6MT2Tysd97oahPX/t3P", + "F1ZpvgLvhcoIpFsNgcs5Bg1RNXHDrKBwkkIslxB7X8xNPAcd4AY29mIC6SaILO2iqYW0XzxNkdEB6mlh", + "PIyyNMUkaGHMJ/9m6OUKMn1kSmquhGhrbuCqSqbrfwe77Gde1k7JENq04bne7dS9fI/Y9avNd7DDkQ9G", + "vTrADuwKWp5eA9JgytLfPDJR4ed7plMaH9XLzhYesVNn6V26o63xzQzGib+9ZTrF/rtLuc3BaIMkHCxT", + "duMiHZvgTg90Ed8n5UObIIrDMkgk78dTCRNaPw6voqYWxSHafQO8DMSLy5l9nM9uFwmQus38iAdw/aq5", + "QJN4xkhT8gx3AnuORDmvKq2ueJn5eImxy1+rK3/54+shvOITazJpyn7z9dnLVx78j/NZXgLXWWMJGF0V", + "vlf906yK2h/sv0qoSrY3dJKlKNr8ppJxHGNxjRWxe8amQTORNn4mOoo+5mKZDng/yPt8qA8tcU/ID1RN", + "xE/r86SAn26QD7/iogzOxgDtSHA6Lm5aR5okV4gHuHWwUBTzld0puxmc7vTpaKnrAE/CuX7E0pRpjUP6", + "wpXIinzwD79z6ekbpTvM32cmJoOHfj+xygnZhMeRWO3Q97EvTJ0wErx+Xf3qTuODB/FRe/Bgzn4t/YMI", + "QPx94X9H/eLBg6T3MGnGckwCrVSSb+B+k2UxuhGfVgGXcD3tgj672jSSpRonw4ZCKQoooPvaY+9aC4/P", + "wv9SQAnup5MpSnq86YTuGJgpJ+hiLBOxCTLdUKtJw5Tsx1RjEqwjLWT2vpUBOWOHR0jWG3RgZqYUeTq0", + "Qy6MY6+SgindywxfHrHWuhFrMRKbK2sRjeVem1IztQdkNEcSmSZZtrXF3UL5411L8Y8amCicVrMUoPFe", + "6111QTnAUQcCadou5gcmP1U7/G3sIHv8TcEWtM8Istd/96LxKYWFpprlHBkBHs84YNx7orc9fXhqpmy2", + "dTcEc5oeM6XleGB03lk3Mkeyhbgw2VKr3yDtCEH/UaIQRnB8CjTz/gYyFbnXZymNU7nthN7Ofmi7p+vG", + "Yxt/a104LLrp1nWTyzR9qo/byJsovSZdrtkjeUwJiyMMuqkBI6wFj1cUDIvtQ0L0EZd0nqgKRCfDLH0q", + "41zOUxq/PZUe5kH+a8mvFzzVW8XpQg6maHs7cVJWsfBx2ADT1Dig2VkUwd28K6iSXAW69UEMq9LeUK+h", + "aSdrNK0CgxQVqy5zClMojUoMU8trLqn7tvuO+JX/2gC54N1X10pjHUiTDukqIBebpDn23bu3RT4M3ynE", + "SlBj6dpA1LnYD0RN+4mKfPfnpnKHR835kj2cR+3T/W4U4koYsSgB33hEbyy4weuycYc3n7jlgbRrg68/", + "nvD6upaFhsKuDSHWKNbonijkNYGJC7DXAJI9xPcefck+w5BMI67gvsOiF4Jmzx59iQE19MfD1C3rG4Pv", + "Y9kF8uwQrJ2mY4xJpTEck/SjpqOvlxrgNxi/HfacJvp0ylnCN/2FcvgsbbjkK0jnZ2wOwETf4m6iO7+H", + "F0neADBWqx0TNj0/WO7400jOt2N/BAbL1WYj7MYH7hm1cfTUtiWmScNw1CPf91kKcIWHGP9ahfC/nq3r", + "E6sxfDOSs4VRyj+gjzZG65xxKv5ZijYyPfS5ZOehtjA2nmr6TRFu3Fxu6ShLYqD6klVaSIv2j9ous784", + "tVjz3LG/kzFws8UXTxMNnLo9TuRxgH9yvGswoK/SqNcjZB9kFv8t+0wqmW0cRynutzUWolM5GqibDskc", + "iwvdP/RUydeNko2SW90hNx5x6lsRntwz4C1JsVnPUfR49Mo+OWXWOk0evHY79NPrl17K2CidahjQHncv", + "cWiwWsAVZsylN8mNecu90OWkXbgN9H9s/FMQOSOxLJzlpCIQeTT3Jcs7Kf7n79vK5+hYpUzEng1Q6YS1", + "09vtPnG04XFWt77/lgLG8NkI5iajDUcZYmUk+p7C65tv/oh4oT5ItOcdg+OjX5l2OjjK8Q8eINAPHsy9", + "GPzr4+5jYu8PHqQLECdNbu7XFgu30Yjx29QefqUSBrDQ7a8JKPL1ERIGyLFLyj1wTHDhh5qzbme1Ty9F", + "3E1+VzraNH0K3r17i08CHvCPPiL+YGaJG9hmKYwf9m5nySTJFM3zKM6ds6/Udirh9O6gQDx/AhSNoGSi", + "eQ5XMuicmXTXH4wXiWjUjbqAUjklM24KFNvz/3nw7BY/34PtWpTFz21tt95FornM18ko4YX78BeS0TtX", + "MLHKZJ+RNZcSyuRwpNv+EnTghJb+dzV1no2QE9/td26l5fYW1wLeBTMAFSZ06BW2dBPEWO2WzWrKMpQr", + "VTCcp21q0TLHYQvkqC/jP2owNnU08AElIKKzyzFfagvIQBZo/Tph32IBGwdLp2I5Wp1CLdhuXcS6KhUv", + "5lij9s3XZy8ZzUrfUAdtaku4QqNLdxVJK/kRfda90XmkAMox/dr3VWRwqzY2a7oIpkrMuTfaPoeiFzqB", + "5pgYOyfsBVnCmv7lNAnDSsd6A0XUtJB0MaQJ9x9reb5GE1PnIhsn+en9NANVtgb4KImsaWKD587B7Vtq", + "UkfNOVN2DfpaGMDEariCblW7psSjN3GGKnfd5elaSqKUkyNkiqZlzbFoD8CRQBJ8w0nIeog/0sBA7WiP", + "bS96gV+lQ+p7vUp7zttQI61puv69txHnXCopcqxonxKIsALXNG/ThOL/aTeRmfkTmjhcyQ6pTUqnx+Jo", + "z9TACD3ihp7b6KnbVKIO+tPC1nfOWoE1nrNBMQ+Nfr1fQ0gDvimRI6KYTyqdiE1JxrM3fvAjyQiL64wY", + "qr5xz37wZkysbXApJBosPNq8mE2eh9IIdDBKJixbKTB+Pd2kDPPWfXOCxfYK2L4/ealWIr8QKxyDoqHc", + "sin0bzjUWQgE9IF37t3n7l1fAr35uRPVQ5OeVZWfdLwNdLr3/VaOIjgVfhLiASLkNuPHo+0ht70RvHif", + "OkKDKww+ggrv4QFhNC2Ru6N87VQEoih8g1FiXLIOqpAJMF4KGTxh6QsiT14JuDF4Xke+M7nmlkTASTzt", + "DfByJI4dE03JlXrbofoF4B1KcI1hjvFtbLs5jzCO5oVWcONyx8KhcNQdCRPPedlEwCZ6M6NU5YWoAnNE", + "et2aU4zDMe7QD757ARzMwmo+x6YKx95EY6XmFnWxApvxokhVKPoKnzJ8GnJ9YAt53fQSapK8uqWmh9Tm", + "J8qVNPVmz1zhhVtOF7U/T1BD3II97DAWTFns8N9UI53xnfGxr0cnV4ZA1+K4+urDZNGU1OtoOjNilU3H", + "BN4pt0dHO/XNCL39/k4pPWRd/imSKntcLt6jFH/72l0ccf3VQZgxXS1NeVQM6VX4PNStaQr7dbkSXmWD", + "dlHovMbNS2xZD/jwYhLwK16OJDTHJm+6X8kMPJbWnI9m4XPrqyxZzvayoNHKNRTy2TOiDz1BY2GeFOV5", + "d8Znv9a9CB13wXzXcbhQqE/LLEYdLTfzhbQbfKwz5LursUz30G4Bn/fb31+CL4pZabgSqg5BNCGUNaiE", + "9GunmXxTayC5/mSA+B9tfB41lb/xbUhpmV4n/+5ncqYxkFbv/gSG88GmDxrrD6VdMk+1r7Cmg92kjnad", + "W3FKK5JU1wsvG3Za+3dpadBFZEBWL6aIAwN8fJzPzoujLsxU55QZjZI6di/Fam2x8PrfgBegXx0oLN8W", + "k8cjVikj2kaSpRvMV/Jc43AnU2PGHQGLuDD+cKwQS3gFucXuoW2MlAY4pky+myzY7v9VYH5cnW5C631d", + "+X3F5IctQw/c8YP6N1ENJ2q3eDK9dPpZEwlLiTzX3LRVN3qpr5MT8JZLyLG47d56Q/+1BhnVspkHuwzC", + "sozKD4kmHQXLMx9vdWwB2lcOaC88UZuUW4Mzlo58Cbt7hnWoIdn/scnFukn9V8QAcocslAIeMyT74B9h", + "GspALITITl9Rt+1xMFq6N6qedcO5Akm6i6OtqLVnynTv6klzuU+Pqt6HmRVjJYmGrW/H9Y8X2GnY+Dgn", + "3tSPjbV0dj7sf3Lt689idajGdxIq0YIJv4VScDRLKS4hbm6Pnqprrovwxp3U9qG7SaSBXjYzizYOf+ir", + "TlTUx5SWvFROjMjG8oK6oe9N3Ng9QwF+bR0WhGsJWkPRuERKZSCzKsTt74NjHyooivFGSDCjXWwIuNEK", + "xq/bEs3YzYtjxWLugxfjBTING+6g01Eh5fE59yH7OT0PudShm9NBC1NDr4fbioYMDGEGSIypfsn8bXk4", + "R/smxiYhJegseJ76VZVlt7AWlk8s6pwu6PhgNAa5ySVQ9rCSpJ0mH66ypyNEuc6XsDslJSj0Yw07GANN", + "khOBHtWN7G3ynZrfTAru1Z2A98eWA6uUKrMRZ8f5sBR0n+IvRX4JWMqtiVQeabXNPkMbe+PNvl7vQunj", + "qgIJxf0Txs4k5YYEx3a3S1xvcnnP7pt/i7MWNVVn90a1k3cyHWSPddP1LblZGGY/DzPgWN0tp6JBDhQa", + "3o6Uodb8OtF4/mSqVj50NfebgbdERVCkZJIL8lg9x4OeMhxhJntUcgEdmZx5TxczpUqFZN4k294NlcZU", + "PBkCZEFOSfpuoPCDJxGQbG+dOIVUwczXLlNLpqF1It+0iNuwE3dKo+/P3MzS5XdLpaHTU9t9TQUbm/yF", + "0Pye64WwmuvdTUqtDTqBD6wno1g+GI7VRGK1C2mjsYY4LEt1nSGzypp2BSnV1r1nupdx6J3VfudO9QKi", + "uC5uvKC2Y2tesFxpDXn8RTptj6DaKA1ZqTDMK+WBXlond28wV0eyUq2YqnJVALX9SFPQ2Fy1lBzFJoii", + "apIoINrBpE/6JqLjiVPeVRt6Ks5Di87IlzkSeArGF+PxGKKXh/DuaeF+VMON8yVahATGunRzr0n6jBvZ", + "w5F97EVZBoPBWCt79pOpMRwJE2/cFE/ZRhnrNTsayTRDtSFen+VKWq3KsmsEIpF45S3b3/PtWZ7bl0pd", + "Lnh+eR/1SKlss9JiHtJS+8F47Uy6V5FpYs/9foVTeg9D0zyRHN1Y33OOo/thR2C+P8yxDtu4zxJ98Hvr", + "6jKvtNpwJhm3aiPyNA3/c0W3jcakpVhCstQTtaSj5Hx8DRl1fDk0wQzIkoZoBsmTPbXOmOdp3qmLzMP9", + "FyXe/rhsCf6SGLmYhnzSSy1ZPipb9QBASClj1Naa+tjFkk/DVdSKMszRJd0HdCIXx8if28HmRrhzoCzc", + "CqhBtGED4Gek7M+pJBdFLi7UNjy/39bsuhHwH/dTeYd5jIVUXbSkpSmoKtT3GOEI6crAe+OP3mC28GJq", + "FFLTc3TijRoBMB6X1IFhUnTSsWAsuSihyFIt684bm9A80mx9Rku/k7QwnpPnvA4d49zYtQZfb4JEat31", + "N1XckZJqXh9abmUBWzBYDILa53NDfobg74CSOsX1lG9VZSVcQSdcyxfBqFG0E1cQvjXNx6wAqND717dJ", + "peKQ4ru8Z6jwa8+iSJYp2E1aLgixtFPsgFkiaUTZyoyOiZl6lBxEV6KoeQd/5liRo2t2c0c5gaqBTJ4F", + "vW3qND/RCK/DAGfh+5QoEzDxfhofOpoFpVG3jwEdjEuszdipl+mwxLjCS+PQwNmKxvFJJN7yDVPxazlu", + "ABySfKveTNwnoWSE2K+3kKNU0427uz1OGA7GTK9606gIrpsdvrkh+Q+h4b0kPDpeStUwgAx2r6Um0IUX", + "2PEF7B0sndjrpGbsCuf5v+d/c7aow0BOr6YmdbEG9wKCxw4LSjfOCi/QiuZCC/GFc19PsK+UiyiyesN3", + "TGn8x+lr/6h5KZY7PKEEfviMmTV3JORdhOS79vGKbuL9gsk8ABbsAipMResWU8eMhtu5USKg3RUYuoko", + "tuGXEG8DuuWJ8+TWsRxTLzbCGLzsets5xIJffKgJseFFrCNjZbpu3+ZQq9R9/X+3WVvxVKGgVFXyPLQk", + "9D1ROgZxajsaiMuuYbM/rW+oHgcSaFqZtkSrQzpvcQPj3pGRG6lY+bF+Dx2wBy0eB60ubrWMY7rBt5nR", + "exIiJy3lrndhanzIAOi4Mdwh8OM+eZ8G/8mikWPLmAL+nwXvI50xY3ipCeYnwHIn5T8BK9lVF2qbaVia", + "Q6EQZFh1irBuiwUE46SQuQZuKDbk/EevsrU1EYV0KiRFLzbet2aUApZCtsxSyKq2CQ0ASyPKXYSw2DyN", + "aB1x9oxJCU4Mu+Llj1egtSjGNs6dDuohF9ekDyZ5/21C+W/u1OEAwrTaD2YSQpupFr3mLnDqekOBhcZy", + "WXBdxK8LyXLQ7t5n13xnbu77cNDq2skXB7wfPJJmuvntkR8ESZsAKXfefXlLz0QDIL9DF8UE1wJGsCbc", + "CmQUsWrEkzCEIV1WgW+zUq0wv2yEAH3xSfT9kLKiJBpsSR46bh4jfoP902DdbX/wrcJZp0yx/5z9iKhD", + "hecnKezek0bWtH7CH0Vk0kEI9C9XbVg4bc6Q/lM5mm8wiaGTpxmEu5DEEPaawkNoPhjxZHQtuCO7iA5y", + "n+Abm2un9zPq+uBTmaCkw2ao25o9gd9g2iBnnvvAnaHRZ6AUE1LmPo/2SJsQWZLDPTACHjWf9merO20T", + "TOHGOaYJ1P7M2axSVZZPiQak0vyFN2h7SLswjtBHZK4eWXcTOGGaZhWdwiadrhXH9sEa7ZpxyC9T5fuU", + "7DGDxggH7RrL1RJ5GbVmRjsM5ng0xot5P/uoa7BpmATjTENeazRoXvPd4b5CIyVhL/529vmjx788/vwL", + "5l5ghViBacsK9/rytBFjQvbtLJ82RmywPJvehJCXTogLnrKQbtNsij9rxG1NWzNw0JXoGEto4gJIHMdE", + "P5gb7RWO0wZ9/7m2K7XIO9+xFAp+/z3TqizTZd0b0S1h6k/tVmTsdxJ/BdoIYx0j7PrqhG1jZc0azXFY", + "3POK6owomfvq6w0VCDsSjJNayFioJfIzzPr1/g0G26r0vIp8EvvW5fUisohhcAbGbyyAVaryorRYshRE", + "mFuio5xLb2jE8M4oerJhthRHmSJEH5OcJr24I+5+bt/t1mjTnN5tYkK8CIfyBqQ5Zkkfz2i/CSdpTel/", + "Gv6RSNG/M67RLPf34BVJ/eBmXbcngTZM106QBwIwkofZyaCLm/K3lUY1WeXRfh9cnX3x4/vWBXowYQAh", + "CR8cAC9OrGzfa2LcPTh/cMnO7xukREt5P0YJneUfytUMrLe5SKIt8kYKa8EQW1JDsTBKxDXPm/zWEa1k", + "kAaLHfidZlqWifRZspvgmYoJx6kE+oqXn55rfCO0sWeIDyhejyfNxDmUMZIJleZmFdxe8klzR/mSdze1", + "fIUpu/8Fbo+S95wfyruLB7cZWr2wJfUq3AqUBcyucUwKB3r0BVv4avqVhlyYvhv6OggnTcogaLH0oZew", + "tQdyFA+t82dlb0HGyxAzwn6I3EkKzXYthO0R/YOZysjJTVJ5ivoGZJHAX4pHxd03D1wXt6y8frOCIFFp", + "ryMLggz7ik5dHhW9cJdObWC4zsm3dQe3iYu6XdvUajaTC7i/e/fWLqYUoUkXW3efYxWcO6m6flTN9d+h", + "/g3hyI/h501RzM9jFVGp6udI8d3eftSiPBgg0iml/HE+W4EEIwwWC/7FN4f4tHdpgIBy8odHlWC9TSER", + "QkxirZ3Jo6miIskT6iP7zxLVkDHfLa+1sDtsDBoMaOKXZKWeb5uqD75qSOO78nefVZfQNGdua0TUJtyu", + "3ype4n1ELjXpbiFVnrCvt3xTld4czP56b/Ef8OQvT4uHTx79x+IvDz9/mMPTz798+JB/+ZQ/+vLJI3j8", + "l8+fPoRHyy++XDwuHj99vHj6+OkXn3+ZP3n6aPH0iy//457jQw5kAjTU7n42+/+ys3KlsrNX59kbB2yL", + "E16J78DtDerKS4WN6xxSczyJsOGinD0LP/0/4YSd5GrTDh9+nfkGLLO1tZV5dnp6fX19En9yusKk8Myq", + "Ol+fhnmwnVhHXnl13kSTU9wL7mhrPcZN9aRwhs9ef33xhp29Oj9pCWb2bPbw5OHJI9+7VvJKzJ7NnuBP", + "eHrWuO+nnthmzz58nM9O18BLrKHi/tiA1SIPjzTwYuf/b675agX6BBMG6Kerx6dBrDj94JPjP+57dhqH", + "VJx+6NQQKA58GUIGDr1y+iE0udw/YKfBoQ/Wij6YCOi+104X2Nhi6qsQr258KaiPmNMPKFGP/n7qzSLp", + "h6jZ0JE5DbU4Rt6krOv0ww4KP9itW8j+4dw70Xg5t/m6rk4/4H+Q+qMVURHHU7uVp+h5Pf3QQYR/PEBE", + "9/f28/iNq40qIACnlkvqDLrv8ekH+jeaCLYVaOHESiyc4n+lAlen2CBqN/x5J73fsoRUWZKfpAFSe0NR", + "+Z3M22yrhiGcF+Hli53Mg/wbggnxmD9++JCmf4r/mfkGKr3iHaf+PM+mdYXvlk1EJtozvDXwUk4Z2JMZ", + "wvDo08FwLimA0HFV4v4f57PPPyUWzqUTVHjJ8E2a/skn3ATQVyIH9gY2ldJci3LHfpJNDGTUzjJFgZdS", + "XcsAuRMd6s2G6x2K5Bt1BYb5TpkRcTINTgiiOAn05bc0jHcXd3zk7ayqF6XIZ3MqkvkexS6bkkCCNWg4", + "U7CEtYN3T8W3B8/E9F3oCrZ7qpJMgvNAvjoNP5TKh/sb9r7vS6Wp7qU2aPYvRvAvRnCHjMDWWo4e0ej+", + "wtJaUPmsypzna9jHD4a3ZXTBzyqVqh1wsYdZ+AYWY7ziossr2hi92bO309p0efcFWaYLMO4wnwStxInc", + "rdKgG44Uzjw6T6O93teB+OP7P8X9/pzLcJ47O07+Sa5LAbqhAi6HPUX+xQX+j+EC1ByJ077OmYWyNPHZ", + "twrPPrlyfMVESS62iXygU+CyFaY7P58GA0RKB+2++aHzZ1evMuvaFuo6mgVN9+R3GmoZ7mFt+n+fXnNh", + "s6XSvq4idlUffmyBl6e+iUrv17Zu+eAJFmOPfowzGJO/nnKvbqSeVdTDf+RhXx9OPfUq38hLIXw4PG7N", + "Z7E5CvlsY4h6+95xOWyX7Flwa115dnqK+SRrZezp7OP8Q8/yEj983xBW6PI3q7S4wjL27+ezbaa0WAnJ", + "y8xbNdpOULPHJw9nH/93AAAA//8Oc6QNuAMBAA==", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/daemon/algod/api/server/v2/generated/experimental/routes.go b/daemon/algod/api/server/v2/generated/experimental/routes.go index a934be90dd..e6472ca97a 100644 --- a/daemon/algod/api/server/v2/generated/experimental/routes.go +++ b/daemon/algod/api/server/v2/generated/experimental/routes.go @@ -154,202 +154,202 @@ var swaggerSpec = []string{ "tcJZVZUi5w6Jr/1n99UxAaCHBG9bnOKF+vRDBGKlVQXaChqUV1VWqpyXmbHc4kj/qmE5ezr7l9NW/3JK", "3c1pNPkL1+sCOzmRlcSgjFfVEWO8cqKP2cMsHIPGT8gmiO2h0CQkbaIjJeFYcAlXXNqT9snS4QfNAX7r", "Z2rxTdIO4bv3BBtFOKOGCzAkAVPDe4ZFqGeIVoZoRYF0VapF88NnZ1XVYhC/n1UV4QOlRxAomMFWGGvu", - "4/J5e5Liec6fn7Dv4rFRFFey3LnLgUQNdzcs/a3lb7FGt+TX0I54zzDcTqVP3NYENDgx/2+qdMKKuQvK", - "w+fF2g+Ih8zCxhykniE0eFZpM7nWfDfz932G9/aQqH4yQPRU8ZWQCO3cScKSbfil48JcKkS+IxswjYhL", - "lEfCQKMN8+KDF+FPBk/mPzltpzY1CBRO4CiFsfg8cg0NW0OJ8o97HtIIAxK5a9I4SBA9Smg4kft9Uud/", - "Di4U43ac/+Bb3GOOnsH4S/T+/azHXIa8xWsET9hZv+/NOIsbJc1TbkQrE7jDHjw2KLzWvCIA/RcSt4TE", - "dzw1IlhveeFOvAuTMEdsPqI1hOrGZ+3geUhCgqTQg+HrUuWXf+NmfQdnfhHGGh4/nIatgReg2ZqbdYLL", - "9o5XO9qUI+YaIpNji2iqk2aJL9Sd3HilOuaeq6pnvCzd1MP7rbdaHHgSLylL5hoz2AhUlPsHI2nW6d3F", - "vuH52okDLOdlOW9VRKrKSriC0j3WhZSg58yuuW1vCxw5vGfwHBlwzMMCi1bj1UuoWtONDkID23BkKxv3", - "iqnKbp/mujV8Az3pB9mcqlF7ED0wzp+H1cEVSLzEmqER/GaNqKWJBz9xc/tPOLNUtDjS/Nlgtmvw1/CL", - "DtCudcskZTuF0gXpqq37TWiWK01DENv2k7v/ANdtZ6LOzyoNmR9C8yvQhpdudb1F3W/I965O54GTWXDL", - "o5PpqTD98CLOgf3wzgad0M78iP/hJXOf3dXkKKmlHoE3jIrMqAVJcQ5VNJNrgHpWxTakwmQVzy+PgvJZ", - "O3mazUw6ed+Q1tRvoV9Es0NvtqIwd7VNONjYXnVPCOmsAjsaCK57mU401xQEvFEVI/bRA4E4BY5GCFHb", - "O7/WvlbbFExfq+3gSlNbuJOdcONMZvZfq+1zD5nShzGPY09Bulug5BsweLvJmHG6WVp73NlC6ZtJE70L", - "RrLWysi4GzUSpuY9JGHTusr82UxYKqhBb6DWsWO/ENAfPoWxDhYuLP8dsGDcqHeBhe5Ad40FtalECXdA", - "+uukELfgBj5/zC7+dvbFo8e/PP7iS0eSlVYrzTdssbNg2GdeHceM3ZVwP/mURukiPfqXT4Jtqjtuahyj", - "ap3DhlfDocjmRU8aasZcuyHWumjGVTcATuKI4K42Qjsjc64D7bkw7sW0WdzJZowhrGhnKZiHpICDxHTs", - "8tppdvES9U7Xd6G9BK2VTl5dlVZW5arMnHwkVEIL9Mq3YL5FeK5W/d8JWnbNDXNzo7WvlsWIssdu5XS+", - "T0O/2coWN3s5P603sTo/75R96SK/ld4r0JndSlbAol51NBtLrTaMswI74h39HViSW8QGLizfVD8ul3ej", - "+lE4UEIFIzZg3EyMWjipwUCuJDm/HdC2+FGnoKePmGCVseMAeIxc7GSOpqW7OLbjiqiNkGjnNjuZR1op", - "B2MJxapDlrfXPo2hg6a6ZxLgOHS8wM+o234OpeXfKv2mFfu+06qu7lzI6885dTncL8ZrzwvXN+jEhFyV", - "XYfLlYP9JLXGP2RBz5rHN60BoUeKfCFWaxu9s15ppZZ3D2NqlhSg+IGULKXrM1S1/KAKx0xsbe5ABGsH", - "azmco9uYr/GFqi3jTKoCcPNrkxbORlz00DcIXZpsLO/hu14YtgBHXTmv3WrriqHDzuC+aDtmPKcTmiFq", - "zIi7QuNnQq1oOnL/KjXwYscWAJKphfcJ8N4KuEiO3kY2iDdeNEzwiw5clVY5GANF5hXNB0EL7ejqsHvw", - "hIAjwM0szCi25PrWwF5eHYTzEnYZ+sYZ9tn3P5v7fwC8VlleHkAstkmht6+HGkI9bfp9BNefPCY70nAR", - "1TKrUJotwcIYCo/Cyej+9SEa7OLt0XIFGl0wfleKD5PcjoAaUH9ner8ttHU14vHtn7dOwnMbJrlUQbBK", - "DVZyY7NDbNk16rzB3QoiTpjixDjwiOD1ghtLbkNCFqgLpOsE5yEhzE0xDvDoM8SN/HN4gQzHzt09KE1t", - "mueIqatKaQtFag1o9h6d6wfYNnOpZTR28+axitUGDo08hqVofI8sWgkhiNvGdOrN5sPFoYHR3fO7JCo7", - "QLSI2AfIRWgVYTf2eh0BRJgW0UQ4wvQop3G1nc+MVVXluIXNatn0G0PTBbU+sz+1bYfERcYBurcLBQYN", - "D769h/yaMEv+zmtumIcj+DGgGoT8m4Ywu8OYGSFzyPZRPj7xXKv4CBw8pHW10ryArICS7xIeGPSZ0ed9", - "A+COt89dZSEjx9X0preUHPwE9wytcDyTEh4ZfmG5O4LuKdASiO99YOQCcOwUc/J0dK8ZCudKblEYD5dN", - "W50YEW/DK2Xdjnt6QJA9R58C8AgemqFvjgrsnLVvz/4U/wnGT9DIEcdPsgMztoR2/KMWMKJD9TFB0Xnp", - "sfceB06yzVE2doCPjB3ZEYXuK66tyEWFb53vYXfnT7/+BEmDMyvAclFCwaIP9Ays4v6MXC77Y97sKThJ", - "9zYEf6B8Sywn+EN1gb+EHb65X5Evf6TquIu3bGJUdz9xyRDQ4CHsRPC4CWx5bsudE9TsGnbsGjQwUy/I", - "9D+0Q1hVZfEASbvGnhm9VTNpU9xrZr3AoaLlpRz66E2wH743vYdBBx3+LVApVU7QkA2QkYRgks8Fq5Tb", - "deHDhULASKCkDpCeaaNJu7n+75kOmnEF7D9VzXIu8clVW2hkGqVRUEAB0s3gRLBmTu+p1WIIStgAvSTx", - "y4MH/YU/eOD3XBi2hOsQY+ca9tHx4AHqcV4pYzuH6w70oe64nSeuDzT4uIvPv0L6POWwp5AfecpOvuoN", - "3liJ3JkyxhOuW/6tGUDvZG6nrD2mkWleUjjuJFtO169msG7c9wuxqUtu78JqBVe8zNQVaC0KOMjJ/cRC", - "yW+uePlj0w3jByF3NJpDlmPU28Sx4I3rQ4FybhwhhTvA5CQ/FSA4p14X1OnAE7N1MhWbDRSCWyh3rNKQ", - "A8WHOcnRNEs9YeQ5nq+5XOGDQat65f1SaRxk+LUh1Yyu5WCIpFBltzJDJXfqAvDuXSFE0IlTwN2Trq8h", - "pwfMNW/m81GhU27maA/6FoOkkWw+G33xOqRetS9eQk43znHCZdCR9yL8tBNPNKUg6pzsM8RXvC3uMLnN", - "/X1U9u3QKSiHE0eesu3HMWdZ99wud3cg9NBATEOlweAVFaupDH1VyzimObjY7YyFzVCTT11/GTl+r0ff", - "i0qWQkK2URJ2yTQeQsJL/Jg8TnhNjnRGgWWsb/8N0oG/B1Z3ninUeFv84m73T2jfYmW+VfquTKI04GTx", - "foIF8qC53U95UzspL8uEadFHPPYZgJk3Tq5CM26MygXKbOeFmXtvWrJG+vDILvpfNU76d3D2+uP2bGhx", - "MD3qiKGsGGd5KVCDrKSxus7tO8lRRxUtNeH8FB7j41rLZ6FJWk2a0GL6od5Jjo5vjeYq6bCxhISa5luA", - "oLw09WoFxvbeOkuAd9K3EpLVUlica+OOS0bnpQKNHkgn1HLDd2zpaMIq9htoxRa17Ur/GNBrrChLb9Bz", - "0zC1fCe5ZSVwY9lLId9scbhg9A9HVoK9VvqywUL6dl+BBCNMlnbS+o6+oj+8X/7a+8ajmzh9Ds6abYaB", - "mVtmJ6nI//3s35++Pcv+i2e/Pcy++h+n7z88+Xj/weDHxx//+tf/1/3p849/vf/v/5raqQB7KtzUQ37+", - "3L+Mz5/j8ydyce/D/sn0/xshsySRxd4cPdpin2FqBU9A97vKMbuGd9JupSOkK16KwvGWm5BD/4YZnEU6", - "HT2q6WxETxkW1nrko+IWXIYlmEyPNd5Yihr6NaYDu9Eo6WO18bwsa0lbGaRvCkoL/mVqOW+C9ymv11OG", - "kd1rHpwj/Z+Pv/hyNm8jspvvs/nMf32foGRRbFNx9wVsU2/FOLjgnmEV3xmwae6BsCdd6ci3Ix52A5sF", - "aLMW1afnFMaKRZrDhVAfr3PaynNJjvHu/KCJc+ctJ2r56eG2GqCAyq5T+X46ghq2ancToOd2Uml1BXLO", - "xAmc9HU+hXsveqe+EvgyhL9opaa8hppzQIQWqCLCeryQSYqVFP30wgL85W/u/DnkB07B1Z+zsWeGv61i", - "97775g079QzT3KMUEDR0FLSfeEr7oMOOQ5LjZnEs1jv5Tj6HJWoflHz6Thbc8tMFNyI3p7UB/TUvuczh", - "ZKXY0xDH+Jxb/k4OJK3RRIRRBCmr6kUpcnYZP0ha8qTkUsMR3r17y8uVevfu/cA3Y/h88FMl+QtNkDlB", - "WNU286lxMg3XXKdsX6ZJjYIjU+6rfbOSkK1qUpCG1Dt+/DTP41Vl+ikShsuvqtItPyJD4xMAuC1jxqom", - "jssJKD522u3vD8pfDJpfB71KbcCwXze8eiukfc+yd/XDh59jRFybM+BXf+U7mtxVMFm7MprCoa9UwYXT", - "sxK2VvOs4quUie3du7cWeIW7j/LyBnUcZcmwWydaLzjm41DtAppY8tENIDiODqrFxV1Qr5AGMb0E/IRb", - "2I10v9V+RaHpN96uA4kOeG3XmTvbyVUZR+JhZ5rsaCsnZAVvDCNW+Fr1ieQWwPI15Jc+wxdsKrubd7oH", - "hx8vaAbWIQzlfqPIPMw+hAaKBbC6KrgXxbnc9dPAGLA2uBW/hkvYvVFt8qJj8r5005CYsYOKlBpJl45Y", - "42Prx+hvvvcqCwGaPpsHBj0Gsnja0EXoM36QSeS9g0OcIopODoQxRHCdQAQR/wgKbrBQN96tSD+1PCFz", - "kFZcQQalWIlFKm3tfwztYQFWR5U+U5/3Qm4GNEwsmXvKL+hi9c97zeUK3PXsrlRleElZSJNOG/geWgPX", - "dgHc7tXzyziXRIAOn5TXGLGMGr65WwJs3X4Lixo7CdfuVYGKImrjvZdPxv3PCHAobghP6N6+FE5G37oe", - "dYkMfeFWbrDbPGu9a15MZwgXfd8ApvhU125fHBTKZ6ekDBfR/VIbvoKRt0tsvZuYR6Jj8cNBDkkkSRlE", - "LfuixkASSIJMjTO35uQZBvfFHWJ8ZvYcMsNMZCD2NiNMOu0RtihRgG08V2nvue5YUSmL7hhoadYCWrai", - "YACji5H4OK65CccR84sGLjtJOvsdM7bsS+V2HvkSRklEm0Rt4Tbsc9DBu98ndAtZ3ELqtvjRPyENm3t7", - "YfhCajuURNG0gBJWtHBqHAilzR7TbpCD48flEnlLlnJLjBTUkQDg5wD3cnnAGNlG2OQRUmQcgY2ODzgw", - "+0HFZ1OujgFS+uw3PIyNV0T0N6QD+8hR3wmjqnKXqxixN+aBA/gUDq1k0fOoxmGYkHPm2NwVLx2b82/x", - "dpBBRjF8UPTyh3nXm/tjD409pim68o9aEwkJN1lNLM0GoNOi9h6IF2qbUWRv8i2y2C4cvSdjFzDOOHUw", - "KXfbPcMWaovuXHi1kK/8AVjG4QhgRLqXrTBIr9hvTM4iYPZNu1/OTVGhQZLxitaGXMYEvSlTj8iWY+Ty", - "WZRr60YA9NRQbW0Dr5Y4qD7oiifDy7y91eZtmtEQFpY6/mNHKLlLI/gb6seSGfdGFUidE/VJ0oINNUu3", - "SddGnStKwXZMtrY+OXSA2IPVV305MInWrq9XF68R1lKsxDHfoVFyiDYDJeAjOOuIptllylPAveUB7/GL", - "0C1S1uHucbm7HzkQalgJY6E1GgW/oD9CHc8x3bBSy/HV2Uov3fpeK9Vc/mQ2x46dZX7yFaAH/lJoYzO0", - "uCWX4Bp9a1CJ9K1rmpZAuy6KlJxfFGmOi9Newi4rRFmn6dXP+/1zN+0PzUVj6gXeYkKSg9YCi0kkHZf3", - "TE2+7XsX/IIW/ILf2XqnnQbX1E2sHbl05/gnORc9BraPHSQIMEUcw10bRekeBhkFnA+5YySNRj4tJ/us", - "DYPDVISxD3qphbD3sZufRkquJUqfl44QVKsVFCEtWLCHySj5WqnkKqp6VFX7cs2dMEr5hhnb9iR78274", - "MOaEH4n7mZAFbNPQx68ChLyNrMNEdTjJCiSlK0mrhZKoiV38sUWkq/vEttB+AEDSCfpNz5jdeifTLjXb", - "iRtQAi/8m8RAWN/+YzncEI+6+Zj7dCdj6P4jhAMiTQkbFQIZpiEYYcC8qkSx7RmeaNRRJRg/Srs8Im0h", - "a/GDHcBA1wk6SXCd1NPe1dor2E/xzXvqXmXke+0dix1989wH4Be1RgtGx7N5mOe8eatNXPv3P19YpfkK", - "vBUqI5BuNQQu5xg0RFnEDbOC3EkKsVxCbH0xN7EcdIAb6NiLCaSbILK0iaYW0n75JEVGB6inhfEwytIU", - "k6CFMZv8m6GVK8j0kSqpuRKirbmBqSoZrv897LKfeVm7R4bQpnXP9Wan7uV7xK5fbb6HHY580OvVAXZg", - "V1Dz9BqQBlOa/uaTiTKF3zOdlPj4vOxs4RE7dZbepTvaGl/EYJz421umk+S/u5TbHIzWScLBMmU3LtK+", - "Ce70QBfxfVI+tAmiOCyDRPJ+PJUwoeTj8CpqclEcot03wMtAvLic2cf57HaeAKnbzI94ANevmgs0iWf0", - "NCXLcMex50iU86rS6oqXmfeXGLv8tbrylz82D+4Vn/glk6bsN9+cvXjlwf84n+UlcJ01moDRVWG76p9m", - "VZTTfv9VQlmyvaKTNEXR5jeZjGMfi2vMiN1TNg2KiLT+M9FR9D4Xy7TD+0He5119aIl7XH6gajx+Wpsn", - "Ofx0nXz4FRdlMDYGaEec03Fx0yrRJLlCPMCtnYUin6/sTtnN4HSnT0dLXQd4Es71I6amTL84pE9ciazI", - "O//wO5eevlW6w/x9ZGLSeej3E6uckE14HPHVDvUe+8LUCSPB69fVr+40PngQH7UHD+bs19J/iADE3xf+", - "d3xfPHiQtB4m1ViOSaCWSvIN3G+iLEY34tM+wCVcT7ugz642jWSpxsmwoVDyAgrovvbYu9bC47PwvxRQ", - "gvvpZMojPd50QncMzJQTdDEWidg4mW6oxKRhSvZ9qjEI1pEWMntfyoCMscMjJOsNGjAzU4o87dohF8ax", - "V0nOlK4xw8Yj2lo3Yi1GfHNlLaKxXLMpOVN7QEZzJJFpkmlbW9wtlD/etRT/qIGJwr1qlgI03mu9qy48", - "DnDUgUCa1ov5gclO1Q5/Gz3IHntT0AXtU4Lstd89b2xKYaGp6kpHeoDHMw4Y9x7vbU8fnpopmm3ddcGc", - "9o6ZUmo8MDpvrBuZI1k6XJhsqdVvkDaEoP0okQgjGD4Fqnl/A5ny3OuzlMao3FZAb2c/tN3T38ZjG3/r", - "t3BYdFOC6SaXafpUH7eRN3n0mnS6Zo/ksUdY7GHQDQ0YYS14vCJnWCwfEryPuKTzRFkgOhFm6VMZx3Ke", - "0vjtqfQwD+JfS3694KnaKu4t5GCKtrfjJ2UVC53DBpgmxwHNziIP7qatoExyFejWBjHMSnvDdw1NO/lF", - "0z5gkKLip8uc3BRKoxLD1PKaS6q67foRv/K9DZAJ3vW6VhrzQJq0S1cBudgk1bHv3r0t8qH7TiFWggpK", - "1waiisV+ICrWT1Tkqz43mTs8as6X7OE8Kpvud6MQV8KIRQnY4hG1WHCD12VjDm+6uOWBtGuDzR9PaL6u", - "ZaGhsGtDiDWKNW9PFPIax8QF2GsAyR5iu0dfsc/QJdOIK7jvsOiFoNnTR1+hQw398TB1y/qC4PtYdoE8", - "Ozhrp+kYfVJpDMck/ahp7+ulBvgNxm+HPaeJuk45S9jSXyiHz9KGS76CdHzG5gBM1Bd3E835PbxIsgaA", - "sVrtmLDp+cFyx59GYr4d+yMwWK42G2E33nHPqI2jp7YcMU0ahqPa+L7OUoArfET/1yq4//V0XZ/4GcM3", - "IzFb6KX8A9poY7TOGafkn6VoPdND8UJ2HnILY+Gppt4U4cbN5ZaOsiQ6qi9ZpYW0qP+o7TL7i3sWa547", - "9ncyBm62+PJJooBTt8aJPA7wT453DQb0VRr1eoTsg8zi+7LPpJLZxnGU4n6bYyE6laOOummXzDG/0P1D", - "T5V83SjZKLnVHXLjEae+FeHJPQPekhSb9RxFj0ev7JNTZq3T5MFrt0M/vX7hpYyN0qmCAe1x9xKHBqsF", - "XGHEXHqT3Ji33AtdTtqF20D/x/o/BZEzEsvCWU4+BCKL5r5geSfF//yyzXyOhlWKROzpAJVOaDu93u4T", - "exsep3Xr22/JYQy/jWBuMtpwlCFWRrzvyb2+6fNH+Av1QaI97ygcH/3KtHuDoxz/4AEC/eDB3IvBvz7u", - "fib2/uBBOgFxUuXmfm2xcJsXMfZN7eHXKqEAC9X+Gocinx8hoYAcu6TcB8cEF36oOetWVvv0UsTdxHel", - "vU3Tp+Ddu7f4JeAB/+gj4g9mlriBbZTC+GHvVpZMkkzRfI/83Dn7Wm2nEk7vDgrE8ydA0QhKJqrncCWD", - "yplJc/1Bf5GIRt2oCyiVe2TGRYFiff4/D57d4ud7sF2Lsvi5ze3Wu0g0l/k66SW8cB1/IRm9cwUTq0zW", - "GVlzKaFMDkdv21/CGzjxSv+7mjrPRsiJbfuVW2m5vcW1gHfBDECFCR16hS3dBDFWu2mzmrQM5UoVDOdp", - "i1q0zHFYAjmqy/iPGoxNHQ38QAGIaOxyzJfKAjKQBWq/Tth3mMDGwdLJWI5ap5ALtpsXsa5KxYs55qh9", - "883ZC0azUh+qoE1lCVeodOmuIqklP6LOulc6jyRAOaZe+76MDG7VxmZNFcFUijnXoq1zKHquE6iOibFz", - "wp6TJqypX06TMMx0rDdQREUL6S2GNOH+Yy3P16hi6lxk4yQ/vZ5moMpWAR8FkTVFbPDcObh9SU2qqDln", - "yq5BXwsDGFgNV9DNatekePQqzpDlrrs8XUtJlHJyhEzRlKw5Fu0BOBJIgm04CVkP8UcqGKgc7bHlRS+w", - "V9qlvlertGe8DTnSmqLrL72OOOdSSZFjRvuUQIQZuKZZmyYk/0+biczMn9DE4UpWSG1COj0WR2umBkbo", - "ETe03EZf3aYSddCfFra+ctYKrPGcDYp5KPTr7RpCGvBFiRwRxXxS6YRvStKfvbGDH0lGmFxnRFH1rfv2", - "g1djYm6DSyFRYeHR5sVssjyURqCBUTJh2UqB8evpBmWYt67PCSbbK2D7/uSFWon8QqxwDPKGcssm17/h", - "UGfBEdA73rm2z1xbnwK9+bnj1UOTnlWVn3S8DHS69v1WjiI45X4S/AEi5Dbjx6PtIbe9Hrx4nzpCgyt0", - "PoIK7+EBYTQlkbujfOOeCERR2IJRYFwyD6qQCTBeCBksYekLIk9eCbgxeF5H+plcc0si4CSe9gZ4OeLH", - "joGmZEq97VD9BPAOJbjGMMf4NrbVnEcYR9OgFdy43LFwKBx1R8LEM142HrCJ2swoVXkhqsAYkV615hTj", - "cIw71IPvXgAHo7Ca7lhU4dibaCzV3KIuVmAzXhSpDEVf41eGX0OsD2whr5taQk2QVzfV9JDa/ES5kqbe", - "7JkrNLjldFH58wQ1xCXYww5jwpTFDv9NFdIZ3xnv+3p0cGVwdC2Oy68+DBZNSb2OpjMjVtl0TOCdcnt0", - "tFPfjNDb/ndK6SHq8k8RVNnjcvEepfjbN+7iiPOvDtyM6Wpp0qOiS6/C7yFvTZPYr8uV8CoblItC4zVu", - "XmLLesCHhknAr3g5EtAcq7zpfiU18FhYcz4ahc+tz7JkOdvLgkYz15DLZ0+JPrQEjbl5kpfn3Smf/Vr3", - "InTcBPN9x+BCrj4tsxg1tNzMFtJu8LHGkO+vxiLdQ7kF/N4vf38JPilmpeFKqDo40QRX1vAkpF87xeSb", - "XAPJ9ScdxP9o5fOoqvyNL0NKy/Rv8u9/JmMaA2n17k+gOB9s+qCw/lDaJfVU24Q1FewmVbTr3IpTSpGk", - "ql542bBT2r9LS4MqIgOyej5FHBjg4+N8dl4cdWGmKqfMaJTUsXshVmuLidf/BrwA/epAYvk2mTwesUoZ", - "0RaSLN1gPpPnGoc7meoz7ghYxInxh2MFX8IryC1WD219pDTAMWny3WRBd//fCebHn9ONa73PK78vmfyw", - "ZOiBO36Q/ybK4UTlFk+mp04/azxhKZDnmps260Yv9HVyAN5yCTkmt92bb+g/1iCjXDbzoJdBWJZR+iHR", - "hKNgeubjtY4tQPvSAe2FJyqTcmtwxsKRL2F3z7AONSTrPzaxWDfJ/4oYQO6QhVTAY4pk7/wjTEMZiIXg", - "2ekz6rY1DkZT90bZs244VyBJd3G0GbX2TJmuXT1pLtf1qOx9GFkxlpJoWPp2/P3xHCsNG+/nxJv8sfEr", - "nZ0P659c+/yzmB2qsZ2ETLRgwm8hFRzNUopLiIvbo6XqmusitLiT3D50N4k00MtmZtH64Q9t1YmM+hjS", - "kpfKiRHZWFxQ1/W98Ru7Z8jBr83DgnAtQWsoGpNIqQxkVgW//X1w7EMFeTHeCAlmtIoNATeawfh1m6IZ", - "q3lxzFjMvfNivECmYcMddDpKpDw+5z5kP6PvIZY6VHM6qGFq6PVwWdEQgSHMAIkx1S+Zvy0Px2jfRNkk", - "pASdBctTP6uy7CbWwvSJRZ3TBR0fjEYhNzkFyh5WktTT5MNV9t4IUazzJexO6REU6rGGHYyBJsmJQI/y", - "RvY2+U7VbyYF9+pOwPtj04FVSpXZiLHjfJgKuk/xlyK/BEzl1ngqj5TaZp+hjr2xZl+vdyH1cVWBhOL+", - "CWNnkmJDgmG7WyWuN7m8Z/fNv8VZi5qys3ul2sk7mXayx7zp+pbcLAyzn4cZcKzullPRIAcSDW9H0lBr", - "fp0oPH8y9VU+NDX3i4G3REVQpGSSC7JYPcODnlIcYSR7lHIBDZmceUsXM6VKuWTeJNreDZXGVDwZAmRB", - "Tgn6bqDwgycRkCxvnTiFlMHM5y5TS6ahNSLfNInbsBJ36kXfn7mZpcvvlkpDp6a2600JG5v4hVD8nuuF", - "sJrr3U1SrQ0qgQ+0J6NYPuiO1XhitQtpvbGGOCxLdZ0hs8qacgWpp61rZ7qXcaid1fZzp3oBkV8XN15Q", - "27E1L1iutIY87pEO2yOoNkpDVip080pZoJfWyd0bjNWRrFQrpqpcFUBlP9IUNDZXLSVHsQkir5okCoh2", - "MOiT+kR0PHHKuypDT8l5aNEZ2TJHHE/B+GQ8HkPUeAjvnhLuRxXcOF+iRkigr0s39pqkz7iQPRxZx16U", - "ZVAYjJWyZz+ZGt2RMPDGTfGEbZSx/mVHI5lmqNbF67NcSatVWXaVQCQSr7xm+yXfnuW5faHU5YLnl/fx", - "HSmVbVZazENYat8Zr51J9zIyTay5389wSu3QNc0TydGF9T3nOLoedgTm+8Mc67CO+yxRB7+3ri7zSj8b", - "ziTjVm1Enqbhfy7vtlGftBRLSKZ6opJ0FJyPzZBRx5dD48yALGmIZpA8WVPrjHme5o26yDzcf1Hi7Y/L", - "luAviZGLacgnvdSS5aOyVQ8AhJQiRm2tqY5dLPk0XEWtKMIcTdJ9QCdycfT8uR1sboQ7B8rCrYAaeBs2", - "AH5Gj/05peQiz8WF2obv99ucXTcC/uN+Ku8wjzGXqouWtDQ5VYX8HiMcIZ0ZeK//0RuMFl5M9UJqao5O", - "vFEjAMb9kjowTPJOOhaMJRclFFmqZN15oxOaRy9bH9HSryQtjOfkOa9DxTg3dq3B55sgkVp37U0Vd6Sk", - "muZDza0sYAsGk0FQ+XxuyM4Q7B1QUqW43uNbVVkJV9Bx1/JJMGoU7cQVhL6m6cwKgAqtf32dVMoPKb7L", - "e4oKv/Ys8mSZgt2k5oIQSzvFDqglkkqUrczomJipR8lBdCWKmnfwZ44VObpqN3eUE6gayORZeLdNneYn", - "GuF1GOAs9E+JMgET76fxoaNZUBp1+xjQQb/E2oydepl2S4wzvDQGDZytaAyfROIt3zAVv5bjCsAhybfP", - "m4n7JJSMEPvNFnKUarp+d7fHCcPBmOllbxoVwXWzwzdXJP8hNLyXhEfHSz01DCCD3aupCXThBXZsgLWD", - "pRN7ndSMVeE8//f8b84WdRjIvaupSF38gnsOwWKHCaUbY4UXaEVzoQX/wrnPJ9h/lIvIs3rDd0xp/Me9", - "1/5R81Isd3hCCfzQjZk1dyTkTYRku/b+im7i/YLJPAAW9AIqTEXrFlPHjIbbuVEioN0VGKqJKLbhlxBv", - "A5rlifPk1rEcUy82whi87HrbOcSCX3zICbHhRfxGxsx03brNIVep6/0/26iteKqQUKoqeR5KEvqaKB2F", - "OJUdDcRl17DZH9Y3fB4HEmhKmbZEq0M4b3ED5d6RnhspX/mxeg8dsAclHgelLm61jGOqwbeR0XsCIict", - "5a53Yap/yADouDDcIfDjOnmfBv/JpJFjy5gC/p8F7yOVMWN4qQjmJ8ByJ+Q/ASvpVRdqm2lYmkOuEKRY", - "dQ9h3SYLCMpJIXMN3JBvyPmP/snW5kQU0j0hyXuxsb41oxSwFLJllkJWtU28ADA1otxFCIvV04jWEWPP", - "mJTgxLArXv54BVqLYmzj3OmgGnJxTvqgkvd9E4//5k4dDiBM+/rBSEJoI9WiZu4Cp6o35FhoLJcF10Xc", - "XEiWg3b3PrvmO3Nz24eDVtdOvjhg/eCRNNONb4/sIEjaBEi58+bLW1omGgD5HZooJpgW0IM1YVYgpYhV", - "I5aEIQzptAp8m5VqhfFlIwTok0+i7YceK0qiwpbkoePmMeI32D8N5t32B98qnHXKFPvP2Y+IOnzw/CSF", - "3XvSSJvWD/gjj0w6CIH+5ap1C6fNGdJ/KkbzDQYxdOI0g3AXghjCXpN7CM0HI5aMrgZ3ZBfRQO4DfGN1", - "7fR6Rl0bfCoSlN6wGb5tzR7HbzCtkzPPvePOUOkzeBQTUuY+jvZInRBpksM9MAIeFZ/2Z6s7beNM4cY5", - "pgjU/sjZrFJVlk/xBqTU/IVXaHtIuzCO0Eekrh5Zd+M4YZpiFZ3EJp2qFcfWwRqtmnHILlPl+x7ZYwqN", - "EQ7aVZarJfIyKs2MehiM8WiUF/N+9FFXYdMwCcaZhrzWqNC85rvDdYVGUsJe/O3si0ePf3n8xZfMNWCF", - "WIFp0wr36vK0HmNC9vUsn9ZHbLA8m96EEJdOiAuWshBu02yKP2vEbU2bM3BQlegYTWjiAkgcx0Q9mBvt", - "FY7TOn3/ubYrtcg737EUCn7/PdOqLNNp3RvRLaHqT+1WpOx3En8F2ghjHSPs2uqEbX1lzRrVcZjc84ry", - "jCiZ++zrDRUIO+KMk1rImKsl8jOM+vX2DQbbqvS8imwS+9bl30WkEUPnDPTfWACrVOVFabFkKYgwtkRH", - "MZde0YjunZH3ZMNsyY8yRYjeJzlNenFF3P3cvlut0aY5vdvEhHgRDuUNSHNMkz4e0X4TTtKq0v80/CMR", - "on9nXKNZ7u/BK5Lvg5tV3Z4E2jBcO0EeCMBIHGYngi4uyt9mGtWklUf9fTB19sWPl60J9GDAAEISOhwA", - "Lw6sbNs1Pu4enD84ZefLBinRUt6PUUJn+YdiNQPrbS6SaIu8ksJaMMSW1FAsjAJxzbMmvnXkVTIIg8UK", - "/O5lWpaJ8FnSm+CZignHPQn0FS8/Pdf4VmhjzxAfULweD5qJYyhjJBMqzc0yuL3gk+aO4iXvbmr5CkN2", - "/wPcHiXvOT+UNxcPbjPUemFJ6lW4FSgKmF3jmOQO9OhLtvDZ9CsNuTB9M/R1EE6akEHQYuldL2FrD8Qo", - "Hlrnz8regoyXwWeE/RCZkxSq7VoI2yP6BzOVkZObpPIU9Q3IIoG/FI+Kq28euC5umXn9ZglBotReRyYE", - "GdYVnbo8SnrhLp3awHCdk2/rDm4TF3W7tqnZbCYncH/37q1dTElCk0627rpjFpw7ybp+VM713yH/DeHI", - "j+HnTVHMz2MZUSnr50jy3d5+1KI86CDSSaX8cT5bgQQjDCYL/sUXh/i0d2mAgGLyh0eVYL1NIhFCTGKt", - "ncmjqaIkyRPyI/tuiWzIGO+W11rYHRYGDQo08UsyU893TdYHnzWksV35u8+qS2iKM7c5ImoTbtfvFC/x", - "PiKTmnS3kCpP2DdbvqlKrw5mf723+Df4/C9PioefP/q3xV8efvEwhydffPXwIf/qCX/01eeP4PFfvnjy", - "EB4tv/xq8bh4/OTx4snjJ19+8VX++ZNHiydffvVv9xwfciAToCF399PZ/8nOypXKzl6dZ28csC1OeCW+", - "B7c3+FZeKixc55Ca40mEDRfl7Gn46X+FE3aSq007fPh15guwzNbWVubp6en19fVJ3OV0hUHhmVV1vj4N", - "82A5sY688uq88SYnvxfc0VZ7jJvqSeEMv73+5uINO3t1ftISzOzp7OHJw5NHvnat5JWYPZ19jj/h6Vnj", - "vp96Yps9/fBxPjtdAy8xh4r7YwNWizx80sCLnf+/uearFegTDBign64enwax4vSDD47/uO/baexScfqh", - "k0OgONCzcRlIGvNeKHWJtuQg6NwzPQeIk7iG7nnh8Egt0WvBnLccLRRCRWPt7OnblBLF13iq6kUpckb3", - "MBKiw3JEJ01miJYPoMYsqvnfcjXHqR5mX73/8MVfPqakpT4gL71lrzVleC9QDCxCn/iTANc/atC7FjA0", - "c89iMIZ2v3SCrK3FWujRbCfsJ+8igF+JOYQAqhCH1OQWC51GAHNDpOBqsPAeq3GhzxySw+OHD8MR9gJy", - "RFannlpjdHeNCAOHmmMi1jslahPSjVtMhvgYUuxPhrLqOGwKycmRG/ORbPglmU/QE41pHxrpMerdWBHJ", - "TciC35bApX/H4iMT4m5ppqF08XHI9oZoNMH/NNZulYJ0d94nKFVh9uN89uRIStirZeqkh0yA/pKXDj9Q", - "hKwgBMGjTwfBuSQ3SXd30B33cT774lPi4Fw6xsVLhi2jIpkJapeXUl3L0NIJJPVmw/UOxQ07ZY99Ehs0", - "CIZ2RPN0O3J3ft/OiCXP5jPYVqCFe/Xxcvb+46Gr5fRDKI68/yLqFMb1Tr5Rh4kX3L5mpwssiDS1KZio", - "8fhSUI9lTj/g6Rz9/dSr09MfUSNGotZpyOE00pKydaQ/dlD4wW7dQvYP59pE4+Xc5uu6Ov2A/0GpKVoR", - "Jf89tVt5ih47px86iPCfB4jo/t52j1tcbVQBATi1XFJF6X2fTz/Qv9FEHcJsBZqucPJN1OjZGvLLWfre", - "62VGj3oxEir5ooSCmNOTCR2ksnGnGx3o1yh6GPbj90wsGfSnECbMcMS5pbyRp1h3cdfiMvy8k3nyx+E2", - "d3Lmjfx8Gt40KbG22/JD58/ukTPr2hbqOpoFtYGkyh5C5j7Wpv/36TUX1r3vfao2LNQ87GyBl6e+LkPv", - "1zYV8uAL5neOfoyDopK/nnKP6lmlTIJsX/PryIR3ho1JOgBjv1b4mhi7nbbZQkikoPiGapUA9HEoFw/u", - "JSfToLdbsKMM06xgrgeteJFzgwWCfYmTgaT+MXnsPrW08TUvWEiRkbFW9jjzT83O0v5bEsHpP/9001+A", - "vhI5sDewqZTmWpQ79pNsYk5uzEi/ReLUPL9E6bwhWHKQ1Py6G8ai0ykIuhV8QkYKYHbL1lwWpQ/aVjUW", - "/3aUhXZPFXneuAsoVLCqlEYAKDUgFOSLYE7YReOpgX4PdXjgFHAFparQMIEJb2kSjl4cZMmLL4Iu/5/P", - "tpk7xCuQmWcj2UIVO1/yZab5td1S/PWAV5FwOMLIBqJb6quXTkYaBQ/p8LnVEMYaN9QgNLq2t+/dCxYr", - "QnvlQqtAenp6iiEza2Xs6cw9wLvKpfjj+wZhoZDhrNLiCjP1I9KUFu5dWWZecdMWu5o9Pnk4+/j/AwAA", - "//9lucWJkwQBAA==", + "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", + "AwAA///pfgaenwQBAA==", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/daemon/algod/api/server/v2/generated/model/types.go b/daemon/algod/api/server/v2/generated/model/types.go index ce0a946219..1755e868ee 100644 --- a/daemon/algod/api/server/v2/generated/model/types.go +++ b/daemon/algod/api/server/v2/generated/model/types.go @@ -1088,17 +1088,6 @@ type AccountApplicationResponse struct { Round uint64 `json:"round"` } -// AccountAssetHoldingsResponse defines model for AccountAssetHoldingsResponse. -type AccountAssetHoldingsResponse struct { - AssetHoldings *[]AccountAssetHolding `json:"asset-holdings,omitempty"` - - // NextToken Used for pagination, when making another request provide this token with the next parameter. - NextToken *string `json:"next-token,omitempty"` - - // Round The round for which this information is relevant. - Round uint64 `json:"round"` -} - // AccountAssetResponse defines model for AccountAssetResponse. type AccountAssetResponse struct { // AssetHolding Describes an asset held by an account. @@ -1119,6 +1108,17 @@ type AccountAssetResponse struct { Round uint64 `json:"round"` } +// AccountAssetsInformationResponse defines model for AccountAssetsInformationResponse. +type AccountAssetsInformationResponse struct { + AssetHoldings *[]AccountAssetHolding `json:"asset-holdings,omitempty"` + + // NextToken Used for pagination, when making another request provide this token with the next parameter. + NextToken *string `json:"next-token,omitempty"` + + // Round The round for which this information is relevant. + Round uint64 `json:"round"` +} + // AccountResponse Account information at a given round. // // Definition: diff --git a/daemon/algod/api/server/v2/generated/nonparticipating/private/routes.go b/daemon/algod/api/server/v2/generated/nonparticipating/private/routes.go index c855fbdb59..568ebbb8ae 100644 --- a/daemon/algod/api/server/v2/generated/nonparticipating/private/routes.go +++ b/daemon/algod/api/server/v2/generated/nonparticipating/private/routes.go @@ -163,200 +163,200 @@ var swaggerSpec = []string{ "nFVVyXJqkPjWfTZfDRMA+5CgTYtTvFBffIhArKSoQGpmB6VVlZUip2WmNNU40r9KmE9eTP7ltNG/nNru", "6jSa/LXpdYGdjMhqxaCMVtUBY7wxoo/awSwMg8ZPyCYs20OhiXG7iYaUmGHBJawp1yfNk6XFD8IBfudm", "avBtpR2L784TbBDhxDacgbISsG14T5EI9QTRShCtKJAuSjELP9w/q6oGg/j9rKosPlB6BIaCGWyY0uoB", - "Lp82Jyme5/zVCfk2HhtFccHLrbkcrKhh7oa5u7XcLRZ0S24NzYj3FMHtFPLEbI1HgxHz/yFKI6yoY1Ae", - "Pi+WbkA8ZBpWai/19KHBs2o3k0pJtxN332d4b/eJ6icFlp4qumAcoZ0aSZiTFb02XJhygcg3ZAMqiLiW", - "8qwwELRhTnxwIvxJ78n8J6ft1KZ6gcIIHCVTGp9HpqEiSyhR/jHPQztCj0SOTRp7CaJDCYETmd9Hdf5r", - "cKEYt8P8B9/iDnP2GYy/RO/f+x3m0uctTiN4Qs66fW/HWcwoaZ5yK1oZwR124DGg8EbSygLovlhxi3F8", - "x9tGFtY7Xrgj78IkzBGbj2gNobr1Wdt7HpKQICl0YPiqFPn1P6haHuHMz/xY/eOH05Al0AIkWVK1THDZ", - "zvFqRhtzxExDZHJkFk11Epb4WhzlxivFIfdcVb2kZWmm7t9vndXiwKN4SVkS05jAiqGi3D0YrWbdvrvI", - "1zRfGnGA5LQsp42KSFRZCWsozWOdcQ5ySvSS6ua2wJH9ewbPkQLDPDSQaDVOvYSqNRl0EBLIiiJbWZlX", - "TFW2+4TrVtEVdKQfZHOiRu1B9MA4f+VXB2vgeImFoRH8sEbU0sSDn5i53SecmQu7OKv5095sF/AX+EUL", - "aNO6YZK8mULIwuqqtfmNSZILaYewbNtNbv4DVDadLXXeryRkbghJ1yAVLc3qOot6EMj3WKdzz8ksqKbR", - "yXRUmH54Wc6B/fDOBpnQzvyI/6ElMZ/N1WQoqaEehjeMiMyohZXiDKrsTKYB6lkFWVkVJqlofn0QlC+b", - "ydNsZtTJ+9pqTd0WukWEHbrcsEIda5twsKG9ap8Qq7Py7KgnuO5kOtFcYxBwKSpi2UcHBMspcDSLELE5", - "+rX2ldikYPpKbHpXmtjAUXbCjDOa2X8lNq8cZELuxzyOPQbpZoGcrkDh7cZjxmlmaexxZzMhbydNdC4Y", - "ThorI6Fm1EiYmnaQhE3rKnNnM2GpsA06AzWOHbuFgO7wKYy1sHCh6R+ABWVGPQYW2gMdGwtiVbESjkD6", - "y6QQN6MKnj4hF/84++Lxk1+efPGlIclKioWkKzLbalDkvlPHEaW3JTxIPqVRukiP/uUzb5tqj5saR4la", - "5rCiVX8oa/OyTxrbjJh2fay10YyrDgCO4ohgrjaLdmLNuQa0V0yZF9NqdpTNGEJY0cxSEAdJAXuJ6dDl", - "NdNs4yXKrayPob0EKYVMXl2VFFrkosyMfMREQgv0xrUgroV/rlbd3y205IYqYuZGa1/NiwFlj97w8Xzf", - "Dn254Q1udnJ+u97E6ty8Y/aljfxGeq9AZnrDSQGzetHSbMylWBFKCuyId/S3oK3cwlZwoemq+nE+P47q", - "R+BACRUMW4EyMxHbwkgNCnLBrfPbHm2LG3UMerqI8VYZPQyAw8jFludoWjrGsR1WRK0YRzu32vI80koZ", - "GEsoFi2yvLv2aQgddqp7KgGOQcdr/Iy67VdQavqNkJeN2PetFHV1dCGvO+fY5VC3GKc9L0xfrxNjfFG2", - "HS4XBvaT1Bo/y4Jehse3XQNCjxT5mi2WOnpnvZFCzI8PY2qWFKD4wSpZStOnr2r5QRSGmehaHUEEawZr", - "OJyh25iv0ZmoNaGEiwJw82uVFs4GXPTQNwhdmnQs7+G7nikyA0NdOa3NauuKoMNO775oOmY0tyc0Q9So", - "AXeF4GdiW9nprPtXKYEWWzID4ETMnE+A81bARVL0NtJevHGiYYJftOCqpMhBKSgyp2jeC5pvZ68OvQNP", - "CDgCHGYhSpA5lXcG9nq9F85r2GboG6fI/e9+Vg8+A7xaaFruQSy2SaG3q4fqQz1u+l0E1508Jjur4bJU", - "S7RAabYEDUMoPAgng/vXhai3i3dHyxokumD8oRTvJ7kbAQVQ/2B6vyu0dTXg8e2et0bCMxvGKRdesEoN", - "VlKls31s2TRqvcHNCiJOmOLEOPCA4PWaKm3dhhgvUBdorxOcxwphZophgAefIWbkn/0LpD92bu5BrmoV", - "niOqriohNRSpNaDZe3CuH2AT5hLzaOzw5tGC1Ar2jTyEpWh8hyy7EosgqoPp1JnN+4tDA6O557dJVLaA", - "aBCxC5AL3yrCbuz1OgAIUw2iLeEw1aGc4Go7nSgtqspwC53VPPQbQtOFbX2mf2ra9onLGgfsvV0IUGh4", - "cO0d5DcWs9bfeUkVcXB4PwZUg1j/pj7M5jBmivEcsl2Uj0880yo+AnsPaV0tJC0gK6Ck24QHhv1M7Odd", - "A+CON89doSGzjqvpTW8o2fsJ7hha4HgqJTwS/EJycwTNU6AhENd7z8gF4Ngp5uTo6F4YCudKbpEfD5dt", - "tzoxIt6Ga6HNjjt6QJAdRx8D8AAewtC3RwV2zpq3Z3eK/wTlJghyxOGTbEENLaEZ/6AFDOhQXUxQdF46", - "7L3DgZNsc5CN7eEjQ0d2QKH7hkrNclbhW+c72B796dedIGlwJgVoykooSPTBPgOruD+xLpfdMW/3FByl", - "e+uD31O+JZbj/aHawF/DFt/cb6wvf6TqOMZbNjGquZ8oJwio9xA2InjcBDY01+XWCGp6CVtyAxKIqmfW", - "9N+3Q2hRZfEASbvGjhmdVTNpU9xpZr3AoaLlpRz67JtgN3yXnYdBCx3uLVAJUY7QkPWQkYRglM8FqYTZ", - "debChXzAiKekFpCOaaNJO1z/91QLzbgC8p+iJjnl+OSqNQSZRkgUFFCANDMYESzM6Ty1GgxBCSuwL0n8", - "8vBhd+EPH7o9Z4rM4cbH2JmGXXQ8fIh6nDdC6dbhOoI+1By388T1gQYfc/G5V0iXp+z3FHIjj9nJN53B", - "g5XInCmlHOGa5d+ZAXRO5mbM2mMaGeclheOOsuW0/Wp668Z9v2CruqT6GFYrWNMyE2uQkhWwl5O7iZng", - "X69p+WPohvGDkBsazSHLMept5FhwafrYQDkzDuPMHGDrJD8WIDi3vS5spz1PzMbJlK1WUDCqodySSkIO", - "Nj7MSI4qLPWEWM/xfEn5Ah8MUtQL55dqx0GGXyurmpE17w2RFKr0hmeo5E5dAM69y4cIGnEKqHnSdTXk", - "9gFzQ8N8Lip0zM0c7UHXYpA0kk0ngy9eg9R18+K1yGnHOY64DFryXoSfZuKRphREnZF9+viKt8UcJrO5", - "f4zKvhk6BWV/4shTtvk45Cxrntvl9ghCjx2ISKgkKLyiYjWVsl/FPI5p9i52W6Vh1dfk266/DBy/t4Pv", - "RcFLxiFbCQ7bZBoPxuF7/Jg8TnhNDnRGgWWob/cN0oK/A1Z7njHUeFf84m53T2jXYqW+EfJYJlE74Gjx", - "foQFcq+53U15WzspLcuEadFFPHYZgJoGJ1cmCVVK5AxltvNCTZ03rbVGuvDINvrfBCf9I5y97rgdG1oc", - "TI86YigrQkleMtQgC660rHN9xSnqqKKlJpyf/GN8WGv50jdJq0kTWkw31BWn6PgWNFdJh405JNQ03wB4", - "5aWqFwtQuvPWmQNccdeKcVJzpnGulTkumT0vFUj0QDqxLVd0S+aGJrQgv4MUZFbrtvSPAb1Ks7J0Bj0z", - "DRHzK041KYEqTb5n/HKDw3mjvz+yHPSNkNcBC+nbfQEcFFNZ2knrW/sV/eHd8pfONx7dxO1n76zZZBiY", - "mGW2kor87/v//uLdWfZfNPv9Ufb8/zt9/+HZxwcPez8++fj3v/+f9k9PP/79wb//a2qnPOypcFMH+fkr", - "9zI+f4XPn8jFvQv7J9P/rxjPkkQWe3N0aIvcx9QKjoAetJVjeglXXG+4IaQ1LVlheMttyKF7w/TOoj0d", - "HappbURHGebXeuCj4g5chiSYTIc13lqK6vs1pgO70SjpYrXxvMxrbrfSS982KM37l4n5NATv27xeLwhG", - "di+pd450fz754svJtInIDt8n04n7+j5ByazYpOLuC9ik3opxcME9RSq6VaDT3ANhT7rSWd+OeNgVrGYg", - "1ZJVn55TKM1maQ7nQ32czmnDz7l1jDfnB02cW2c5EfNPD7eWAAVUepnK99MS1LBVs5sAHbeTSoo18Clh", - "J3DS1fkU5r3onPpKoHMf/iKFGPMaCufAEpqnigjr8UJGKVZS9NMJC3CXvzr6c8gNnIKrO2ewZ/q/tSD3", - "vv36kpw6hqnu2RQQdugoaD/xlHZBhy2HJMPN4lisK37FX8EctQ+Cv7jiBdX0dEYVy9VprUB+RUvKczhZ", - "CPLCxzG+oppe8Z6kNZiIMIogJVU9K1lOruMHSUOeNrlUf4Srq3e0XIirq/c934z+88FNleQvdoLMCMKi", - "1plLjZNJuKEyZftSITUKjmxzX+2a1QrZorYKUp96x42f5nm0qlQ3RUJ/+VVVmuVHZKhcAgCzZURpEeK4", - "jIDiYqfN/v4g3MUg6Y3Xq9QKFPl1Rat3jOv3JLuqHz16ihFxTc6AX92Vb2hyW8Fo7cpgCoeuUgUXbp+V", - "sNGSZhVdpExsV1fvNNAKdx/l5RXqOMqSYLdWtJ53zMehmgWEWPLBDbBwHBxUi4u7sL18GsT0EvATbmE7", - "0v1O+xWFpt96u/YkOqC1XmbmbCdXpQyJ+50J2dEWRsjy3hiKLfC16hLJzYDkS8ivXYYvWFV6O2119w4/", - "TtD0rIMpm/vNRuZh9iE0UMyA1FVBnShO+babBkaB1t6t+C1cw/ZSNMmLDsn70k5DooYOKlJqJF0aYo2P", - "rRuju/nOq8wHaLpsHhj06MniRaAL32f4IFuR9wiHOEUUrRwIQ4igMoEIS/wDKLjFQs14dyL91PIYz4Fr", - "toYMSrZgs1Ta2v/o28M8rIYqXaY+54UcBlSEzYl5ys/sxeqe95LyBZjr2VypQtHSZiFNOm3ge2gJVOoZ", - "UL1Tz8/jXBIeOnxS3mDEMmr4pmYJsDH7zTRq7DjcmFcFKopsG+e9fDLsf2YBh+KW8PjuzUvhZPCt61CX", - "yNDnb+WA3fCsda55MZ0hXPb7CjDFp7gx+2KgEC47pc1wEd0vtaILGHi7xNa7kXkkWhY/HGSfRJKUQcS8", - "K2r0JIEkyLZxZtacPMNgvphDjM/MjkOmn8kaiJ3NCJNOO4TNShRgg+eq3XsqW1ZUm0V3CLQ0awHJG1HQ", - "g9HGSHwcl1T544j5RT2XHSWd/YEZW3alcjuPfAmjJKIhUZu/DbsctPfudwndfBY3n7otfvSPSMNm3l4Y", - "vpDaDsFRNC2ghIVduG3sCaXJHtNskIHjx/kceUuWckuMFNSRAODmAPNyeUiItY2Q0SOkyDgCGx0fcGDy", - "g4jPJl8cAiR32W+oHxuviOhvSAf2WUd9I4yKylyubMDemHsO4FI4NJJFx6MahyGMT4lhc2taGjbn3uLN", - "IL2MYvig6OQPc643D4YeGjtMU/bKP2hNVki4zWpiadYDnRa1d0A8E5vMRvYm3yKzzczQezJ2AeOMUwfT", - "5m67p8hMbNCdC68W6yu/B5ZhODwYke5lwxTSK/YbkrMsMLum3S3npqhQIck4RWsglyFBb8zUA7LlELnc", - "j3Jt3QqAjhqqqW3g1BJ71Qdt8aR/mTe32rRJM+rDwlLHf+gIJXdpAH99/Vgy496gAql1oj5JWrC+Zuku", - "6dps58qmYDskW1uXHFpA7MDqm64cmERr29erjdcIaylWYphv3yjZR5uCEvARnLVE0+w65Slg3vKA9/iF", - "7xYp63D3KN8+iBwIJSyY0tAYjbxf0OdQx1NMNyzEfHh1upJzs763QoTL35rNsWNrmZ98BeiBP2dS6Qwt", - "bsklmEbfKFQifWOapiXQtouiTc7PijTHxWmvYZsVrKzT9Orm/e6VmfaHcNGoeoa3GOPWQWuGxSSSjss7", - "pra+7TsX/Nou+DU92nrHnQbT1EwsDbm05/iLnIsOA9vFDhIEmCKO/q4NonQHg4wCzvvcMZJGI5+Wk13W", - "ht5hKvzYe73UfNj70M1vR0quJUqfl44QFIsFFD4tmLeH8Sj5Win4Iqp6VFW7cs2dEJvyDTO27Uj25tzw", - "YcgJPxL3M8YL2KShj18FCHkTWYeJ6nCSBXCbriStFkqiJnbxxxaRru4T20K7AQBJJ+jLjjG78U62uxS2", - "EzegBFq4N4kCv77dx7K/IQ510yH36VbG0N1HCAdEmmI6KgTST0MwwIBpVbFi0zE82VEHlWD0IO3ygLSF", - "rMUNtgcDbSfoJMG1Uk87V2unYD/FN++peZVZ32vnWGzom+YuAL+oJVowWp7N/Tzn4a02cu3f/XyhhaQL", - "cFaozIJ0pyFwOYegIcoirohm1p2kYPM5xNYXdRvLQQu4no69GEG6CSJLm2hqxvWXz1JktId6Ghj3oyxN", - "MQlaGLLJX/atXF6mj1RJ4UqItuYWpqpkuP53sM1+pmVtHhlMqsY915md2pfvAbu+Xn0HWxx5r9erAWzP", - "rqDm6S0gDaY0/eGTijKF31OtlPj4vGxt4QE7dZbepSNtjStiMEz8zS3TSvLfXspdDkbjJGFgGbMbF2nf", - "BHN6oI34Linv2wRW7JdBInk/noopX/KxfxWFXBT7aPcSaOmJF5cz+Tid3M0TIHWbuRH34PpNuECTeEZP", - "U2sZbjn2HIhyWlVSrGmZOX+JoctfirW7/LG5d6/4xC+ZNGVffn32+o0D/+N0kpdAZRY0AYOrwnbVX2ZV", - "Nqf97qvEZsl2ik6rKYo2P2Qyjn0sbjAjdkfZ1Csi0vjPREfR+VzM0w7ve3mfc/WxS9zh8gNV8PhpbJ7W", - "4aft5EPXlJXe2OihHXBOx8WNq0ST5ArxAHd2Fop8vrKjspve6U6fjoa69vAknOtHTE2ZfnFwl7gSWZFz", - "/qFHl56+EbLF/F1kYtJ56I8Tq4yQbfE44Kvt6z12hakTYgWvXxe/mtP48GF81B4+nJJfS/chAhB/n7nf", - "8X3x8GHSephUYxkmgVoqTlfwIERZDG7Ep32Ac7gZd0GfrVdBshTDZBgo1HoBeXTfOOzdSObwWbhfCijB", - "/HQy5pEeb7pFdwzMmBN0MRSJGJxMV7bEpCKCd32qMQjWkBYye1fKwBpj+0eI1ys0YGaqZHnatYPPlGGv", - "3DpTmsYEGw9oa82INRvwzeU1i8YyzcbkTO0AGc2RRKZKpm1tcDcT7njXnP1WA2GFedXMGUi81zpXnX8c", - "4Kg9gTStF3MDWztVM/xd9CA77E1eF7RLCbLTfvcq2JT8QlPVlQ70AI9n7DHuHd7bjj4cNdtotmXbBXPc", - "O2ZMqXHP6JyxbmCOZOlwprK5FL9D2hCC9qNEIgxv+GSo5v0deMpzr8tSglG5qYDezL5vu8e/jYc2/s5v", - "Yb/oUILpNpdp+lQftpG3efSqdLpmh+ShR1jsYdAODRhgLXi8ImdYLB/ivY8ot+fJZoFoRZilT2Ucy3lq", - "x29OpYO5F/9a0psZTdVWMW8hA1O0vS0/KS2I7+w3QIUcB3Z2Enlwh7bMZpKrQDY2iH5W2lu+a+y0o180", - "zQMGKSp+ukytm0KpRGKYmt9Qbqtum36WX7neCqwJ3vS6ERLzQKq0S1cBOVsl1bFXV++KvO++U7AFswWl", - "awVRxWI3kC3Wb6nIVX0OmTscas7n5NE0KpvudqNga6bYrARs8di2mFGF12Uwh4cuZnnA9VJh8ycjmi9r", - "Xkgo9FJZxCpBwtsThbzgmDgDfQPAySNs9/g5uY8umYqt4YHBohOCJi8eP0eHGvvHo9Qt6wqC72LZBfJs", - "76ydpmP0SbVjGCbpRk17X88lwO8wfDvsOE2265izhC3dhbL/LK0opwtIx2es9sBk++Juojm/gxdurQGg", - "tBRbwnR6ftDU8KeBmG/D/iwYJBerFdMr57inxMrQU1OO2E7qh7O18V2dJQ+X/4j+r5V3/+vouj7xM4au", - "BmK20Ev5B7TRxmidEmqTf5as8Uz3xQvJuc8tjIWnQr0pixszl1k6ypLoqD4nlWRco/6j1vPsb+ZZLGlu", - "2N/JELjZ7MtniQJO7Ron/DDAPzneJSiQ6zTq5QDZe5nF9SX3ueDZynCU4kGTYyE6lYOOummXzCG/0N1D", - "j5V8zSjZILnVLXKjEae+E+HxHQPekRTDeg6ix4NX9skps5Zp8qC12aGf3r52UsZKyFTBgOa4O4lDgpYM", - "1hgxl94kM+Yd90KWo3bhLtB/Xv8nL3JGYpk/y8mHQGTR3BUsb6T4n79vMp+jYdVGInZ0gEImtJ1Ob/eJ", - "vQ0P07p17bfWYQy/DWBuNNpwlD5WBrzvrXt96PM5/IW6INk9bykcH/9KpHmDoxz/8CEC/fDh1InBvz5p", - "f7bs/eHDdALipMrN/Npg4S4vYuyb2sOvREIB5qv9BYcilx8hoYAcuqTMB8MEZ26oKWlXVvv0UsRx4rvS", - "3qbpU3B19Q6/eDzgH11EfGZmiRvYRCkMH/Z2ZckkyRThe+TnTslXYjOWcDp3kCeePwGKBlAyUj2HK+lV", - "zkya6/f6i0Q0akadQSnMIzMuChTr8/86eDaLn+7Ads3K4ucmt1vnIpGU58ukl/DMdPzFyuitK9iyymSd", - "kSXlHMrkcPZt+4t/Ayde6f8UY+dZMT6ybbdyq11uZ3EN4G0wPVB+QoNepkszQYzVdtqskJahXIiC4DxN", - "UYuGOfZLIEd1GX+rQenU0cAPNgARjV2G+dqygAR4gdqvE/ItJrAxsLQylqPWyeeCbedFrKtS0GKKOWov", - "vz57Teysto+toG3LEi5Q6dJeRVJLfkCddad0HkiAcki99l0ZGcyqlc5CFcFUijnToqlzyDquE6iOibFz", - "Ql5ZTVioX24nIZjpWK6giIoW2rcY0oT5j9Y0X6KKqXWRDZP8+HqaniobBXwURBaK2OC5M3C7kpq2ouaU", - "CL0EecMUYGA1rKGd1S6keHQqTp/lrr08WXNuKeXkAJkilKw5FO0eOCuQeNtwErIO4g9UMNhytIeWF73A", - "XmmX+k6t0o7x1udIC0XXv3c64pxywVmOGe1TAhFm4BpnbRqR/D9tJlITd0IThytZITWEdDosDtZM9YzQ", - "Ia5vuY2+mk211GH/1LBxlbMWoJXjbFBMfaFfZ9dgXIErSmSIKOaTQiZ8U5L+7MEOfiAZYXKdAUXVN+bb", - "D06NibkNrhlHhYVDmxOzreWhVAwNjJwwTRYClFtPOyhDvTN9TjDZXgGb9yevxYLlF2yBY1hvKLNs6/rX", - "H+rMOwI6xzvT9qVp61Kgh59bXj120rOqcpMOl4FO177f8EEEp9xPvD9AhNwwfjzaDnLb6cGL96khNFij", - "8xFUeA/3CCOURG6P8rV5IliKwhbEBsYl86AyngDjNePeEpa+IPLklYAbg+d1oJ/KJdVWBBzF0y6BlgN+", - "7Bhoak2pdx2qmwDeoATX6OcY3sammvMA4wgNGsGN8i3xh8JQdyRMvKRl8IBN1GZGqcoJUQXGiHSqNacY", - "h2Hcvh58+wLYG4UVumNRhUNvoqFUc7O6WIDOaFGkMhR9hV8JfvWxPrCBvA61hEKQVzvVdJ/a3ES54Kpe", - "7ZjLN7jjdFH58wQ1xCXY/Q5jwpTZFv9NFdIZ3hnn+3pwcKV3dC0Oy6/eDxZNSb2GpjPFFtl4TOCdcnd0", - "NFPfjtCb/keldB91+acIquxwuXiPUvzta3NxxPlXe27G9moJ6VHRpVfgd5+3JiT2a3MlvMp65aLQeI2b", - "l9iyDvC+YRLwNS0HAppjlbe9X60aeCisOR+MwqfaZVnSlOxkQYOZa6zLZ0eJ3rcEDbl5Wi/P4ymf3Vp3", - "InTYBPNdy+BiXX0aZjFoaLmdLaTZ4EONId+thyLdfbkF/N4tf38NLilmJWHNRO2daLwrq38S2l9bxeRD", - "roHk+pMO4p9b+TyoKr90ZUjtMt2b/LufrTGNANdy+ydQnPc2vVdYvy/tWvVU04SECnajKtq1bsUxpUhS", - "VS+cbNgq7d+mpV4VkR5ZvRojDvTw8XE6OS8OujBTlVMmdpTUsXvNFkuNidf/AbQA+WZPYvkmmTwesUoo", - "1hSSLM1gLpPnEoc7GeszbgiYxYnx+2N5X8I15BqrhzY+UhLgkDT5ZjKvu//vBPPDz+ngWu/yyu9KJt8v", - "Gbrnju/lv4lyONlyiyfjU6efBU9YG8hzQ1WTdaMT+jo6AG8+hxyT2+7MN/QfS+BRLpup18sgLPMo/RAL", - "4SiYnvlwrWMD0K50QDvhicqk3BmcoXDka9jeU6RFDcn6jyEW6zb5XxEDyB0ynwp4SJHsnH+YCpSBWPCe", - "nS6jblPjYDB1b5Q965ZzeZI0F0eTUWvHlOna1aPmMl0Pyt6HkRVDKYn6pW+H3x+vsNKwcn5ONOSPjV/p", - "5Lxf/+TG5Z/F7FDBduIz0YLyv/lUcHaWkl1DXNweLVU3VBa+xVFy+9i7iaWBnoeZWeOH37dVJzLqY0hL", - "XgojRmRDcUFt1/fgN3ZPWQe/Jg8LwjUHKaEIJpFSKMi08H77u+DYhQrrxXgrJKjBKjYWuMEMxm+bFM1Y", - "zYtixmLqnBfjBRIJK2qgk1Ei5eE5dyH7pf3uY6l9Nae9GqZAr/vLivoIDKZ6SIypfk7cbbk/Rvs2yibG", - "OcjMW566WZV5O7EWpk8s6txe0PHBCAq50SlQdrCSpJ4m76+y80aIYp2vYXtqH0G+HqvfwRhoKzlZ0KO8", - "kZ1NPqr6TaXgXhwFvM+bDqwSoswGjB3n/VTQXYq/Zvk1YCq34Kk8UGqb3Ecde7Bm3yy3PvVxVQGH4sEJ", - "IWfcxoZ4w3a7Slxncn5P75p/g7MWtc3O7pRqJ1c87WSPedPlHbmZH2Y3D1NgWN0dp7KD7Ek0vBlIQy3p", - "TaLw/MnYV3nf1NwtBt4QlYUiJZNcWIvVSzzoKcURRrJHKRfQkEmJs3QRVYqUS+Ztou3NUGlMxZMhQBr4", - "mKDvAIUbPImAZHnrxCm0Gcxc7jIxJxIaI/Jtk7j1K3GnXvTdmcMsbX43FxJaNbVNb5uwMcQv+OL3VM6Y", - "llRub5NqrVcJvKc9GcTyXnes4InVLKTxxurjsCzFTYbMKgvlClJPW9NOtS9jXzur6WdO9Qwivy6qnKC2", - "JUtakFxICXncIx22Z6FaCQlZKdDNK2WBnmsjd68wVoeTUiyIqHJRgC37kaagoblqzimKTRB51SRRYGkH", - "gz5tn4iOR055rDL0NjmPXXRmbZkDjqegXDIehyHbuA/vjhLuBxXcOJ+jRoihr0s79tpKn3Eheziwjj0r", - "S68wGCplT35SNbojYeCNmeIZWQml3cvOjqTCUI2L1/1ccC1FWbaVQFYkXjjN9vd0c5bn+rUQ1zOaXz/A", - "dyQXOqy0mPqw1K4zXjOT7GRkGllzv5vh1LZD1zRHJAcX1nec4+B62BGY7/dzrP067rNEHfzOutrMK/1s", - "OOOEarFieZqG/1rebYM+aSmWkEz1ZEvS2eB8bIaMOr4cgjMDsqQ+moHTZE2tM+J4mjPqIvMw/0WJtzsu", - "mYO7JAYupj6fdFJLlg/KVh0AEFIbMapraevYxZJP4CpiYSPM0STdBXQkF0fPn7vBZkY4OlAa7gRUz9sw", - "AHjfPvanNiWX9VyciY3//qDJ2XUr4D/upvIW8xhyqbpoSEtapyqf32OAI6QzA+/0P7rEaOHZWC+kUHN0", - "5I0aATDsl9SCYZR30qFgzCkrochSJevOg05oGr1sXURLt5I0U46T57T2FePM2LUEl2/CitSybW+qqCEl", - "EZr3Nbe8gA0oTAZhy+dTZe0M3t4Bpa0U13l8iyorYQ0tdy2XBKNG0Y6twfdVoTMpACq0/nV1Uik/pPgu", - "7ygq3NqzyJNlDHaTmguLWLtTZI9aIqlE2fDMHhM19igZiNasqGkLf+pQkaOtdjNHOYGqnkye+Xfb2Gl+", - "siO89QOc+f4pUcZj4v04PnQwC0qjbhcD2uuXWKuhU8/Tbolxhpdg0MDZimD4tCTe8A1V0Rs+rADsk3zz", - "vBm5T0zwCLFfbyBHqabtd3d3nBAcjKhO9qZBEVyGHb69Ivmz0PBOEh4cL/XUUIAMdqemxtOFE9ixAdYO", - "5kbsNVIzVoVz/N/xvymZ1X4g8662ReriF9wr8BY7TCgdjBVOoGXhQvP+hVOXT7D7KGeRZ/WKbomQ+I95", - "r/1W05LNt3hCLfi+G1FLakjImQit7dr5K5qJdwsmUw+Y1wsIP5VdNxs7ZjTc1owSAW2uQF9NRJAVvYZ4", - "G9AsbzlPrg3LUfVsxZTCy66znX0suMX7nBArWsRvZMxM167b7HOVmt7/fxO1FU/lE0pVJc19SUJXE6Wl", - "ELdlRz1x6SWsdof19Z/HngRCKdOGaKUP5y1uodw70HMj5Ss/VO+hBXavxGOv1MWdlnFINfgmMnpHQOSo", - "pRx7F8b6h/SAjgvD7QM/rpP3afCfTBo5tIwx4P9Z8D5QGTOG1xbB/ARYboX8J2C1etWZ2GQS5mqfK4RV", - "rJqHsGySBXjlJOO5BKqsb8j5j+7J1uREZNw8Ia33YrC+hVEKmDPeMEvGq1onXgCYGpFvI4TF6mlE64Cx", - "Z0hKMGLYmpY/rkFKVgxtnDkdtoZcnJPeq+Rd38TjP9yp/QGYal4/GEkITaRa1Mxc4LbqjXUsVJrygsoi", - "bs44yUGae5/c0K26ve3DQCtrI1/ssX7QSJppx7dHdhAkbQtIuXXmyztaJgKA9IgmihGmBfRgTZgVrFJE", - "iwFLQh+GdFoFuslKscD4sgECdMkn0fZjHyuCo8LWykOHzaPY77B7Gsy77Q6+FjjrmCl2n7MfEXX44PmJ", - "M73zpFltWjfgz3pk2oPg6Z8vGrdwuzl9+k/FaF5iEEMrTtMLdz6Iwe+1dQ+x88GAJaOtwR3YRTSQuwDf", - "WF07vp5R2wafigS1b9gM37Zqh+M3qMbJmebOcaev9Ok9ii1Spi6O9kCdkNUk+3tgADxbfNqdrfa0wZnC", - "jHNIEajdkbNZJaosH+MNaFPzF06h7SBtwzhAH5G6emDdwXFChWIVrcQmraoVh9bBGqyasc8uU+W7HtlD", - "Co0BDtpWlos58jJbmhn1MBjjEZQX0270UVthE5gEoURCXktUaN7Q7f66QgMpYS/+cfbF4ye/PPniS2Ia", - "kIItQDVphTt1eRqPMca7epZP6yPWW55Ob4KPS7eI85YyH24TNsWdNcttVZMzsFeV6BBNaOICSBzHRD2Y", - "W+0VjtM4ff+5tiu1yKPvWAoFf/yeSVGW6bTuQXRLqPpTuxUp+43EX4FUTGnDCNu2OqYbX1m1RHUcJvdc", - "2zwjgucu+3qgAqYHnHFSCxlytUR+hlG/zr5BYFOVjldZm8Sudbl3kdWIoXMG+m/MgFSicqI0m5MURBhb", - "IqOYS6doRPfOyHsyMFvrR5kiROeTnCa9uCLubm7frtao05zebGJCvPCH8hakOaRJH45ovw0naVTpfxr+", - "kQjRPxrXCMv9I3hF8n1wu6rbo0Drh2snyAMBGIjDbEXQxUX5m0yj0mrlUX/vTZ1d8eP7xgS6N2AAIfEd", - "9oAXB1Y27YKPuwPnM6fs/D4gJVrK+yFKaC1/X6ymZ73hIom2yCkptAZl2ZLoi4VRIK56GeJbB14lvTBY", - "rMBvXqZlmQiftXoTPFMx4ZgngVzT8tNzjW+YVPoM8QHF2+GgmTiGMkayRaW6XQa313TU3FG85PGm5m8w", - "ZPc/wOxR8p5zQzlzce82Q60XlqRe+FvBRgGTGxzTugM9/pLMXDb9SkLOVNcMfeOFkxAyCJLNneslbPSe", - "GMV96/xZ6DuQ8dz7jJAfInOSQLVdA2FzRD8zUxk4uUkqT1FfjywS+EvxqLj65p7r4o6Z12+XECRK7XVg", - "QpB+XdGxy7NJL8ylUyvor3P0bd3CbeKibtY2NpvN6ATuV1fv9GxMEpp0snXTHbPgHCXr+kE51/+A/DcW", - "R24MN2+KYn4eyohqs34OJN/t7EfNyr0OIq1Uyh+nkwVwUExhsuBfXHGIT3uXeghsTH7/qFpY75JIxCIm", - "sdbW5NFUUZLkEfmRXbdENmSMd8tryfQWC4N6BRr7JZmp59uQ9cFlDQm2K3f3aXENoThzkyOiVv52/VbQ", - "Eu8ja1Lj5hYS5Qn5ekNXVenUweTv92b/Bk//9qx49PTxv83+9uiLRzk8++L5o0f0+TP6+PnTx/Dkb188", - "ewSP518+nz0pnjx7Mnv25NmXXzzPnz57PHv25fN/u2f4kAHZAupzd7+Y/K/srFyI7OzNeXZpgG1wQiv2", - "HZi9wbfyXGDhOoPUHE8irCgrJy/8T//Dn7CTXKya4f2vE1eAZbLUulIvTk9vbm5O4i6nCwwKz7So8+Wp", - "nwfLibXklTfnwZvc+r3gjjbaY9xURwpn+O3t1xeX5OzN+UlDMJMXk0cnj04eu9q1nFZs8mLyFH/C07PE", - "fT91xDZ58eHjdHK6BFpiDhXzxwq0ZLn/JIEWW/d/dUMXC5AnGDBgf1o/OfVixekHFxz/cde309il4vRD", - "K4dAsaendxnY1+T0gy9yuXvAVoFD56wVdRgJ6K5mpzMsbDG2KcSrG14KvkfU6QeUqAd/P3VqkfRHfNnY", - "I3Pqc3EMtLRR1+mPLRR+0BuzkN3DmTbReDnV+bKuTj/gf5D6P1p2VEIqaYfNxk5J03xKmCZ0JiTWTNT5", - "0nAgX6yNqahlXEL5vDDHyPR6aSHwtW/RPj958a4feoADET8S8hxzoBqW0Jqp4fqoH500JdfDndZq39xs", - "7x5lz99/eDx9/Ojjv5iby/35xdOPI6N0XoZxyUW4lkY2fI+VztAfETnFk0ePPHt0j4+Ibk8dJ4gW13uE", - "NYu0mxTcHftSg6OFYddyt1WdgUhAxp6KTJ3h+8IP3gjPDlzxTk1VK8UkDt8tgVEQHxGLcz/+dHOfc+tk", - "aW4ee0N+nE6++JSrP+eG5GlJsGVUYrO/9T/xay5uuG9pxJl6taJy64+xajEF4jYbL01qGNi7SSXZmqIU", - "yQWP8mbxxeQ9ZmBIRSUP8Bul6S34zYXp9d/8ptUwXWLdqk9cOdbIUG8vk1B9BnwyQe+cS4s15bmPA2jc", - "i3G/rMDsCCN4sNUK5nXpI86rks1tlVshSj+RqqvKcJw5VYGynE+zkYBtAG8YmtQ8F9z6QqD7uLfoYCAu", - "WoXUNataXdjcUJWrv8oBXIwmbvpvNchts+srZkTZZnt73jp/JAu3eDwCC28PdGQW/uRANvrXX/H/25fW", - "s0d/+3QQ+DwVl2wFotZ/1Uvzwt5gd7o0nQxvU62f6g0/Rf/I0w+t54r73HuutH9vusct1itRgH9CiPnc", - "1u/f9fn0g/03mgg2FUi2Am4L6bpf7c1ximVct/2ftzxP/thfRysF58DPp15Fknolt1t+aP3ZfvmpZa0L", - "cWMrjyXlFbw+aekqbaMlIGgVzD3oBmiyg5Ifq3BRuZQXhGKlJVHrRu1jfcFdLGkwzOGNFtwzFozjBGhh", - "wVlsSXkaXeAKzN2IyoyObOQg+0EU0JeNUhehg7F1GYajkCjgfueLsc94Px52UNASZM2YfTIyH2vV/fv0", - "hjJtJCiXphMx2u+sgZanriZP59cmDX7vC+b2j36MA2KTv57S9rloa1DMlg117KlXUl+dBmGgkfdG958b", - "bWys3URyCXrNd+/NrmP1bUdJjbLuxekphicthdKnKIm2FXnxx/dho33RyLDh5tsmE5ItGKdl5pRkTWGx", - "yZOTR5OP/zcAAP//+kXjhv8FAQA=", + "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", + "NYXFJk9OHk0+/t8AAAD//5YZK+EHBgEA", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/daemon/algod/api/server/v2/generated/nonparticipating/public/routes.go b/daemon/algod/api/server/v2/generated/nonparticipating/public/routes.go index da89a5d7fa..815a346434 100644 --- a/daemon/algod/api/server/v2/generated/nonparticipating/public/routes.go +++ b/daemon/algod/api/server/v2/generated/nonparticipating/public/routes.go @@ -746,302 +746,302 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", - "mBCPnkwfHb37vwEAAP//MrApguO5AQA=", + "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", + "IGsT4ujB5N7ow/8LAAD//5pnmKfruQEA", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/daemon/algod/api/server/v2/generated/participating/private/routes.go b/daemon/algod/api/server/v2/generated/participating/private/routes.go index 6fce6a062f..d64047fe99 100644 --- a/daemon/algod/api/server/v2/generated/participating/private/routes.go +++ b/daemon/algod/api/server/v2/generated/participating/private/routes.go @@ -203,227 +203,227 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/daemon/algod/api/server/v2/generated/participating/public/routes.go b/daemon/algod/api/server/v2/generated/participating/public/routes.go index 8c6a1ff064..409fd4ca65 100644 --- a/daemon/algod/api/server/v2/generated/participating/public/routes.go +++ b/daemon/algod/api/server/v2/generated/participating/public/routes.go @@ -201,209 +201,209 @@ var swaggerSpec = []string{ "zsoyZyk1SHzrHpunhgmAVSRo88YJXqhPPwQgllKUIDWzg9KyTHKR0jxRmmoc6Z8lzCdPJ/900thfTuzn", "6iSY/KX56gI/MiKrFYMSWpZ7jPHGiD5qC7MwDBofIZuwbA+FJsbtJhpSYoYF57CiXB83KkuLH9QH+J2b", "qcG3lXYsvjsq2CDCiX1xBspKwPbFe4oEqCeIVoJoRYF0kYtZ/cP9s7JsMIjPz8rS4gOlR2AomMGaKa0e", - "4PJpc5LCec5fHJPvwrFRFBc835jLwYoa5m6Yu1vL3WK1bcmtoRnxniK4nUIem63xaDBi/l9FboQVdQjK", - "Q/Vi6QbEQ6ahUDuppw8NnlW7mVRKupm4+z7Be7tPVD8qsPRU0gXjCO3USMKcFPTacGHKBSLfkA2oWsS1", - "lGeFgdoa5sQHJ8If91Tm3zltxzbVCxRG4MiZ0qgemRcVWUKO8o9RD+0IPRI5NGnsJIgOJdScyPw+6uM/", - "BhcKcTvMf1AXd5izajD+Eui/9zvMpc9bnEXwmJx1v70dZzGjxHnKrWhlBHfYgscahTeSlhZA98SKW4yj", - "Hm9fsrDe8cIdeRdGYQ7YfEBrCNWtz9rO8xCFBEmhA8OzXKTXf6VqeYAzP/Nj9Y8fTkOWQDOQZEnVMsJl", - "O8erGW3METMvIpMjs2Cq43qJL8VBbrxc7HPPleVzmudm6v791lktDjyKl+Q5MS8TKBgayp3CaC3rVu8i", - "39B0acQBktI8nzYmIlEmOawgN8o64xzklOgl1c1tgSN7fQbPkQLDPDSQYDXOvISmNVnbICSQgiJbKYwW", - "U+btb+rrVtECOtIPsjlRofUgUDDOX/jVwQo4XmL10Ah+vUa00oSDH5u53SOcmQu7OGv5095tV+Ov5hct", - "oM3bDZPkzRRCZtZWrc1vTJJUSDuEZdtucvMfoLL52FLn/VJC4oaQdAVS0dysrrOoBzX5Hup07jiZGdU0", - "OJmOCuOKl+Uc+B3e2SAj1pnX+B+aE/PYXE2GkhrqYXjDiMCNmlkpzqDKzmReQDurIIU1YZKSptd7Qfm8", - "mTzOZkadvG+s1dRtoVtEvUOXa5apQ20TDja0V+0TYm1Wnh31BNetTCeYawwCLkVJLPvogGA5BY5mESLW", - "B7/Wnol1DKZnYt270sQaDrITZpzRzP6ZWL9wkAm5G/M49hikmwVyWoDC242HjNPM0vjjzmZC3k6a6Fww", - "nDReRkLNqIEwNe0gCV+tysSdzYinwr7QGagJ7NguBHSHj2GshYULTX8DLCgz6iGw0B7o0FgQRclyOADp", - "L6NC3IwqePyIXPz17IuHj35+9MWXhiRLKRaSFmS20aDIfWeOI0pvcngQVaVRuoiP/uUT75tqjxsbR4lK", - "plDQsj+U9XlZlca+Rsx7fay10YyrrgEcxRHBXG0W7cS6cw1oL5gyGlMxO8hmDCEsa2bJiIMkg53EtO/y", - "mmk24RLlRlaHsF6ClEJGr65SCi1SkSdGPmIiYgV6494g7g2vrpbd3y205IYqYuZGb1/FswFjj17z8Xzf", - "Dn255g1utnJ+u97I6ty8Y/aljfxGei9BJnrNSQazatGybMylKAglGX6Id/R3oK3cwgq40LQoX8/nhzH9", - "CBwoYoJhBSgzE7FvGKlBQSq4DX7bYW1xo45BTxcx3iujhwFwGLnY8BRdS4c4tsOGqIJx9HOrDU8Dq5SB", - "MYds0SLLu1ufhtBhp7qnIuAYdLzEx2jbfgG5pt8KedmIfd9JUZUHF/K6c45dDnWLcdbzzHzrbWKML/J2", - "wOXCwH4cW+NnWdDzWvm2a0DokSJfssVSB3rWGynE/PAwxmaJAYoPrJElN9/0TS0/iMwwE12pA4hgzWAN", - "hzN0G/I1OhOVJpRwkQFufqXiwtlAiB7GBmFIkw7lPdTrmSIzMNSV0sqstioJBuz07ovmw4Sm9oQmiBo1", - "EK5Qx5nYt+x0Nvwrl0CzDZkBcCJmLibARSvgIilGG2kv3jjRMMIvWnCVUqSgFGSJMzTvBM2/Z68OvQVP", - "CDgCXM9ClCBzKu8M7PVqJ5zXsEkwNk6R+9//pB58Bni10DTfgVh8J4berh2qD/W46bcRXHfykOyshctS", - "LdECpdkcNAyhcC+cDO5fF6LeLt4dLSuQGILxm1K8n+RuBFSD+hvT+12hrcqBiG+n3hoJz2wYp1x4wSo2", - "WE6VTnaxZfNSSwc3Kwg4YYwT48ADgtdLqrQNG2I8Q1ugvU5wHiuEmSmGAR5UQ8zIP3kNpD92au5BripV", - "qyOqKkshNWSxNaDbe3CuH2BdzyXmwdi1zqMFqRTsGnkIS8H4Dll2JRZBVNeuU+c27y8OHYzmnt9EUdkC", - "okHENkAu/FsBdsOo1wFAmGoQbQmHqQ7l1KG204nSoiwNt9BJxevvhtB0Yd8+0z827/aJyzoH7L2dCVDo", - "eHDvO8hvLGZtvPOSKuLg8HEMaAax8U19mM1hTBTjKSTbKB9VPPNWeAR2HtKqXEiaQZJBTjeRCAz7mNjH", - "2wbAHW/UXaEhsYGr8U1vKNnHCW4ZWuB4KiY8EnxCUnMEjSrQEIj7esfIGeDYMebk6OhePRTOFd0iPx4u", - "2251ZES8DVdCmx139IAgO44+BuABPNRD3x4V+HHS6J7dKf4Gyk1QyxH7T7IBNbSEZvy9FjBgQ3U5QcF5", - "6bD3DgeOss1BNraDjwwd2QGD7hsqNUtZibrO97A5uOrXnSDqcCYZaMpyyEjwwKqBZfg9sSGX3TFvpwqO", - "sr31we8Z3yLL8fFQbeCvYYM69xsbyx+YOg6hy0ZGNfcT5QQB9RHCRgQPX4E1TXW+MYKaXsKG3IAEoqqZ", - "df33/RBalEk4QNSvsWVG59WM+hS3ulkvcKhgebGAPqsTbIfvsqMYtNDhdIFSiHyEhayHjCgEo2IuSCnM", - "rjOXLuQTRjwltYB0TBtd2vX1f0+10IwrIH8TFUkpR5Wr0lDLNEKioIACpJnBiGD1nC5Sq8EQ5FCA1STx", - "ydFRd+FHR27PmSJzuPE5dubFLjqOjtCO80Yo3TpcB7CHmuN2Hrk+0OFjLj6nhXR5yu5IITfymJ180xm8", - "9hKZM6WUI1yz/DszgM7JXI9Ze0gj46KkcNxRvpx2XE1v3bjvF6yocqoP4bWCFc0TsQIpWQY7ObmbmAn+", - "zYrmr+vPMH8QUkOjKSQpZr2NHAsuzTc2Uc6MwzgzB9gGyY8FCM7tVxf2ox0qZhNkyooCMkY15BtSSkjB", - "5ocZyVHVSz0mNnI8XVK+QIVBimrh4lLtOMjwK2VNM7LivSGiQpVe8wSN3LELwIV3+RRBI04BNSpd10Ju", - "FZgbWs/nskLH3MzBHnQ9BlEn2XQyqPEapK4ajdcip53nOOIyaMl7AX6aiUe6UhB1Rvbp4yvcFnOYzOb+", - "Nib7ZugYlP2Jg0jZ5uFQsKxRt/PNAYQeOxCRUEpQeEWFZipln4p5mNPsQ+w2SkPRt+TbT38eOH5vB/VF", - "wXPGISkEh020jAfj8AofRo8TXpMDH6PAMvRtVwdpwd8Bqz3PGGq8K35xt7sntOuxUt8KeSiXqB1wtHg/", - "wgO5093uprytn5TmecS16DIeuwxATesgVyYJVUqkDGW280xNXTSt9Ua69Mg2+t/UQfoHOHvdcTs+tDCZ", - "Hm3EkJeEkjRnaEEWXGlZpfqKU7RRBUuNBD95ZXzYavncvxI3k0asmG6oK04x8K22XEUDNuYQMdN8C+CN", - "l6paLEDpjq4zB7ji7i3GScWZxrkKc1wSe15KkBiBdGzfLOiGzA1NaEF+BSnIrNJt6R8TepVmee4cemYa", - "IuZXnGqSA1WavGL8co3Deae/P7Ic9I2Q1zUW4rf7AjgoppJ4kNZ39inGw7vlL11sPIaJ28c+WLOpMDAx", - "y2wVFfm/9//t6buz5L9o8utp8tW/nLz/8OTjg6Pej48+fv31/2v/9Pjj1w/+7Z9jO+Vhj6WbOsjPXzjN", - "+PwFqj9BiHsX9k9m/y8YT6JEFkZzdGiL3MfSCo6AHrSNY3oJV1yvuSGkFc1ZZnjLbcihe8P0zqI9HR2q", - "aW1Exxjm17qnUnEHLkMiTKbDGm8tRfXjGuOJ3eiUdLnaeF7mFbdb6aVvm5Tm48vEfFon79u6Xk8JZnYv", - "qQ+OdH8++uLLybTJyK6fT6YT9/R9hJJZto7l3WewjumKYXLBPUVKulGg49wDYY+G0tnYjnDYAooZSLVk", - "5afnFEqzWZzD+VQfZ3Na83NuA+PN+UEX58Z5TsT808OtJUAGpV7G6v20BDV8q9lNgE7YSSnFCviUsGM4", - "7tp8MqMvuqC+HOjcp79IIcZoQ/U5sITmqSLAeriQUYaVGP100gLc5a8Org65gWNwdees/Zn+by3Ive++", - "uSQnjmGqe7YEhB06SNqPqNIu6bAVkGS4WZiLdcWv+AuYo/VB8KdXPKOansyoYqk6qRTIZzSnPIXjhSBP", - "fR7jC6rpFe9JWoOFCIMMUlJWs5yl5DpUSBrytMWl+iNcXb2j+UJcXb3vxWb01Qc3VZS/2AkSIwiLSieu", - "NE4i4YbKmO9L1aVRcGRb+2rbrFbIFpU1kPrSO278OM+jZam6JRL6yy/L3Cw/IEPlCgCYLSNKizqPywgo", - "Lnfa7O8Pwl0Mkt54u0qlQJFfClq+Y1y/J8lVdXr6GDPimpoBv7gr39DkpoTR1pXBEg5dowou3KqVsNaS", - "JiVdxFxsV1fvNNASdx/l5QJtHHlO8LNWtp4PzMehmgXUueSDG2Dh2DupFhd3Yb/yZRDjS8BHuIXtTPc7", - "7VeQmn7r7dpR6IBWepmYsx1dlTIk7nemro62MEKWj8ZQbIHaqiskNwOSLiG9dhW+oCj1Ztr63Af8OEHT", - "sw6mbO03m5mH1YfQQTEDUpUZdaI45ZtuGRgFWvuw4rdwDZtL0RQv2qfuS7sMiRo6qEipgXRpiDU8tm6M", - "7ua7qDKfoOmqeWDSoyeLpzVd+G+GD7IVeQ9wiGNE0aqBMIQIKiOIsMQ/gIJbLNSMdyfSjy2P8RS4ZitI", - "IGcLNouVrf2Pvj/Mw2qo0lXqc1HI9YCKsDkxqvzMXqxOvZeUL8Bcz+ZKFYrmtgppNGgD9aElUKlnQPVW", - "Oz8Pa0l46FClvMGMZbTwTc0SYG32m2m02HG4MVoFGorsOy56+Xg4/swCDtkt4fGfN5rC8aCu61AXqdDn", - "b+Uau7Va60LzQjpDuOzzArDEp7gx+2KgEK46pa1wEdwvlaILGNBdQu/dyDoSLY8fDrJLIonKIGLeFTV6", - "kkAUZPtyYtYcPcNgnphDjGpmJyDTz2QdxM5nhEWnHcJmOQqwdeSq3XsqW15UW0V3CLQ4awHJG1HQg9HG", - "SHgcl1T544j1RT2XHSWd/YYVW7aVcjsPYgmDIqJ1oTZ/G3Y5aE/vdwXdfBU3X7otVPpHlGEzuhemL8S2", - "Q3AUTTPIYWEXbl/2hNJUj2k2yMDxej5H3pLEwhIDA3UgALg5wGguR4RY3wgZPUKMjAOwMfABByY/iPBs", - "8sU+QHJX/Yb6sfGKCP6GeGKfDdQ3wqgozeXKBvyNqecAroRDI1l0IqpxGML4lBg2t6K5YXNOF28G6VUU", - "Q4WiUz/Mhd48GFI0trim7JW/15qskHCb1YTSrAc6LmpvgXgm1onN7I3qIrP1zNB7NHcB84xjB9PWbrun", - "yEysMZwLrxYbK78DlmE4PBiB7WXNFNIrfjckZ1lgtk27Xc6NUaFCknGG1ppchgS9MVMPyJZD5HI/qLV1", - "KwA6Zqimt4EzS+w0H7TFk/5l3txq06bMqE8Lix3/oSMU3aUB/PXtY9GKe4MGpNaJ+iRlwfqWpbuUa7Mf", - "l7YE2z7V2rrk0AJiC1bfdOXAKFrbsV5tvAZYi7ESw3z7Tsk+2hTkgEpw0hJNk+tYpIDR5QHv8Qv/WWCs", - "w92jfPMgCCCUsGBKQ+M08nFBn8McT7HcsBDz4dXpUs7N+t4KUV/+1m2OH7aW+clXgBH4cyaVTtDjFl2C", - "eelbhUakb82rcQm0HaJoi/OzLM5xcdpr2CQZy6s4vbp5v39hpv2hvmhUNcNbjHEboDXDZhLRwOUtU9vY", - "9q0LfmkX/JIebL3jToN51UwsDbm05/iDnIsOA9vGDiIEGCOO/q4NonQLgwwSzvvcMZBGg5iW423eht5h", - "yvzYO6PUfNr70M1vR4quJSifF88QFIsFZL4smPeH8aD4Wi74Iuh6VJbbas0dE1vyDSu2bSn25sLwYSgI", - "PxD3E8YzWMehD7UChLzJrMNCdTjJArgtVxI3C0VRE4b44xuBre4T+0K7CQDRIOjLjjO7iU62u1RvJ25A", - "DjRzOokCv77tx7K/IQ5106Hw6VbF0O1HCAdEmmI6aATSL0MwwIBpWbJs3XE82VEHjWB0L+vygLSFrMUN", - "tgMD7SDoKMG1Sk+7UGtnYD9BnffEaGU29toFFhv6pqlLwM8qiR6MVmRzv855rauNXPv3P11oIekCnBcq", - "sSDdaQhczj5oCKqIK6KZDSfJ2HwOofdF3cZz0AKuZ2PPRpBuhMjiLpqKcf3lkxgZ7aCeBsbdKItTTIQW", - "hnzyl30vl5fpA1NSfSUEW3MLV1U0Xf972CQ/0bwySgaTqgnPdW6n9uW7x66viu9hgyPvjHo1gO3YFbQ8", - "vQWkwZilv36kgkrh91SrJD6ql60t3GOnzuK7dKCtcU0Mhom/uWVaRf7bS7nLwWiCJAwsY3bjIh6bYE4P", - "tBHfJeVdm8Cy3TJIIO+HUzHlWz72r6K6FsUu2r0EmnvixeVMPk4nd4sEiN1mbsQduH5TX6BRPGOkqfUM", - "twJ79kQ5LUspVjRPXLzE0OUvxcpd/vi6D6/4xJpMnLIvvzl7+caB/3E6SXOgMqktAYOrwvfKP8yqbE37", - "7VeJrZLtDJ3WUhRsfl3JOIyxuMGK2B1jU6+JSBM/ExxFF3Mxjwe87+R9LtTHLnFLyA+UdcRP4/O0AT/t", - "IB+6oiz3zkYP7UBwOi5uXCeaKFcIB7hzsFAQ85UclN30Tnf8dDTUtYMn4VyvsTRlXOPgrnAlsiIX/EMP", - "Lj19K2SL+bvMxGjw0G8nVhkh2+JxIFbb93vsClPHxApevyx+Mafx6Cg8akdHU/JL7h4EAOLvM/c76hdH", - "R1HvYdSMZZgEWqk4LeBBnWUxuBGfVgHncDPugj5bFbVkKYbJsKZQGwXk0X3jsHcjmcNn5n7JIAfz0/EY", - "JT3cdIvuEJgxJ+hiKBOxDjItbItJRQTvxlRjEqwhLWT2rpWBdcb2jxCvCnRgJipnaTy0g8+UYa/cBlOa", - "lwm+PGCtNSNWbCA2l1csGMu8NqZmagfIYI4oMlW0bGuDu5lwx7vi7B8VEJYZrWbOQOK91rnqvHKAo/YE", - "0rhdzA1s/VTN8Hexg2zxN3lb0DYjyFb/3Yvap+QXGuuutGcEeDhjj3Fvid529OGo2WazLdshmOP0mDGt", - "xj2jc866gTmircOZSuZS/ApxRwj6jyKFMLzjk6GZ91fgsci9LkupncpNB/Rm9l3bPV43Htr4O+vCftF1", - "C6bbXKbxU73fRt5G6VXxcs0OyUNKWBhh0E4NGGAteLyCYFhsH+Kjjyi358lWgWhlmMVPZZjLeWLHb06l", - "g7mX/5rTmxmN9VYxupCBKdjeVpyUFsR/7DdA1TUO7OwkiOCu32W2klwJsvFB9KvS3lKvsdOO1mgaBQYp", - "KlRdpjZMIVciMkzFbyi3XbfNd5Zfua8VWBe8+epGSKwDqeIhXRmkrIiaY6+u3mVpP3wnYwtmG0pXCoKO", - "xW4g26zfUpHr+lxX7nCoOZ+T02nQNt3tRsZWTLFZDvjGQ/vGjCq8Lmt3eP2JWR5wvVT4+qMRry8rnknI", - "9FJZxCpBat0Thbw6MHEG+gaAk1N87+FX5D6GZCq2ggcGi04Imjx9+BUG1Ng/TmO3rGsIvo1lZ8izfbB2", - "nI4xJtWOYZikGzUefT2XAL/C8O2w5TTZT8ecJXzTXSi7z1JBOV1APD+j2AGT/RZ3E935Hbxw6w0ApaXY", - "EKbj84Omhj8N5Hwb9mfBIKkoCqYLF7inRGHoqWlHbCf1w9ne+K7PkofLP8T419KH/3VsXZ9YjaHFQM4W", - "Rin/gD7aEK1TQm3xz5w1kem+eSE597WFsfFU3W/K4sbMZZaOsiQGqs9JKRnXaP+o9Dz5i1GLJU0N+zse", - "AjeZffkk0sCp3eOE7wf4J8e7BAVyFUe9HCB7L7O4b8l9LnhSGI6SPWhqLASncjBQNx6SORQXun3osZKv", - "GSUZJLeqRW404NR3Ijy+ZcA7kmK9nr3oce+VfXLKrGScPGhldujHty+dlFEIGWsY0Bx3J3FI0JLBCjPm", - "4ptkxrzjXsh81C7cBfrPG//kRc5ALPNnOaoIBB7NbcnyRor/6VVT+RwdqzYTsWMDFDJi7XR2u08cbbif", - "1a3rv7UBY/hsAHOj0Yaj9LEyEH1vw+vrbz5HvFAXJLvnLYPjw1+INDo4yvFHRwj00dHUicG/PGo/tuz9", - "6ChegDhqcjO/Nli4i0aM38b28JmIGMB8t786oMjVR4gYIIcuKfPAMMGZG2pK2p3VPr0UcZj8rni0afwU", - "XF29wyceD/hHFxGfmVniBjZZCsOHvd1ZMkoyWf08iHOn5JlYjyWczh3kied3gKIBlIw0z+FKep0zo+76", - "nfEiAY2aUWeQC6Nkhk2BQnv+HwfPZvHTLdiuWJ791NR261wkkvJ0GY0SnpkPf7YyeusKtqwy2mdkSTmH", - "PDqc1W1/9jpwREv/uxg7T8H4yHe7nVvtcjuLawBvg+mB8hMa9DKdmwlCrLbLZtVlGfKFyAjO0zS1aJhj", - "vwVy0JfxHxUoHTsa+MAmIKKzyzBf2xaQAM/Q+nVMvsMCNgaWVsVytDr5WrDtuohVmQuaTbFG7eU3Zy+J", - "ndV+Yzto27aECzS6tFcRtZLv0WfdGZ0HCqDs0699W0UGs2qlk7qLYKzEnHmj6XPIOqETaI4JsXNMXlhL", - "WN2/3E5CsNKxLCALmhZaXQxpwvxHa5ou0cTUusiGSX58P01PlY0BPkgiq5vY4LkzcLuWmraj5pQIvQR5", - "wxRgYjWsoF3Vri7x6Eycvspde3my4txSyvEeMkXdsmZftHvgrEDifcNRyDqI39PAYNvR7tte9AK/iofU", - "d3qVdpy3vkZa3XT9lbMRp5QLzlKsaB8TiLAC1zhv04ji/3E3kZq4Exo5XNEOqXVKp8PiYM9Uzwgd4vqe", - "2+Cp2VRLHfZPDWvXOWsBWjnOBtnUN/p1fg3GFbimRIaIQj4pZCQ2JRrPXvvB9yQjLK4zYKj61jz7wZkx", - "sbbBNeNosHBoc2K29TzkiqGDkROmyUKAcutpJ2Wod+abYyy2l8H6/fFLsWDpBVvgGDYayizbhv71hzrz", - "gYAu8M68+9y860qg1z+3onrspGdl6SYdbgMd732/5oMIjoWf+HiAALn1+OFoW8htawQv3qeG0GCFwUdQ", - "4j3cI4y6JXJ7lG+MimApCt8gNjEuWgeV8QgYLxn3nrD4BZFGrwTcGDyvA9+pVFJtRcBRPO0SaD4Qx46J", - "ptaVetehugXgDUpwjX6O4W1sujkPMI76hUZwo3xD/KEw1B0IE89pXkfARnozo1TlhKgMc0Q63ZpjjMMw", - "bt8Pvn0B7MzCqj/Hpgr73kRDpeZmVbYAndAsi1UoeoZPCT71uT6whrSqewnVSV7tUtN9anMTpYKrqtgy", - "l3/hjtMF7c8j1BC2YPc7jAVTZhv8N9ZIZ3hnXOzr3smVPtA126++ej9ZNCb1GppOFFsk4zGBd8rd0dFM", - "fTtCb74/KKX7rMvfRVJlh8uFexTjb9+YiyOsv9oLM7ZXS10eFUN6BT73dWvqwn5troRXWa9dFDqvcfMi", - "W9YB3r8YBXxF84GE5tDkbe9XawYeSmtOB7PwqXZVljQlW1nQYOUaG/LZMaL3PUFDYZ42yvNwxme31q0I", - "HXbBfN9yuNhQn4ZZDDpabucLaTZ4X2fI96uhTHffbgGfd9vfX4MrillKWDFR+SAaH8rqVUL7a6uZfF1r", - "ILr+aID45zY+D5rKL10bUrtMp5N//5N1phHgWm5+B4bz3qb3Guv3pV1rnmpeIXUHu1Ed7Vq34phWJLGu", - "F042bLX2b9NSr4tIj6xejBEHevj4OJ2cZ3tdmLHOKRM7SuzYvWSLpcbC638FmoF8s6OwfFNMHo9YKRRr", - "GknmZjBXyXOJwx2PjRk3BMzCwvj9sXws4QpSjd1DmxgpCbBPmXwzmbfd/1lgflidrkPrXV35bcXk+y1D", - "d9zxvfo3QQ0n227xeHzp9LM6EtYm8txQ1VTd6KS+jk7Am88hxeK2W+sN/ccSeFDLZurtMgjLPCg/xOp0", - "FCzPvL/VsQFoWzmgrfAEbVLuDM5QOvI1bO4p0qKGaP/HOhfrNvVfEQPIHRJfCnjIkOyCf5iqKQOx4CM7", - "XUXdpsfBYOneoHrWLefyJGkujqai1pYp472rR81lPt2reh9mVgyVJOq3vh3WP15gp2Hl4pxoXT821NLJ", - "eb//yY2rP4vVoWrfia9EC8r/5kvB2Vlydg1hc3v0VN1Qmfk3DlLbx95NLA70vJ6ZNXH4fV91pKI+prSk", - "uTBiRDKUF9QOfa/jxu4pG+DX1GFBuOYgJWS1SyQXChItfNz+Nji2ocJGMd4KCWqwi40FbrCC8dumRDN2", - "86JYsZi64MVwgURCQQ10MiikPDznNmQ/t899LrXv5rTTwlTT6+62oj4Dg6keEkOqnxN3W+7O0b6NsYlx", - "DjLxnqduVWXeLqyF5ROzKrUXdHgwaoPc6BIoW1hJ1E6T9lfZ0RGCXOdr2JxYJcj3Y/U7GAJtJScLelA3", - "srPJBzW/qRjci4OA93nLgZVC5MmAs+O8Xwq6S/HXLL0GLOVWRyoPtNom99HGXnuzb5YbX/q4LIFD9uCY", - "kDNuc0O8Y7vdJa4zOb+nt82/xlmzylZnd0a14yseD7LHuunyjtzMD7OdhykwrO6OU9lBdhQaXg+UoZb0", - "JtJ4/nisVt53NXebgTdEZaGIySQX1mP1HA96zHCEmexByQV0ZFLiPF1E5SIWknmbbHszVBxT4WQIkAY+", - "Jum7hsINHkVAtL115BTaCmaudpmYEwmNE/m2Rdz6nbhjGn135nqWNr+bCwmtntrma1uwsc5f8M3vqZwx", - "Lanc3KbUWq8TeM96MojlneFYdSRWs5AmGquPwzwXNwkyq6RuVxBTbc17qn0Z+95ZzXfmVM8giOuiyglq", - "G7KkGUmFlJCGX8TT9ixUhZCQ5ALDvGIe6Lk2cneBuTqc5GJBRJmKDGzbjzgFDc1VcU5RbIIgqiaKAks7", - "mPRpvwnoeOSUh2pDb4vz2EUn1pc5EHgKyhXjcRiyL/fh3dLCfa+GG+dztAgxjHVp515b6TNsZA979rFn", - "ee4NBkOt7MmPqsJwJEy8MVM8IYVQ2ml2diRVD9WEeN1PBddS5HnbCGRF4oWzbL+i67M01S+FuJ7R9PoB", - "6pFc6Hql2dSnpXaD8ZqZZKci08ie+90Kp/Y9DE1zRLJ3Y33HOfbuhx2A+X43x9pt4z6L9MHvrKvNvOJq", - "wxknVIuCpXEa/mNFtw3GpMVYQrTUk21JZ5Pz8TVk1OHlUAczIEvqoxk4jfbUOiOOpzmnLjIP81+UeLvj", - "kjm4S2LgYurzSSe1JOmgbNUBACG1GaO6kraPXSj51FxFLGyGObqku4CO5OIY+XM32MwIBwdKw52A6kUb", - "1gDet8r+1JbkspGLM7H2zx80NbtuBfzH7VTeYh5DIVUXDWlJG1Tl63sMcIR4ZeCt8UeXmC08GxuFVPcc", - "HXmjBgAMxyW1YBgVnbQvGHPKcsiSWMu689omNA00W5fR0u0kzZTj5CmtfMc4M3YlwdWbsCK1bPubSmpI", - "SdSv9y23PIM1KCwGYdvnU2X9DN7fAbntFNdRvkWZ5LCCVriWK4JRoWjHVuC/VfXHJAMo0fvXtUnF4pDC", - "u7xjqHBrT4JIljHYjVouLGLtTpEdZomoEWXNE3tM1NijZCBasayiLfypfUWOttnNHOUIqnoyeeL1trHT", - "/GhHeOsHOPPfx0QZj4n34/jQ3iwojrptDGhnXGKlhk49j4clhhVeaocGzpbVjk9L4g3fUCW94cMGwD7J", - "N+rNyH1iggeI/WYNKUo17bi7u+OE4GBEdao3DYrgst7h2xuSPwsNbyXhwfFiqoYCZLBbLTWeLpzAji9g", - "72BuxF4jNWNXOMf/Hf+bklnlBzJ6tW1SF2pwL8B77LCgdO2scAItqy80H184dfUEu0o5CyKrC7ohQuI/", - "Rl/7R0VzNt/gCbXg+8+IWlJDQs5FaH3XLl7RTLxdMJl6wLxdQPip7LrZ2DGD4TZmlABocwX6biKCFPQa", - "wm1At7zlPKk2LEdVs4IphZddZzv7WHCL9zUhCpqFOjJWpmv3bfa1Ss3X/7vJ2gqn8gWlypymviWh64nS", - "MojbtqOeuPQSiu1pfX312JNA3cq0IVrp03mzWxj39ozciMXKD/V7aIHda/HYa3Vxp2Xs0w2+yYzekhA5", - "aimH3oWx8SE9oMPGcLvAD/vkfRr8R4tGDi1jDPi/F7wPdMYM4bVNMD8Bllsp/xFYrV11JtaJhLnaFQph", - "DatGEZZNsQBvnGQ8lUCVjQ05f+1UtqYmIuNGhbTRi7X3rR4lgznjDbNkvKx0RAPA0oh8EyAsNE8jWgec", - "PUNSghHDVjR/vQIpWTa0ceZ02B5yYU16b5J330aU//pO7Q/AVKP9YCYhNJlqwWvmArddb2xgodKUZ1Rm", - "4euMkxSkuffJDd2o2/s+DLSyMvLFDu8HDaSZdn574AdB0raA5BvnvryjZ6IGkB7QRTHCtYARrBG3gjWK", - "aDHgSejDEC+rQNdJLhaYXzZAgK74JPp+rLIiOBpsrTy03zyK/Qrbp8G62+7ga4Gzjpli+zl7jahDhedH", - "zvTWk2atad2EPxuRaQ+Cp3++aMLC7eb06T+Wo3mJSQytPE0v3PkkBr/XNjzEzgcDnoy2BXdgF9FB7hJ8", - "Q3Pt+H5GbR98LBPU6rAJ6rZqS+A3qCbImaYucKdv9OkpxRYpU5dHu6dNyFqS/T0wAJ5tPu3OVnvaOpjC", - "jLNPE6jtmbNJKcokHRMNaEvzZ86g7SBtwzhAH4G5emDddeCEqptVtAqbtLpW7NsHa7Brxi6/TJluU7KH", - "DBoDHLRtLBdz5GW2NTPaYTDHozZeTLvZR22DTc0kCCUS0kqiQfOGbnb3FRooCXvx17MvHj76+dEXXxLz", - "AsnYAlRTVrjTl6eJGGO8a2f5tDFiveXp+Cb4vHSLOO8p8+k29aa4s2a5rWpqBva6Eu1jCY1cAJHjGOkH", - "c6u9wnGaoO/f13bFFnnwHYuh4LffMynyPF7WvRbdIqb+2G4Fxn4j8ZcgFVPaMMK2r47pJlZWLdEch8U9", - "V7bOiOCpq75eUwHTA8E4sYUMhVoiP8OsX+ffILAuc8errE9i27qcXmQtYhicgfEbMyClKJ0ozeYkBhHm", - "lsgg59IZGjG8M4ierJmtjaOMEaKLSY6TXtgRdzu3b3dr1HFObzYxIl74Q3kL0hyypA9ntN+GkzSm9N8N", - "/4ik6B+Ma9TL/S14RVQ/uF3X7VGg9dO1I+SBAAzkYbYy6MKm/E2lUWmt8mi/967OrvjxqnGB7kwYQEj8", - "BzvACxMrm/fqGHcHzmcu2fmqRkqwlPdDlNBa/q5cTc9664sk2CJnpNAalGVLoi8WBom46nmd3zqglfTS", - "YLEDv9FM8zySPmvtJnimQsIxKoFc0fzTc41vmVT6DPEB2dvhpJkwhzJEskWlul0Ft5d01NxBvuThpuZv", - "MGX3P8DsUfSec0M5d3HvNkOrF7akXvhbwWYBkxsc04YDPfySzFw1/VJCylTXDX3jhZM6ZRAkm7vQS1jr", - "HTmKu9b5k9B3IOO5jxkhPwTuJIFmuwbC5oh+ZqYycHKjVB6jvh5ZRPAX41Fh980d18UdK6/friBIUNpr", - "z4Ig/b6iY5dni16YS6dS0F/n6Nu6hdvIRd2sbWw1m9EF3K+u3unZmCI08WLr5nOsgnOQqut71Vz/Derf", - "WBy5Mdy8MYr5aagiqq36OVB8t7MfFct3Boi0Sil/nE4WwEExhcWCf3bNIT7tXeohsDn5/aNqYb1LIRGL", - "mMhaW5MHUwVFkkfUR3afRaohY75bWkmmN9gY1BvQ2M/RSj3f1VUfXNWQ2nfl7j4trqFuztzUiKiUv12/", - "EzTH+8i61Li5hUR+TL5Z06LMnTmYfH1v9q/w+C9PstPHD/919pfTL05TePLFV6en9Ksn9OFXjx/Co798", - "8eQUHs6//Gr2KHv05NHsyaMnX37xVfr4ycPZky+/+td7hg8ZkC2gvnb308l/Jmf5QiRnb86TSwNsgxNa", - "su/B7A3qynOBjesMUlM8iVBQlk+e+p/+jz9hx6komuH9rxPXgGWy1LpUT09Obm5ujsNPThaYFJ5oUaXL", - "Ez8PthNryStvzutochv3gjvaWI9xUx0pnOGzt99cXJKzN+fHDcFMnk5Oj0+PH7retZyWbPJ08hh/wtOz", - "xH0/ccQ2efrh43RysgSaYw0V80cBWrLUP5JAs437v7qhiwXIY0wYsD+tHp14seLkg0uO/7jt2UkYUnHy", - "oVVDINvxpQ8Z2PXKyQff5HL7gK0Ghy5Yy2An6iv8DrSrqGONCJFyDOgycKNPiRLSpR2Xkglz8KbmFs0A", - "HeoYFyaxRrSWFU+tl9VOARz/++rsP9HT/OrsP8nX5HTqYtwVaiax6W1SbU0x55kFux/gp55tzuqCFY1X", - "evL0Xcxa5JpZldUsZymxAgeeOENOwYGoR2wYHpoGJ0238YZ9G5Z8mnz1/sMXf/kYEwt7Qm6NpKCGQ4h6", - "LXyPQkRaQddfD6Fs7YKezbj/qEBumkUUdD0JAe67QiOFrXxOim/VGgb1BeF+/37x+gciJHFq8BuaXtf5", - "OD4Bq0k6C/OvzJdDELsbMgQaeFWYy8Yl9hRqUbZrvNZofo99zRBQ5AuPTk89M3SqRnBAT9y5D2bq2Kf6", - "hIbxLYHFsZ/trAisaarzDaEqCDDAcD/fg7CTNSXKpBW7vdXG2Z/RbUk08H3fhOtIEXKhab4DvstOv7YW", - "OlysTGluy90Zzj1kRCF4H5MHwq31NPLn7v732N2+eEFKYc40w4Dm5srx11kLSCdU5hsP7kAtiWPyN1Gh", - "EGjE+0pDrFs1zmCdG25OV/omiEBrslXwydFRd+FHR0283BxukMlSji920XF0dGx26smerGyrwblVKXbU", - "2dlnuN5mvaLrOtyYEi54wmFBNVsBCTTHJ6cP/7ArPOc2wNtIvVY6/zidfPEH3rJzbgQbmhN8067m8R92", - "NRcgVywFcglFKSSVLN+QH3kdQR80Q+6zvx/5NRc33CPCKJ5VUVC5cUI0rXlOxYPWLlv5T6+ITSNoIxel", - "C4VBLSiiWpnWF7rji8n7j14HGKl7bHvtZIa96sa+CqHCMqydoItBnXxAI/ng7yfO0xl/iM4KqwWf+PJ6", - "A2/aQkrxhy2t6INem4VsH868E4yXUp0uq/LkA/4HFdpgRbYu+4le8xMMpjz50EKEe9xDRPv35vPwjVUh", - "MvDAifncNvvf9vjkg/03mAjWJUhmriOsheh+tTVrT7Dn66b/84an0R/762jV6xz4+cTbU2IqdfvND60/", - "2zSllpXOxE0wC3oirButD5l5WKnu3yc3lGkjJLkykdgkvv+xBpqfuJ4wnV+bMuy9J1hbPvixI1aVwtaJ", - "aWu0b+nNZSv9UNr6DM8EGiqGGO46mTGOXCjkko190T7sq0g93ni5BBtI6120ERlUCzKTgmYpVdh73HVP", - "6unGH++of3XLSZxHHHAIJpob+hUHDT853umVwXHHCJnBvpDzF37CJnPrNxfMehA9oxnxhYUS8ormZsMh", - "I2dO/G9h47cWqj6/FPSZxZZPJmc884dPEYpV1loKoozXaQnanI0RKowWaRjAAnjiWFAyE9nGdaKaSHqj", - "17YsRJe5ndD2jdE2RFJJCzX08ABWyt+3aXKXRfJPQ+CfhsA/TUV/GgL/3N0/DYEjDYF/msn+NJP9jzST", - "7WMbi4mZzvwzLG1ia2zamtfqfbRpQVCz+HbBKqZrmayVD4rdDpg+JuQSa6ZQc0vACiTNSUqVla5cYa4C", - "wzSx7BVkT6940oLEBkOaie83/7VRqFfV6eljIKcPut8ozfI85M39b1HexUc2UeRrcjW5mvRGklCIFWQ2", - "qzUsgW2/2jns/6rHfd2rnY/p41iUxlfHIqqaz1nKLMpzwReELkQTQY01QLnAJyANcLYDEWF66jJOmCsn", - "6hqUtyt1tyX3vgRw3mzhzpCCDrnEowkM4e0ZSvAvY+II/kdL6bctA3VXRrp17B5X/ZOrfAqu8tn5yh/d", - "SRuYFv9biplPTp/8YRcUGqJ/EJp8i9kBdxPHXG3KNNqI6baClq+w4s19TYRxGLGLt2gdq/vuvbkIFMiV", - "v2CbANSnJydYcmsplD6ZmOuvHZwaPnxfw/zB306lZCvs9IvWTSHZgnGaJy7wM2mCTB8dn04+/v8AAAD/", - "//K4m1zTHAEA", + "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", + "AAD//23D8FrbHAEA", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/ledger/store/trackerdb/sqlitedriver/sql.go b/ledger/store/trackerdb/sqlitedriver/sql.go index 9483a042a6..623ba3a8a5 100644 --- a/ledger/store/trackerdb/sqlitedriver/sql.go +++ b/ledger/store/trackerdb/sqlitedriver/sql.go @@ -87,7 +87,8 @@ func AccountsInitDbQueries(q db.Queryable) (*accountsDbQueries, error) { return nil, err } - qs.lookupLimitedResourcesStmt, err = q.Prepare("SELECT ab.rowid, ar.rnd, r.aidx, ac.creator, r.data, cr.data FROM acctrounds ar JOIN accountbase ab ON ab.address = ? JOIN resources r ON r.addrid = ab.addrid LEFT JOIN assetcreators ac ON r.aidx = ac.asset LEFT JOIN accountbase cab ON ac.creator = cab.address LEFT JOIN resources cr ON cr.addrid = cab.addrid AND cr.aidx = r.aidx WHERE ar.id = 'acctbase' AND r.aidx > ? ORDER BY r.aidx ASC LIMIT ?") + qs.lookupLimitedResourcesStmt, err = q.Prepare("SELECT ab.rowid, ar.rnd, r.aidx, ac.creator, r.data, cr.data FROM acctrounds ar JOIN accountbase ab ON ab.address = ? JOIN resources r ON r.addrid = ab.addrid LEFT JOIN assetcreators ac ON r.aidx = ac.asset LEFT JOIN " + + "accountbase cab ON ac.creator = cab.address LEFT JOIN resources cr ON cr.addrid = cab.addrid AND cr.aidx = r.aidx WHERE ar.id = 'acctbase' AND r.ctype = ? AND r.aidx > ? ORDER BY r.aidx ASC LIMIT ?") if err != nil { return nil, err } @@ -428,8 +429,7 @@ func (qs *accountsDbQueries) LookupAllResources(addr basics.Address) (data []tra func (qs *accountsDbQueries) LookupLimitedResources(addr basics.Address, minIdx basics.CreatableIndex, maxCreatables uint64, ctype basics.CreatableType) (data []trackerdb.PersistedResourcesDataWithCreator, rnd basics.Round, err error) { err = db.Retry(func() error { - // Query for all resources - rows, err0 := qs.lookupLimitedResourcesStmt.Query(addr[:], minIdx, maxCreatables) + rows, err0 := qs.lookupLimitedResourcesStmt.Query(addr[:], ctype, minIdx, maxCreatables) if err0 != nil { return err0 } @@ -720,7 +720,9 @@ func (w accountsSQLWriter) InsertResource(accountRef trackerdb.AccountRef, aidx } addrid := accountRef.(sqlRowRef).rowid var ctype basics.CreatableType - if data.IsAsset() { + if data.IsAsset() && data.IsApp() { + return nil, fmt.Errorf("unable to resolve single creatable type for account ref %d, creatable idx %d", addrid, aidx) + } else if data.IsAsset() { ctype = basics.AssetCreatable } else if data.IsApp() { ctype = basics.AppCreatable diff --git a/ledger/store/trackerdb/testsuite/accounts_kv_test.go b/ledger/store/trackerdb/testsuite/accounts_kv_test.go index 283e93d8d7..aa8b116119 100644 --- a/ledger/store/trackerdb/testsuite/accounts_kv_test.go +++ b/ledger/store/trackerdb/testsuite/accounts_kv_test.go @@ -213,12 +213,14 @@ func CustomTestResourcesQueryAll(t *customT) { // resource A-0 resDataA0 := trackerdb.ResourcesData{} + resDataA0.SetAssetHolding(basics.AssetHolding{Amount: 0}) aidxResA0 := basics.CreatableIndex(0) _, err = aow.InsertResource(refAccA, aidxResA0, resDataA0) require.NoError(t, err) // resource A-1 resDataA1 := trackerdb.ResourcesData{} + resDataA1.SetAssetHolding(basics.AssetHolding{Amount: 0}) aidxResA1 := basics.CreatableIndex(1) _, err = aow.InsertResource(refAccA, aidxResA1, resDataA1) require.NoError(t, err) @@ -267,24 +269,49 @@ func CustomTestResourcesQueryAllLimited(t *customT) { refAccB, err := aow.InsertAccount(addrB, accDataB.NormalizedOnlineBalance(t.proto), accDataB) require.NoError(t, err) - // resource A-0 for accounts A and B - resDataA0 := trackerdb.ResourcesData{} + // asset A-0 for accounts A and B + resDataA0AcctA := trackerdb.ResourcesData{} + resDataA0AcctA.SetAssetHolding(basics.AssetHolding{Amount: 10}) + resDataA0AcctA.SetAssetParams(basics.AssetParams{ + Total: 100, + }, true) + // Non-creators will inherit asset params from the creator + resDataA0AcctB := trackerdb.ResourcesData{} + resDataA0AcctB.SetAssetHolding(basics.AssetHolding{Amount: 0}) aidxResA0 := basics.CreatableIndex(1) - _, err = aow.InsertResource(refAccA, aidxResA0, resDataA0) + + _, err = aow.InsertResource(refAccA, aidxResA0, resDataA0AcctA) require.NoError(t, err) - _, err = aow.InsertResource(refAccB, aidxResA0, resDataA0) + _, err = aow.InsertResource(refAccB, aidxResA0, resDataA0AcctB) require.NoError(t, err) // resource A-1 for accounts A and B - resDataA1 := trackerdb.ResourcesData{ + resDataA1AcctA := trackerdb.ResourcesData{} + resDataA1AcctA.SetAssetHolding(basics.AssetHolding{Amount: 100}) + resDataA1AcctA.SetAssetParams(basics.AssetParams{ Total: 10000, - } + }, true) + resDataA1AcctB := trackerdb.ResourcesData{} + resDataA1AcctB.SetAssetHolding(basics.AssetHolding{Amount: 200}) + aidxResA1 := basics.CreatableIndex(2) - _, err = aow.InsertResource(refAccA, aidxResA1, resDataA1) + _, err = aow.InsertResource(refAccA, aidxResA1, resDataA1AcctA) require.NoError(t, err) - _, err = aow.InsertResource(refAccB, aidxResA1, resDataA1) + _, err = aow.InsertResource(refAccB, aidxResA1, resDataA1AcctB) require.NoError(t, err) + // Results for account B (opted in, not creator) we expect back will have asset params but the resource flags + // are explicitly set to be + resDataWithParamsA0AcctB := trackerdb.ResourcesData{} + resDataWithParamsA0AcctB.SetAssetHolding(resDataA0AcctB.GetAssetHolding()) + resDataWithParamsA0AcctB.SetAssetParams(resDataA0AcctA.GetAssetParams(), true) + resDataWithParamsA0AcctB.ResourceFlags = resDataA0AcctB.ResourceFlags + + resDataWithParamsA1AcctB := trackerdb.ResourcesData{} + resDataWithParamsA1AcctB.SetAssetHolding(resDataA1AcctB.GetAssetHolding()) + resDataWithParamsA1AcctB.SetAssetParams(resDataA1AcctA.GetAssetParams(), true) + resDataWithParamsA1AcctB.ResourceFlags = resDataA1AcctB.ResourceFlags + // insert creator account A for A-0 resA0ctype := basics.AssetCreatable cRefA0, err := aow.InsertCreatable(aidxResA0, resA0ctype, addrA[:]) @@ -307,8 +334,8 @@ func CustomTestResourcesQueryAllLimited(t *customT) { require.Equal(t, addrA, prs[1].Creator) require.Equal(t, expectedRound, prs[0].Round) // db round (inside resources) require.Equal(t, expectedRound, prs[1].Round) - require.Equal(t, resDataA0, prs[0].Data) - require.Equal(t, resDataA1, prs[1].Data) + require.Equal(t, resDataA0AcctA, prs[0].Data) + require.Equal(t, resDataA1AcctA, prs[1].Data) require.Equal(t, expectedRound, rnd) // db round (from the return) // Lookup with limited resources for account B @@ -322,8 +349,8 @@ func CustomTestResourcesQueryAllLimited(t *customT) { require.Equal(t, addrA, prs[1].Creator) require.Equal(t, expectedRound, prs[0].Round) // db round (inside resources) require.Equal(t, expectedRound, prs[1].Round) - require.Equal(t, resDataA0, prs[0].Data) - require.Equal(t, resDataA1, prs[1].Data) + require.Equal(t, resDataWithParamsA0AcctB, prs[0].Data) + require.Equal(t, resDataWithParamsA1AcctB, prs[1].Data) require.Equal(t, expectedRound, rnd) // db round (from the return) // Set limit to 1, should return only 1 resource @@ -333,7 +360,7 @@ func CustomTestResourcesQueryAllLimited(t *customT) { require.Equal(t, aidxResA0, prs[0].Aidx) require.Equal(t, addrA, prs[0].Creator) require.Equal(t, expectedRound, prs[0].Round) // db round (inside resources) - require.Equal(t, resDataA0, prs[0].Data) + require.Equal(t, resDataWithParamsA0AcctB, prs[0].Data) require.Equal(t, expectedRound, rnd) // db round (from the return) // Set min to 1, should return only 1 resource (index 1) @@ -343,7 +370,7 @@ func CustomTestResourcesQueryAllLimited(t *customT) { require.Equal(t, aidxResA1, prs[0].Aidx) require.Equal(t, addrA, prs[0].Creator) require.Equal(t, expectedRound, prs[0].Round) // db round (inside resources) - require.Equal(t, resDataA1, prs[0].Data) + require.Equal(t, resDataWithParamsA1AcctB, prs[0].Data) require.Equal(t, expectedRound, rnd) // db round (from the return) // Delete both resource creatables @@ -371,8 +398,9 @@ func CustomTestResourcesQueryAllLimited(t *customT) { require.True(t, prs[1].Creator.IsZero()) require.Equal(t, expectedRound, prs[0].Round) // db round (inside resources) require.Equal(t, expectedRound, prs[1].Round) - require.Equal(t, resDataA0, prs[0].Data) - require.Equal(t, resDataA1, prs[1].Data) + // Note these directly reflect what was inserted into resources table (no creator/params) + require.Equal(t, resDataA0AcctB, prs[0].Data) + require.Equal(t, resDataA1AcctB, prs[1].Data) } func CustomTestAppKVCrud(t *customT) { @@ -402,6 +430,7 @@ func CustomTestAppKVCrud(t *customT) { require.NoError(t, err) // resource resDataA0 := trackerdb.ResourcesData{} + resDataA0.SetAssetHolding(basics.AssetHolding{Amount: 0}) aidxResA0 := basics.CreatableIndex(0) refResA0, err := aow.InsertResource(refAccA, aidxResA0, resDataA0) require.NoError(t, err) @@ -476,12 +505,14 @@ func CustomTestCreatablesCrud(t *customT) { // resource A-0 resDataA0 := trackerdb.ResourcesData{} + resDataA0.SetAssetHolding(basics.AssetHolding{Amount: 0}) aidxResA0 := basics.CreatableIndex(0) _, err = aow.InsertResource(refAccA, aidxResA0, resDataA0) require.NoError(t, err) // resource A-1 resDataA1 := trackerdb.ResourcesData{} + resDataA1.SetAssetHolding(basics.AssetHolding{Amount: 0}) aidxResA1 := basics.CreatableIndex(1) _, err = aow.InsertResource(refAccA, aidxResA1, resDataA1) require.NoError(t, err) From 7722f80cc9af0feabf636f67e45eddcf35ae3226 Mon Sep 17 00:00:00 2001 From: Gary Malouf <982483+gmalouf@users.noreply.github.com> Date: Wed, 10 Apr 2024 16:00:43 -0400 Subject: [PATCH 10/18] Update AccountsInitTest for latest migration. --- .../store/trackerdb/sqlitedriver/testing.go | 3 + .../trackerdb/testsuite/accounts_kv_test.go | 60 ++++++++++++------- 2 files changed, 43 insertions(+), 20 deletions(-) diff --git a/ledger/store/trackerdb/sqlitedriver/testing.go b/ledger/store/trackerdb/sqlitedriver/testing.go index 49736a681a..c997e03a04 100644 --- a/ledger/store/trackerdb/sqlitedriver/testing.go +++ b/ledger/store/trackerdb/sqlitedriver/testing.go @@ -101,6 +101,9 @@ func AccountsInitTest(tb testing.TB, e db.Executable, initAccounts map[basics.Ad err = performKVStoreNullBlobConversion(context.Background(), e) require.NoError(tb, err) + err = accountsAddCreatableTypeColumn(context.Background(), e) + require.NoError(tb, err) + return newDB } diff --git a/ledger/store/trackerdb/testsuite/accounts_kv_test.go b/ledger/store/trackerdb/testsuite/accounts_kv_test.go index aa8b116119..fa5658c871 100644 --- a/ledger/store/trackerdb/testsuite/accounts_kv_test.go +++ b/ledger/store/trackerdb/testsuite/accounts_kv_test.go @@ -19,6 +19,7 @@ package testsuite import ( "github.com/algorand/go-algorand/data/basics" "github.com/algorand/go-algorand/ledger/store/trackerdb" + ledgertesting "github.com/algorand/go-algorand/ledger/testing" "github.com/stretchr/testify/require" ) @@ -254,7 +255,7 @@ func CustomTestResourcesQueryAllLimited(t *customT) { require.NoError(t, err) // - // pre-fill the db with two accounts for testing - one just owning a creatable + // pre-fill the db with two accounts for testing - one owning creatables, the other opting into them // // account A - will own creatables @@ -285,21 +286,34 @@ func CustomTestResourcesQueryAllLimited(t *customT) { _, err = aow.InsertResource(refAccB, aidxResA0, resDataA0AcctB) require.NoError(t, err) - // resource A-1 for accounts A and B + // App A-1 for accounts A and B - this should be completely ignored resDataA1AcctA := trackerdb.ResourcesData{} - resDataA1AcctA.SetAssetHolding(basics.AssetHolding{Amount: 100}) - resDataA1AcctA.SetAssetParams(basics.AssetParams{ - Total: 10000, - }, true) + appParams := ledgertesting.RandomAppParams() + resDataA1AcctA.SetAppParams(appParams, true) resDataA1AcctB := trackerdb.ResourcesData{} - resDataA1AcctB.SetAssetHolding(basics.AssetHolding{Amount: 200}) - + appParamsB := ledgertesting.RandomAppParams() + resDataA1AcctB.SetAppParams(appParamsB, true) aidxResA1 := basics.CreatableIndex(2) _, err = aow.InsertResource(refAccA, aidxResA1, resDataA1AcctA) require.NoError(t, err) _, err = aow.InsertResource(refAccB, aidxResA1, resDataA1AcctB) require.NoError(t, err) + // asset A-2 for accounts A and B + resDataA2AcctA := trackerdb.ResourcesData{} + resDataA2AcctA.SetAssetHolding(basics.AssetHolding{Amount: 100}) + resDataA2AcctA.SetAssetParams(basics.AssetParams{ + Total: 10000, + }, true) + resDataA2AcctB := trackerdb.ResourcesData{} + resDataA2AcctB.SetAssetHolding(basics.AssetHolding{Amount: 200}) + + aidxResA2 := basics.CreatableIndex(3) + _, err = aow.InsertResource(refAccA, aidxResA2, resDataA2AcctA) + require.NoError(t, err) + _, err = aow.InsertResource(refAccB, aidxResA2, resDataA2AcctB) + require.NoError(t, err) + // Results for account B (opted in, not creator) we expect back will have asset params but the resource flags // are explicitly set to be resDataWithParamsA0AcctB := trackerdb.ResourcesData{} @@ -308,9 +322,9 @@ func CustomTestResourcesQueryAllLimited(t *customT) { resDataWithParamsA0AcctB.ResourceFlags = resDataA0AcctB.ResourceFlags resDataWithParamsA1AcctB := trackerdb.ResourcesData{} - resDataWithParamsA1AcctB.SetAssetHolding(resDataA1AcctB.GetAssetHolding()) - resDataWithParamsA1AcctB.SetAssetParams(resDataA1AcctA.GetAssetParams(), true) - resDataWithParamsA1AcctB.ResourceFlags = resDataA1AcctB.ResourceFlags + resDataWithParamsA1AcctB.SetAssetHolding(resDataA2AcctB.GetAssetHolding()) + resDataWithParamsA1AcctB.SetAssetParams(resDataA2AcctA.GetAssetParams(), true) + resDataWithParamsA1AcctB.ResourceFlags = resDataA2AcctB.ResourceFlags // insert creator account A for A-0 resA0ctype := basics.AssetCreatable @@ -319,23 +333,29 @@ func CustomTestResourcesQueryAllLimited(t *customT) { require.NotNil(t, cRefA0) // insert creator account A for A-1 - resA1ctype := basics.AssetCreatable + resA1ctype := basics.AppCreatable cRefA1, err := aow.InsertCreatable(aidxResA1, resA1ctype, addrA[:]) require.NoError(t, err) require.NotNil(t, cRefA1) + // insert creator account A for A-2 + resA2ctype := basics.AssetCreatable + cRefA2, err := aow.InsertCreatable(aidxResA2, resA2ctype, addrA[:]) + require.NoError(t, err) + require.NotNil(t, cRefA2) + // Lookup with limited resources for account A prs, rnd, err := aor.LookupLimitedResources(addrA, 0, 2, basics.AssetCreatable) require.NoError(t, err) require.Equal(t, 2, len(prs)) require.Equal(t, aidxResA0, prs[0].Aidx) - require.Equal(t, aidxResA1, prs[1].Aidx) + require.Equal(t, aidxResA2, prs[1].Aidx) require.Equal(t, addrA, prs[0].Creator) require.Equal(t, addrA, prs[1].Creator) require.Equal(t, expectedRound, prs[0].Round) // db round (inside resources) require.Equal(t, expectedRound, prs[1].Round) require.Equal(t, resDataA0AcctA, prs[0].Data) - require.Equal(t, resDataA1AcctA, prs[1].Data) + require.Equal(t, resDataA2AcctA, prs[1].Data) require.Equal(t, expectedRound, rnd) // db round (from the return) // Lookup with limited resources for account B @@ -343,7 +363,7 @@ func CustomTestResourcesQueryAllLimited(t *customT) { require.NoError(t, err) require.Equal(t, 2, len(prs)) require.Equal(t, aidxResA0, prs[0].Aidx) - require.Equal(t, aidxResA1, prs[1].Aidx) + require.Equal(t, aidxResA2, prs[1].Aidx) // Creator should be present and set to address A require.Equal(t, addrA, prs[0].Creator) require.Equal(t, addrA, prs[1].Creator) @@ -367,7 +387,7 @@ func CustomTestResourcesQueryAllLimited(t *customT) { prs, rnd, err = aor.LookupLimitedResources(addrB, 1, 1, basics.AssetCreatable) require.NoError(t, err) require.Equal(t, 1, len(prs)) - require.Equal(t, aidxResA1, prs[0].Aidx) + require.Equal(t, aidxResA2, prs[0].Aidx) require.Equal(t, addrA, prs[0].Creator) require.Equal(t, expectedRound, prs[0].Round) // db round (inside resources) require.Equal(t, resDataWithParamsA1AcctB, prs[0].Data) @@ -377,12 +397,12 @@ func CustomTestResourcesQueryAllLimited(t *customT) { rowsAffected, err := aow.DeleteCreatable(aidxResA0, basics.AssetCreatable) require.NoError(t, err) require.Equal(t, int64(1), rowsAffected) - rowsAffected, err = aow.DeleteCreatable(aidxResA1, basics.AssetCreatable) + rowsAffected, err = aow.DeleteCreatable(aidxResA2, basics.AssetCreatable) require.NoError(t, err) require.Equal(t, int64(1), rowsAffected) _, err = aow.DeleteResource(refAccA, aidxResA0) require.NoError(t, err) - _, err = aow.DeleteResource(refAccA, aidxResA1) + _, err = aow.DeleteResource(refAccA, aidxResA2) require.NoError(t, err) // Account A should have no resources, account B should have 2 resources without a creator/params @@ -393,14 +413,14 @@ func CustomTestResourcesQueryAllLimited(t *customT) { require.NoError(t, err) require.Equal(t, 2, len(prs)) require.Equal(t, aidxResA0, prs[0].Aidx) - require.Equal(t, aidxResA1, prs[1].Aidx) + require.Equal(t, aidxResA2, prs[1].Aidx) require.True(t, prs[0].Creator.IsZero()) require.True(t, prs[1].Creator.IsZero()) require.Equal(t, expectedRound, prs[0].Round) // db round (inside resources) require.Equal(t, expectedRound, prs[1].Round) // Note these directly reflect what was inserted into resources table (no creator/params) require.Equal(t, resDataA0AcctB, prs[0].Data) - require.Equal(t, resDataA1AcctB, prs[1].Data) + require.Equal(t, resDataA2AcctB, prs[1].Data) } func CustomTestAppKVCrud(t *customT) { From a810c49b5693c352a220a578a519646bf1208b6b Mon Sep 17 00:00:00 2001 From: Gary Malouf <982483+gmalouf@users.noreply.github.com> Date: Mon, 22 Apr 2024 18:06:48 -0400 Subject: [PATCH 11/18] Decrease migration runtime of ctype resources migration by 2.5x leveraging a left join with assetcreators to populate much of the ctypes on updated resources table. --- ledger/store/trackerdb/sqlitedriver/schema.go | 37 ++++++++++++------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/ledger/store/trackerdb/sqlitedriver/schema.go b/ledger/store/trackerdb/sqlitedriver/schema.go index 2d855b8107..19fbb07d42 100644 --- a/ledger/store/trackerdb/sqlitedriver/schema.go +++ b/ledger/store/trackerdb/sqlitedriver/schema.go @@ -944,44 +944,50 @@ func convertOnlineRoundParamsTail(ctx context.Context, e db.Executable) error { } func accountsAddCreatableTypeColumn(ctx context.Context, e db.Executable) error { - // Run resources migration if it hasn't run yet + // Run ctype resources migration if it hasn't run yet var creatableTypeOnResourcesRun bool err := e.QueryRow("SELECT 1 FROM pragma_table_info('resources') WHERE name='ctype'").Scan(&creatableTypeOnResourcesRun) if !errors.Is(err, sql.ErrNoRows) { return nil } - applyNewResourcesTableStructure := []string{ - `CREATE TABLE IF NOT EXISTS resources_ctype_migration ( + // Create new resources table with ctype column + createStmt := `CREATE TABLE IF NOT EXISTS resources_ctype_migration ( addrid INTEGER NOT NULL, aidx INTEGER NOT NULL, data BLOB NOT NULL, ctype INTEGER NOT NULL, - PRIMARY KEY (addrid, aidx) ) WITHOUT ROWID`, - `INSERT INTO resources_ctype_migration (addrid, aidx, data, ctype) SELECT addrid, aidx, data, ctype FROM resources`, - `ALTER TABLE resources RENAME TO resources_old`, - `ALTER TABLE resources_ctype_migration RENAME TO resources`, - `DROP TABLE IF EXISTS resources_old`, + PRIMARY KEY (addrid, aidx) ) WITHOUT ROWID` + + _, err = e.ExecContext(ctx, createStmt) + if err != nil { + return err } - _, err = e.ExecContext(ctx, "ALTER TABLE resources ADD COLUMN ctype INTEGER") + // Insert into the new resources table using the data from the old resources table joined with the assetcreators table + insertStmt := `INSERT INTO resources_ctype_migration (addrid, aidx, data, ctype) + SELECT r.addrid, r.aidx, r.data, COALESCE(ac.ctype, -1) + FROM resources r + LEFT JOIN assetcreators ac ON r.aidx = ac.asset` + _, err = e.ExecContext(ctx, insertStmt) if err != nil { return err } - updateStmt, err := e.PrepareContext(ctx, "UPDATE resources SET ctype = ? WHERE addrid = ? AND aidx = ?") + updateStmt, err := e.PrepareContext(ctx, "UPDATE resources_ctype_migration SET ctype = ? WHERE addrid = ? AND aidx = ?") if err != nil { return err } defer updateStmt.Close() - rows, err := e.QueryContext(ctx, "SELECT addrid, aidx, data FROM resources r") + // Pull resource entries into memory where ctype is not set + rows, err := e.QueryContext(ctx, "SELECT addrid, aidx, data FROM resources_ctype_migration r WHERE ctype = -1") if err != nil { return err } defer rows.Close() - // Update the ctype column for all resources. + // Update the ctype column for subset of resources where ctype was not resolved from assetcreators for rows.Next() { var addrid int64 var aidx int64 @@ -1015,6 +1021,12 @@ func accountsAddCreatableTypeColumn(ctx context.Context, e db.Executable) error } } + applyNewResourcesTableStructure := []string{ + `ALTER TABLE resources RENAME TO resources_old`, + `ALTER TABLE resources_ctype_migration RENAME TO resources`, + `DROP TABLE IF EXISTS resources_old`, + } + // Rename the tables to apply the new structure. for _, stmt := range applyNewResourcesTableStructure { _, err = e.ExecContext(ctx, stmt) @@ -1022,6 +1034,5 @@ func accountsAddCreatableTypeColumn(ctx context.Context, e db.Executable) error return err } } - return rows.Err() } From 5d87b80e8fd0225892f171de0de467c33a050cbb Mon Sep 17 00:00:00 2001 From: Gary Malouf <982483+gmalouf@users.noreply.github.com> Date: Mon, 22 Apr 2024 22:21:06 -0400 Subject: [PATCH 12/18] Address test failures (k-v store version has to match sqlite, even without changes). --- daemon/algod/api/server/v2/test/handlers_resources_test.go | 2 +- ledger/store/trackerdb/generickv/migrations.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/daemon/algod/api/server/v2/test/handlers_resources_test.go b/daemon/algod/api/server/v2/test/handlers_resources_test.go index d4987d7a2a..820344dbd5 100644 --- a/daemon/algod/api/server/v2/test/handlers_resources_test.go +++ b/daemon/algod/api/server/v2/test/handlers_resources_test.go @@ -523,7 +523,7 @@ func TestAccountAssetsInformation(t *testing.T) { }) require.NoError(t, err) require.Equal(t, 400, rec.Code) - require.Equal(t, "{\"message\":\"limit 10001 exceeds max assets single batch limit 10000\"}\n", rec.Body.String()) + require.Equal(t, "{\"message\":\"limit 1001 exceeds max assets single batch limit 1000\"}\n", rec.Body.String()) // 8b. Invalid limits - zero ctx, rec = newReq(t) diff --git a/ledger/store/trackerdb/generickv/migrations.go b/ledger/store/trackerdb/generickv/migrations.go index c2a0d0f208..a329d84bf7 100644 --- a/ledger/store/trackerdb/generickv/migrations.go +++ b/ledger/store/trackerdb/generickv/migrations.go @@ -222,6 +222,6 @@ func (m *migrator) initialVersion(ctx context.Context) error { return err } - // KV store starts at version 10 - return m.setVersion(ctx, 10) + // KV store starts at version 11 + return m.setVersion(ctx, 11) } From 5ab49fd6e2e39067f405c12210177b3daacd0a13 Mon Sep 17 00:00:00 2001 From: Gary Malouf <982483+gmalouf@users.noreply.github.com> Date: Thu, 25 Apr 2024 10:52:00 -0400 Subject: [PATCH 13/18] Refactor resources ctype migration to use a default value, avoiding having to create another table and full copy. --- ledger/store/trackerdb/sqlitedriver/schema.go | 42 ++++++------------- 1 file changed, 12 insertions(+), 30 deletions(-) diff --git a/ledger/store/trackerdb/sqlitedriver/schema.go b/ledger/store/trackerdb/sqlitedriver/schema.go index 19fbb07d42..0ee91e9ee8 100644 --- a/ledger/store/trackerdb/sqlitedriver/schema.go +++ b/ledger/store/trackerdb/sqlitedriver/schema.go @@ -951,37 +951,32 @@ func accountsAddCreatableTypeColumn(ctx context.Context, e db.Executable) error return nil } - // Create new resources table with ctype column - createStmt := `CREATE TABLE IF NOT EXISTS resources_ctype_migration ( - addrid INTEGER NOT NULL, - aidx INTEGER NOT NULL, - data BLOB NOT NULL, - ctype INTEGER NOT NULL, - PRIMARY KEY (addrid, aidx) ) WITHOUT ROWID` + // Add ctype column + createStmt := `ALTER TABLE resources ADD COLUMN ctype INTEGER NOT NULL DEFAULT -1` _, err = e.ExecContext(ctx, createStmt) if err != nil { return err } - // Insert into the new resources table using the data from the old resources table joined with the assetcreators table - insertStmt := `INSERT INTO resources_ctype_migration (addrid, aidx, data, ctype) - SELECT r.addrid, r.aidx, r.data, COALESCE(ac.ctype, -1) - FROM resources r - LEFT JOIN assetcreators ac ON r.aidx = ac.asset` - _, err = e.ExecContext(ctx, insertStmt) + // Populate the new ctype column with the corresponding creatable type from assetcreators where available + updateStmt := `UPDATE resources SET ctype = ( + SELECT COALESCE((SELECT ac.ctype FROM assetcreators ac WHERE ac.asset = resources.aidx),-1) + ) WHERE ctype = -1` + + _, err = e.ExecContext(ctx, updateStmt) if err != nil { return err } - updateStmt, err := e.PrepareContext(ctx, "UPDATE resources_ctype_migration SET ctype = ? WHERE addrid = ? AND aidx = ?") + updatePrepStmt, err := e.PrepareContext(ctx, "UPDATE resources SET ctype = ? WHERE addrid = ? AND aidx = ?") if err != nil { return err } - defer updateStmt.Close() + defer updatePrepStmt.Close() // Pull resource entries into memory where ctype is not set - rows, err := e.QueryContext(ctx, "SELECT addrid, aidx, data FROM resources_ctype_migration r WHERE ctype = -1") + rows, err := e.QueryContext(ctx, "SELECT addrid, aidx, data FROM resources r WHERE ctype = -1") if err != nil { return err } @@ -1015,24 +1010,11 @@ func accountsAddCreatableTypeColumn(ctx context.Context, e db.Executable) error return fmt.Errorf("unable to discern creatable type for addrid %d, resource %d", addrid, aidx) } - _, err = updateStmt.ExecContext(ctx, ct, addrid, aidx) + _, err = updatePrepStmt.ExecContext(ctx, ct, addrid, aidx) if err != nil { return err } } - applyNewResourcesTableStructure := []string{ - `ALTER TABLE resources RENAME TO resources_old`, - `ALTER TABLE resources_ctype_migration RENAME TO resources`, - `DROP TABLE IF EXISTS resources_old`, - } - - // Rename the tables to apply the new structure. - for _, stmt := range applyNewResourcesTableStructure { - _, err = e.ExecContext(ctx, stmt) - if err != nil { - return err - } - } return rows.Err() } From 6bb6442956cbe4949c5b712d05728c33e2fc8e7c Mon Sep 17 00:00:00 2001 From: Gary Malouf <982483+gmalouf@users.noreply.github.com> Date: Mon, 29 Apr 2024 20:28:13 -0400 Subject: [PATCH 14/18] Test adjustments to properly simulate initializing a ledger from a catchpoint and setting the db version properly (to ensure columns present during prepared statement init). --- ledger/catchpointfilewriter_test.go | 6 +- ledger/ledger_test.go | 40 +++++++- ledger/store/trackerdb/sqlitedriver/schema.go | 96 ++++++++++--------- .../store/trackerdb/sqlitedriver/testing.go | 20 ++-- .../trackerdb/sqlitedriver/trackerdbV2.go | 2 +- 5 files changed, 107 insertions(+), 57 deletions(-) diff --git a/ledger/catchpointfilewriter_test.go b/ledger/catchpointfilewriter_test.go index 71a0737fb6..2f53cc59b6 100644 --- a/ledger/catchpointfilewriter_test.go +++ b/ledger/catchpointfilewriter_test.go @@ -685,7 +685,9 @@ func testNewLedgerFromCatchpoint(t *testing.T, catchpointWriterReadAccess tracke var initState ledgercore.InitState initState.Block.CurrentProtocol = protocol.ConsensusCurrentVersion conf := config.GetDefaultLocal() - l, err := OpenLedger(logging.TestingLog(t), t.Name()+"FromCatchpoint", true, initState, conf) + dbName := fmt.Sprintf("%s.%d", t.Name()+"FromCatchpoint", crypto.RandUint64()) + dbName = strings.Replace(dbName, "/", "_", -1) + l, err := OpenLedger(logging.TestingLog(t), dbName, true, initState, conf) require.NoError(t, err) accessor := MakeCatchpointCatchupAccessor(l, l.log) @@ -702,6 +704,8 @@ func testNewLedgerFromCatchpoint(t *testing.T, catchpointWriterReadAccess tracke err = accessor.BuildMerkleTrie(context.Background(), nil) require.NoError(t, err) + resetAccountDBToV6(t, l) + err = l.trackerDBs.Transaction(func(ctx context.Context, tx trackerdb.TransactionScope) error { cw, err := tx.MakeCatchpointWriter() if err != nil { diff --git a/ledger/ledger_test.go b/ledger/ledger_test.go index 0e3b066b80..127ecf85cb 100644 --- a/ledger/ledger_test.go +++ b/ledger/ledger_test.go @@ -53,6 +53,8 @@ import ( "github.com/algorand/go-deadlock" ) +const preReleaseDBVersion = 6 + func sign(secrets map[basics.Address]*crypto.SignatureSecrets, t transactions.Transaction) transactions.SignedTxn { var sig crypto.Signature _, ok := secrets[t.Sender] @@ -2178,6 +2180,42 @@ func TestLedgerReloadShrinkDeltas(t *testing.T) { } } +func resetAccountDBToV6(t *testing.T, l *Ledger) { + // reset tables and re-init again, similary to the catchpount apply code + // since the ledger has only genesis accounts, this recreates them + err := l.trackerDBs.Transaction(func(ctx context.Context, tx trackerdb.TransactionScope) error { + arw, err := tx.MakeAccountsWriter() + if err != nil { + return err + } + + err0 := arw.AccountsReset(ctx) + if err0 != nil { + return err0 + } + tp := trackerdb.Params{ + InitAccounts: l.GenesisAccounts(), + InitProto: l.GenesisProtoVersion(), + GenesisHash: l.GenesisHash(), + FromCatchpoint: true, + CatchpointEnabled: l.catchpoint.catchpointEnabled(), + DbPathPrefix: l.catchpoint.dbDirectory, + BlockDb: l.blockDBs, + } + _, err0 = tx.RunMigrations(ctx, tp, l.log, preReleaseDBVersion /*target database version*/) + if err0 != nil { + return err0 + } + + if err0 := tx.Testing().AccountsUpdateSchemaTest(ctx); err != nil { + return err0 + } + + return nil + }) + require.NoError(t, err) +} + // TestLedgerReloadTxTailHistoryAccess checks txtail has MaxTxnLife + DeeperBlockHeaderHistory block headers // for TEAL after applying catchpoint. // Simulate catchpoints by the following: @@ -2189,8 +2227,6 @@ func TestLedgerReloadShrinkDeltas(t *testing.T) { func TestLedgerReloadTxTailHistoryAccess(t *testing.T) { partitiontest.PartitionTest(t) - const preReleaseDBVersion = 6 - dbName := fmt.Sprintf("%s.%d", t.Name(), crypto.RandUint64()) genesisInitState, initKeys := ledgertesting.GenerateInitState(t, protocol.ConsensusCurrentVersion, 10_000_000_000) proto := config.Consensus[protocol.ConsensusCurrentVersion] diff --git a/ledger/store/trackerdb/sqlitedriver/schema.go b/ledger/store/trackerdb/sqlitedriver/schema.go index 0ee91e9ee8..71154cd98b 100644 --- a/ledger/store/trackerdb/sqlitedriver/schema.go +++ b/ledger/store/trackerdb/sqlitedriver/schema.go @@ -943,7 +943,7 @@ func convertOnlineRoundParamsTail(ctx context.Context, e db.Executable) error { return err } -func accountsAddCreatableTypeColumn(ctx context.Context, e db.Executable) error { +func accountsAddCreatableTypeColumn(ctx context.Context, e db.Executable, populateColumn bool) error { // Run ctype resources migration if it hasn't run yet var creatableTypeOnResourcesRun bool err := e.QueryRow("SELECT 1 FROM pragma_table_info('resources') WHERE name='ctype'").Scan(&creatableTypeOnResourcesRun) @@ -959,62 +959,64 @@ func accountsAddCreatableTypeColumn(ctx context.Context, e db.Executable) error return err } - // Populate the new ctype column with the corresponding creatable type from assetcreators where available - updateStmt := `UPDATE resources SET ctype = ( + if populateColumn { + // Populate the new ctype column with the corresponding creatable type from assetcreators where available + updateStmt := `UPDATE resources SET ctype = ( SELECT COALESCE((SELECT ac.ctype FROM assetcreators ac WHERE ac.asset = resources.aidx),-1) ) WHERE ctype = -1` - _, err = e.ExecContext(ctx, updateStmt) - if err != nil { - return err - } - - updatePrepStmt, err := e.PrepareContext(ctx, "UPDATE resources SET ctype = ? WHERE addrid = ? AND aidx = ?") - if err != nil { - return err - } - defer updatePrepStmt.Close() - - // Pull resource entries into memory where ctype is not set - rows, err := e.QueryContext(ctx, "SELECT addrid, aidx, data FROM resources r WHERE ctype = -1") - if err != nil { - return err - } - defer rows.Close() - - // Update the ctype column for subset of resources where ctype was not resolved from assetcreators - for rows.Next() { - var addrid int64 - var aidx int64 - var encodedData []byte - err = rows.Scan(&addrid, &aidx, &encodedData) - if err != nil { - return err + _, err0 := e.ExecContext(ctx, updateStmt) + if err0 != nil { + return err0 } - var rd trackerdb.ResourcesData - err = protocol.Decode(encodedData, &rd) - if err != nil { - return err + updatePrepStmt, err0 := e.PrepareContext(ctx, "UPDATE resources SET ctype = ? WHERE addrid = ? AND aidx = ?") + if err0 != nil { + return err0 } + defer updatePrepStmt.Close() - var ct basics.CreatableType - if rd.IsAsset() && rd.IsApp() { - // This should never happen! - return fmt.Errorf("unable to discern creatable type for addrid %d, resource %d", addrid, aidx) - } else if rd.IsAsset() { - ct = basics.AssetCreatable - } else if rd.IsApp() { - ct = basics.AppCreatable - } else { // This should never happen! - return fmt.Errorf("unable to discern creatable type for addrid %d, resource %d", addrid, aidx) + // Pull resource entries into memory where ctype is not set + rows, err0 := e.QueryContext(ctx, "SELECT addrid, aidx, data FROM resources r WHERE ctype = -1") + if err0 != nil { + return err0 } + defer rows.Close() - _, err = updatePrepStmt.ExecContext(ctx, ct, addrid, aidx) - if err != nil { - return err + // Update the ctype column for subset of resources where ctype was not resolved from assetcreators + for rows.Next() { + var addrid int64 + var aidx int64 + var encodedData []byte + err0 = rows.Scan(&addrid, &aidx, &encodedData) + if err0 != nil { + return err0 + } + + var rd trackerdb.ResourcesData + err0 = protocol.Decode(encodedData, &rd) + if err0 != nil { + return err0 + } + + var ct basics.CreatableType + if rd.IsAsset() && rd.IsApp() { + // This should never happen! + return fmt.Errorf("unable to discern creatable type for addrid %d, resource %d", addrid, aidx) + } else if rd.IsAsset() { + ct = basics.AssetCreatable + } else if rd.IsApp() { + ct = basics.AppCreatable + } else { // This should never happen! + return fmt.Errorf("unable to discern creatable type for addrid %d, resource %d", addrid, aidx) + } + + _, err0 = updatePrepStmt.ExecContext(ctx, ct, addrid, aidx) + if err0 != nil { + return err0 + } } } - return rows.Err() + return nil } diff --git a/ledger/store/trackerdb/sqlitedriver/testing.go b/ledger/store/trackerdb/sqlitedriver/testing.go index c997e03a04..fd4076799b 100644 --- a/ledger/store/trackerdb/sqlitedriver/testing.go +++ b/ledger/store/trackerdb/sqlitedriver/testing.go @@ -101,7 +101,7 @@ func AccountsInitTest(tb testing.TB, e db.Executable, initAccounts map[basics.Ad err = performKVStoreNullBlobConversion(context.Background(), e) require.NoError(tb, err) - err = accountsAddCreatableTypeColumn(context.Background(), e) + err = accountsAddCreatableTypeColumn(context.Background(), e, false) require.NoError(tb, err) return newDB @@ -109,21 +109,29 @@ func AccountsInitTest(tb testing.TB, e db.Executable, initAccounts map[basics.Ad // AccountsUpdateSchemaTest adds some empty tables for tests to work with a "v6" store. func AccountsUpdateSchemaTest(ctx context.Context, e db.Executable) (err error) { - if err := accountsCreateOnlineAccountsTable(ctx, e); err != nil { + if err = accountsCreateOnlineAccountsTable(ctx, e); err != nil { return err } - if err := accountsCreateTxTailTable(ctx, e); err != nil { + if err = accountsCreateTxTailTable(ctx, e); err != nil { return err } - if err := accountsCreateOnlineRoundParamsTable(ctx, e); err != nil { + if err = accountsCreateOnlineRoundParamsTable(ctx, e); err != nil { return err } - if err := accountsCreateCatchpointFirstStageInfoTable(ctx, e); err != nil { + if err = accountsCreateCatchpointFirstStageInfoTable(ctx, e); err != nil { return err } // this line creates kvstore table, even if it is not required in accountDBVersion 6 -> 7 // or in later version where we need kvstore table, some tests will fail - if err := accountsCreateBoxTable(ctx, e); err != nil { + if err = accountsCreateBoxTable(ctx, e); err != nil { + return err + } + // this adds the resources table and ctype column, even if it is not required in accountDBVersion 6 -> 7 + // this prevents some tests from failing. + if err = accountsCreateResourceTable(ctx, e); err != nil { + return err + } + if err = accountsAddCreatableTypeColumn(ctx, e, false); err != nil { return err } return createStateProofVerificationTable(ctx, e) diff --git a/ledger/store/trackerdb/sqlitedriver/trackerdbV2.go b/ledger/store/trackerdb/sqlitedriver/trackerdbV2.go index 03386cb69b..9987ef8b03 100644 --- a/ledger/store/trackerdb/sqlitedriver/trackerdbV2.go +++ b/ledger/store/trackerdb/sqlitedriver/trackerdbV2.go @@ -516,7 +516,7 @@ func (tu *trackerDBSchemaInitializer) upgradeDatabaseSchema9(ctx context.Context // upgradeDatabaseSchema10 upgrades the database schema from version 10 to version 11, // altering the resources table to add a new column, resources.ctype. func (tu *trackerDBSchemaInitializer) upgradeDatabaseSchema10(ctx context.Context, e db.Executable) (err error) { - err = accountsAddCreatableTypeColumn(ctx, e) + err = accountsAddCreatableTypeColumn(ctx, e, true) if err != nil { return err } From 963027d6913a0d1fceaf04c828127e061c91982c Mon Sep 17 00:00:00 2001 From: Gary Malouf <982483+gmalouf@users.noreply.github.com> Date: Tue, 30 Apr 2024 12:39:28 -0400 Subject: [PATCH 15/18] Code review tweaks. --- ledger/store/trackerdb/sqlitedriver/schema.go | 7 +++++-- ledger/store/trackerdb/testsuite/accounts_kv_test.go | 8 ++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/ledger/store/trackerdb/sqlitedriver/schema.go b/ledger/store/trackerdb/sqlitedriver/schema.go index 71154cd98b..eb17d1fbd7 100644 --- a/ledger/store/trackerdb/sqlitedriver/schema.go +++ b/ledger/store/trackerdb/sqlitedriver/schema.go @@ -947,9 +947,12 @@ func accountsAddCreatableTypeColumn(ctx context.Context, e db.Executable, popula // Run ctype resources migration if it hasn't run yet var creatableTypeOnResourcesRun bool err := e.QueryRow("SELECT 1 FROM pragma_table_info('resources') WHERE name='ctype'").Scan(&creatableTypeOnResourcesRun) - if !errors.Is(err, sql.ErrNoRows) { + if err == nil { + // Already exists. return nil - } + } else if !errors.Is(err, sql.ErrNoRows) { + return err + } // A sql.ErrNoRows error means the column does not exist, so we need to create it // Add ctype column createStmt := `ALTER TABLE resources ADD COLUMN ctype INTEGER NOT NULL DEFAULT -1` diff --git a/ledger/store/trackerdb/testsuite/accounts_kv_test.go b/ledger/store/trackerdb/testsuite/accounts_kv_test.go index fa5658c871..b804ec8cb9 100644 --- a/ledger/store/trackerdb/testsuite/accounts_kv_test.go +++ b/ledger/store/trackerdb/testsuite/accounts_kv_test.go @@ -290,9 +290,9 @@ func CustomTestResourcesQueryAllLimited(t *customT) { resDataA1AcctA := trackerdb.ResourcesData{} appParams := ledgertesting.RandomAppParams() resDataA1AcctA.SetAppParams(appParams, true) + resDataA1AcctA.SetAppLocalState(basics.AppLocalState{}) resDataA1AcctB := trackerdb.ResourcesData{} - appParamsB := ledgertesting.RandomAppParams() - resDataA1AcctB.SetAppParams(appParamsB, true) + resDataA1AcctB.SetAppLocalState(basics.AppLocalState{}) aidxResA1 := basics.CreatableIndex(2) _, err = aow.InsertResource(refAccA, aidxResA1, resDataA1AcctA) require.NoError(t, err) @@ -383,6 +383,10 @@ func CustomTestResourcesQueryAllLimited(t *customT) { require.Equal(t, resDataWithParamsA0AcctB, prs[0].Data) require.Equal(t, expectedRound, rnd) // db round (from the return) + // Delete app owner for A-1 + _, err = aow.DeleteCreatable(aidxResA1, basics.AppCreatable) + require.NoError(t, err) + // Set min to 1, should return only 1 resource (index 1) prs, rnd, err = aor.LookupLimitedResources(addrB, 1, 1, basics.AssetCreatable) require.NoError(t, err) From 2db2669e5768d1c8afc870beecb9b0171d525086 Mon Sep 17 00:00:00 2001 From: Gary Malouf <982483+gmalouf@users.noreply.github.com> Date: Thu, 2 May 2024 14:21:05 -0400 Subject: [PATCH 16/18] Changes based on additional CR feedback. --- daemon/algod/api/server/v2/handlers.go | 5 +- .../server/v2/test/handlers_resources_test.go | 49 ++++---- ledger/acctupdates.go | 113 ++++++------------ ledger/ledger.go | 4 +- ledger/store/trackerdb/sqlitedriver/schema.go | 18 ++- ledger/store/trackerdb/sqlitedriver/sql.go | 29 ++++- 6 files changed, 109 insertions(+), 109 deletions(-) diff --git a/daemon/algod/api/server/v2/handlers.go b/daemon/algod/api/server/v2/handlers.go index 7df3d2edb4..3d581dbd78 100644 --- a/daemon/algod/api/server/v2/handlers.go +++ b/daemon/algod/api/server/v2/handlers.go @@ -105,7 +105,7 @@ type LedgerForAPI interface { ConsensusParams(r basics.Round) (config.ConsensusParams, error) Latest() basics.Round LookupAsset(rnd basics.Round, addr basics.Address, aidx basics.AssetIndex) (ledgercore.AssetResource, error) - LookupAssets(rnd basics.Round, addr basics.Address, assetIDGT basics.AssetIndex, limit uint64) ([]ledgercore.AssetResourceWithIDs, basics.Round, error) + LookupAssets(addr basics.Address, assetIDGT basics.AssetIndex, limit uint64) ([]ledgercore.AssetResourceWithIDs, basics.Round, error) LookupApplication(rnd basics.Round, addr basics.Address, aidx basics.AppIndex) (ledgercore.AppResource, error) BlockCert(rnd basics.Round) (blk bookkeeping.Block, cert agreement.Certificate, err error) LatestTotals() (basics.Round, ledgercore.AccountTotals, error) @@ -1153,10 +1153,9 @@ func (v2 *Handlers) AccountAssetsInformation(ctx echo.Context, address string, p // 1. Get the account's asset holdings subject to limits // 2. Handle empty response // 3. Prepare JSON response - lastRound := ledger.Latest() // We intentionally request one more than the limit to determine if there are more assets. - records, lookupRound, err := ledger.LookupAssets(lastRound, addr, basics.AssetIndex(assetGreaterThan), *params.Limit+1) + records, lookupRound, err := ledger.LookupAssets(addr, basics.AssetIndex(assetGreaterThan), *params.Limit+1) if err != nil { return internalError(ctx, err, errFailedLookingUpLedger, v2.Log) diff --git a/daemon/algod/api/server/v2/test/handlers_resources_test.go b/daemon/algod/api/server/v2/test/handlers_resources_test.go index 820344dbd5..f028a9b2a1 100644 --- a/daemon/algod/api/server/v2/test/handlers_resources_test.go +++ b/daemon/algod/api/server/v2/test/handlers_resources_test.go @@ -109,10 +109,10 @@ func (l *mockLedger) LookupAsset(rnd basics.Round, addr basics.Address, aidx bas return ar, nil } -func (l *mockLedger) LookupAssets(rnd basics.Round, addr basics.Address, assetIDGT basics.AssetIndex, limit uint64) ([]ledgercore.AssetResourceWithIDs, basics.Round, error) { +func (l *mockLedger) LookupAssets(addr basics.Address, assetIDGT basics.AssetIndex, limit uint64) ([]ledgercore.AssetResourceWithIDs, basics.Round, error) { ad, ok := l.accounts[addr] if !ok { - return nil, rnd, nil + return nil, basics.Round(0), nil } var res []ledgercore.AssetResourceWithIDs @@ -132,7 +132,7 @@ func (l *mockLedger) LookupAssets(rnd basics.Round, addr basics.Address, assetID res = append(res, apr) } } - return res, rnd, nil + return res, basics.Round(0), nil } func (l *mockLedger) LookupApplication(rnd basics.Round, addr basics.Address, aidx basics.AppIndex) (ar ledgercore.AppResource, err error) { @@ -428,7 +428,6 @@ func accountInformationResourceLimitsTest(t *testing.T, accountMaker func(int) b func accountAssetInformationResourceLimitsTest(t *testing.T, handlers v2.Handlers, addr basics.Address, acctData basics.AccountData, params model.AccountAssetsInformationParams, inputNextToken int, maxResults int, expectToken bool) { - fakeLatestRound := basics.Round(10) ctx, rec := newReq(t) err := handlers.AccountAssetsInformation(ctx, addr.String(), params) @@ -437,7 +436,6 @@ func accountAssetInformationResourceLimitsTest(t *testing.T, handlers v2.Handler var ret model.AccountAssetsInformationResponse err = json.Unmarshal(rec.Body.Bytes(), &ret) require.NoError(t, err) - assert.Equal(t, fakeLatestRound, basics.Round(ret.Round)) if expectToken { nextRaw, err0 := strconv.ParseUint(*ret.NextToken, 10, 64) @@ -477,43 +475,46 @@ func TestAccountAssetsInformation(t *testing.T) { accountAssetInformationResourceLimitsTest(t, handlers, addr, acctData, model.AccountAssetsInformationParams{}, 0, int(v2.DefaultAssetResults), false) - // 2. Query with limit= totalAssetHoldings { + expectToken = false + expectedResultsCount = totalAssetHoldings - rawNext + } + accountAssetInformationResourceLimitsTest(t, handlers, addr, acctData, + model.AccountAssetsInformationParams{Limit: &limit, Next: &nextTk}, rawNext, expectedResultsCount, expectToken) + } - // 5. Query with limit, next to provide batch, but no data in that range - rawNext = 1025 - nextTk = strconv.FormatUint(uint64(rawNext), 10) + // 4. Query with limit, next to provide batch, but no data in that range + rawNext := 1025 + nextTk := strconv.FormatUint(uint64(rawNext), 10) accountAssetInformationResourceLimitsTest(t, handlers, addr, acctData, model.AccountAssetsInformationParams{Limit: &limit, Next: &nextTk}, rawNext, totalAssetHoldings-rawNext, false) - // 6. Malformed address + // 5. Malformed address ctx, rec := newReq(t) err := handlers.AccountAssetsInformation(ctx, "", model.AccountAssetsInformationParams{}) require.NoError(t, err) require.Equal(t, 400, rec.Code) require.Equal(t, "{\"message\":\"failed to parse the address\"}\n", rec.Body.String()) - // 7. Unknown address (200 returned, just no asset data) + // 6. Unknown address (200 returned, just no asset data) unknownAddress := basics.Address{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff} accountAssetInformationResourceLimitsTest(t, handlers, unknownAddress, basics.AccountData{}, model.AccountAssetsInformationParams{}, 0, 0, false) - // 8a. Invalid limits - larger than configured max + // 7a. Invalid limits - larger than configured max ctx, rec = newReq(t) err = handlers.AccountAssetsInformation(ctx, addr.String(), model.AccountAssetsInformationParams{ Limit: func() *uint64 { @@ -525,7 +526,7 @@ func TestAccountAssetsInformation(t *testing.T) { require.Equal(t, 400, rec.Code) require.Equal(t, "{\"message\":\"limit 1001 exceeds max assets single batch limit 1000\"}\n", rec.Body.String()) - // 8b. Invalid limits - zero + // 7b. Invalid limits - zero ctx, rec = newReq(t) err = handlers.AccountAssetsInformation(ctx, addr.String(), model.AccountAssetsInformationParams{ Limit: func() *uint64 { diff --git a/ledger/acctupdates.go b/ledger/acctupdates.go index 4158e90709..3f12955666 100644 --- a/ledger/acctupdates.go +++ b/ledger/acctupdates.go @@ -341,8 +341,8 @@ func (au *accountUpdates) LookupResource(rnd basics.Round, addr basics.Address, return au.lookupResource(rnd, addr, aidx, ctype, true /* take lock */) } -func (au *accountUpdates) LookupAssetResources(rnd basics.Round, addr basics.Address, assetIDGT basics.AssetIndex, limit uint64) ([]ledgercore.AssetResourceWithIDs, basics.Round, error) { - return au.lookupAssetResources(rnd, addr, assetIDGT, limit, true /* take lock */) +func (au *accountUpdates) LookupAssetResources(addr basics.Address, assetIDGT basics.AssetIndex, limit uint64) ([]ledgercore.AssetResourceWithIDs, basics.Round, error) { + return au.lookupAssetResources(addr, assetIDGT, limit) } func (au *accountUpdates) LookupKv(rnd basics.Round, key string) ([]byte, error) { @@ -1212,88 +1212,53 @@ func (au *accountUpdates) lookupResource(rnd basics.Round, addr basics.Address, } } -func (au *accountUpdates) lookupAssetResources(rnd basics.Round, addr basics.Address, assetIDGT basics.AssetIndex, limit uint64, synchronized bool) (data []ledgercore.AssetResourceWithIDs, validThrough basics.Round, err error) { - needUnlock := false - if synchronized { - au.accountsMu.RLock() - needUnlock = true +// lookupAllResources returns all the resources for a given address, solely based on what is persisted to disk. It does not +// take into account any in-memory deltas; the round number returned is the latest round number that is known to the database. +func (au *accountUpdates) lookupAssetResources(addr basics.Address, assetIDGT basics.AssetIndex, limit uint64) (data []ledgercore.AssetResourceWithIDs, validThrough basics.Round, err error) { + // Look for resources on disk + persistedResources, resourceDbRound, err0 := au.accountsq.LookupLimitedResources(addr, basics.CreatableIndex(assetIDGT), limit, basics.AssetCreatable) + if err0 != nil { + return nil, basics.Round(0), err0 } - defer func() { - if needUnlock { - au.accountsMu.RUnlock() - } - }() - - for { - currentDbRound := au.cachedDBRound - - // This checks that the specified round is >= au.cachedDBRound - if not, it will return an error. - _, err = au.roundOffset(rnd) - if err != nil { - return - } - - if synchronized { - au.accountsMu.RUnlock() - needUnlock = false - } - - // Look for resources on disk - persistedResources, resourceDbRound, err0 := au.accountsq.LookupLimitedResources(addr, basics.CreatableIndex(assetIDGT), limit, basics.AssetCreatable) - if err0 != nil { - return nil, basics.Round(0), err0 - } - - if resourceDbRound == currentDbRound || len(persistedResources) == 0 { // db round will return 0 in this case - data = make([]ledgercore.AssetResourceWithIDs, 0, len(persistedResources)) - for _, pd := range persistedResources { - ah := pd.Data.GetAssetHolding() - - var arwi ledgercore.AssetResourceWithIDs - if !pd.Creator.IsZero() { - ap := pd.Data.GetAssetParams() - arwi = ledgercore.AssetResourceWithIDs{ - AssetID: basics.AssetIndex(pd.Aidx), - Creator: pd.Creator, + data = make([]ledgercore.AssetResourceWithIDs, 0, len(persistedResources)) + for _, pd := range persistedResources { + ah := pd.Data.GetAssetHolding() - AssetResource: ledgercore.AssetResource{ - AssetHolding: &ah, - AssetParams: &ap, - }, - } - } else { - arwi = ledgercore.AssetResourceWithIDs{ - AssetID: basics.AssetIndex(pd.Aidx), + var arwi ledgercore.AssetResourceWithIDs + if !pd.Creator.IsZero() { + ap := pd.Data.GetAssetParams() - AssetResource: ledgercore.AssetResource{ - AssetHolding: &ah, - }, - } - } + arwi = ledgercore.AssetResourceWithIDs{ + AssetID: basics.AssetIndex(pd.Aidx), + Creator: pd.Creator, - data = append(data, arwi) + AssetResource: ledgercore.AssetResource{ + AssetHolding: &ah, + AssetParams: &ap, + }, } - // We've found all the resources we could find for this address. - return data, currentDbRound, nil - } + } else { + arwi = ledgercore.AssetResourceWithIDs{ + AssetID: basics.AssetIndex(pd.Aidx), - if synchronized { - if resourceDbRound < currentDbRound { - au.log.Errorf("accountUpdates.lookupAssetResources: resource database round %d is behind in-memory round %d", resourceDbRound, currentDbRound) - return nil, basics.Round(0), &StaleDatabaseRoundError{databaseRound: resourceDbRound, memoryRound: currentDbRound} - } - au.accountsMu.RLock() - needUnlock = true - for currentDbRound >= au.cachedDBRound { - au.accountsReadCond.Wait() + AssetResource: ledgercore.AssetResource{ + AssetHolding: &ah, + }, } - } else { - // in non-sync mode, we don't wait since we already assume that we're synchronized. - au.log.Errorf("accountUpdates.lookupAssetResources: database round %d mismatching in-memory round %d", resourceDbRound, currentDbRound) - return nil, basics.Round(0), &MismatchingDatabaseRoundError{databaseRound: resourceDbRound, memoryRound: currentDbRound} } + + data = append(data, arwi) + } + // We've found all the resources we could find for this address. + currentDbRound := resourceDbRound + // The resourceDbRound will not be set if there are no persisted resources + if len(data) == 0 { + au.accountsMu.RLock() + currentDbRound = au.cachedDBRound + au.accountsMu.RUnlock() } + return data, currentDbRound, nil } func (au *accountUpdates) lookupStateDelta(rnd basics.Round) (ledgercore.StateDelta, error) { diff --git a/ledger/ledger.go b/ledger/ledger.go index b17c4d4dcb..2cc1b36ee1 100644 --- a/ledger/ledger.go +++ b/ledger/ledger.go @@ -584,8 +584,8 @@ func (l *Ledger) LookupAsset(rnd basics.Round, addr basics.Address, aidx basics. } // LookupAssets loads asset resources that match the request parameters from the ledger. -func (l *Ledger) LookupAssets(rnd basics.Round, addr basics.Address, assetIDGT basics.AssetIndex, limit uint64) ([]ledgercore.AssetResourceWithIDs, basics.Round, error) { - resources, lookupRound, err := l.accts.LookupAssetResources(rnd, addr, assetIDGT, limit) +func (l *Ledger) LookupAssets(addr basics.Address, assetIDGT basics.AssetIndex, limit uint64) ([]ledgercore.AssetResourceWithIDs, basics.Round, error) { + resources, lookupRound, err := l.accts.LookupAssetResources(addr, assetIDGT, limit) return resources, lookupRound, err } diff --git a/ledger/store/trackerdb/sqlitedriver/schema.go b/ledger/store/trackerdb/sqlitedriver/schema.go index eb17d1fbd7..d938ba180f 100644 --- a/ledger/store/trackerdb/sqlitedriver/schema.go +++ b/ledger/store/trackerdb/sqlitedriver/schema.go @@ -948,11 +948,23 @@ func accountsAddCreatableTypeColumn(ctx context.Context, e db.Executable, popula var creatableTypeOnResourcesRun bool err := e.QueryRow("SELECT 1 FROM pragma_table_info('resources') WHERE name='ctype'").Scan(&creatableTypeOnResourcesRun) if err == nil { - // Already exists. + // Check if any ctypes are invalid + var count uint64 + err0 := e.QueryRow("SELECT COUNT(*) FROM resources WHERE ctype NOT IN (0, 1)").Scan(&count) + if err0 != nil { + return err0 + } + if count > 0 { + // Invalid ctypes found, return an error + return fmt.Errorf("invalid ctypes found in resources table; database is corrupted and needs to be rebuilt") + } + // Column exists, no ctypes are invalid, no migration needed so return clean return nil } else if !errors.Is(err, sql.ErrNoRows) { return err - } // A sql.ErrNoRows error means the column does not exist, so we need to create it + } // A sql.ErrNoRows error means the column does not exist, so we need to create it/run the migration + + // If we reached here, a sql.ErrNoRows error was returned, so we need to create the column // Add ctype column createStmt := `ALTER TABLE resources ADD COLUMN ctype INTEGER NOT NULL DEFAULT -1` @@ -1019,6 +1031,8 @@ func accountsAddCreatableTypeColumn(ctx context.Context, e db.Executable, popula return err0 } } + + return rows.Err() } return nil diff --git a/ledger/store/trackerdb/sqlitedriver/sql.go b/ledger/store/trackerdb/sqlitedriver/sql.go index 623ba3a8a5..1befd06298 100644 --- a/ledger/store/trackerdb/sqlitedriver/sql.go +++ b/ledger/store/trackerdb/sqlitedriver/sql.go @@ -87,8 +87,25 @@ func AccountsInitDbQueries(q db.Queryable) (*accountsDbQueries, error) { return nil, err } - qs.lookupLimitedResourcesStmt, err = q.Prepare("SELECT ab.rowid, ar.rnd, r.aidx, ac.creator, r.data, cr.data FROM acctrounds ar JOIN accountbase ab ON ab.address = ? JOIN resources r ON r.addrid = ab.addrid LEFT JOIN assetcreators ac ON r.aidx = ac.asset LEFT JOIN " + - "accountbase cab ON ac.creator = cab.address LEFT JOIN resources cr ON cr.addrid = cab.addrid AND cr.aidx = r.aidx WHERE ar.id = 'acctbase' AND r.ctype = ? AND r.aidx > ? ORDER BY r.aidx ASC LIMIT ?") + qs.lookupLimitedResourcesStmt, err = q.Prepare( + `SELECT ab.rowid, + ar.rnd, + r.aidx, + ac.creator, + r.data, + cr.data + FROM acctrounds ar + JOIN accountbase ab ON ab.address = ? + JOIN resources r ON r.addrid = ab.addrid + LEFT JOIN assetcreators ac ON r.aidx = ac.asset + LEFT JOIN accountbase cab ON ac.creator = cab.address + LEFT JOIN resources cr ON cr.addrid = cab.addrid + AND cr.aidx = r.aidx + WHERE ar.id = 'acctbase' + AND r.ctype = ? + AND r.aidx > ? + ORDER BY r.aidx ASC + LIMIT ?`) if err != nil { return nil, err } @@ -469,9 +486,13 @@ func (qs *accountsDbQueries) LookupLimitedResources(addr basics.Address, minIdx return err } - // Update asset holding data in the creator resource data + // Since there is a creator, we want to return all of the asset params along with the asset holdings. + // The most simple way to do this is to set the necessary asset holding data on the creator resource data + // retrieved from the database. Note that this is unique way of setting resource flags, making this structure + // not suitable for use in other contexts (where the params would only be present colocated with the asset holding + // of the creator). crtResData.Amount = actResData.Amount - crtResData.Freeze = actResData.Freeze + crtResData.Frozen = actResData.Frozen crtResData.ResourceFlags = actResData.ResourceFlags creatorAddr := basics.Address{} From 778cadf52f77521a0e6a01993ed98ca91f45dac1 Mon Sep 17 00:00:00 2001 From: Gary Malouf <982483+gmalouf@users.noreply.github.com> Date: Thu, 2 May 2024 17:13:51 -0400 Subject: [PATCH 17/18] Basic exercise of goal account assetdetails in goal-account-asset.sh --- test/scripts/e2e_subs/goal-account-asset.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/test/scripts/e2e_subs/goal-account-asset.sh b/test/scripts/e2e_subs/goal-account-asset.sh index 9df881ca59..f01000b1d5 100755 --- a/test/scripts/e2e_subs/goal-account-asset.sh +++ b/test/scripts/e2e_subs/goal-account-asset.sh @@ -41,9 +41,17 @@ ${gcmd} asset optin --account ${ACCOUNTB} --assetid ${ASSET_D_ID} --signer ${ACC # displays held assets ${gcmd} account info -a ${ACCOUNTB} +# query account assets w/ details +${gcmd} account assetdetails -a ${ACCOUNTA} -l 2 -n 1004 +${gcmd} account assetdetails -a ${ACCOUNTB} + # delete one of the asset ${gcmd} asset destroy --assetid ${ASSET_B_ID} --creator ${ACCOUNTA} --signer ${ACCOUNTA} +# query account assets w/ details +${gcmd} account assetdetails -a ${ACCOUNTA} -l 2 -n 1004 +${gcmd} account assetdetails -a ${ACCOUNTB} + # check account info display RES=$(${gcmd} account info -a ${ACCOUNTB}) From 737c178b772c8ef790674661f848edc779a866f0 Mon Sep 17 00:00:00 2001 From: Gary <982483+gmalouf@users.noreply.github.com> Date: Fri, 3 May 2024 13:55:50 -0400 Subject: [PATCH 18/18] Update test/scripts/e2e_subs/goal-account-asset.sh Co-authored-by: Jason Paulos --- test/scripts/e2e_subs/goal-account-asset.sh | 85 +++++++++++++++++++-- 1 file changed, 79 insertions(+), 6 deletions(-) diff --git a/test/scripts/e2e_subs/goal-account-asset.sh b/test/scripts/e2e_subs/goal-account-asset.sh index f01000b1d5..3366838d9e 100755 --- a/test/scripts/e2e_subs/goal-account-asset.sh +++ b/test/scripts/e2e_subs/goal-account-asset.sh @@ -41,16 +41,89 @@ ${gcmd} asset optin --account ${ACCOUNTB} --assetid ${ASSET_D_ID} --signer ${ACC # displays held assets ${gcmd} account info -a ${ACCOUNTB} -# query account assets w/ details -${gcmd} account assetdetails -a ${ACCOUNTA} -l 2 -n 1004 -${gcmd} account assetdetails -a ${ACCOUNTB} +# wait a few rounds for the asset optins to get into the db, since the account asset info endpoint +# does not look at in memory deltas +${gcmd} clerk send -a 0 -f ${ACCOUNTA} -t ${ACCOUNTB} +${gcmd} clerk send -a 0 -f ${ACCOUNTA} -t ${ACCOUNTB} +${gcmd} clerk send -a 0 -f ${ACCOUNTA} -t ${ACCOUNTB} + +# query account assets w/ details, (1) +RES=$(${gcmd} account assetdetails -a ${ACCOUNTB}) +if [[ ${RES} != *"Account: ${ACCOUNTB}"* ]]; then + date '+goal-account-asset-test assetdetails (1) should be for correct account %Y%m%d_%H%M%S' + false +fi +if [[ ${RES} != *"Asset ID: ${ASSET_A_ID}"$'\n'" Amount: 0"* ]]; then + date '+goal-account-asset-test assetdetails (1) should contain asset A %Y%m%d_%H%M%S' + false +fi +if [[ ${RES} != *"Asset ID: ${ASSET_B_ID}"$'\n'" Amount: 0"* ]]; then + date '+goal-account-asset-test assetdetails (1) should contain asset B %Y%m%d_%H%M%S' + false +fi +if [[ ${RES} != *"Asset ID: ${ASSET_C_ID}"$'\n'" Amount: 0"* ]]; then + date '+goal-account-asset-test assetdetails (1) should contain asset C %Y%m%d_%H%M%S' + false +fi +if [[ ${RES} != *"Asset ID: ${ASSET_D_ID}"$'\n'" Amount: 0"* ]]; then + date '+goal-account-asset-test assetdetails (1) should contain asset D %Y%m%d_%H%M%S' + false +fi + +# query account assets w/ details, limit 2, next set to asset B, (2) +RES=$(${gcmd} account assetdetails -a ${ACCOUNTB} -l 2 -n ${ASSET_B_ID}) +if [[ ${RES} != *"Account: ${ACCOUNTB}"* ]]; then + date '+goal-account-asset-test assetdetails (2) should be for correct account %Y%m%d_%H%M%S' + false +fi +if [[ ${RES} == *"Asset ID: ${ASSET_A_ID}"* ]]; then + date '+goal-account-asset-test assetdetails (2) should not contain asset A %Y%m%d_%H%M%S' + false +fi +if [[ ${RES} == *"Asset ID: ${ASSET_B_ID}"* ]]; then + date '+goal-account-asset-test assetdetails (2) should not contain asset B %Y%m%d_%H%M%S' + false +fi +if [[ ${RES} != *"Asset ID: ${ASSET_C_ID}"$'\n'" Amount: 0"* ]]; then + date '+goal-account-asset-test assetdetails (2) should contain asset C %Y%m%d_%H%M%S' + false +fi +if [[ ${RES} != *"Asset ID: ${ASSET_D_ID}"$'\n'" Amount: 0"* ]]; then + date '+goal-account-asset-test assetdetails (2) should contain asset D %Y%m%d_%H%M%S' + false +fi # delete one of the asset ${gcmd} asset destroy --assetid ${ASSET_B_ID} --creator ${ACCOUNTA} --signer ${ACCOUNTA} -# query account assets w/ details -${gcmd} account assetdetails -a ${ACCOUNTA} -l 2 -n 1004 -${gcmd} account assetdetails -a ${ACCOUNTB} +# wait a few rounds for the deletion to get into the db +${gcmd} clerk send -a 0 -f ${ACCOUNTA} -t ${ACCOUNTB} +${gcmd} clerk send -a 0 -f ${ACCOUNTA} -t ${ACCOUNTB} +${gcmd} clerk send -a 0 -f ${ACCOUNTA} -t ${ACCOUNTB} + +# query account assets w/ details after deletion, (3) +RES=$(${gcmd} account assetdetails -a ${ACCOUNTB}) +if [[ ${RES} != *"Account: ${ACCOUNTB}"* ]]; then + date '+goal-account-asset-test assetdetails (3) should be for correct account %Y%m%d_%H%M%S' + false +fi +if [[ ${RES} != *"Asset ID: ${ASSET_A_ID}"$'\n'" Amount: 0"* ]]; then + date '+goal-account-asset-test assetdetails (3) should contain asset A %Y%m%d_%H%M%S' + false +fi +# ensure asset B is still present, but its params are unavailable +if [[ ${RES} != *"Asset ID: ${ASSET_B_ID}"$'\n'" Amount (without formatting): 0"* ]]; then + date '+goal-account-asset-test assetdetails (3) should contain asset B without asset params %Y%m%d_%H%M%S' + false +fi +if [[ ${RES} != *"Asset ID: ${ASSET_C_ID}"$'\n'" Amount: 0"* ]]; then + date '+goal-account-asset-test assetdetails (3) should contain asset C %Y%m%d_%H%M%S' + false +fi +if [[ ${RES} != *"Asset ID: ${ASSET_D_ID}"$'\n'" Amount: 0"* ]]; then + date '+goal-account-asset-test assetdetails (3) should contain asset D %Y%m%d_%H%M%S' + false +fi # check account info display RES=$(${gcmd} account info -a ${ACCOUNTB})