All notable changes to this project will be documented in this file.
- Whitelisting update
- DTM rewards update
- Soft staking nodes for September
- Whitelisting update
- DTM rewards update
- Soft staking nodes for August
- Soft staking nodes for July
- DTM rewards
- Add endpoint for total wallets
- Whitelisting update
- Whitelisting update
- DTM rewards
- Soft staking nodes for June
- Testnet rewards
- Soft staking nodes for May
- Whitelisting update
- Whitelisting updated
- Deprecated dependencies repository
- DTM Rewards
- Soft staking nodes for April
- DTM rewards
- DTM rewards
- DTM rewards
- Soft staking nodes for March
- Whitelisting updated
- Whitelisting updated
- Whitelisting updated
- Soft staking nodes for February
- Whitelisting updated
- Whitelisting updated
- Soft staking nodes for January
- Whitelisting updated
- Whitelisting updated
- Whitelisting updated
- Soft staking nodes for December
- Whitelisting updated
- Integration tests
- Whitelisting updated
- Logging improvements
- Whitelisting updated
- Whitelisting updated
- SoftStaking nodes rewards
- Whitelisting updated
- Whitelisting updated
- Whitelisting updated
- Reduced snapshot delays
- Abstract away healthcheck and implement proposal healthcheck
- Update whitelisting file
- Unmark checkpoint from resolving when skipping
- Validate checkpoint block before adding it to the acceptance queue
- Update whitelisting file
- Clear resolving queue on setSnapshot
- Update whitelisting file
- Fixed signature validation for gossip messages when payload contains more than one empty string
- Joining height is defined separately for download and for set
- Resolving checkpoints in queue with max concurrent limit
- Improve transaction data consistency
- Update whitelisting file
- Do not resolve blocks on compare that are known on the node
- Ignore blocks to compare below last snapshot height
- Exclude parents
- Add missing but existing tips to acceptance
- Compare checkpoints at heights
- Start resolving missing references and parents in a fiber
- Gossip path logging
- Distance from majority for snapshots and consensuses
- Reduced max snapshot distance from majority to 6
- Tips usages and clearing stale tips
- Exclude min waiting height from snapshot preconditions
- Fetch initial majority at joining height
- Set transactions and observations on set snapshot method
- Initial joining cutoff height
- Select fully joined peers for resolving and broadcasting
- Wallet last transaction reference
- Gossiping for checkpoint blocks
- Whitelisting update
- Majority selection algorithm
- Missing proposal lookup algorithm
- DAO usage removed
- Initialization flow changed
- Checkpoint statuses
- Checkpoint acceptance flow
- Split joining height and broadcasting logic
- SnapshotInfo class schema change
- Metrics
- Tip usages cache
- Initialize kryo for wallet
- Disabled addition of missing peers after health check consensus
- Missing proposal offset set to 0
- Rename of a duplicated alias in the whitelisting
- Majority selected with no gaps
- Gossip flow improvements
- Majority selected with no gaps
- Update whitelisting file
- Gossip protocol implementation for spreading snapshot proposals
- Multiple small healthcheck improvements:
- Logging and metrics for peer removal and healthcheck decision
- Running time heavy processes concurrently not to block the main management flow
- Check if healthcheck for an unresponsive peer wasn't run recently before running new healthcheck
- Clear a Set of peers to check after fetching them to prevent running checks continuously for the same peers
- Java update in docker images
- Update whitelisting file
- Prevent running periodic redownload until download finishes
- Better tx destination address validation (parity number and base58 characters)
- Update whitelisting file
- New implementation of Peer Healthcheck based on consensus between nodes
- Endpoint with total supply
- Update whitelisting file
- Update whitelisting file
- Remove node operator
- Validation of transactions ordinal chain during block acceptance
- Splunk support
- Pending transactions that no longer can be accepted are removed
- Order of block transaction acceptance (based on ordinal)
- Fail the joining flow and leave the cluster if any step during the joining process fails
- Reference implementation of concise transaction data format
- Reference implementation of bip44
- Remove two node operators
- Skip removing genesis tips
- Objects in mem-pool no longer expire after some time
- Removed twitter chill and algebird from wallet dependencies and moved them to schema and core
- Small rearrangement of dependencies in build file
- Additional metrics for non-dummy transactions
- Validation that transaction chain doesn't have any gaps
- Turn off dummy transactions
- More verbose public endpoints
- Whitelisted next batch of operators
- Nodes should no longer stuck in
PendingDownload
when joining the cluster
- Possibility to migrate existing KeyStore to use storepass for both KeyStore and KeyPair
- Possibility to export private key from KeyStore in hexadecimal format
- Endpoint for querying transactions by source address, that are not yet in a snapshot
- ConstellationNode uses fs2 implementation to initialize
- Node downloads only meaningful snapshots when joining the cluster
- Removed one node operators
- Remove two node operators from whitelisting
- Mark snapshot and snapshot-info files as sent for nodes not sending to cloud in order to not accumulate files locally
- Disabled size limit for snapshot directory
- At least 4 CPU cores are required to start a node
- Bounded thread pool usage for CPU-heavy operations
- ConstellationNode init (execution context)
- New service port: 9003
- Fallback to other buckets while doing rollback
- Removed libraries: scala-async, akka, storehaus-cache, sway, slick, h2, hasher, grgen
- Updated libraries: http-request-signer, enumeratum-circe, scaffeine, ext-scalatags, better-files, pureconfig, log4cats-slf4j, logstash-logback-encoder, http4s, prometheus, cats, aws
- Updated scala test versions
- Run API calls on unbounded thread pool
- Run http4s server on callbacks thread pool
- Run peer health check on a separate server with a separate thread pool
- Extracted schema out of the root project
- Extracted kryo registration out of the root project
- Changed from ioapp to unbounded thread pool
- Further adjusted rollback process
- Lock existing memPool during redownload
- Adjust rollback process
- Use more descriptive names for methods which clear the mempool during snapshot creation/redownload
- Use lock when updating balances in AddressService during redownload/rollback
- Apply SnapshotInfo balances all at once instead of one by one during redownload
- Make sure that we clear balances which existed at higher heights in AddressService when redownload moves node back to lower heights
- Use Set for locking addresses everywhere for consistency and to avoid accidental double-lock
- Improvements for rollback process
- Refuse starting node if there is not enough space left on device
- Auto leave if there is no space left on device for snapshot
- Handle corner cases with gap finding
- Additional logs for potential gaps in majority state
- Revert health checks during PendingDownload state
- Gaps in cloud queue fixed by calculating diff between majority and already sent
- Changed whitelisting file
- Sorting of queued snapshots for cloud backup
- Revert changes in KeyStoreUtils and the change from SpongyCastle to BouncyCastle - caused errors on linux env
- Update whitelisting
- Changed ID of one of node operators
- Use aliases instead of ips in Grafana
- Adjusted KeyStoreUtils for CoMakery integration
- Removed SpongyCastle and replaced it with BouncyCastle
- Whitelisted all batch1 operators
- Adjust reputation to observations
- Adjusted PeerHealthCheck node statuses
- Alias available in node metrics
- Adjusted PeerHealthCheck
- Possibility to set alias for node in whitelisting file (and including it in cluster/info)
- Remove IP from whitelisting and introduce dynamic IP to Id mapping
- Remove offline peers after snapshot
- Whitelisted new operators
- New operators whitelisted
- Adjustment for SelfAvoidingWalk
- Change IP of node operator
- Calculate stale tips using max of next snapshot heights
- Mark snapshot as sent only if sent to at least one provider
- Do not send and reward unaccepted majority snapshots
- Calculate stale tips by the occurrences
- Revert: remove stale tips at higher height
- Change
snapshotPerMinute
from4
to2
as rewards adjustment
- Whitelist new operators
- Remove stale tips at higher height
- Support for cloud providers and queue sending
- Additional logs for batch-fetching by merkle root
- Session token for communication between peers #1284
- Remove snapshot only if snapshot was send to cloud
- Distinct trust nodes for SelfAvoidingWalk
- Fix union checkpoint block creation during consensus
- Fix stack overflow in SelfAvoidingWalk
- Fix broadcasting finished checkpoint block
- Fixed missing parents in consensus
- Fixed circe mappings for ADTs
- Added @tailrec for SelfAvoidingWalk
- Changed scheduler delay for stale checks
- Check blocks below the snapshot height before missing parents
- Dead peer caching #1239
- Circe update to v0.13.0
- Get rid of circe auto derivation
- Data resolver refactor
- Different reputation does not change snapshot hash #1258
- Pull only consecutive transactions chain for consensus #1241
- Handle transactions with positive fee correctly #1201
- Self avoiding walk: missing edges and negative 0d
- No active tips issue and consensus hanging
- Whitelisting - change operator IP
- Broadcast joining height multiple times #1261
- Fixed missing parents metric
- Owner endpoint for observing majority heights
- Disallow offline nodes for communication
- Do not propose offline nodes for peer discovery
- Do not remove creating snapshot
- ChannelStorage database disabled
- Increased timeouts for dead peers
- Additional metrics for consensus
- Network confirmation before marking a dead peer as offline
- Public last-tx-ref endpoint
- Accepting checkpoint blocks after (re)download
- Include own MajorityHeight when rewarding
- Endpoint returning last transaction reference for a given address
- Additional validation checking last transaction reference when submitting a transaction
- Rewards metrics
- Rewards adjusted to 4 snapshots per minute
- Max snapshot heights for epochs adjusted accordingly to snapshot creation speed
- Reward only these nodes who sent the proposal for rewarded height
- Reduce number of meaningful snapshots to avoid downloading too much
- Broadcast own joining height only after successful download
- Make double join impossible
- Additional argument in Wallet CLI to pass already normalized tx amount
- Missing parents will not be resolved if present locally and waiting for acceptance
- Don't broadcast finished blocks to offline peers
- Sort blocks topologically after redownload
- Remove unnecessary blocks from acceptance
- Remove unnecessary error from peer discovery
- Disabled auto rejoin after node restart
- Can start only with no tmp directory
- Rewards amount
- Rewards distribution
- Observation and Transaction batch endpoints
- Make stored node proposals immutable
- Check for highest proposal when leaving #1096
- Last transaction reference hash
- Index oob error and reduce cpu utilization of SelfAvoidingWalk
- Sum balances for duplicated addresses in genesis data csv
- Config option to tell that allocated balances have been already normalized
- Validator for many overflowing transactions
- JVM metrics on alerting grafana
- Compare BuildInfo case classes instead of comparing hashes
- Additional logs for joining peer validator
- Remove old UDP code
- Transaction validator now validates signature properly
- Update whitelisting
- Response signer turned on again with proper middleware order #1061
- Validate hash of whole BuildInfo #713
- Update pl.abankowski.http4s-request-signer to 0.3.2
- http4s metrics and grafana dashboard
- Peer discovery flow
- Marking peer as offline /w latest proposals
- Total connections and queue limit for http4s client
- Updated whitelisting for batch0
- Temporarily added batch1 to whitelisting
- Compile body to Array[Byte] only if request succeeded
- Updated BouncyCastle to 1.65 which fixes "algorithm not found" issue of keystore
- Temporarily turn off request signer
- Changed API endpoints visibility and security
- Owner API and dashboard available on port 9002
- Joining and leaving available only from owner API
- Http4s API and APIClient instead of akka-http #1020
- Owner API (located on port 9002)
- Request and response signing #992
- Transaction json (de)serialization methods in wallet
- New metrics for Grafana alerting #734
- Double spend validation #1007
- Dropped support for json4s, used circe instead
- Changed API endpoints visiblity (ie. joining and leaving available only for node owner)
- Transaction max value validation #994
- Checking joining signature hash correctness #995
- Docker w/ whitelisting
- Specify height and hash for rollback explicitly
- Make sure that we can't set leaving height smaller than joining height
- Broadcasting to and requesting only from ready peers
- Whitelisting file
- Make sure that ownJoinedHeight can be set only once
- Fix Docker releases in Github workflow
- Do not validate EigenTrust when doing the rollback
- Do not store EigenTrust on disk and do not send it to cloud
- Introduce rollback mode to start cluster (node) from specific point (snapshot) in time #820
- Wallet commands to display id and public key #976
- PeerAPI whitelisting #931
- Do not try to download snapshots if majority state is empty #935
- Fix joining inside the majority interval #965
- Marking peer as offline properly when peer has created no snapshots
- Filter out offline peers for data resolving #947
- Fixed transaction hash integrity between wallet and node #946
- Historical join/leave heights #935
- Instantiate CloudStorage for Genesis flow
- Changelog introduced
- GitHub Release workflow