diff options
author | chris erway <chris.erway@algorand.com> | 2022-02-24 19:39:18 -0500 |
---|---|---|
committer | chris erway <chris.erway@algorand.com> | 2022-02-24 19:39:18 -0500 |
commit | a50feadae33a0b1b1ed12b1cb8c740b3a90eedd8 (patch) | |
tree | 4d52d3bab6b06b3dceeeddf374a8282ef0ee431b | |
parent | 97f60a7dd399758b3f79d11b2ae0f7334e07da61 (diff) | |
parent | 6ecb8aab6a8a7ae71963092cb3eb5eb4342e593a (diff) |
Merge remote-tracking branch 'upstream/feature/unlimited-assets' into feature/unlimited-assets-api-split-accountresource
21 files changed, 450 insertions, 377 deletions
diff --git a/config/consensus.go b/config/consensus.go index 4a61c11df..79617a805 100644 --- a/config/consensus.go +++ b/config/consensus.go @@ -1083,38 +1083,46 @@ func initConsensusProtocols() { // v30 can be upgraded to v31, with an update delay of 7 days ( see calculation above ) v30.ApprovedUpgrades[protocol.ConsensusV31] = 140000 - // ConsensusFuture is used to test features that are implemented - // but not yet released in a production protocol version. - vFuture := v31 - vFuture.ApprovedUpgrades = map[protocol.ConsensusVersion]uint64{} - - // FilterTimeout for period 0 should take a new optimized, configured value, need to revisit this later - vFuture.AgreementFilterTimeoutPeriod0 = 4 * time.Second - - // Enable compact certificates. - vFuture.CompactCertRounds = 256 - vFuture.CompactCertTopVoters = 1024 * 1024 - vFuture.CompactCertVotersLookback = 16 - vFuture.CompactCertWeightThreshold = (1 << 32) * 30 / 100 - vFuture.CompactCertSecKQ = 128 + v32 := v31 + v32.ApprovedUpgrades = map[protocol.ConsensusVersion]uint64{} // Enable extended application storage; binaries that contain support for this // flag would already be restructuring their internal storage for extended // application storage, and therefore would not produce catchpoints and/or // catchpoint labels prior to this feature being enabled. - vFuture.EnableAccountDataResourceSeparation = true + v32.EnableAccountDataResourceSeparation = true // Remove limits on MinimumBalance - vFuture.MaximumMinimumBalance = 0 + v32.MaximumMinimumBalance = 0 // Remove limits on assets / account. - vFuture.MaxAssetsPerAccount = 0 + v32.MaxAssetsPerAccount = 0 // Remove limits on maximum number of apps a single account can create - vFuture.MaxAppsCreated = 0 + v32.MaxAppsCreated = 0 // Remove limits on maximum number of apps a single account can opt into - vFuture.MaxAppsOptedIn = 0 + v32.MaxAppsOptedIn = 0 + + Consensus[protocol.ConsensusV32] = v32 + + // v31 can be upgraded to v32, with an update delay of 7 days ( see calculation above ) + v31.ApprovedUpgrades[protocol.ConsensusV32] = 140000 + + // ConsensusFuture is used to test features that are implemented + // but not yet released in a production protocol version. + vFuture := v32 + vFuture.ApprovedUpgrades = map[protocol.ConsensusVersion]uint64{} + + // FilterTimeout for period 0 should take a new optimized, configured value, need to revisit this later + vFuture.AgreementFilterTimeoutPeriod0 = 4 * time.Second + + // Enable compact certificates. + vFuture.CompactCertRounds = 256 + vFuture.CompactCertTopVoters = 1024 * 1024 + vFuture.CompactCertVotersLookback = 16 + vFuture.CompactCertWeightThreshold = (1 << 32) * 30 / 100 + vFuture.CompactCertSecKQ = 128 Consensus[protocol.ConsensusFuture] = vFuture } diff --git a/config/localTemplate.go b/config/localTemplate.go index 92ff384d9..72f15fb69 100644 --- a/config/localTemplate.go +++ b/config/localTemplate.go @@ -432,7 +432,7 @@ type Local struct { RestConnectionsHardLimit uint64 `version[20]:"2048"` // MaxAccountsAPIResults limits the total number of assets and applications per account that will be - // provided by the REST API before returning a 413 Payload Too Large. Set zero for no limit. + // provided by the REST API before returning a 400 Bad Request. Set zero for no limit. MaxAccountsAPIResults uint64 `version[21]:"1000000"` } diff --git a/daemon/algod/api/algod.oas2.json b/daemon/algod/api/algod.oas2.json index 2c6949ca1..2e85ac9ab 100644 --- a/daemon/algod/api/algod.oas2.json +++ b/daemon/algod/api/algod.oas2.json @@ -186,7 +186,7 @@ "400": { "description": "Bad request", "schema": { - "$ref": "#/definitions/AccountErrorResponse" + "$ref": "#/definitions/AccountsErrorResponse" } }, "401": { @@ -2241,7 +2241,7 @@ } } }, - "AccountErrorResponse": { + "AccountsErrorResponse": { "description": "An error response for the AccountInformation endpoint, with optional information about limits that were exceeded.", "type": "object", "required": [ diff --git a/daemon/algod/api/algod.oas3.yml b/daemon/algod/api/algod.oas3.yml index 356398eb1..c2617a144 100644 --- a/daemon/algod/api/algod.oas3.yml +++ b/daemon/algod/api/algod.oas3.yml @@ -856,36 +856,6 @@ ], "type": "object" }, - "AccountErrorResponse": { - "description": "An error response for the AccountInformation endpoint, with optional information about limits that were exceeded.", - "properties": { - "data": { - "type": "string" - }, - "max-results": { - "type": "integer" - }, - "message": { - "type": "string" - }, - "total-apps-opted-in": { - "type": "integer" - }, - "total-assets-opted-in": { - "type": "integer" - }, - "total-created-apps": { - "type": "integer" - }, - "total-created-assets": { - "type": "integer" - } - }, - "required": [ - "message" - ], - "type": "object" - }, "AccountParticipation": { "description": "AccountParticipation describes the parameters used by this account in consensus protocol.", "properties": { @@ -945,6 +915,36 @@ ], "type": "object" }, + "AccountsErrorResponse": { + "description": "An error response for the AccountInformation endpoint, with optional information about limits that were exceeded.", + "properties": { + "data": { + "type": "string" + }, + "max-results": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "total-apps-opted-in": { + "type": "integer" + }, + "total-assets-opted-in": { + "type": "integer" + }, + "total-created-apps": { + "type": "integer" + }, + "total-created-assets": { + "type": "integer" + } + }, + "required": [ + "message" + ], + "type": "object" + }, "Application": { "description": "Application index and its parameters", "properties": { @@ -1819,12 +1819,12 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AccountErrorResponse" + "$ref": "#/components/schemas/AccountsErrorResponse" } }, "application/msgpack": { "schema": { - "$ref": "#/components/schemas/AccountErrorResponse" + "$ref": "#/components/schemas/AccountsErrorResponse" } } }, diff --git a/daemon/algod/api/server/v2/generated/private/routes.go b/daemon/algod/api/server/v2/generated/private/routes.go index bf1095701..b0da1ad54 100644 --- a/daemon/algod/api/server/v2/generated/private/routes.go +++ b/daemon/algod/api/server/v2/generated/private/routes.go @@ -312,153 +312,153 @@ func RegisterHandlers(router interface { var swaggerSpec = []string{ "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", - "/22nhra8sQAA", + "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", + "iJIpWb2xAAA=", } // GetSwagger returns the Swagger specification corresponding to the generated code diff --git a/daemon/algod/api/server/v2/generated/private/types.go b/daemon/algod/api/server/v2/generated/private/types.go index ee69c30a3..d61818406 100644 --- a/daemon/algod/api/server/v2/generated/private/types.go +++ b/daemon/algod/api/server/v2/generated/private/types.go @@ -94,17 +94,6 @@ type Account struct { TotalCreatedAssets uint64 `json:"total-created-assets"` } -// AccountErrorResponse defines model for AccountErrorResponse. -type AccountErrorResponse struct { - Data *string `json:"data,omitempty"` - MaxResults *uint64 `json:"max-results,omitempty"` - Message string `json:"message"` - TotalAppsOptedIn *uint64 `json:"total-apps-opted-in,omitempty"` - TotalAssetsOptedIn *uint64 `json:"total-assets-opted-in,omitempty"` - TotalCreatedApps *uint64 `json:"total-created-apps,omitempty"` - TotalCreatedAssets *uint64 `json:"total-created-assets,omitempty"` -} - // AccountParticipation defines model for AccountParticipation. type AccountParticipation struct { @@ -135,6 +124,17 @@ type AccountStateDelta struct { Delta StateDelta `json:"delta"` } +// AccountsErrorResponse defines model for AccountsErrorResponse. +type AccountsErrorResponse struct { + Data *string `json:"data,omitempty"` + MaxResults *uint64 `json:"max-results,omitempty"` + Message string `json:"message"` + TotalAppsOptedIn *uint64 `json:"total-apps-opted-in,omitempty"` + TotalAssetsOptedIn *uint64 `json:"total-assets-opted-in,omitempty"` + TotalCreatedApps *uint64 `json:"total-created-apps,omitempty"` + TotalCreatedAssets *uint64 `json:"total-created-assets,omitempty"` +} + // Application defines model for Application. type Application struct { diff --git a/daemon/algod/api/server/v2/generated/routes.go b/daemon/algod/api/server/v2/generated/routes.go index 856f69be9..205900044 100644 --- a/daemon/algod/api/server/v2/generated/routes.go +++ b/daemon/algod/api/server/v2/generated/routes.go @@ -809,130 +809,130 @@ var swaggerSpec = []string{ "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", } // GetSwagger returns the Swagger specification corresponding to the generated code diff --git a/daemon/algod/api/server/v2/generated/types.go b/daemon/algod/api/server/v2/generated/types.go index f367f85ea..c598439a8 100644 --- a/daemon/algod/api/server/v2/generated/types.go +++ b/daemon/algod/api/server/v2/generated/types.go @@ -94,17 +94,6 @@ type Account struct { TotalCreatedAssets uint64 `json:"total-created-assets"` } -// AccountErrorResponse defines model for AccountErrorResponse. -type AccountErrorResponse struct { - Data *string `json:"data,omitempty"` - MaxResults *uint64 `json:"max-results,omitempty"` - Message string `json:"message"` - TotalAppsOptedIn *uint64 `json:"total-apps-opted-in,omitempty"` - TotalAssetsOptedIn *uint64 `json:"total-assets-opted-in,omitempty"` - TotalCreatedApps *uint64 `json:"total-created-apps,omitempty"` - TotalCreatedAssets *uint64 `json:"total-created-assets,omitempty"` -} - // AccountParticipation defines model for AccountParticipation. type AccountParticipation struct { @@ -135,6 +124,17 @@ type AccountStateDelta struct { Delta StateDelta `json:"delta"` } +// AccountsErrorResponse defines model for AccountsErrorResponse. +type AccountsErrorResponse struct { + Data *string `json:"data,omitempty"` + MaxResults *uint64 `json:"max-results,omitempty"` + Message string `json:"message"` + TotalAppsOptedIn *uint64 `json:"total-apps-opted-in,omitempty"` + TotalAssetsOptedIn *uint64 `json:"total-assets-opted-in,omitempty"` + TotalCreatedApps *uint64 `json:"total-created-apps,omitempty"` + TotalCreatedAssets *uint64 `json:"total-created-assets,omitempty"` +} + // Application defines model for Application. type Application struct { diff --git a/daemon/algod/api/server/v2/handlers.go b/daemon/algod/api/server/v2/handlers.go index f4074887c..17963f46f 100644 --- a/daemon/algod/api/server/v2/handlers.go +++ b/daemon/algod/api/server/v2/handlers.go @@ -304,7 +304,7 @@ func (v2 *Handlers) AccountInformation(ctx echo.Context, address string, params totalResults := record.TotalAssets + record.TotalAssetParams + record.TotalAppLocalStates + record.TotalAppParams if totalResults > maxResults { v2.Log.Info("MaxAccountAPIResults limit %d exceeded, total results %d", maxResults, totalResults) - return ctx.JSON(http.StatusBadRequest, generated.AccountErrorResponse{ + return ctx.JSON(http.StatusBadRequest, generated.AccountsErrorResponse{ Message: "Result limit exceeded", MaxResults: &maxResults, TotalAssetsOptedIn: &record.TotalAssets, diff --git a/ledger/applications_test.go b/ledger/applications_test.go index defbbe019..1f643fb0f 100644 --- a/ledger/applications_test.go +++ b/ledger/applications_test.go @@ -134,18 +134,36 @@ return` a.Contains(genesisInitState.Accounts, userLocal) a.Contains(genesisInitState.Accounts, userLocal2) - expectedCreatorBase, err := hex.DecodeString("84a16101a162ce009d2290a16704a16b01") - a.NoError(err) - expectedCreatorResource, err := hex.DecodeString("85a171c45602200200012604056c6f63616c06676c6f62616c026c6b02676b3118221240003331192212400010311923124000022243311b221240001c361a00281240000a361a0029124000092243222a28664200032b29672343a172c40102a17501a17704a17903") - a.NoError(err) - expectedUserOptInBase, err := hex.DecodeString("84a16101a162ce00a02fd0a16701a16c01") - a.NoError(err) - expectedUserOptInResource, err := hex.DecodeString("81a16f01") - a.NoError(err) - expectedUserLocalBase, err := hex.DecodeString("84a16101a162ce00a33540a16701a16c01") - a.NoError(err) - expectedUserLocalResource, err := hex.DecodeString("82a16f01a17081a26c6b82a27462a56c6f63616ca2747401") - a.NoError(err) + var expectedCreatorBase, expectedCreatorResource, expectedUserOptInBase, expectedUserOptInResource, expectedUserLocalBase, expectedUserLocalResource []byte + // the difference between these encoded structure is the UpdateRound variable. This variable is not being set before + // the consensus upgrade, and affects only nodes that have been updated. + if proto.EnableAccountDataResourceSeparation { + expectedCreatorBase, err = hex.DecodeString("85a16101a162ce009d2290a16704a16b01a17a01") + a.NoError(err) + expectedCreatorResource, err = hex.DecodeString("86a171c45602200200012604056c6f63616c06676c6f62616c026c6b02676b3118221240003331192212400010311923124000022243311b221240001c361a00281240000a361a0029124000092243222a28664200032b29672343a172c40102a17501a17704a17903a17a01") + a.NoError(err) + expectedUserOptInBase, err = hex.DecodeString("85a16101a162ce00a02fd0a16701a16c01a17a02") + a.NoError(err) + expectedUserOptInResource, err = hex.DecodeString("82a16f01a17a02") + a.NoError(err) + expectedUserLocalBase, err = hex.DecodeString("85a16101a162ce00a33540a16701a16c01a17a04") + a.NoError(err) + expectedUserLocalResource, err = hex.DecodeString("83a16f01a17081a26c6b82a27462a56c6f63616ca2747401a17a04") + a.NoError(err) + } else { + expectedCreatorBase, err = hex.DecodeString("84a16101a162ce009d2290a16704a16b01") + a.NoError(err) + expectedCreatorResource, err = hex.DecodeString("85a171c45602200200012604056c6f63616c06676c6f62616c026c6b02676b3118221240003331192212400010311923124000022243311b221240001c361a00281240000a361a0029124000092243222a28664200032b29672343a172c40102a17501a17704a17903") + a.NoError(err) + expectedUserOptInBase, err = hex.DecodeString("84a16101a162ce00a02fd0a16701a16c01") + a.NoError(err) + expectedUserOptInResource, err = hex.DecodeString("81a16f01") + a.NoError(err) + expectedUserLocalBase, err = hex.DecodeString("84a16101a162ce00a33540a16701a16c01") + a.NoError(err) + expectedUserLocalResource, err = hex.DecodeString("82a16f01a17081a26c6b82a27462a56c6f63616ca2747401") + a.NoError(err) + } cfg := config.GetDefaultLocal() l, err := OpenLedger(logging.Base(), "TestAppAccountData", true, genesisInitState, cfg) diff --git a/ledger/internal/eval.go b/ledger/internal/eval.go index f8bb0a5fd..595a12069 100644 --- a/ledger/internal/eval.go +++ b/ledger/internal/eval.go @@ -49,8 +49,10 @@ type LedgerForCowBase interface { // ErrRoundZero is self-explanatory var ErrRoundZero = errors.New("cannot start evaluator for round 0") -// ErrNotInCowCache is returned when a lookup method requests a cached value, but it can't be found -var ErrNotInCowCache = errors.New("can't find object in cow caches") +// ErrNotInCowCache is returned when a lookup method requests a cached value, but it can't be found. +// the error is always being invoked by the roundCowBase object, but it would typically propage upstream +// through the roundCowState as a generic "missing object in cache". +var ErrNotInCowCache = errors.New("can't find object in cow cache") // averageEncodedTxnSizeHint is an estimation for the encoded transaction size // which is used for preallocating memory upfront in the payset. Preallocating diff --git a/ledger/ledgercore/statedelta.go b/ledger/ledgercore/statedelta.go index 628c557ca..7bea4e833 100644 --- a/ledger/ledgercore/statedelta.go +++ b/ledger/ledgercore/statedelta.go @@ -149,9 +149,14 @@ type AssetResourceRecord struct { } // AccountDeltas stores ordered accounts and allows fast lookup by address +// One key design aspect here was to ensure that we're able to access the written +// deltas in a deterministic order, while maintaining O(1) lookup. In order to +// do that, each of the arrays here is constructed as a pair of (slice, map). +// The map would point the address/address+creatable id onto the index of the +// element within the slice. type AccountDeltas struct { - // Actual data. If an account is deleted, `accts` contains a balance record - // with empty `AccountData`. + // Actual data. If an account is deleted, `accts` contains the NewBalanceRecord + // with an empty `AccountData` and a populated `Addr`. accts []NewBalanceRecord // cache for addr to deltas index resolution acctsCache map[basics.Address]int diff --git a/ledger/persistedaccts_list.go b/ledger/persistedaccts_list.go index f385af5f0..de8c8380f 100644 --- a/ledger/persistedaccts_list.go +++ b/ledger/persistedaccts_list.go @@ -44,7 +44,7 @@ func newPersistedAccountList() *persistedAccountDataList { return l } -func (l *persistedAccountDataList) inserNodeToFreeList(otherNode *persistedAccountDataListNode) { +func (l *persistedAccountDataList) insertNodeToFreeList(otherNode *persistedAccountDataListNode) { otherNode.next = l.freeList.next otherNode.prev = nil otherNode.Value = nil @@ -67,7 +67,7 @@ func (l *persistedAccountDataList) allocateFreeNodes(numAllocs int) *persistedAc return l } for i := 0; i < numAllocs; i++ { - l.inserNodeToFreeList(new(persistedAccountDataListNode)) + l.insertNodeToFreeList(new(persistedAccountDataListNode)) } return l @@ -95,7 +95,7 @@ func (l *persistedAccountDataList) remove(e *persistedAccountDataListNode) { e.next = nil // avoid memory leaks e.prev = nil // avoid memory leaks - l.inserNodeToFreeList(e) + l.insertNodeToFreeList(e) } // pushFront inserts a new element e with value v at the front of list l and returns e. diff --git a/ledger/persistedresources_list.go b/ledger/persistedresources_list.go index 82016f5b3..57b0cdc44 100644 --- a/ledger/persistedresources_list.go +++ b/ledger/persistedresources_list.go @@ -44,7 +44,7 @@ func newPersistedResourcesList() *persistedResourcesDataList { return l } -func (l *persistedResourcesDataList) inserNodeToFreeList(otherNode *persistedResourcesDataListNode) { +func (l *persistedResourcesDataList) insertNodeToFreeList(otherNode *persistedResourcesDataListNode) { otherNode.next = l.freeList.next otherNode.prev = nil otherNode.Value = nil @@ -67,7 +67,7 @@ func (l *persistedResourcesDataList) allocateFreeNodes(numAllocs int) *persisted return l } for i := 0; i < numAllocs; i++ { - l.inserNodeToFreeList(new(persistedResourcesDataListNode)) + l.insertNodeToFreeList(new(persistedResourcesDataListNode)) } return l @@ -94,7 +94,7 @@ func (l *persistedResourcesDataList) remove(e *persistedResourcesDataListNode) { e.next = nil // avoid memory leaks e.prev = nil // avoid memory leaks - l.inserNodeToFreeList(e) + l.insertNodeToFreeList(e) } // pushFront inserts a new element e with value v at the front of list l and returns e. diff --git a/ledger/tracker.go b/ledger/tracker.go index 4a3fc970f..ece28a79e 100644 --- a/ledger/tracker.go +++ b/ledger/tracker.go @@ -525,7 +525,7 @@ func (tr *trackerRegistry) initializeTrackerCaches(l ledgerForTracker) (err erro if lastBalancesRound < lastestBlockRound { accLedgerEval.prevHeader, err = l.BlockHdr(lastBalancesRound) if err != nil { - return fmt.Errorf("unalbe to load block header %d : %w", lastBalancesRound, err) + return fmt.Errorf("unable to load block header %d : %w", lastBalancesRound, err) } } diff --git a/protocol/consensus.go b/protocol/consensus.go index 7b59ddcea..e37f2dbe6 100644 --- a/protocol/consensus.go +++ b/protocol/consensus.go @@ -171,6 +171,11 @@ const ConsensusV31 = ConsensusVersion( "https://github.com/algorandfoundation/specs/tree/85e6db1fdbdef00aa232c75199e10dc5fe9498f6", ) +// ConsensusV32 enables the unlimited assets. +const ConsensusV32 = ConsensusVersion( + "https://github.com/algorandfoundation/specs/tree/d5ac876d7ede07367dbaa26e149aa42589aac1f7", +) + // ConsensusFuture is a protocol that should not appear in any production // network, but is used to test features before they are released. const ConsensusFuture = ConsensusVersion( @@ -183,7 +188,7 @@ const ConsensusFuture = ConsensusVersion( // ConsensusCurrentVersion is the latest version and should be used // when a specific version is not provided. -const ConsensusCurrentVersion = ConsensusV31 +const ConsensusCurrentVersion = ConsensusV32 // Error is used to indicate that an unsupported protocol has been detected. type Error ConsensusVersion diff --git a/test/testdata/deployednettemplates/recipes/custom/configs/node.json b/test/testdata/deployednettemplates/recipes/custom/configs/node.json index f9b05a87f..4cfd52b5c 100644 --- a/test/testdata/deployednettemplates/recipes/custom/configs/node.json +++ b/test/testdata/deployednettemplates/recipes/custom/configs/node.json @@ -1,5 +1,4 @@ { - "NetAddress": "{{NetworkPort}}", "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableBlockStats": false, @@ -10,7 +9,6 @@ "ConfigJSONOverride": "{ \"TxPoolExponentialIncreaseFactor\": 1, \"DNSBootstrapID\": \"<network>.algodev.network\", \"DeadlockDetection\": -1, \"PeerPingPeriodSeconds\": 30, \"BaseLoggerDebugLevel\": 4, \"EnableProfiler\": true, \"CadaverSizeTarget\": 0 }", "AltConfigs": [ { - "NetAddress": "{{NetworkPort}}", "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableBlockStats": true, diff --git a/test/testdata/deployednettemplates/recipes/custom/configs/nonPartNode.json b/test/testdata/deployednettemplates/recipes/custom/configs/nonPartNode.json index 0e2287743..5b0a52d9d 100644 --- a/test/testdata/deployednettemplates/recipes/custom/configs/nonPartNode.json +++ b/test/testdata/deployednettemplates/recipes/custom/configs/nonPartNode.json @@ -1,5 +1,4 @@ { - "NetAddress": "{{NetworkPort}}", "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "ConfigJSONOverride": "{ \"TxPoolExponentialIncreaseFactor\": 1, \"DNSBootstrapID\": \"<network>.algodev.network\", \"DeadlockDetection\": -1, \"BaseLoggerDebugLevel\": 4, \"CadaverSizeTarget\": 0 }" diff --git a/test/testdata/deployednettemplates/recipes/scenario2/net.json b/test/testdata/deployednettemplates/recipes/scenario2/net.json index e816dfd04..4c1c0d6c2 100644 --- a/test/testdata/deployednettemplates/recipes/scenario2/net.json +++ b/test/testdata/deployednettemplates/recipes/scenario2/net.json @@ -416,6 +416,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -527,6 +528,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -638,6 +640,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -749,6 +752,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -860,6 +864,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -971,6 +976,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -1082,6 +1088,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -1193,6 +1200,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -1304,6 +1312,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -1415,6 +1424,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -1526,6 +1536,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -1637,6 +1648,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -1748,6 +1760,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -1859,6 +1872,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -1970,6 +1984,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -2081,6 +2096,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -2192,6 +2208,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -2303,6 +2320,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -2414,6 +2432,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -2525,6 +2544,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -2636,6 +2656,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -2747,6 +2768,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -2858,6 +2880,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -2969,6 +2992,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -3080,6 +3104,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -3191,6 +3216,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -3302,6 +3328,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -3413,6 +3440,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -3524,6 +3552,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -3635,6 +3664,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -3746,6 +3776,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -3857,6 +3888,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -3968,6 +4000,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -4079,6 +4112,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -4190,6 +4224,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -4301,6 +4336,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -4412,6 +4448,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -4523,6 +4560,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -4634,6 +4672,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", @@ -4745,6 +4784,7 @@ "ParticipationOnly": false } ], + "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableTelemetry": true, "TelemetryURI": "{{TelemetryURI}}", diff --git a/test/testdata/deployednettemplates/recipes/scenario2/node.json b/test/testdata/deployednettemplates/recipes/scenario2/node.json index a5b72567e..7b505bb21 100644 --- a/test/testdata/deployednettemplates/recipes/scenario2/node.json +++ b/test/testdata/deployednettemplates/recipes/scenario2/node.json @@ -1,5 +1,4 @@ { - "NetAddress": "{{NetworkPort}}", "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "EnableBlockStats": true, diff --git a/test/testdata/deployednettemplates/recipes/scenario2/nonPartNode.json b/test/testdata/deployednettemplates/recipes/scenario2/nonPartNode.json index 0e2287743..5b0a52d9d 100644 --- a/test/testdata/deployednettemplates/recipes/scenario2/nonPartNode.json +++ b/test/testdata/deployednettemplates/recipes/scenario2/nonPartNode.json @@ -1,5 +1,4 @@ { - "NetAddress": "{{NetworkPort}}", "APIEndpoint": "{{APIEndpoint}}", "APIToken": "{{APIToken}}", "ConfigJSONOverride": "{ \"TxPoolExponentialIncreaseFactor\": 1, \"DNSBootstrapID\": \"<network>.algodev.network\", \"DeadlockDetection\": -1, \"BaseLoggerDebugLevel\": 4, \"CadaverSizeTarget\": 0 }" |