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.
- Add a LocalContext type and place-holders for servicer token usage support to persistence
- Add a TODO comment for supporting different relay payload types in core types
- Added validators for JSONRPC and REST payloads to shared types
- Added a comment on session.proto regarding use of maps for session's actors
- Added two separate types for JSONRPC and JSON relays under relay proto
- Replace AES-GCM in key encryption with Secretbox (XSalsa20+Poly1305)
- Added
Factory
generic type - Improved godoc comments
- Use ApplicationAddress in RelayMeta
- Fix SessionHeight field meaning comment
- Moved nonce field from RainTreeMessage to PocketEnvelope protobuf types
- Move
utility/types/errors.go
intoshared/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
TxResult
toIndexedTransaction
- Added a new
Session
protobuf - Added a
GetActor
function to the Persistence module interface - Added a
GetSession
function to the Utility module interface
- Made
cluster-manager
aware of kubernetes namespace in which it is running
- Updated shared module README
- Removed temporary
shared/p2p
package; consolidated intop2p
- Consolidate all the
TxResult
protobufs and interfaces into a common protobuf located inshared/core/types
- Added
modules.ModuleFactoryWithOptions
interface - Added factory interfaces:
modules.FactoryWithRequired
modules.FactoryWithOptions
modules.FactoryWithRequiredAndOptions
- Embedded
ModuleFactoryWithOptions
inModule
interface - Switched mock generation to use reflect mode for effected interfaces (embedders)
- Removed
GetParameter()
fromPersistenceReadContext
- Add
gov_utils.go
to create a map of all metadata related to governance parameters
- Renamed
CreateAndApplyProposalBlock
toCreateProposalBlock
- Added
GetStateHash
toUtilityUnitOfWork
- Updated to reflect pools address changes
- Added tests to catch, in a future-proof way, changes to our pools
- Updated interfaces to use
[]byte
instead ofstring
forpool
addresses for consistency withaccounts
and because otherwise fuzzy tests would fail
- Add
ConsensusStateSync
interface. It defines exported state sync functions in consensus module - Update
ConsensusDebugModule
with getter and setter function for state sync testing - Update FSM events
Consensus_IsSyncedValidator
,Consensus_IsSyncedNonValidator
and 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.md
to reference theUtilityUnitOfWork
- Refactored interfaces to use
UtilityUnitOfWork
- Added interfaces for
UtilityUnitOfWork
andUtilityUnitOfWorkFactory
- Added interfaces
LeaderUtilityUnitOfWork
andReplicaUtilityUnitOfWork
- Updated
UtilityModule
to useUtilityUnitOfWork
- Refactored utility module implementation to use
UtilityUnitOfWork
and moved into separate sub-package
- Add
TransitionEventToMap()
helper function for logging
- Added temporary
shared/p2p
package to hold P2P interfaces common to both legacy and libp2p modules - Added
Peerstore
interface - Added
Peer
andPeerList
and interfaces - Moved
typesP2P.AddrBookMap
tosharedP2P.PeerAddrMap
and refactor to implement the newPeerstore
interface - Refactored
getAddrBookDelta
to be a member ofPeerList
- Factored
SortedPeerManager
out ofraintree.peersManager
and addPeerManager
interface - 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
StakeStatus
intoactor.proto
- Rename
generic_param
intoservice_url
- Remove unused params from
BlockHeader
- Document
transaction.proto
and move it from theutility
module toshared
- Moved
signature.go
from theutility
module toshared
- Added documentation to important functions in the
Persistence
andUtility
shared modules - Added documentation on how/why
UnstakingActor
should 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
StateMachineTransitionEventType
event to theP2P
module to handle bootstrapping logic - Refactored single key generation from seed (used in tests) into
GetPrivKeySeed
- Added
UnmarshalText
toEd25519PrivateKey
- Fan-ing out
ConsensusNewHeightEventType
events
- Added events
ConsensusNewHeightEvent
andStateMachineTransitionEvent
- Introduced
BaseInterruptableModule
andIntegratableModule
to reduce repetition and boilerpate code (DRYness) - Added
ModulesRegistry
andStateMachineModule
accessors and interfaces - Introduced generic
ModuleOption
pattern to fine tune modules behaviour - Added
StateMachine
to thenode
initialization
- Added
FetchValidatorPrivateKeys
function since it is going to be used by thedebug-client
and also by the upcomingcluster-manager
#490
- Remove shared
ActorTypes
array and use the enum directly - Reduce the code footprint of the
codec
package & add some TODOs - Added
UnstakingActor
proto to remove deduplication across modules; adding TECHDEBT to remove altogether one day - Added clarifying comments to the utility module interface
- Add
ConsensusStateSync
interface 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
GenericFIFOList
to handle generic FIFO mempool lists (can contain duplicates) - Introduced
GenericFIFOSet
to handle generic FIFO mempool sets (items are unique) - Updated
Utility
module interface to expose mempool access viaGetMempool()
- Add
KeyPair
interface - Add logic to create new keypairs, encrypt/armour them and decrypt/unarmour them
- Match naming conventions in
Param
protobuf file
- Add
Param
andFlag
protobufs for use in updating merkle tree
- Add
ConsensusPacemaker
interface that is implemented by the consensus module
- Remove
address []byte
argument fromInsertPool
function inPostgresRWContext
- Rewrite
interface{}
toany
- Create
block.proto
which consolidates the definition of aBlock
protobuf 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
bus
and not aruntimeMgr
anymore - Registering modules with the
bus
viaRegisterModule
method
- Removed
ValidatorMap() ValidatorMap
fromConsensusModule
interface - Added
GetIsClientOnly()
toP2PConfig
- Added
PoolNames.FriendlyName
method - Renamed enums as per code-review
- Updated
InitParams
logic to use genesisState instead of hardcoded values
- Updated to use the new centralized config and genesis handling
- Created
Actor
struct undercoreTypes
- Created
Account
struct undercoreTypes
- Created
PoolNames
enum undercoreTypes
- Updated module to use the new
coreTypes
- Simplified
*Module
interfaces - Updated tests and mocks
- Added
GetMaxMempoolCount
- Change the
bus
to 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_dir
to persistence configs - Updated
LocalNet
configs to have an emptytx_indexer_path
andtrees_store_dir
#353 Remove topic from messaging
- Removed topic from messaging
- Added
PocketEnvelope
as a general purpose wrapper for messages/events - Added utility methods to
Pack
andUnpack
messages - 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/DISCUSS
convention across package - Moved TxIndexer Package to Utility to properly encapsulate
- Add unit test for
SharedCodec()
- Added
TestProtoStructure
for testing - Flaky tests troubleshooting - #192
- More context here as well: #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
TODO
for remaining code in test_artifacts to think on removal of shared testing code