Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
241 commits
Select commit Hold shift + click to select a range
f7a82ba
tilt + PO + localnet
okdas Nov 12, 2022
62683a5
--wip-- [skip ci]
okdas Nov 12, 2022
67132eb
--wip-- [skip ci]
okdas Nov 15, 2022
764c722
observability stack
okdas Nov 19, 2022
c2c0fd5
--wip-- [skip ci]
okdas Nov 21, 2022
2960669
grafana is auto provisioned with observability stack
okdas Nov 22, 2022
1455a40
--wip-- [skip ci]
okdas Nov 29, 2022
ca9ebeb
stabilizing tilt
okdas Dec 6, 2022
1fd8bb1
--wip-- [skip ci]
okdas Dec 7, 2022
048947c
more changes to grafana, tilt and docs
okdas Dec 7, 2022
2fb9f04
more docs
okdas Dec 10, 2022
e66bd74
let tilt ignore the same stuff as git, so it wont get triggered by ve…
okdas Dec 10, 2022
cc95782
note about changing pocket-operator code
okdas Dec 10, 2022
5198b1d
Merge branch 'main' into dk-localnet-pocket-operator
okdas Dec 10, 2022
f0aa697
Update Makefile
okdas Dec 14, 2022
8b50310
Update Makefile
okdas Dec 14, 2022
52a44d7
Update Makefile
okdas Dec 14, 2022
846ba6c
requested changes so far
okdas Dec 14, 2022
558768e
more requested changes
okdas Dec 14, 2022
03f3ba3
Merge branch 'main' into dk-localnet-pocket-operator
okdas Dec 27, 2022
5b824af
some requested changes
okdas Dec 28, 2022
d53eded
Merge branch 'main' into dk-localnet-pocket-operator
okdas Jan 4, 2023
5225c3e
add mermaid diagram
okdas Jan 5, 2023
b2cb5af
clarify location of the config files
okdas Jan 5, 2023
80d790d
--wip-- [skip ci]
okdas Jan 5, 2023
c94cb4f
localnet without operator
okdas Jan 10, 2023
78f09da
Merge branch 'main' into dk-localnet-pocket-operator
okdas Jan 10, 2023
372bb6c
latest config
okdas Jan 11, 2023
b92bc03
Merge branch 'main' into dk-localnet-pocket-operator
okdas Jan 11, 2023
1b103d7
fully working operatorless localnet
okdas Jan 11, 2023
0f354d9
auto update now works too
okdas Jan 11, 2023
7631fd3
--wip-- [skip ci]
okdas Jan 12, 2023
1d57ceb
bump documentation
okdas Jan 14, 2023
ac40457
change config a bit
okdas Jan 14, 2023
06c8ef3
this is not needed anymore
okdas Jan 19, 2023
cba72f7
Merge branch 'main' into dk-localnet-pocket-operator
okdas Jan 19, 2023
a778f2c
can scale validators automatically
okdas Jan 20, 2023
2e47e2c
change keys
okdas Jan 28, 2023
fa24420
Merge branch 'main' into dk-localnet-pocket-operator
okdas Jan 28, 2023
ebd5dd8
also replace pubkeys
okdas Jan 28, 2023
defca3b
complete changing the keys // tests passed
okdas Jan 30, 2023
03e5a04
bring bck state hashes
okdas Jan 30, 2023
36b1e5f
Merge branch 'main' into dk-localnet-pocket-operator
okdas Jan 31, 2023
19d6ba4
wip
okdas Jan 31, 2023
fae2775
wip
okdas Jan 31, 2023
28c2ee0
add/change changelogs
okdas Jan 31, 2023
27d0daf
create localnet_config.yaml when it doesn exist
okdas Feb 1, 2023
294ae17
Updated gitinore for Tilt
Olshansk Jan 31, 2023
bc846f3
Made the Makefile help command work
Olshansk Feb 1, 2023
792f973
Renamed the readme file and fixed default formatting
Olshansk Feb 1, 2023
25a4a36
Update error messages
Olshansk Feb 1, 2023
cc96bf3
Update error messages
Olshansk Feb 1, 2023
8364117
WIP commit - review + removing $ everywhere
Olshansk Feb 1, 2023
1261079
Update all the documentation
Olshansk Feb 1, 2023
4c1fd86
feat(localnet): initcontainer to wait for postgres
deblasis Feb 2, 2023
f75fde2
feat(localnet): initcontainer to wait for postgres
deblasis Feb 2, 2023
cfca9c6
feat(localnet): cluster-manager POC
deblasis Feb 2, 2023
b46d2d3
also install helm
okdas Feb 2, 2023
f7e41fb
feat(crypto): ed25519
deblasis Feb 2, 2023
e0873d6
refactor(genesis): added accounts for all the validators in Localnet
deblasis Feb 2, 2023
e9689ab
refactor(localnet): renamed cluster-manager serviceAccount
deblasis Feb 2, 2023
23b2d9b
feat(localnet): cluster-manager validator keys from secret - WIP
deblasis Feb 2, 2023
2dc1bae
fix(utility): nil pointer fix
deblasis Feb 2, 2023
7188a2e
requested changes so far
okdas Feb 2, 2023
1bf5fd4
more requested changes
okdas Feb 3, 2023
54a7629
update links
okdas Feb 3, 2023
7ec2217
include demo
okdas Feb 3, 2023
1ac46b8
chore(docker-compose): renamed deployment to pocket-v1
deblasis Feb 3, 2023
e280594
feat(CLI): allowing non interactive stake and unstake
deblasis Feb 3, 2023
f0eaf43
feat(localnet): cluster-manager dogfoods the CLI to stake/unstake
deblasis Feb 3, 2023
fc7f167
feat(localnet): dogfooding CLI in cluster-manager
deblasis Feb 3, 2023
a920a5d
feat(makefile): localnet_db_cli
deblasis Feb 3, 2023
6237753
feat(utility): clearing mempool on resetToGenesis
deblasis Feb 3, 2023
841d90c
chore(go.mod): tidy
deblasis Feb 3, 2023
33a45cf
Update build/localnet/README.md
okdas Feb 3, 2023
469e67a
Update build/localnet/README.md
okdas Feb 3, 2023
a8df9d9
Update build/localnet/README.md
okdas Feb 3, 2023
5a5c042
Update build/localnet/README.md
okdas Feb 3, 2023
62561c6
Update build/localnet/Tiltfile
okdas Feb 3, 2023
46d3f74
Update build/localnet/README.md
okdas Feb 3, 2023
2135d26
Update build/localnet/README.md
okdas Feb 3, 2023
fe98bce
Update build/localnet/README.md
okdas Feb 3, 2023
1e59e9c
Update build/localnet/Tiltfile
okdas Feb 3, 2023
1c17e68
clarify postgres ports
okdas Feb 3, 2023
f3d083b
Merge branch 'main' into dk-localnet-pocket-operator
okdas Feb 3, 2023
8e864f3
fix changelogs
okdas Feb 3, 2023
93851be
oops, this got lost!
okdas Feb 3, 2023
4b8da0f
Merge remote-tracking branch 'upstream/dk-localnet-pocket-operator' i…
deblasis Feb 5, 2023
778c33d
refactor(localnet): updates from dima's branch
deblasis Feb 5, 2023
aea3359
feat(localnet): cli-client waits for v1-validator001 (target node)
deblasis Feb 5, 2023
61606f7
feat(localnet): accounts updated in genesis for localnet as well
deblasis Feb 5, 2023
104339a
fix(utility): logging error if ApplyTransaction fails...
deblasis Feb 5, 2023
18a6706
feat(consensus): NewHeightEvent
deblasis Feb 6, 2023
ce6b59a
Revert "feat(consensus): NewHeightEvent"
deblasis Feb 6, 2023
cc3c8c7
feat(consensus): NewHeightEvent
deblasis Feb 6, 2023
9a441a4
feat(consensus): resetToGenesis publishes NewHeightEvent
deblasis Feb 6, 2023
00d4d8c
feat(consensus): SetHeight publishes NewHeightEvent
deblasis Feb 6, 2023
d418dc5
refactor(shared): ModulesRegistry
deblasis Feb 6, 2023
347102e
fix(shared): module registration
deblasis Feb 6, 2023
cbd9213
fix(runtime): fixed tests
deblasis Feb 6, 2023
3f0aaeb
Merge remote-tracking branch 'upstream/main' into issue/416-kiss-peer…
deblasis Feb 6, 2023
c51fcfb
fix(utility): missing import
deblasis Feb 6, 2023
6e5e014
fix(bus): GetModulesRegistry implementation
deblasis Feb 7, 2023
ac8c3f9
refactor(rpc): github.com/deepmap/oapi-codegen/pkg/runtime import
deblasis Feb 7, 2023
0a9a7c7
feat(rpc): GET /v1/p2p/address_book implementation
deblasis Feb 7, 2023
0aaa652
feat(shared): baseModules -> DRY
deblasis Feb 7, 2023
e83dc10
fix(p2p): modulesRegistry mock config
deblasis Feb 7, 2023
8260e63
refactor(infra): passing RPC_HOST to debug client
deblasis Feb 7, 2023
fbf013e
feat(p2p): rpc addrbook_provider
deblasis Feb 7, 2023
3b74980
feat(p2p): rpc current_height_provider
deblasis Feb 7, 2023
7e2b809
feat(shared): generalized module options
deblasis Feb 7, 2023
e7b76fd
fix(p2p): raintree using currentHeightProvider
deblasis Feb 7, 2023
0aef8e2
fix(rpc): fixed openapi P2PStakedActorsResponse
deblasis Feb 7, 2023
596d754
refactor(runtime): exposed DefailtRPCPort
deblasis Feb 7, 2023
f840eed
fix(runtime): fixed bus in RuntimeManager
deblasis Feb 7, 2023
378e87b
refactor(cli): debug cli now sources addressbook remotely via RPC
deblasis Feb 7, 2023
00df050
Merge remote-tracking branch 'upstream/main' into issue/416-kiss-peer…
deblasis Feb 7, 2023
727b729
fix(cli): merge fix
deblasis Feb 7, 2023
de7c8c0
fix(rpc): merge fix
deblasis Feb 7, 2023
352c068
refactor(p2p): deprecated debugCurrentHeightProvider
deblasis Feb 7, 2023
18852ee
fix(p2p): fixed tests (mock config)
deblasis Feb 7, 2023
4331a9d
refactor(shared): simplified module registration
deblasis Feb 7, 2023
029fd17
chore(shared): linting
deblasis Feb 7, 2023
d1684cb
chore(shared): linting
deblasis Feb 7, 2023
00af4ac
refactor(cli): centralized not_interactive flag
deblasis Feb 7, 2023
9f5e35e
chore(cli): updated flag description
deblasis Feb 7, 2023
e84977b
refactor(cli): refactored broadcast
deblasis Feb 7, 2023
17137d2
feat(p2p): reacting to height changes => addrbook delta
deblasis Feb 7, 2023
59a0ea1
refactor(rpc): simplified module
deblasis Feb 7, 2023
7a89eec
feat(cluster-manager): wait for validator1
deblasis Feb 8, 2023
1a92565
feat(state_machine): node finite state machine WIP
deblasis Feb 8, 2023
0401e39
fix(state-machine): updated to consider serverMode as independent proc
deblasis Feb 8, 2023
36535ad
fix(cluster-manager): fix port
deblasis Feb 8, 2023
00adc0d
refactor(p2p): bootstrapping
deblasis Feb 8, 2023
a29c2bc
feat(pocket): override bootstrapnodes
deblasis Feb 8, 2023
e6cb404
refactor(rpc): rpcServer implements BaseIntegratableModule
deblasis Feb 8, 2023
3e2c538
fix(consensus): fixed tests (mock cfg)
deblasis Feb 8, 2023
622f4d3
fix(p2p): bus shadowing embed fix
deblasis Feb 8, 2023
8171a05
chore(state_machine): shadowing fix
deblasis Feb 8, 2023
7b4e7c4
fix(p2p): error checking on add/remove peer
deblasis Feb 8, 2023
d08082d
chore(shared): return err on HandleEvent
deblasis Feb 8, 2023
8eba0db
chore(shared): linting
deblasis Feb 8, 2023
4c92b09
docs(consensus): CHANGELOG + nit
deblasis Feb 8, 2023
3f37ba9
docs(p2p): CHANGELOG
deblasis Feb 8, 2023
41dd4a4
chore(p2p): typo
deblasis Feb 8, 2023
78eac4a
chore(cluster-manager): linting
deblasis Feb 9, 2023
a021202
chore(cluster-manager): linting exclusion for CLI
deblasis Feb 9, 2023
0ae1426
docs(shared): CHANGELOGs + nits
deblasis Feb 9, 2023
6d5ff55
docs(shared): CHANGELOGS + nits
deblasis Feb 9, 2023
d6a4a63
Merge remote-tracking branch 'upstream/main' into issue/416-kiss-peer…
deblasis Feb 9, 2023
aab3ecc
docs(state_machine): docs + nits
deblasis Feb 9, 2023
261b634
docs(shared): CHANGELOGs
deblasis Feb 9, 2023
4a7afd6
fix(state_machine): CHANGELOG version
deblasis Feb 9, 2023
e8ae3ad
docs(persistence): typo
deblasis Feb 9, 2023
2854dcb
chore(shared): linter nits
deblasis Feb 9, 2023
41b2bcf
chore(cluster-manager): nit
deblasis Feb 9, 2023
d4a63a8
Merge remote-tracking branch 'upstream/main' into issue/416-kiss-peer…
deblasis Feb 10, 2023
f488c35
fix(shared): processing module options
deblasis Feb 10, 2023
b8f67b6
refactor(shared): base modules in their own package
deblasis Feb 10, 2023
dcee5a8
docs(shared): dates in CHANGELOG
deblasis Feb 10, 2023
ad2e783
Update Makefile
deblasis Feb 12, 2023
ef818eb
Update app/client/cli/actor.go
deblasis Feb 12, 2023
11f8a7b
refactor(cli): injecting bus into CLI context
deblasis Feb 13, 2023
bcef6eb
refactor(cli): bus in cli context
deblasis Feb 13, 2023
143feaa
feat(shared): module Create with ModuleOptions
deblasis Feb 16, 2023
a046984
docs(shared): godoc for ModuleOption
deblasis Feb 16, 2023
82505e4
docs(shared): updated README
deblasis Feb 16, 2023
da9774b
feat(shared): base_modules
deblasis Feb 16, 2023
f784dab
fix(utility): logging error when ApplyTransaction fails
deblasis Feb 16, 2023
049023c
refactor(utility): implementing base_modules and options
deblasis Feb 16, 2023
a18ecf5
fix(utility): using logger in message_handler
deblasis Feb 16, 2023
e01c75c
docs(utility): changelog
deblasis Feb 16, 2023
142d53b
refactor(telemetry): implementing base_modules and options
deblasis Feb 16, 2023
3c84eae
docs(telemetry): changelog
deblasis Feb 16, 2023
4eed45a
feat(shared): ModulesRegistry interface
deblasis Feb 16, 2023
b094622
refactor(shared): updated bus interface to use ModuleRegistry
deblasis Feb 16, 2023
e6e8fe5
refactor(persistence): implementing base_modules and options
deblasis Feb 16, 2023
f8ed453
docs(persistence): changelog
deblasis Feb 16, 2023
2a21542
refactor(consensus): implementing base_modules and options
deblasis Feb 16, 2023
e70b308
refactor(logger): implementing base_modules and options
deblasis Feb 16, 2023
0d20ada
docs(logger): changelog
deblasis Feb 16, 2023
963212a
refactor(rpc): implementing base_modules and options
deblasis Feb 16, 2023
8871a3d
docs(rpc): changelog
deblasis Feb 16, 2023
8d50538
feat(runtime): ModulesRegistry implementation
deblasis Feb 16, 2023
5141f07
feat(p2p): implementing base_modules and options
deblasis Feb 16, 2023
1d98c9f
refactor(state_sync): implementing base_modules and options
deblasis Feb 16, 2023
f5f9777
refactor(runtime): bus uses ModulesRegistry and logger
deblasis Feb 16, 2023
4c5f50c
fix(runtime): StateMachine doesn't exist yet :)
deblasis Feb 16, 2023
7023ca0
refactor(runtime): errors referring ModulesRegistry
deblasis Feb 16, 2023
34f3d87
refactor(runtime): runtimeManager implements base IntegratableModule
deblasis Feb 16, 2023
74d012f
feat(state_machine): KISS FSM implementation
deblasis Feb 16, 2023
d697a7f
feat(shared): state_machine integration with node
deblasis Feb 16, 2023
8e89219
feat(shared): FSM states and events
deblasis Feb 16, 2023
c66a5c8
refactor(shared): messaging events
deblasis Feb 16, 2023
eb4174b
refactor(shared): state_machine interface
deblasis Feb 16, 2023
7b974a9
fix(runtime): removed bus from Manager, it's embedded
deblasis Feb 16, 2023
8a5de14
refactor(consensus): updated tests
deblasis Feb 16, 2023
3a71510
feat(consensus): publishing event on new height
deblasis Feb 16, 2023
a2e3348
refactor(leader_election): implementing base_modules and options
deblasis Feb 16, 2023
f006a1d
refactor(pacemaker): implementing base_modules and options
deblasis Feb 16, 2023
8cdc827
feat(consensus): sending events via SetHeight
deblasis Feb 16, 2023
5514fc3
docs(consensus): changelog
deblasis Feb 16, 2023
72f96d9
docs(shared): updated README
deblasis Feb 16, 2023
934fe00
chore(go.mod): tidy
deblasis Feb 16, 2023
9bf8b81
fix(p2p): fixes from backporting legacy functionality
deblasis Feb 16, 2023
724a326
docs(shared): changelogs
deblasis Feb 16, 2023
c0cdeac
feat(consensus): improved test resiliency
deblasis Feb 16, 2023
64bec6c
feat(Makefile): make localnet_db_cli
deblasis Feb 16, 2023
9bd11e3
fix(Makefile): fixed make go_lint
deblasis Feb 16, 2023
b02cdf1
feat(p2p): event handling
deblasis Feb 16, 2023
aa450db
refactor(p2p): refactored providers
deblasis Feb 16, 2023
9eddb29
feat(p2p): updated raintree to use currentHeightProvider
deblasis Feb 16, 2023
b96f60f
refactor(p2p): RemovePeerFromAddrBook
deblasis Feb 16, 2023
dfa80c6
refactor(p2p): providers from DI (bus)
deblasis Feb 16, 2023
e13f375
feat(p2p): addrbook_delta
deblasis Feb 16, 2023
dfabb4b
docs(p2p): changelog
deblasis Feb 16, 2023
0a78b70
feat(rpc): exposing staked_actors_addrbook via rpc
deblasis Feb 16, 2023
0a0ec29
feat(shared): crypto UnmarshalText for ed25519
deblasis Feb 16, 2023
1828aca
chore(runtime): GetRuntimeMgr last (grouping modules)
deblasis Feb 16, 2023
e5c93f7
chore(consensus): lint
deblasis Feb 16, 2023
312ba73
Merge remote-tracking branch 'upstream/issue/499-fsm' into issue/416-…
deblasis Feb 16, 2023
26d1b65
refactor(cli): using rpcprovider in debug commands
deblasis Feb 16, 2023
6c5444a
docs(cli): changelog
deblasis Feb 16, 2023
0c01bb4
refactor(runtime): updated defaults
deblasis Feb 16, 2023
91645e9
fix(runtime): configs
deblasis Feb 16, 2023
f160016
chore(go.mod): tidy
deblasis Feb 16, 2023
f9d9e68
fix(p2p): using defaults
deblasis Feb 16, 2023
464dca0
fix(p2p): event_handler return error fix
deblasis Feb 16, 2023
cfcee30
fix(cli): rpc host overriding
deblasis Feb 16, 2023
25910ab
refactor(cli): using cli context to pass the bus around
deblasis Feb 16, 2023
8af0a90
chore(cli): unused import 🧹
deblasis Feb 16, 2023
6baf43b
docs(shared): changelogs
deblasis Feb 16, 2023
facca64
Update app/client/cli/utils.go
deblasis Feb 17, 2023
1a32c58
Update p2p/providers/addrbook_provider/rpc/provider.go
deblasis Feb 17, 2023
b09edc2
Revert "Update app/client/cli/utils.go"
deblasis Feb 17, 2023
918c466
Merge branch 'issue/416-kiss-peer-discovery-light' of github.com:pokt…
deblasis Feb 17, 2023
c981eed
refactor(rpc): updated getProtocolActorGetter for readability
deblasis Feb 17, 2023
06bb8d9
refactor(p2p): style in providers
deblasis Feb 17, 2023
c305aa6
Merge remote-tracking branch 'upstream/main' into issue/416-kiss-peer…
deblasis Feb 17, 2023
f863e65
fix(consensus): typo
deblasis Feb 17, 2023
96c1e0e
chore(p2p): providers readability improvement
deblasis Feb 17, 2023
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
11 changes: 8 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ go_clean_deps: ## Runs `go mod tidy` && `go mod vendor`

.PHONY: go_lint
go_lint: ## Run all linters that are triggered by the CI pipeline
docker run -t --rm -v $(pwd):/app -w /app golangci/golangci-lint:v1.51.1 golangci-lint run -v
docker run -t --rm -v $(shell pwd):/app -w /app golangci/golangci-lint:v1.51.1 golangci-lint run -v --timeout 2m

.PHONY: gofmt
gofmt: ## Format all the .go files in the project in place.
Expand Down Expand Up @@ -463,11 +463,11 @@ localnet_up: ## Starts up a k8s LocalNet with all necessary dependencies (tl;dr

.PHONY: localnet_client_debug
localnet_client_debug: ## Opens a `client debug` cli to interact with blockchain (e.g. change pacemaker mode, reset to genesis, etc). Though the node binary updates automatiacally on every code change (i.e. hot reloads), if client is already open you need to re-run this command to execute freshly compiled binary.
kubectl exec -it deploy/pocket-v1-cli-client -- client debug
kubectl exec -it deploy/pocket-v1-cli-client --container pocket -- client debug

.PHONY: localnet_shell
localnet_shell: ## Opens a shell in the pod that has the `client` cli available. The binary updates automatically whenever the code changes (i.e. hot reloads).
kubectl exec -it deploy/pocket-v1-cli-client -- /bin/bash
kubectl exec -it deploy/pocket-v1-cli-client --container pocket -- /bin/bash

.PHONY: localnet_logs_validators
localnet_logs_validators: ## Outputs logs from all validators
Expand All @@ -482,6 +482,11 @@ localnet_down: ## Stops LocalNet and cleans up dependencies (tl;dr `tilt down` +
tilt down --file=build/localnet/Tiltfile
kubectl delete pvc --ignore-not-found=true data-dependencies-postgresql-0

.PHONY: localnet_db_cli
localnet_db_cli: ## Open a CLI to the local containerized postgres instancedb_cli:
echo "View schema by running 'SELECT schema_name FROM information_schema.schemata;'"
kubectl exec -it services/dependencies-postgresql -- bash -c "psql postgresql://postgres:LocalNetPassword@localhost"

.PHONY: check_cross_module_imports
check_cross_module_imports: ## Lists cross-module imports
$(eval exclude_common=--exclude=Makefile --exclude-dir=shared --exclude-dir=app --exclude-dir=runtime)
Expand Down
125 changes: 88 additions & 37 deletions app/client/cli/debug.go
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
package cli

import (
"fmt"
"os"

"github.com/manifoldco/promptui"
"github.com/pokt-network/pocket/logger"
"github.com/pokt-network/pocket/p2p"
debugABP "github.com/pokt-network/pocket/p2p/providers/addrbook_provider/debug"
debugCHP "github.com/pokt-network/pocket/p2p/providers/current_height_provider/debug"
"github.com/pokt-network/pocket/p2p/providers/addrbook_provider"
rpcABP "github.com/pokt-network/pocket/p2p/providers/addrbook_provider/rpc"
"github.com/pokt-network/pocket/p2p/providers/current_height_provider"
rpcCHP "github.com/pokt-network/pocket/p2p/providers/current_height_provider/rpc"
"github.com/pokt-network/pocket/p2p/types"
"github.com/pokt-network/pocket/runtime"
coreTypes "github.com/pokt-network/pocket/shared/core/types"
pocketCrypto "github.com/pokt-network/pocket/shared/crypto"
"github.com/pokt-network/pocket/runtime/defaults"
"github.com/pokt-network/pocket/shared/messaging"
"github.com/pokt-network/pocket/shared/modules"
"github.com/spf13/cobra"
Expand Down Expand Up @@ -44,18 +47,27 @@ var (
PromptSendBlockRequest,
}

// validators holds the list of the validators at genesis time so that we can use it to create a debug address book provider.
// Its purpose is to allow the CLI to "discover" the nodes in the network. Since currently we don't have churn and we run nodes only in LocalNet, we can rely on the genesis state.
// HACK(#416): This is a temporary solution that guarantees backward compatibility while we implement peer discovery
validators []*coreTypes.Actor

configPath string = runtime.GetEnv("CONFIG_PATH", "build/config/config1.json")
genesisPath string = runtime.GetEnv("GENESIS_PATH", "build/config/genesis.json")
rpcHost string
)

// NOTE: this is required by the linter, otherwise a simple string constant would have been enough
type cliContextKey string

const busCLICtxKey = "bus"

func init() {
debugCmd := NewDebugCommand()
rootCmd.AddCommand(debugCmd)

// by default, we point at the same endpoint used by the CLI but the debug client is used either in docker-compose of K8S, therefore we cater for overriding
validator1Endpoint := defaults.Validator1EndpointDockerCompose
if runtime.IsProcessRunningInsideKubernetes() {
validator1Endpoint = defaults.Validator1EndpointK8S
}

rpcHost = runtime.GetEnv("RPC_HOST", validator1Endpoint)
}

func NewDebugCommand() *cobra.Command {
Expand All @@ -64,24 +76,32 @@ func NewDebugCommand() *cobra.Command {
Short: "Debug utility for rapid development",
Args: cobra.ExactArgs(0),
PersistentPreRun: func(cmd *cobra.Command, args []string) {
runtimeMgr := runtime.NewManagerFromFiles(configPath, genesisPath, runtime.WithClientDebugMode(), runtime.WithRandomPK())
runtimeMgr := runtime.NewManagerFromFiles(
configPath, genesisPath,
runtime.WithClientDebugMode(),
runtime.WithRandomPK(),
)

bus := runtimeMgr.GetBus()
modulesRegistry := bus.GetModulesRegistry()

// HACK(#416): this is a temporary solution that guarantees backward compatibility while we implement peer discovery.
validators = runtimeMgr.GetGenesis().Validators
rpcUrl := fmt.Sprintf("http://%s:%s", rpcHost, defaults.DefaultRPCPort)

debugAddressBookProvider := debugABP.NewDebugAddrBookProvider(
runtimeMgr.GetConfig().P2P,
debugABP.WithActorsByHeight(
map[int64][]*coreTypes.Actor{
debugABP.ANY_HEIGHT: validators,
},
addressBookProvider := rpcABP.NewRPCAddrBookProvider(
rpcABP.WithP2PConfig(
runtimeMgr.GetConfig().P2P,
),
rpcABP.WithCustomRPCUrl(rpcUrl),
)
modulesRegistry.RegisterModule(addressBookProvider)

debugCurrentHeightProvider := debugCHP.NewDebugCurrentHeightProvider(0)
currentHeightProvider := rpcCHP.NewRPCCurrentHeightProvider(
rpcCHP.WithCustomRPCUrl(rpcUrl),
)
modulesRegistry.RegisterModule(currentHeightProvider)

// TODO(#429): refactor injecting the dependencies into the bus so that they can be consumed in an updated `P2PModule.Create()` implementation
p2pM, err := p2p.CreateWithProviders(runtimeMgr.GetBus(), debugAddressBookProvider, debugCurrentHeightProvider)
setValueInCLIContext(cmd, busCLICtxKey, bus)
p2pM, err := p2p.Create(bus)
if err != nil {
logger.Global.Fatal().Err(err).Msg("Failed to create p2p module")
}
Expand All @@ -98,7 +118,7 @@ func NewDebugCommand() *cobra.Command {
func runDebug(cmd *cobra.Command, args []string) (err error) {
for {
if selection, err := promptGetInput(); err == nil {
handleSelect(selection)
handleSelect(cmd, selection)
} else {
return err
}
Expand Down Expand Up @@ -126,57 +146,57 @@ func promptGetInput() (string, error) {
return result, nil
}

func handleSelect(selection string) {
func handleSelect(cmd *cobra.Command, selection string) {
switch selection {
case PromptResetToGenesis:
m := &messaging.DebugMessage{
Action: messaging.DebugMessageAction_DEBUG_CONSENSUS_RESET_TO_GENESIS,
Message: nil,
}
broadcastDebugMessage(m)
broadcastDebugMessage(cmd, m)
case PromptPrintNodeState:
m := &messaging.DebugMessage{
Action: messaging.DebugMessageAction_DEBUG_CONSENSUS_PRINT_NODE_STATE,
Message: nil,
}
broadcastDebugMessage(m)
broadcastDebugMessage(cmd, m)
case PromptTriggerNextView:
m := &messaging.DebugMessage{
Action: messaging.DebugMessageAction_DEBUG_CONSENSUS_TRIGGER_NEXT_VIEW,
Message: nil,
}
broadcastDebugMessage(m)
broadcastDebugMessage(cmd, m)
case PromptTogglePacemakerMode:
m := &messaging.DebugMessage{
Action: messaging.DebugMessageAction_DEBUG_CONSENSUS_TOGGLE_PACE_MAKER_MODE,
Message: nil,
}
broadcastDebugMessage(m)
broadcastDebugMessage(cmd, m)
case PromptShowLatestBlockInStore:
m := &messaging.DebugMessage{
Action: messaging.DebugMessageAction_DEBUG_SHOW_LATEST_BLOCK_IN_STORE,
Message: nil,
}
sendDebugMessage(m)
sendDebugMessage(cmd, m)
case PromptSendMetadataRequest:
m := &messaging.DebugMessage{
Action: messaging.DebugMessageAction_DEBUG_CONSENSUS_SEND_METADATA_REQ,
Message: nil,
}
broadcastDebugMessage(m)
broadcastDebugMessage(cmd, m)
case PromptSendBlockRequest:
m := &messaging.DebugMessage{
Action: messaging.DebugMessageAction_DEBUG_CONSENSUS_SEND_BLOCK_REQ,
Message: nil,
}
broadcastDebugMessage(m)
broadcastDebugMessage(cmd, m)
default:
logger.Global.Error().Msg("Selection not yet implemented...")
}
}

// Broadcast to the entire validator set
func broadcastDebugMessage(debugMsg *messaging.DebugMessage) {
func broadcastDebugMessage(cmd *cobra.Command, debugMsg *messaging.DebugMessage) {
anyProto, err := anypb.New(debugMsg)
if err != nil {
logger.Global.Fatal().Err(err).Msg("Failed to create Any proto")
Expand All @@ -185,33 +205,40 @@ func broadcastDebugMessage(debugMsg *messaging.DebugMessage) {
// TODO(olshansky): Once we implement the cleanup layer in RainTree, we'll be able to use
// broadcast. The reason it cannot be done right now is because this client is not in the
// address book of the actual validator nodes, so `node1.consensus` never receives the message.
// p2pMod.Broadcast(anyProto, messaging.PocketTopic_DEBUG_TOPIC)
// p2pMod.Broadcast(anyProto)

for _, valAddr := range validators {
addr, err := pocketCrypto.NewAddress(valAddr.GetAddress())
addrBook, err := fetchAddressBook(cmd)
for _, val := range addrBook {
addr := val.Address
if err != nil {
logger.Global.Fatal().Err(err).Msg("Failed to convert validator address into pocketCrypto.Address")
}
if err := p2pMod.Send(addr, anyProto); err != nil {
logger.Global.Fatal().Err(err).Msg("Failed to send debug message")
}
}

}

// Send to just a single (i.e. first) validator in the set
func sendDebugMessage(debugMsg *messaging.DebugMessage) {
func sendDebugMessage(cmd *cobra.Command, debugMsg *messaging.DebugMessage) {
anyProto, err := anypb.New(debugMsg)
if err != nil {
logger.Global.Error().Err(err).Msg("Failed to create Any proto")
}

addrBook, err := fetchAddressBook(cmd)
if err != nil {
logger.Global.Fatal().Msg("Unable to retrieve the addrBook")
}

var validatorAddress []byte
if len(validators) == 0 {
if len(addrBook) == 0 {
logger.Global.Fatal().Msg("No validators found")
}

// if the message needs to be broadcast, it'll be handled by the business logic of the message handler
validatorAddress, err = pocketCrypto.NewAddress(validators[0].GetAddress())
validatorAddress = addrBook[0].Address
if err != nil {
logger.Global.Fatal().Err(err).Msg("Failed to convert validator address into pocketCrypto.Address")
}
Expand All @@ -220,3 +247,27 @@ func sendDebugMessage(debugMsg *messaging.DebugMessage) {
logger.Global.Fatal().Err(err).Msg("Failed to send debug message")
}
}

// fetchAddressBook retrieves the providers from the CLI context and uses them to retrieve the address book for the current height
func fetchAddressBook(cmd *cobra.Command) (types.AddrBook, error) {
bus, ok := getValueFromCLIContext[modules.Bus](cmd, busCLICtxKey)
if !ok || bus == nil {
logger.Global.Fatal().Msg("Unable to retrieve the bus from CLI context")
}
modulesRegistry := bus.GetModulesRegistry()
addrBookProvider, err := modulesRegistry.GetModule(addrbook_provider.ModuleName)
if err != nil {
logger.Global.Fatal().Msg("Unable to retrieve the addrBookProvider")
}
currentHeightProvider, err := modulesRegistry.GetModule(current_height_provider.ModuleName)
if err != nil {
logger.Global.Fatal().Msg("Unable to retrieve the currentHeightProvider")
}

height := currentHeightProvider.(current_height_provider.CurrentHeightProvider).CurrentHeight()
addrBook, err := addrBookProvider.(addrbook_provider.AddrBookProvider).GetStakedAddrBookAtHeight(height)
if err != nil {
logger.Global.Fatal().Msg("Unable to retrieve the addrBook")
}
return addrBook, err
}
9 changes: 9 additions & 0 deletions app/client/cli/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -187,3 +187,12 @@ func rpcResponseCodeUnhealthy(statusCode int, response []byte) error {
func boldText[T string | []byte](s T) string {
return fmt.Sprintf("\033[1m%s\033[0m", s)
}

func setValueInCLIContext(cmd *cobra.Command, key cliContextKey, value any) {
cmd.SetContext(context.WithValue(cmd.Context(), key, value))
}

func getValueFromCLIContext[T any](cmd *cobra.Command, key cliContextKey) (T, bool) {
value, ok := cmd.Context().Value(key).(T)
return value, ok
}
6 changes: 5 additions & 1 deletion app/client/doc/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [0.0.0.14] - 2023-02-17
## [0.0.0.15] - 2023-02-17

- 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

## [0.0.0.14] - 2023-02-15

- Introduced logical switch to handle parsing of the debug private keys from a local file OR from Kubernetes secret (PR #517)
- Bugfix for `Stake` command. Address erroneously sent instead of the PublicKey. (PR #518)
Expand Down
3 changes: 3 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ require (
require (
github.com/benbjohnson/clock v1.3.0
github.com/celestiaorg/smt v0.2.1-0.20220414134126-dba215ccb884
github.com/deepmap/oapi-codegen v1.12.4
github.com/dgraph-io/badger/v3 v3.2103.2
github.com/getkin/kin-openapi v0.107.0
github.com/jackc/pgconn v1.13.0
Expand Down Expand Up @@ -67,13 +68,15 @@ require (
)

require (
github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/emicklei/go-restful/v3 v3.9.0 // indirect
github.com/go-logr/logr v1.2.3 // indirect
github.com/go-openapi/jsonreference v0.20.0 // indirect
github.com/google/gnostic v0.5.7-v3refs // indirect
github.com/google/go-cmp v0.5.9 // indirect
github.com/google/gofuzz v1.1.0 // indirect
github.com/google/uuid v1.3.0 // indirect
github.com/gotestyourself/gotestyourself v2.2.0+incompatible // indirect
github.com/inconshreveable/mousetrap v1.0.1 // indirect
github.com/jackc/puddle/v2 v2.1.2 // indirect
Expand Down
10 changes: 10 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -51,18 +51,22 @@ github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
github.com/ProtonMail/go-ecvrf v0.0.1 h1:wv45+kZ0mG4G9oSTMjAlbgKqa4tPbNr4WLoCWqz5/bo=
github.com/ProtonMail/go-ecvrf v0.0.1/go.mod h1:fhZbiRYn62/JGnBG2NGwCx0oT+gr/+I5R/hwiyAFpAU=
github.com/RaveNoX/go-jsoncommentstrip v1.0.0/go.mod h1:78ihd09MekBnJnxpICcwzCMzGrKSKYe4AqU6PDYYpjk=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
github.com/apapsch/go-jsonmerge/v2 v2.0.0 h1:axGnT1gRIfimI7gJifB699GoE/oq+F2MU7Dml6nw9rQ=
github.com/apapsch/go-jsonmerge/v2 v2.0.0/go.mod h1:lvDnEdqiQrp0O42VQGgmlKpxL1AP2+08jFMw88y4klk=
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A=
github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w=
github.com/celestiaorg/smt v0.2.1-0.20220414134126-dba215ccb884 h1:iRNKw2WmAbVgGMNYzDH5Y2yY3+jyxwEK9Hc5pwIjZAE=
github.com/celestiaorg/smt v0.2.1-0.20220414134126-dba215ccb884/go.mod h1:/sdYDakowo/XaxS2Fl7CBqtuf/O2uTqF2zmAUFAtAiw=
github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4=
Expand Down Expand Up @@ -106,6 +110,8 @@ github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxG
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/deepmap/oapi-codegen v1.12.4 h1:pPmn6qI9MuOtCz82WY2Xaw46EQjgvxednXXrP7g5Q2s=
github.com/deepmap/oapi-codegen v1.12.4/go.mod h1:3lgHGMu6myQ2vqbbTXH2H1o4eXFTGnFiDaOaKKl5yas=
github.com/dgraph-io/badger/v3 v3.2103.2 h1:dpyM5eCJAtQCBcMCZcT4UBZchuTJgCywerHHgmxfxM8=
github.com/dgraph-io/badger/v3 v3.2103.2/go.mod h1:RHo4/GmYcKKh5Lxu63wLEMHJ70Pac2JqZRYGhlyAo2M=
github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8=
Expand Down Expand Up @@ -240,6 +246,8 @@ github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLe
github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
Expand Down Expand Up @@ -311,6 +319,7 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
github.com/juju/gnuflag v0.0.0-20171113085948-2ce1bb71843d/go.mod h1:2PavIy+JPciBPrBUjwbNvtwB6RQlve+hkpll6QSNmOE=
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
Expand Down Expand Up @@ -483,6 +492,7 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An
github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
github.com/spf13/viper v1.13.0 h1:BWSJ/M+f+3nmdz9bxB+bWX28kkALN2ok11D0rSo8EJU=
github.com/spf13/viper v1.13.0/go.mod h1:Icm2xNL3/8uyh/wFuB1jI7TiTNKp8632Nwegu+zgdYw=
github.com/spkg/bom v0.0.0-20160624110644-59b7046e48ad/go.mod h1:qLr4V1qq6nMqFKkMo8ZTx3f+BZEkzsRUY10Xsm2mwU0=
github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
Expand Down
Loading