All notable changes to this module will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Move
utility/types/errors.gointoshared/core/types/ - Add helper functions to pools structure to get friendly name from address
- Add placeholder protobufs for relays and challenges copied from V0
- Enable the introspection of the mempool for unconfirmed transactions
- Rename
TxResulttoIndexedTransaction
- Added a new
Sessionprotobuf - Added a
GetActorfunction to the Persistence module interface - Added a
GetSessionfunction to the Utility module interface
- Made
cluster-manageraware of kubernetes namespace in which it is running
- Updated shared module README
- Removed temporary
shared/p2ppackage; consolidated intop2p
- Consolidate all the
TxResultprotobufs and interfaces into a common protobuf located inshared/core/types
- Added
modules.ModuleFactoryWithOptionsinterface - Added factory interfaces:
modules.FactoryWithRequiredmodules.FactoryWithOptionsmodules.FactoryWithRequiredAndOptions
- Embedded
ModuleFactoryWithOptionsinModuleinterface - Switched mock generation to use reflect mode for effected interfaces (embedders)
- Removed
GetParameter()fromPersistenceReadContext - Add
gov_utils.goto create a map of all metadata related to governance parameters
- Renamed
CreateAndApplyProposalBlocktoCreateProposalBlock - Added
GetStateHashtoUtilityUnitOfWork
- Updated to reflect pools address changes
- Added tests to catch, in a future-proof way, changes to our pools
- Updated interfaces to use
[]byteinstead ofstringforpooladdresses for consistency withaccountsand because otherwise fuzzy tests would fail
- Add
ConsensusStateSyncinterface. It defines exported state sync functions in consensus module - Update
ConsensusDebugModulewith getter and setter function for state sync testing - Update FSM events
Consensus_IsSyncedValidator,Consensus_IsSyncedNonValidatorand stateConsensus_Pacemaker
- Add a deadline to the primary event handling to get visibility into concurrency issues
- Add UnmarshalJSON to KeyPair to unmarshal public key correctly
- Updated
PROTOCOL_STATE_HASH.mdto reference theUtilityUnitOfWork - Refactored interfaces to use
UtilityUnitOfWork - Added interfaces for
UtilityUnitOfWorkandUtilityUnitOfWorkFactory - Added interfaces
LeaderUtilityUnitOfWorkandReplicaUtilityUnitOfWork - Updated
UtilityModuleto useUtilityUnitOfWork - Refactored utility module implementation to use
UtilityUnitOfWorkand moved into separate sub-package
- Add
TransitionEventToMap()helper function for logging
- Added temporary
shared/p2ppackage to hold P2P interfaces common to both legacy and libp2p modules - Added
Peerstoreinterface - Added
PeerandPeerListand interfaces - Moved
typesP2P.AddrBookMaptosharedP2P.PeerAddrMapand refactor to implement the newPeerstoreinterface - Refactored
getAddrBookDeltato be a member ofPeerList - Factored
SortedPeerManagerout ofraintree.peersManagerand addPeerManagerinterface - Refactored getAddrBookDelta to be a member of PeerList
- Adds enum DebugMessageType for distinguishing message routing behavior
- Fix diagrams in SLIP documentation to be in the correct order
- Support libp2p module in node
- add pokt --> libp2p crypto helpers
- Move
StakeStatusintoactor.proto - Rename
generic_paramintoservice_url - Remove unused params from
BlockHeader - Document
transaction.protoand move it from theutilitymodule toshared - Moved
signature.gofrom theutilitymodule toshared - Added documentation to important functions in the
PersistenceandUtilityshared modules - Added documentation on how/why
UnstakingActorshould be removed
- Implement SLIP-0010 specification for HD child key derivation
- Cover both Test Vectors 1 and 2 from the specification
- Remove SetLeaderId() method from ConsensusDebugModule interface
- Update logger value references with pointers
- Add file utility functions for checking, reading and writing to files
- Export consensus module's ConsensusDebugModule interface.
- Rename ServiceNode Actor Type Name to Servicer
- Fan-ing out
StateMachineTransitionEventTypeevent to theP2Pmodule to handle bootstrapping logic - Refactored single key generation from seed (used in tests) into
GetPrivKeySeed
- Added
UnmarshalTexttoEd25519PrivateKey - Fan-ing out
ConsensusNewHeightEventTypeevents
- Added events
ConsensusNewHeightEventandStateMachineTransitionEvent - Introduced
BaseInterruptableModuleandIntegratableModuleto reduce repetition and boilerpate code (DRYness) - Added
ModulesRegistryandStateMachineModuleaccessors and interfaces - Introduced generic
ModuleOptionpattern to fine tune modules behaviour - Added
StateMachineto thenodeinitialization
- Added
FetchValidatorPrivateKeysfunction since it is going to be used by thedebug-clientand also by the upcomingcluster-manager#490
- Remove shared
ActorTypesarray and use the enum directly - Reduce the code footprint of the
codecpackage & add some TODOs - Added
UnstakingActorproto to remove deduplication across modules; adding TECHDEBT to remove altogether one day - Added clarifying comments to the utility module interface
- Add
ConsensusStateSyncinterface that is implemented by the consensus module
- Added GITHUB_WIKI tags where it was missing
- Address legacy linter errors from
golangci-lint
- Changed log lines to utilize new logger module.
- Added example to Readme how to initiate a logger using new logger module.
- Introduced
GenericFIFOListto handle generic FIFO mempool lists (can contain duplicates) - Introduced
GenericFIFOSetto handle generic FIFO mempool sets (items are unique) - Updated
Utilitymodule interface to expose mempool access viaGetMempool()
- Add
KeyPairinterface - Add logic to create new keypairs, encrypt/armour them and decrypt/unarmour them
- Match naming conventions in
Paramprotobuf file
- Add
ParamandFlagprotobufs for use in updating merkle tree
- Add
ConsensusPacemakerinterface that is implemented by the consensus module
- Remove
address []byteargument fromInsertPoolfunction inPostgresRWContext
- Rewrite
interface{}toany
- Create
block.protowhich consolidates the definition of aBlockprotobuf undershared/core/types
- Deprecated
GetBlocksPerSession()andGetServicersPerSessionAt()in favour of the more general parameter getter functionGetParameter()
- Make the events channel hold pointers rather than copies of the message
- Updated modules constructor to accept a
busand not aruntimeMgranymore - Registering modules with the
busviaRegisterModulemethod
- Removed
ValidatorMap() ValidatorMapfromConsensusModuleinterface - Added
GetIsClientOnly()toP2PConfig
- Added
PoolNames.FriendlyNamemethod - Renamed enums as per code-review
- Updated
InitParamslogic to use genesisState instead of hardcoded values
- Updated to use the new centralized config and genesis handling
- Created
Actorstruct undercoreTypes - Created
Accountstruct undercoreTypes - Created
PoolNamesenum undercoreTypes - Updated module to use the new
coreTypes - Simplified
*Moduleinterfaces - Updated tests and mocks
- Added
GetMaxMempoolCount
- Change the
busto be a pointer receiver rather than a value receiver in all the functions it implements
Debug:
ResetToGenesis- Added the ability to reset the state to genesisClearState- Added the ability to clear the state completely (height 0 without genesis data)
Configs:
- Updated the test generator to produce deterministic keys
- Added
trees_store_dirto persistence configs - Updated
LocalNetconfigs to have an emptytx_indexer_pathandtrees_store_dir
#353 Remove topic from messaging
- Removed topic from messaging
- Added
PocketEnvelopeas a general purpose wrapper for messages/events - Added utility methods to
PackandUnpackmessages - Replaced the switch cases, interfaces accordingly
#235 Config and genesis handling
- Updated to use
RuntimeMgr, available viaGetRuntimeMgr() - Segregate interfaces (eg:
GenesisDependentModule,P2PAddressableModule, etc) - Updated tests and mocks
- Used proper
TODO/INVESTIGATE/DISCUSSconvention across package - Moved TxIndexer Package to Utility to properly encapsulate
- Add unit test for
SharedCodec() - Added
TestProtoStructurefor testing - Flaky tests troubleshooting - pokt-network#192
- More context here as well: pokt-network#198
#198 Flaky tests
- Time mocking abilities via https://github.com/benbjohnson/clock and simple utility wrappers
- Race conditions and concurrency fixes via sync.Mutex
#163 Minimization
- Moved all shared structures out of the shared module
- Moved structure responsibility of config and genesis to the respective modules
- Shared interfaces and general 'base' configuration located here
- Moved make client code to 'debug' to clarify that the event distribution is for the temporary local net
- Left multiple
TODOfor remaining code in test_artifacts to think on removal of shared testing code