Skip to content
Merged
Show file tree
Hide file tree
Changes from 30 commits
Commits
Show all changes
122 commits
Select commit Hold shift + click to select a range
80eb15b
refactor(shared): centralized config_protos
deblasis Dec 15, 2022
35b128a
feat(test_artifacts): deterministic keygen
deblasis Dec 15, 2022
df5c92e
refactor(runtime): refactored to use centralized configs
deblasis Dec 15, 2022
97803dd
refactor(Consensus): refactored to use centralized config
deblasis Dec 15, 2022
d439459
refactor(logger): refactored to use centralized logging
deblasis Dec 15, 2022
807086f
refactor(P2P): refactored to use centralized configs
deblasis Dec 15, 2022
774e9fd
refactor(Persistence): refactored to use centralized configs
deblasis Dec 15, 2022
c88f455
refactor(RPC): refactored to use centralized configs
deblasis Dec 15, 2022
d2f3ba7
refactor(telemetry): refactored to use centralized configs
deblasis Dec 15, 2022
ab115f6
refactor(Utility): refactored to use centralized configs
deblasis Dec 15, 2022
80a7ba2
refactor(shared): refactored to use centralized configs
deblasis Dec 15, 2022
6187b29
style(shared): 🧹
deblasis Dec 15, 2022
fe88719
refactor(config): removed baseconfig, added max_mempool_count
deblasis Dec 19, 2022
375fcac
refactor(config): removed base_config
deblasis Dec 19, 2022
2ea6b95
refactor(genesis): single genesis
deblasis Dec 19, 2022
f599882
refactor(core): core types
deblasis Dec 19, 2022
43c560f
refactor(shared): core types
deblasis Dec 19, 2022
f60517b
refactor(genesis): centralized genesis
deblasis Dec 19, 2022
a689e90
refactor(consensus): removed converter
deblasis Dec 19, 2022
b4a5fd9
refactor(persistence): removed converter
deblasis Dec 19, 2022
535130d
chore(go.mod): tidy
deblasis Dec 19, 2022
00de795
refactor(consensus): centralized genesis + core types
deblasis Dec 19, 2022
0165bd4
refactor(persistence): centralized genesis + core types
deblasis Dec 19, 2022
2248e74
refactor(p2p): centralized genesis + core types
deblasis Dec 19, 2022
fa09298
refactor(runtime): centralized genesis + core types
deblasis Dec 19, 2022
f71d831
refactor(utility): centralized genesis + core types
deblasis Dec 19, 2022
910b20e
refactor(shared): centralized genesis + core types
deblasis Dec 19, 2022
4da6cbb
chore(telemetry): simplified interface
deblasis Dec 19, 2022
75fa712
refactor(makefile): updated to handle relocated protos
deblasis Dec 19, 2022
31a4013
wip new RPC endpoints
deblasis Dec 19, 2022
0b56298
test(consensus): fixes
deblasis Dec 19, 2022
f52182f
chore(consensus): 🧹
deblasis Dec 19, 2022
8e02599
chore(runtime): 🧹
deblasis Dec 19, 2022
04c75d4
chore(Makefile): | | |
deblasis Dec 19, 2022
b54cc52
refactor(persistence): genesis stakedActorsInsertConfigs
deblasis Dec 20, 2022
052c491
style(persistence): nit
deblasis Dec 21, 2022
01a1fb2
style(persistence): nits
deblasis Dec 21, 2022
b6d86fd
style(persistence): nits
deblasis Dec 21, 2022
27db554
style(persistence): nits
deblasis Dec 21, 2022
20f862d
style(runtime): nits
deblasis Dec 21, 2022
7396e81
docs(runtime): changelog
deblasis Dec 21, 2022
f37f02a
docs(consensus): changelog
deblasis Dec 21, 2022
b50bd6a
docs(persistence): changelog
deblasis Dec 21, 2022
2b04333
chore(persistence): 🧹
deblasis Dec 21, 2022
a49a8cd
chore(utility): spacing
deblasis Dec 21, 2022
cf55682
docs(utility): changelog
deblasis Dec 21, 2022
285932f
docs(P2P): changelog
deblasis Dec 21, 2022
4e2cc72
chore(P2P): nits
deblasis Dec 21, 2022
829e2ff
docs(RPC): changelog
deblasis Dec 21, 2022
a89f218
docs(shared): changelog
deblasis Dec 21, 2022
9dfafb9
refactor(consensus): ValidatorMap pointers vs values
deblasis Dec 26, 2022
7cb47dc
chore(persistence): cleanup
deblasis Dec 26, 2022
a09c234
chore(runtime): nits
deblasis Dec 26, 2022
7b576df
chore(runtime): fixed issue reference
deblasis Dec 26, 2022
0a9f151
chore(core): added todo reference
deblasis Dec 26, 2022
eb685fb
refactor(core): protos using core, utilTypes phased out
deblasis Dec 26, 2022
ceb768e
refactor(CLI): updated to use coreTypes instead of utilTypes
deblasis Dec 26, 2022
82e463c
refactor(runtime): updated to use coreTypes instead of utilTypes
deblasis Dec 26, 2022
555bdc2
refactor(core): ActorType.GetName()
deblasis Dec 26, 2022
b8b6674
refactor(utility): updated to use coreTypes instead of utilTypes
deblasis Dec 26, 2022
c7d1326
fix(core): pool_names value fix
deblasis Dec 26, 2022
469635a
refactor(core): enum simplification, removed trailing _POOL
deblasis Dec 27, 2022
d9da996
Update Makefile
deblasis Dec 27, 2022
5bef1b1
Update persistence/genesis.go
deblasis Dec 27, 2022
8ceecb3
refactor(runtime): factoring instead of sync.Once
deblasis Dec 27, 2022
8561177
chore(runtime): cleanup
deblasis Dec 27, 2022
5df685c
refactor(runtime): parseGenesisJSON -> parseGenesis
deblasis Dec 27, 2022
f5694ab
refactor(shared): node -> serviceNode
deblasis Dec 27, 2022
196845e
refactor(runtime): simplified keygen
deblasis Dec 27, 2022
d16a455
fix(persistence): genesis pool handling
deblasis Dec 27, 2022
7f64ccb
Update runtime/test_artifacts/generator.go
deblasis Dec 27, 2022
ece9cf8
fix(persistence): added missing actortype to queries
deblasis Dec 27, 2022
8305e6e
fix(P2P): ActorsToAddrBook considers only validators
deblasis Dec 27, 2022
048ebbc
fix(core): PoolNames FriendlyName()
deblasis Dec 27, 2022
0db801d
docs(demos): iteration 3 demo keys management
deblasis Dec 27, 2022
5bacd1b
fix(P2P): added missing ActorType in tests
deblasis Dec 27, 2022
8a9c0ae
fix(utility): poolName friendlyName
deblasis Dec 27, 2022
505a104
test(persistence): updated statehash in deterministic test
deblasis Dec 27, 2022
3cfd657
refactor(runtime): default config handling and separation
deblasis Dec 28, 2022
2c420c7
feat(genesis): params are not hardcoded anymore
deblasis Dec 28, 2022
0d62c5b
test(utility): defaults from test_artifacts
deblasis Dec 28, 2022
10e04cc
fix(config): removed redundant cfg (now we have defaults logic)
deblasis Dec 28, 2022
e9cc6e8
Update utility/types/proto/stake_status.proto
deblasis Dec 28, 2022
1e6ceab
Revert "Update utility/types/proto/stake_status.proto"
deblasis Dec 28, 2022
623999f
docs(utility): linked issue #258 to todo item
deblasis Dec 28, 2022
e9ebc6e
refactor(test_artifacts): DRY config generation logic
deblasis Dec 28, 2022
4e24c6a
docs(build): CHANGELOG
deblasis Dec 28, 2022
b26663f
docs(build): typo
deblasis Dec 28, 2022
be6ba7d
docs(logger): CHANGELOG
deblasis Dec 28, 2022
df13c44
docs(telemetry): CHANGELOG
deblasis Dec 28, 2022
c47ddfa
docs(consensus): CHANGELOG
deblasis Dec 28, 2022
31c79db
docs(P2P): CHANGELOG
deblasis Dec 28, 2022
00dc7f4
docs(persistence): CHANGELOG
deblasis Dec 28, 2022
ea999af
docs(RPC): CHANGELOG
deblasis Dec 28, 2022
9edd1e4
docs(runtime): CHANGELOG
deblasis Dec 28, 2022
2d58822
docs(shared): CHANGELOG
deblasis Dec 28, 2022
834b885
docs(utility): CHANGELOG
deblasis Dec 28, 2022
f6100ad
docs(persistence): CHANGELOG consolidation
deblasis Dec 28, 2022
c91a7ad
Merge remote-tracking branch 'upstream/main' into issue/396-consolida…
deblasis Dec 28, 2022
a4fa535
docs(CLI): CHANGELOG
deblasis Dec 28, 2022
8d02ad5
fix(CLI): CHANGELOG versioning
deblasis Dec 28, 2022
ff57847
Update docs/demos/iteration_3_end_to_end_tx.md
deblasis Dec 30, 2022
4bddf5f
Update docs/demos/iteration_3_end_to_end_tx.md
deblasis Dec 30, 2022
0532b07
Update persistence/docs/CHANGELOG.md
deblasis Dec 30, 2022
c86f8c5
refactor(persistence): s/InitParams/InitGenesisParams
deblasis Dec 30, 2022
69cb8eb
docs(runtime): config options godoc
deblasis Dec 30, 2022
00ae143
refactor(runtime): default values in defaults package
deblasis Dec 30, 2022
5b237f2
refactor(core): poolNames -> pools
deblasis Dec 30, 2022
8d9cb1a
docs(P2P): added TODO
deblasis Dec 30, 2022
d7a521e
refactor(persistence): actorType from schema
deblasis Dec 30, 2022
b8d1946
chore(shared): CHANGELOG 📆
deblasis Dec 30, 2022
fb42810
test(persistence): added test for GetAllStakedActors
deblasis Jan 3, 2023
6ff3c3a
refactor(persistence): actorType set in getActorForRow
deblasis Jan 3, 2023
414276a
chore(persistence): argument types in InsertFn
deblasis Jan 3, 2023
d82b018
docs(shared): CHANGELOGs dates
deblasis Jan 3, 2023
6dea794
chore(shared): rm val keys
deblasis Jan 3, 2023
52b500b
chore(gitignore): added validator keys
deblasis Jan 3, 2023
ac0e99d
docs(iteration3demo): updated to source keys from /tmp/
deblasis Jan 3, 2023
3524dc9
docs(P2P): added todo #426
deblasis Jan 3, 2023
636638f
docs(CLI): updated README
deblasis Jan 3, 2023
2f73d5e
docs(runtime): updated README
deblasis Jan 3, 2023
26ef163
docs(development): README
deblasis Jan 3, 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
10 changes: 7 additions & 3 deletions app/client/cli/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.2] - 2022-11-02
## [0.0.0.3] - 2022-12-28

- Updated to use `coreTypes` instead of utility types for `Actor` and `ActorType`

## [0.0.0.2] - 2022-11-02

### Added

Expand All @@ -16,13 +20,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- System commands working end-to-end
- Added Consensus State commands

## [0.0.1] - 2022-09-09
## [0.0.0.1] - 2022-09-09

### Added

- Commands documentation generator

## [0.0.0] - 2022-09-07
## [0.0.0.0] - 2022-09-07

### Added

Expand Down
3 changes: 1 addition & 2 deletions build/config/config1.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,7 @@
"consensus_port": 8080,
"use_rain_tree": true,
"is_empty_connection_type": false,
"private_key": "6fd0bc54cc2dd205eaf226eebdb0451629b321f11d279013ce6fdd5a33059256b2eda2232ffb2750bf761141f70f75a03a025f65b2b2b417c7f8b3c9ca91e8e4",
"max_mempool_count": 1000000
"private_key": "6fd0bc54cc2dd205eaf226eebdb0451629b321f11d279013ce6fdd5a33059256b2eda2232ffb2750bf761141f70f75a03a025f65b2b2b417c7f8b3c9ca91e8e4"
},
"telemetry": {
"enabled": true,
Expand Down
17 changes: 17 additions & 0 deletions build/docs/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Changelog

All notable changes to this module will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.0.0.1] - 2022-12-28

- Removed `BaseConfig` from `configs`
- Centralized `PersistenceGenesisState` and `ConsensusGenesisState` into `GenesisState`

## [0.0.0.0] - 2022-12-22

- Introduced this `CHANGELOG.md`
4 changes: 4 additions & 0 deletions consensus/doc/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [0.0.0.15] - 2022-12-28

- ValidatorMap uses `Actor` references now

## [0.0.0.14] - 2022-12-21

- Updated do use the new centralized config and genesis
Expand Down
25 changes: 23 additions & 2 deletions docs/demos/iteration_3_end_to_end_tx.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
- [Shell #4: Inspect the data in the database for node3](#shell-4-inspect-the-data-in-the-database-for-node3)
- [Shell #5: Trigger a send transaction from the CLI](#shell-5-trigger-a-send-transaction-from-the-cli)
- [Available Commands](#available-commands)
- [Accounts setup](#accounts-setup)
- [First Transaction](#first-transaction)
- [Second Transaction](#second-transaction)
- [\[Optional\] Shell #6: See Swagger UI](#optional-shell-6-see-swagger-ui)
Expand Down Expand Up @@ -96,12 +97,32 @@ Show all the commands available in the CLI:
go run app/client/*.go
```

#### Accounts setup

Since our Keybase is under development, currently we have to manually inject the private keys of the accounts we want to use in the CLI.

For the following steps you'll need to use the accounts of the first two validators, therefore you have some options:

1) You can just:
```bash
echo '"6fd0bc54cc2dd205eaf226eebdb0451629b321f11d279013ce6fdd5a33059256b2eda2232ffb2750bf761141f70f75a03a025f65b2b2b417c7f8b3c9ca91e8e4"' > val1.json
echo '"5db3e9d97d04d6d70359de924bb02039c602080d6bf01a692bad31ad5ef93524c16043323c83ffd901a8bf7d73543814b8655aa4695f7bfb49d01926fc161cdb"' > val2.json
```

2) You can use `jq` and run these commands:
```bash
cat ./build/config/config1.json | jq '.private_key' > val1.json
cat ./build/config/config2.json | jq '.private_key' > val2.json
```

3) You can manually copy-paste the private keys from the config files into the `val1.json` and `val2.json` files. Remember to keep the double quotes around the private keys ("private_key" field in the JSON).

### First Transaction

Trigger a send transaction from validator 1 to validator 2.

```bash
go run app/client/*.go --path_to_private_key_file=/Users/olshansky/workspace/pocket/pocket/build/pkeys/val1.json Account Send 6f66574e1f50f0ef72dff748c3f11b9e0e89d32a 67eb3f0a50ae459fecf666be0e93176e92441317 1000
go run app/client/*.go --path_to_private_key_file=./val1.json Account Send 6f66574e1f50f0ef72dff748c3f11b9e0e89d32a 67eb3f0a50ae459fecf666be0e93176e92441317 1000
```

1. Use shell #2 to `TriggerNextView` and confirm height increased via `PrintNodeState`
Expand All @@ -120,7 +141,7 @@ go run app/client/*.go --path_to_private_key_file=/Users/olshansky/workspace/poc
Trigger a send transaction from validator 2 to validator 1.

```bash
go run app/client/*.go --path_to_private_key_file=/Users/olshansky/workspace/pocket/pocket/build/pkeys/val2.json Account Send 67eb3f0a50ae459fecf666be0e93176e92441317 6f66574e1f50f0ef72dff748c3f11b9e0e89d32a 1000
go run app/client/*.go --path_to_private_key_file=./val2.json Account Send 67eb3f0a50ae459fecf666be0e93176e92441317 6f66574e1f50f0ef72dff748c3f11b9e0e89d32a 1000
```

1. Use shell #2 to `TriggerNextView` (one or more times) and confirm height increased via `PrintNodeState`
Expand Down
16 changes: 16 additions & 0 deletions logger/docs/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Changelog

All notable changes to this module will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.0.0.1] - 2022-12-28

- Refactored configs into `configs` package

## [0.0.0.0] - 2022-12-28

- Introduced this `CHANGELOG.md`
4 changes: 4 additions & 0 deletions p2p/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [0.0.0.14] - 2022-12-28

- `ActorsToAddrBook` now skips actors that are not validators since they don't have a serviceUrl generic parameter
Copy link
Collaborator

Choose a reason for hiding this comment

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

Could you explain this? Fisherman and Servicers also have a serviceURL as a "generic param" and applications are currently the ones that don't.

Screenshot 2022-12-29 at 2 24 07 PM

My guess is that this may have caused to some sort of issues/bug and potentially, the solution is to change genesis.json to have a different service URL for non-validators (to avoid the overlap)?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Currently, we use the serviceUrl to connect to peers and to send messages to them, I believe that the serviceUrl is likely gonna be replaced by something like a LibP2P Address

https://docs.libp2p.io/concepts/fundamentals/addressing/

Eg:
/ip4/7.7.7.7/tcp/4242/p2p/QmRelay/p2p-circuit/p2p/QmRelayedPeer

but that's going to be dynamic and transient and I don't see how it would be part of the state.

That said, I am not sure we should change the genesis state at all to handle addressing.
It's the addressing that has to change instead.

Also, what is this concept of generic parameter? Where can I learn more about it?

Copy link
Collaborator

Choose a reason for hiding this comment

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

Regarding libp2p - makes sense when we get there.

Regarding the val filtering - see the comment I left in p2p/addrbook_provider/persistence.go


Also, what is this concept of generic parameter? Where can I learn more about it?

This is just a poor design decision that was the result of a compromise during the shared module refactor.

We (currently) have 4 protocol actor types:

  • Fisherman
  • Validator
  • Servicer
  • Application

There are things they all share (e.g. an address) and there are things that are specific:

  • Servicers need a "serviceURL" to service nodes
  • Fisherman need a "serviceURL" to enable QoS
  • Applications need a 'maxRelaysCount' which is only specific to them

The two potential future paths we take are:

  1. One Protobuf per actor
  2. One BaseActor protobuf that's embedded in each ProtocolActor type

See #313 for the origin document.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Thanks for the wholesome explanation and context🙏

Copy link
Collaborator

Choose a reason for hiding this comment

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

🙏


## [0.0.0.13] - 2022-12-21

- Updated to use the new centralized config and genesis handling
Expand Down
4 changes: 4 additions & 0 deletions p2p/addrbook_provider/persistence.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,10 @@ func (pabp *persistenceAddrBookProvider) GetStakedAddrBookAtHeight(height uint64
func (pabp *persistenceAddrBookProvider) ActorsToAddrBook(actors map[string]coreTypes.Actor) (typesP2P.AddrBook, error) {
book := make(typesP2P.AddrBook, 0)
for _, v := range actors {
// only add validator actors since they are the only ones having a service url in their generic param at the moment
if v.ActorType != coreTypes.ActorType_ACTOR_TYPE_VAL {
Copy link
Collaborator

Choose a reason for hiding this comment

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

Related to one of my other comments, fisherman and serviceNodes also have serviceURLs in their parameter, and can (and should) also participate in structured broadcast.

Should they not be included as well?

Screenshot 2023-01-03 at 11 49 05 AM

Copy link
Contributor Author

Choose a reason for hiding this comment

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

TL;DR: The way I see it, NO...

Like you said, it looks like these serviceUrls have a different meaning depending on the actor type and therefore using them to connect to a node for consensus related messaging/structured broadcast is a... shortcut.

Nodes are listening on the ConsensuPort which by default is 8080 and it seems that serviceUrl has been used to have an easy way to address them.

I guess this is because we don't have -yet- a full-fledged P2P module that owns the addressbook and can be relied upon for routing and messaging (that will come with peer discovery and churn).

We won't address messages via serviceUrl but rather by address or nodeId, then P2P would figure out how to reach that peer.

In LocalNet we spin up 4 validator nodes and the debug commands are all related to consensus.
This explains why previously we had 👇👈 while now we have 👉👇
image

If we consider other actors I can only imagine that since we have overlaps (eg: node1.consensus:8080 in genesis.json is a Validator, a ServiceNode and also a Fisherman) we would have duplicate messages at a minimum.

I wish Brian was here to pick his brain on this :) the ways I see it, structured gossip happens under the hood in the P2P module, when you say "broadcast to all validators" you don't know/care if the message is also handled and retransmitted by a Fisherman in order to reach a "nearby" Validator. That's implementation detail of the P2P algorithm.

I would say that for now we have to filter. Happy to discuss further even offline.

Just let me know how to proceed here.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Solid explanation. I'm convinced.

Excited to see what our next steps are going to be here :)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Added #426 PTAL 🙏

continue
}
networkPeer, err := pabp.ActorToNetworkPeer(v)
if err != nil {
log.Println("[WARN] Error connecting to validator: ", err)
Expand Down
1 change: 1 addition & 0 deletions p2p/utils_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,7 @@ func createMockGenesisState(t *testing.T, valKeys []cryptoPocket.PrivateKey) *ge
for i, valKey := range valKeys {
addr := valKey.Address().String()
mockActor := &coreTypes.Actor{
ActorType: coreTypes.ActorType_ACTOR_TYPE_VAL,
Address: addr,
PublicKey: valKey.PublicKey().String(),
GenericParam: validatorId(i + 1),
Expand Down
156 changes: 0 additions & 156 deletions persistence/CHANGELOG.md

This file was deleted.

4 changes: 4 additions & 0 deletions persistence/actor.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ func (p PostgresContext) GetAllApps(height int64) (apps []*coreTypes.Actor, err
if err != nil {
return
}
actor.ActorType = coreTypes.ActorType_ACTOR_TYPE_APP
actors = append(actors, actor)
}
rows.Close()
Expand Down Expand Up @@ -53,6 +54,7 @@ func (p PostgresContext) GetAllValidators(height int64) (vals []*coreTypes.Actor
if err != nil {
return
}
actor.ActorType = coreTypes.ActorType_ACTOR_TYPE_VAL
actors = append(actors, actor)
}
rows.Close()
Expand Down Expand Up @@ -82,6 +84,7 @@ func (p PostgresContext) GetAllServiceNodes(height int64) (sn []*coreTypes.Actor
if err != nil {
return
}
actor.ActorType = coreTypes.ActorType_ACTOR_TYPE_SERVICENODE
actors = append(actors, actor)
}
rows.Close()
Expand Down Expand Up @@ -111,6 +114,7 @@ func (p PostgresContext) GetAllFishermen(height int64) (f []*coreTypes.Actor, er
if err != nil {
return
}
actor.ActorType = coreTypes.ActorType_ACTOR_TYPE_FISH
actors = append(actors, actor)
}
rows.Close()
Expand Down
Loading