Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Backport 6155 - Upgrade to support 8.0 Mio ATXs #6123

Merged
merged 2 commits into from
Jul 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,14 @@ See [RELEASE](./RELEASE.md) for workflow instructions.

* [#5793](https://github.com/spacemeshos/go-spacemesh/pull/5793) Reduced hare committee 8x from 400 to 50 to decrease
network traffic caused by Hare.

* [#6099](https://github.com/spacemeshos/go-spacemesh/pull/6099) Adds new metrics to the API to provide insights into
the performance and behavior of the node's APIs.

* [#6115](https://github.com/spacemeshos/go-spacemesh/pull/6115) Increase the number of supported ATXs to 8.0 Mio.

### Features

* [#6112](https://github.com/spacemeshos/go-spacemesh/pull/6112) Adds vesting, vault, and drain vault contents to the
v2alpha2 Transaction API. Fixes the 'unspecified' transaction type.

Expand Down
2 changes: 1 addition & 1 deletion common/types/activation.go
Original file line number Diff line number Diff line change
Expand Up @@ -396,7 +396,7 @@ func ATXIDsToHashes(ids []ATXID) []Hash32 {

type EpochActiveSet struct {
Epoch EpochID
Set []ATXID `scale:"max=7000000"` // to be in line with `EpochData` in fetch/wire_types.go
Set []ATXID `scale:"max=8000000"` // to be in line with `EpochData` in fetch/wire_types.go
}

var MaxEpochActiveSetSize = scale.MustGetMaxElements[EpochActiveSet]("Set")
Expand Down
4 changes: 2 additions & 2 deletions common/types/activation_scale.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 5 additions & 5 deletions common/types/block.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,14 +77,14 @@ type InnerBlock struct {
// In this case they will get all 50 available slots in all 4032 layers of the epoch.
// Additionally every other identity on the network that successfully published an ATX will get 1 slot.
//
// If we expect 7.0 Mio ATXs that would be a total of 7.0 Mio + 50 * 4032 = 7 201 600 slots.
// If we expect 8.0 Mio ATXs that would be a total of 8.0 Mio + 50 * 4032 = 8 201 600 slots.
// Since these are randomly distributed across the epoch, we can expect an average of n * p =
// 7 201 600 / 4032 = 1786.1 rewards in a block with a standard deviation of sqrt(n * p * (1 - p)) =
// sqrt(7 201 600 * 1/4032 * 4031/4032) = 42.3
// 8 201 600 / 4032 = 2034.1 rewards in a block with a standard deviation of sqrt(n * p * (1 - p)) =
// sqrt(8 201 600 * 1/4032 * 4031/4032) = 45.1
//
// This means that we can expect a maximum of 1786.1 + 6*42.3 = 2039.7 rewards per block with
// This means that we can expect a maximum of 2034.1 + 6*45.1 = 2304.7 rewards per block with
// > 99.9997% probability.
Rewards []AnyReward `scale:"max=2050"`
Rewards []AnyReward `scale:"max=2350"`
TxIDs []TransactionID `scale:"max=100000"`
}

Expand Down
4 changes: 2 additions & 2 deletions common/types/block_scale.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 8 additions & 8 deletions fetch/wire_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ type RequestMessage struct {
type ResponseMessage struct {
Hash types.Hash32
// keep in line with limit of Response.Data in `p2p/server/server.go`
Data []byte `scale:"max=235929600"` // 225 MiB > 7.0 mio ATX * 32 bytes per ID
Data []byte `scale:"max=272629760"` // 260 MiB > 8.0 mio ATX * 32 bytes per ID
}

// RequestBatch is a batch of requests and a hash of all requests as ID.
Expand Down Expand Up @@ -116,7 +116,7 @@ type MeshHashes struct {
}

type MaliciousIDs struct {
NodeIDs []types.NodeID `scale:"max=7000000"` // to be in line with `EpochData.AtxIDs` below
NodeIDs []types.NodeID `scale:"max=8000000"` // to be in line with `EpochData.AtxIDs` below
}

type EpochData struct {
Expand All @@ -128,7 +128,7 @@ type EpochData struct {
// - the size of `Rewards` in the type `InnerBlock` in common/types/block.go
// - the size of `Ballots` in the type `LayerData` below
// - the size of `Proposals` in the type `Value` in hare3/types.go
AtxIDs []types.ATXID `scale:"max=7000000"`
AtxIDs []types.ATXID `scale:"max=8000000"`
}

// LayerData is the data response for a given layer ID.
Expand All @@ -139,14 +139,14 @@ type LayerData struct {
// In this case they will get all 50 available slots in all 4032 layers of the epoch.
// Additionally every other identity on the network that successfully published an ATX will get 1 slot.
//
// If we expect 7.0 Mio ATXs that would be a total of 7.0 Mio + 50 * 4032 = 7 201 600 slots.
// If we expect 8.0 Mio ATXs that would be a total of 8.0 Mio + 50 * 4032 = 8 201 600 slots.
// Since these are randomly distributed across the epoch, we can expect an average of n * p =
// 7 201 600 / 4032 = 1786.1 ballots in a layer with a standard deviation of sqrt(n * p * (1 - p)) =
// sqrt(7 201 600 * 1/4032 * 4031/4032) = 42.3
// 8 201 600 / 4032 = 2034.1 ballots in a layer with a standard deviation of sqrt(n * p * (1 - p)) =
// sqrt(8 201 600 * 1/4032 * 4031/4032) = 45.1
//
// This means that we can expect a maximum of 1786.1 + 6*42.3 = 2039.7 ballots per layer with
// This means that we can expect a maximum of 2034.1 + 6*45.1 = 2304.7 ballots per layer with
// > 99.9997% probability.
Ballots []types.BallotID `scale:"max=2050"`
Ballots []types.BallotID `scale:"max=2350"`
}

type OpinionRequest struct {
Expand Down
16 changes: 8 additions & 8 deletions fetch/wire_types_scale.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 5 additions & 5 deletions hare3/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,14 +82,14 @@ type Value struct {
// In this case they will get all 50 available slots in all 4032 layers of the epoch.
// Additionally every other identity on the network that successfully published an ATX will get 1 slot.
//
// If we expect 7.0 Mio ATXs that would be a total of 7.0 Mio + 50 * 4032 = 7 201 600 slots.
// If we expect 7.0 Mio ATXs that would be a total of 7.0 Mio + 50 * 4032 = 8 201 600 slots.
// Since these are randomly distributed across the epoch, we can expect an average of n * p =
// 7 201 600 / 4032 = 1786.1 eligibilities in a layer with a standard deviation of sqrt(n * p * (1 - p)) =
// sqrt(7 201 600 * 1/4032 * 4031/4032) = 42.3
// 8 201 600 / 4032 = 2034.1 eligibilities in a layer with a standard deviation of sqrt(n * p * (1 - p)) =
// sqrt(8 201 600 * 1/4032 * 4031/4032) = 45.1
//
// This means that we can expect a maximum of 1786.1 + 6*42.3 = 2039.7 eligibilities in a layer with
// This means that we can expect a maximum of 2034.1 + 6*45.1 = 2304.7 eligibilities in a layer with
// > 99.9997% probability.
Proposals []types.ProposalID `scale:"max=2050"`
Proposals []types.ProposalID `scale:"max=2350"`
// Reference is set in messages for commit and notify rounds.
Reference *types.Hash32
}
Expand Down
4 changes: 2 additions & 2 deletions hare3/types_scale.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading