Pools
#188
Replies: 1 comment
-
Currently, the problem is announcements are only received by members if we use a direct ip4 address and they cannot be transferred through a relay. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Pools concept is to ensure we can group some members together. The pool size is right now 200, meaning each pool cannot exceed this size. If members of a pool is above this limit, automatically a replica of the pool is created for extra members as a separate pool but with similar properties.
When a pool is created, anyone can request to join that pool. But the requests must be approved by 50%+1 of current pool members.
We have an API on the blockchain that is used to request to join a pool: https://docs.fx.land/blockchain/Recipes/Pool#join
And an API that list current pools: https://docs.fx.land/blockchain/Recipes/Pool#pools
On start the blox calls an API that lists current members of the pool that blox is a member of and also the join requests of that pool: https://docs.fx.land/blockchain/Recipes/Pool#users
It then updates its members accordingly to know who is a member and who is waiting. It also checks if there are any awaiting members that needs to be accepted into the pool.
The current process is that, a user can see current pools and ask to join a pool. Then the blox starts announcing JoinPoolRequest announcement periodically with the topic poolID, and the current members who receive the announcement know about the request. We also added a polling mechanism to ensure join requests are seen even if announcements are not received, by which every few hours the current members call an API to list the pool join requests: https://docs.fx.land/blockchain/Recipes/Pool#pool-requests
The acceptance process is that current members Ping the requestor n times, and the ping time and success rate must meet the minimum. If so it votes true: https://docs.fx.land/blockchain/Recipes/Pool#vote
The requestor periodically calls the pool users API to see if the request is accepted or not yet. If the request is accepted the JoinPoolRequest announcement stops.
the validator of announcements only allow IExist announcement to be received by current members of the pool, and otherwise dropped. Also the JoinPoolRequest announcement is accepted by not members of the pool.
Beta Was this translation helpful? Give feedback.
All reactions