summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchris erway <chris.erway@algorand.com>2022-02-24 19:39:18 -0500
committerchris erway <chris.erway@algorand.com>2022-02-24 19:39:18 -0500
commita50feadae33a0b1b1ed12b1cb8c740b3a90eedd8 (patch)
tree4d52d3bab6b06b3dceeeddf374a8282ef0ee431b
parent97f60a7dd399758b3f79d11b2ae0f7334e07da61 (diff)
parent6ecb8aab6a8a7ae71963092cb3eb5eb4342e593a (diff)
Merge remote-tracking branch 'upstream/feature/unlimited-assets' into feature/unlimited-assets-api-split-accountresource
-rw-r--r--config/consensus.go46
-rw-r--r--config/localTemplate.go2
-rw-r--r--daemon/algod/api/algod.oas2.json4
-rw-r--r--daemon/algod/api/algod.oas3.yml64
-rw-r--r--daemon/algod/api/server/v2/generated/private/routes.go294
-rw-r--r--daemon/algod/api/server/v2/generated/private/types.go22
-rw-r--r--daemon/algod/api/server/v2/generated/routes.go248
-rw-r--r--daemon/algod/api/server/v2/generated/types.go22
-rw-r--r--daemon/algod/api/server/v2/handlers.go2
-rw-r--r--ledger/applications_test.go42
-rw-r--r--ledger/internal/eval.go6
-rw-r--r--ledger/ledgercore/statedelta.go9
-rw-r--r--ledger/persistedaccts_list.go6
-rw-r--r--ledger/persistedresources_list.go6
-rw-r--r--ledger/tracker.go2
-rw-r--r--protocol/consensus.go7
-rw-r--r--test/testdata/deployednettemplates/recipes/custom/configs/node.json2
-rw-r--r--test/testdata/deployednettemplates/recipes/custom/configs/nonPartNode.json1
-rw-r--r--test/testdata/deployednettemplates/recipes/scenario2/net.json40
-rw-r--r--test/testdata/deployednettemplates/recipes/scenario2/node.json1
-rw-r--r--test/testdata/deployednettemplates/recipes/scenario2/nonPartNode.json1
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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",
- "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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{
"gePHxSJnHEgSs4FTpUTKbHhuc9m4OcBIyXuEWA0UGT1CjIwDsNFOhAOT1yI8m3x5FSC58/enfmy0MAV/",
"Q9wh0Ho5GcFHlIaRMz7gn+Y5AHWOE/Ut1nHfwWEI41Ni2NwFzQ2bc6rUZpBegAwKr51wGGepfDAk1G5R",
"ANrr5UprshfSdVYTSk4e6LhYtwXi7QJFbAsU4ss9gGtcDd2oY6YeuMSHcHU/uHSvBUBHH9Fkn3Hvv53v",
- "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",
+ "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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 }"