Skip to content

[P2P] KISS 2 - Peer discovery [Merge me after #520] - (Issues: #416, #429)#521

Merged
deblasis merged 241 commits intomainfrom
issue/416-kiss-peer-discovery-light
Feb 17, 2023
Merged

[P2P] KISS 2 - Peer discovery [Merge me after #520] - (Issues: #416, #429)#521
deblasis merged 241 commits intomainfrom
issue/416-kiss-peer-discovery-light

Conversation

@deblasis
Copy link
Copy Markdown
Contributor

@deblasis deblasis commented Feb 16, 2023

Description

This PR has been extracted from #491 and is, hopefully, more digestible from a code-review and scope point of view.

The main goal is to remove hardcoded nodes and move towards a more dynamic environment.

It's also highlighting the potential entry points for subsequent P2P work

The code leverages the abstractions added recently (currentHeightProvider and addressBookProvider) to fetch the data from an RPC endpoint.

Issue

Fixes #416
Fixes #429

Type of change

Please mark the relevant option(s):

  • New feature, functionality or library
  • Bug fix
  • Code health or cleanup
  • Major breaking change
  • Documentation
  • Other

List of changes

CLI

  • Updated CLI to use to source the address book and the current height from the RPC server leveraging the rpcAddressBookProvider and rpcCurrentHeightProvider respectively and the bus for dependency injection

P2P

  • Modules embed base_modules.IntegratableModule and base_modules.InterruptableModule for DRYness
  • Deprecated debugAddressBookProvider
  • Added rpcAddressBookProvider to source the address book from the RPC server
  • Leveraging bus for dependency injection of the addressBookProvider and currentHeightProvider
  • Deprecated debugCurrentHeightProvider
  • Added rpcCurrentHeightProvider to source the current height from the RPC server
  • Fixed raintree to use the currentHeightProvider instead of consensus (that was what we wanted to avoid in the first place)
  • Added getAddrBookDelta to calculate changes to the address book between heights and update the internal state and componentry accordingly
  • Reacting to ConsensusNewHeightEventType to update the address book
  • Updated tests

RPC

  • Updated RPC to expose the node's address book via GET /v1/p2p/staked_actors_address_book

Testing

  • make develop_test
  • LocalNet w/ all of the steps outlined in the README

Required Checklist

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have tested my changes using the available tooling
  • I have updated the corresponding CHANGELOG

If Applicable Checklist

  • I have updated the corresponding README(s); local and/or global
  • I have added tests that prove my fix is effective or that my feature works
  • I have added, or updated, mermaid.js diagrams in the corresponding README(s)
  • I have added, or updated, documentation and mermaid.js diagrams in shared/docs/* if I updated shared/*README(s)

@deblasis deblasis self-assigned this Feb 16, 2023
@deblasis deblasis added p2p P2P specific changes client work needed to interface with the node (rpc, cli, etc..) core Core infrastructure - protocol related labels Feb 16, 2023
@deblasis deblasis requested a review from Olshansk February 16, 2023 23:21
@deblasis deblasis changed the title [P2P] KISS - Peer discovery [Merge me after #520] - (Issues: #416, #429) [P2P] KISS 2 - Peer discovery [Merge me after #520] - (Issues: #416, #429) Feb 17, 2023
Copy link
Copy Markdown
Collaborator

@Olshansk Olshansk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left a couple comments (nothing blocking) but PTAL before merging! Again, 🙏 for splitting this!!!!

@@ -1,6 +1,6 @@
openapi: 3.0.3
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You need to run generate_cli_commands_docs so the docs are updated

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

generate_cli_commands_docs updates docs for the CLI. (this has to be ran in the PR that adds the non_interactive flag if I didn't do that already. Noted.

In here I have already ran make generate_rpc_openapi before adding the handlers for the new endpoint

Base automatically changed from issue/499-fsm to main February 17, 2023 10:20
@deblasis deblasis merged commit a90d766 into main Feb 17, 2023
@Olshansk Olshansk deleted the issue/416-kiss-peer-discovery-light branch February 17, 2023 18:51
deblasis added a commit that referenced this pull request Feb 17, 2023
… (#522)

## Description

This PR has been extracted from #491 and is, hopefully, more digestible
from a code-review and scope point of view.

## Issue

Fixes #490 

## Type of change

Please mark the relevant option(s):

- [x] New feature, functionality or library
- [ ] Bug fix
- [ ] Code health or cleanup
- [ ] Major breaking change
- [ ] Documentation
- [ ] Other <!-- add details here if it a different type of change -->

## List of changes

- When nodes are added/removed from the Kubernetes Localnet, we
stake/unstake them automatically
- We achieve the above by dogfooding our own CLI inside Kubernetes

## Testing

- [x] `make develop_test`
- [x]
[LocalNet](https://github.com/pokt-network/pocket/blob/main/docs/development/README.md)
w/ all of the steps outlined in the `README`


## Required Checklist

- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [x] I have tested my changes using the available tooling
- [x] I have updated the corresponding CHANGELOG

### If Applicable Checklist

- [ ] I have updated the corresponding README(s); local and/or global
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [ ] I have added, or updated,
[mermaid.js](https://mermaid-js.github.io) diagrams in the corresponding
README(s)
- [ ] I have added, or updated, documentation and
[mermaid.js](https://mermaid-js.github.io) diagrams in `shared/docs/*`
if I updated `shared/*`README(s)

---------

Signed-off-by: Alessandro De Blasis <alex@deblasis.net>
Co-authored-by: Dmitry Knyazev <okdas@users.noreply.github.com>
Co-authored-by: Daniel Olshansky <olshansky@pokt.network>
Co-authored-by: Dmitry K <okdas@pm.me>
Co-authored-by: Daniel Olshansky <olshansky.daniel@gmail.com>
bryanchriswhite added a commit that referenced this pull request Feb 20, 2023
* pokt/main:
  [Infra] KISS 3 - Cluster Manager [Merge me after #521] - (Issues: #490) (#522)
  Refactor/fix state sync logs (#515)
  [P2P] KISS 2 - Peer discovery [Merge me after #520] - (Issues: #416, #429) (#521)
  [Core] KISS 1 - Finite State Machine [Merge me first] - (Issue: #499) (#520)
  [CLI] Stake command bugfix (#518)
  [CLI] Cannot run make localnet_client_debug: Cannot initialise the keybase with the validator keys: Unable to find YAML file (#517)
  Fix the link shown by `make go_doc`
  Fixed duplicate GITHUB_WIKI tag
  [Documentation] Update Devlog Formatting (#512)
  [Docs & Bugs] Minor fixes post keybase changes (#513)
  [Utility] Foundational bugs, tests, code cleanup and improvements (1 / 2) (#503)
  [Tooling] Integrate Keybase w/ CLI (Issue #484 ) (#501)
  update devlog2.md
  update devlog2.md
  Update devlog1.md
bryanchriswhite added a commit that referenced this pull request Feb 20, 2023
* pokt/main:
  [Infra] KISS 3 - Cluster Manager [Merge me after #521] - (Issues: #490) (#522)
  Refactor/fix state sync logs (#515)
  [P2P] KISS 2 - Peer discovery [Merge me after #520] - (Issues: #416, #429) (#521)
  [Core] KISS 1 - Finite State Machine [Merge me first] - (Issue: #499) (#520)
  [CLI] Stake command bugfix (#518)
  [CLI] Cannot run make localnet_client_debug: Cannot initialise the keybase with the validator keys: Unable to find YAML file (#517)
  Fix the link shown by `make go_doc`
  Fixed duplicate GITHUB_WIKI tag
  [Documentation] Update Devlog Formatting (#512)
  [Docs & Bugs] Minor fixes post keybase changes (#513)
  [Utility] Foundational bugs, tests, code cleanup and improvements (1 / 2) (#503)
  [Tooling] Integrate Keybase w/ CLI (Issue #484 ) (#501)
  update devlog2.md
  update devlog2.md
  Update devlog1.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

client work needed to interface with the node (rpc, cli, etc..) core Core infrastructure - protocol related p2p P2P specific changes

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

[P2P] Refactor CreateWithProvider using the new bus based DI [P2P] Implement KISS peer discovery for LocalNet

3 participants