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

Multiple post services per node - multiple ATX #261

Closed
6 tasks done
pigmej opened this issue Sep 12, 2023 · 4 comments
Closed
6 tasks done

Multiple post services per node - multiple ATX #261

pigmej opened this issue Sep 12, 2023 · 4 comments

Comments

@pigmej
Copy link
Member

pigmej commented Sep 12, 2023

Motivation

To support:

  • multiple drives - one POST service per drive
  • lower needs of maintenance of multiple go-spacemesh nodes

We need to support multiple post services per node.

This epic describes the state with supporting multiple keys in single go-spacemesh instance, there is separate discussion with research how we could make protocol changes to use single consensus key, single atx but multiple niposts.

Tasks

After #259 is completed (or in an acceptable enough state) we will need the following:

Details are in the tasks already.

@pigmej pigmej changed the title Multiple post services per node Multiple post services per node - multiple ATX Sep 12, 2023
@HVNC1
Copy link

HVNC1 commented Sep 12, 2023

a single ath carries the risk of losing rewards for all post files in case of failure, while an ath for everyone seems safer at first glance

@HVNC1
Copy link

HVNC1 commented Sep 12, 2023

it would also be good to consider the balance of processor power if the files are of different sizes and for example start the phase using the CPU first for the largest files so that they have the most time to read proofs

@Stizerg
Copy link

Stizerg commented Sep 13, 2023

I will add my entire suggestion from https://discord.com/channels/623195163510046732/1151465823710494740

  1. Configurable delay for k2pow stage. If we know for how long the CPU will be busy by another node we can set it in config.
    e.g. "pow_delay": 3600
    ~
  2. We need each node to indicate what it's doing atm, it can be done a similar way as --filelock.
    For example, if we have 3 nodes:
    node1: 5TiB on e:
    node2: 4TiB on f:
    node3: 1TiB on e:
    ~
    node1 starts it poet gap's routine, it sets "pow_lock_node1"
    node2 and node3 are waiting (considering they have "pow_delay" set)
    node1 starts to read POS, releases "pow_lock_node1" and sets "read_lock_node1"
    node2 detects it and starts it's routine, setting up "pow_lock_node2"
    node3 is waiting
    node2 starts to read POS, releases "pow_lock_node2" and sets "read_lock_node2"
    node3 detects it and starts it's routine, setting up "pow_lock_node3"
    when node3 is ready to start reading POS it will wait for "read_lock_node1" to be released

Depending on configuration the logic can be different.

So, the target is to use resources of computer the most effective way.

@poszu poszu mentioned this issue Sep 15, 2023
7 tasks
bors bot pushed a commit to spacemeshos/go-spacemesh that referenced this issue Oct 18, 2023
## Motivation
Part of spacemeshos/pm#261
Closes #5088

## Changes
- beacon protocol driver supports registering new keys to participate in the protocol
- when a new epoch starts, the protocol selects active signers that will participate
- state is changed to contain the set of active protocol participants. A participant session consists of:
  * signer
  * VRF nonce
- weakcoin supports multiple participants. Each one publishes the same proposal.

## Test Plan
Existing unit-tests were extended to run beacon and weakcoin with multiple signers per node.


Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dmitry Shulyak <[email protected]>
Co-authored-by: Matthias Fasching <[email protected]>
bors bot pushed a commit to spacemeshos/go-spacemesh that referenced this issue Oct 18, 2023
## Motivation
Part of spacemeshos/pm#261
Closes #5088

## Changes
- beacon protocol driver supports registering new keys to participate in the protocol
- when a new epoch starts, the protocol selects active signers that will participate
- state is changed to contain the set of active protocol participants. A participant session consists of:
  * signer
  * VRF nonce
- weakcoin supports multiple participants. Each one publishes the same proposal.

## Test Plan
Existing unit-tests were extended to run beacon and weakcoin with multiple signers per node.


Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dmitry Shulyak <[email protected]>
Co-authored-by: Matthias Fasching <[email protected]>
@pigmej
Copy link
Member Author

pigmej commented Apr 9, 2024

This feature debuted with the 1.4 series.

There is a demo available at: https://github.com/spacemeshos/multiple_post_services_demo and docs at https://docs.spacemesh.io/docs/start/smesher/post_1n

The remaining functionality would be to dynamically reconfigure the identities: spacemeshos/go-spacemesh#5090

@pigmej pigmej closed this as completed Apr 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants