Skip to content
This repository has been archived by the owner on Jun 11, 2024. It is now read-only.

Version 3.0.0

Compare
Choose a tag to compare
@shuse2 shuse2 released this 17 Jan 13:30
· 9651 commits to development since this release
6cff472

Change Log

v3.0.0 (2020-01-17)

Full Changelog

This release implements 4 LIPs as part of the Security and Reliability phase:

Released packages

  • lisk-sdk@3.0.0
  • lisk-elements@3.0.0
  • lisk-commander@3.0.0
  • lisk-framework@0.5.0
  • @liskhq/lisk-api-client@3.0.0
  • @liskhq/lisk-client@3.0.0
  • @liskhq/lisk-constants@1.3.0
  • @liskhq/lisk-cryptography@2.4.0
  • @liskhq/lisk-p2p@0.4.0
  • @liskhq/lisk-passphrase@3.0.0
  • @liskhq/lisk-transaction-pool@0.2.0
  • @liskhq/lisk-transactions@3.0.0
  • @liskhq/lisk-validator@0.3.0

LIPs

  • Introduce BFT consensus protocol #3555
  • Remove redundant properties from transaction objects #4038
  • LIPS:0004 Introduce robust peer selection and banning mechanism #3328
  • Mitigate transaction replay on different chains #4039

Improvements

  • Inefficient blocks transmission between peers #2424
  • Do not include nonce when broadcasting #3702
  • Remove NewRelic integration #4141
  • Remove broadhash consensus #4265
  • Add filter to Accounts entity to allow searching in account.asset field #3990
  • Upgrade to NodeJS 12 #4392

Bugs

  • isNullByteIncluded mismatch regex #2907
  • Setting LISK_REDIS_HOST leads to unexpected logging behaviour #4630
  • HTTP API whitelists do not always work as expected #4629
  • LISK_API_PUBLIC=false does not work #4631
  • P2P: Peer ban expires before 24 hours #4561
All the issues

Closed issues:

  • Allow /delegates endpoint to accept voteWeight as sort parameter #4715
  • Allow lisk-api-client to have configureable sort parameter for delegates resource #4716
  • Upgrade dependencies for http-api module #4699
  • Protocol Spec for vote transactions generate different output #4686
  • Duplicate key value violates unique constraint error #4668
  • TypeError: Converting circular structure to JSON with Node 12.14.1 #4667
  • Fix lodash vulnerability #4656
  • Chain state store finalize () does not return the promise #4652
  • Fix all the fragile P2P test for consistant result #4651
  • Rename database table "temp_block" to "temp_blocks" #4648
  • Update term nethash to networkId in the p2p library #4647
  • Set the path parameter to the websocket server #4646
  • P2P migrating tests from Mocha to Jest #4642
  • Update to Node.js v12.14.0 #4640
  • P2P remove 'type:' value from 'rpc-request' messages payload #4639
  • Setting LISK_REDIS_HOST leads to unexpected logging behaviour #4630
  • LISK_API_PUBLIC=false does not work #4631
  • HTTP API whitelists do not always work as expected #4629
  • Integration test for genesis_block.spec.js does not terminated correctly #4627
  • Cleanup test utilities for framework #4626
  • Handle usage of async and await expression #4619
  • Prettier fails to apply format for lisk-sdk #4614
  • Remove jsdoc dev dependency from framework #4612
  • P2P PeerBook newPeers and tiredPeers lists should be disjoint #4609
  • Backup and use complete tried peers data #4607
  • P2P selectPeersForConnection unit test fails randomly #4599
  • Application state not updated at initialization #4594
  • Replace blacklistedPeers by blacklistedIPs #4586
  • fixedPeers still being evicted #4581
  • bestPeer.id returns undefined:4000 #4580
  • Violation of fork choice rule error #4579
  • Remove validator from lisk-transactions and use lisk-validator #4572
  • Remove function signatures #4571
  • Fill-pool shouldn't be called when delegate is not enabled to forge or if node is syncing #4569
  • P2P: Peer ban expires before 24 hours #4561
  • Commander: generate network identifier #4559
  • Network module use deprecated P2P config values #4549
  • Storage component not parsing Dapp transfer transactions correctly #4547
  • Finalized height is not being updated #4546
  • API: Node status remove network height and loaded #4543
  • Update readme for P2P library with instructions and example #4542
  • Remove unused dependency from package.json #4539
  • Refactor log level, code and variable shadowing #4534
  • BFT: Error occurred during synchronization #4532
  • Test that transaction replay is not possible among networks #4530
  • Node should not apply penalty while processing transaction #4528
  • Append last block info to "Synchronization finished" log #4522
  • Broadcaster should not send transaction Ids if the size is zero #4521
  • Add limit to BSM FCS get queries #4518
  • Improve logging when receiving common block on FCS #4514
  • Elements library show throw informative errors #4512
  • BFT compliance should not checked on detached block #4511
  • API transactions by default should display latest transactions #4510
  • Node info is not injected into the inbound peer #4509
  • API peers should hide internal state information #4508
  • Node should not update application state while syncing #4505
  • Amount and recipientId is invalid in transaction schema #4504
  • Revisit Peer discovery threshold test #4503
  • Invalid transaction payload during RPC causes network isolation #4501
  • Add more test coverage for logic that uses delegateMinHeightActive value #4499
  • Remove cache from the chain module #4487
  • Update app label to use WSPort #4486
  • Update Typescript version to 3.7 #4485
  • Move modules/migrations to modules/components/storage/migrations #4483
  • Remove ip field from P2P ProtocolPeerInfo interface #4475
  • Ban peer if applying a block fails on FCS (_switchChain method) #4474
  • Change prevotedConfirmedUptoHeight -> maxHeightPrevoted #4471
  • Move new Fork Choice Rule logic to BFT folder and call it from Block Processor V2 and V1 #4470
  • Add BFT height finalized information to HTTP API #4463
  • transaction.id should not be used before assignment #4461
  • Update broadcaster to store transaction and signature separately #4460
  • Update transport module to use consistent naming and returning schema #4459
  • Peer state is not updated after the node is restarted #4454
  • Block synchronisation, fast chain switching and p2p issues #4453
  • Update transaction library to remove old transaction and export more functions #4451
  • Version 3.0.0 - QA #4450
  • Show BFT properties in api/blocks response #4449
  • Fix fragile max payload test in p2p #4447
  • Peer not found to apply penalty #4446
  • Lisk-sdk folder requires index.d.ts #4438
  • Add network identifier in the framework #4435
  • Add postTransactionAnnouncement #4434
  • Check all of the exceptions related tests are covered #4433
  • Update producedBlocks for genesis block #4429
  • Cover Synchronizer class with unit tests #4428
  • Reject unnecessary messages and ban a peer #4424
  • Request and apply blocks in chunks for BSM #4412
  • Get rid of Storage.RoundDelegates.summedRound #4407
  • To many properties within Peer Class and redundant fields #4401
  • Add peerId on Message and Response packet #4395
  • Audit SQL queries and SQL indexes #4394
  • Upgrade to NodeJS 12 #4392
  • Validate Asset should return full path on error #4388
  • Introduce functional test suite into lisk-p2p library #4387
  • Cover fast chain switch mechanism with unit/integration tests #4376
  • Cover block synchronisation mechanism with unit/integration tests #4375
  • http server should be created when start() is called #4371
  • Refactor blocks endpoint to retrieve blocks from a peer #4369
  • Apply penalty on sending malformed peerInfo or peerList > 1000 #4363
  • Adding an incoming peer even when it is a duplicate connection #4362
  • Improve network actions to expose connectedPeers and disconnectedPeers #4361
  • Discover from seed peer when triedPeers < 100 #4360
  • Disconnect from seed peers after initial discovery #4359
  • Should save triedPeers in DB during network cleanup #4358
  • Add block announcement after processing a block #4356
  • Error Plugin: lisk-commander: files attribute must be specified #4355
  • Add incentivizing Lisk-BFT Protocol Participation #4354
  • Always allow fixed/whitelist incoming connections #4353
  • Incoming connections from fixed peers should never be closed similar to whitelist #4352
  • Missing a condition for selecting peers for connection when having low triedPeers #4351
  • Discover peers through seed peers when not enough outbound connections #4350
  • Add delegateMinHeightActive needs to be included in calculation of prevote and precommit #4349
  • Decide to restore blocks upon startup when temp_block table is not empty #4348
  • Jest Integration tests are failing randomly #4343
  • Investigate slow sync on introduce_bft_consensus-dpos branch #4340
  • Switch to Different Chain via FCS #4339
  • Query all blocks from common block for peer and validate for FCS #4338
  • Implement finding common block for FCS #4337
  • Update commander transaction commands to accept network identifier #4336
  • Update sign function to include network identifier #4335
  • Update getBasicBytes and getAssetBytes in transaction library #4334
  • Add getNetworkIdentifier function #4333
  • Update commander related to transaction schema #4332
  • Update genesis block format #4331
  • Update API to be compatible with the updated transaction schema #4330
  • Update transaction pool not to use senderId and update usage of recipientId #4328
  • Check all of the RPC endpoint related transaction #4327
  • Update storage to store updated transaction schema #4326
  • Update transaction schema without changing the byte array #4325
  • Latest Transactions from Testnet API are not consistent #4323
  • Call delete block for the BFT module #4320
  • Use state store for updating finalizedHeight #4316
  • Do not connect to a peer if we already have an outbound peer with that IP #4315
  • Backup and restore peer reputation and productivity to and from the PeerBook #4314
  • More detailed P2PPeerInfo #4313
  • Return full common block instead of only ID property #4307
  • Integrate swagger-stats APM #4300
  • BFT module should be initialized in the block processor #4297
  • Inconsistent use of previousBlock and previousBlockId #4295
  • API node status separate transactions from node status endpoint #4294
  • Improve log message and format #4285
  • Do not allow id property in PeerInfo provided by a peer #4284
  • Full peers list growing excessively large (> 100K) #4279
  • Remove vote column from mem_accounts #4274
  • Remove loading signatures and providing signature endpoint #4268
  • Fix forging_statistics endpoint #4267
  • Create genesis block for v2 protocol #4266
  • Remove broadhash consensus #4265
  • Emit rounds change event when round finishes in Dpos module #4264
  • Request nodeInfo from outbound peers before adding to peer lists #4260
  • The nodeInfo was removed from _peerSelectForConnection again #4253
  • Integrate usage of computeHeadersForNewBlock on create pipeline in BlockProcessorV2 #4247
  • Unstable peers functional http tests #4243
  • Add default implementation for assetFromSync and verifyAgainstTransactions in BaseTransaction #4238
  • Register Block Processor V2 and make it default #4235
  • Create function to compute BFT headers on block creation #4233
  • Add unit test coverage for P2P request file #4230
  • Add unit test coverage for P2P peer pool file #4229
  • Add unit test coverage for P2P peer directory folder #4227
  • Add unit test coverage for P2P peer_book file #4226
  • Add unit test coverage for P2P outbound peer file #4225
  • Add unit test coverage for P2P inbound peer file #4224
  • Add unit test coverage for P2P base peer file #4223
  • p2p integration tests fail sometimes and are unstable #4219
  • Move generating delegate list logic into Dpos.apply and Dpos.undo #4218
  • Delete caching mechanism in Dpos #4217
  • Extract the common integration tests setup/configs to a central place to allow tests to share the default topology/config #4200
  • Add integration test for P2P library events #4199
  • Improve syncing logging #4195
  • Write integration test coverage for DPOS module #4192
  • JavaScript heap out of memory error #4183
  • Alternative for getUniqueOutboundConnectedPeersCount and consensus calculation #4178
  • Remove old rounds related logic #4168
  • Wrong attribute description in app config schema #4167
  • Replace rounds.backwardTick by dpos.undo #4158
  • Replace rounds.tick by dpos.apply #4157
  • Replace rounds.validateBlockSlotAgainstPreviousRound by dpos.verifyBlockForger #4156
  • Replace rounds.validateBlockSlot by dpos.verifyBlockForger #4155
  • Replace rounds.generateDelegateList by dpos.getRoundDelegates #4152
  • Protocol-spec second signature #4148
  • Dpos.getRoundDelegates returns outdated list #4147
  • Implement verifyBlockForger in Dpos module #4144
  • Remove NewRelic integration #4141
  • Merge child tables of mem_accounts #4139
  • Move transaction module in framework to inside of blocks module #4138
  • Update transaction module to consistently use state store #4137
  • Define serialisation and deserialisation of blocks in interface adapters #4131
  • Unable to understand the use and relevance of reloadRequired function in blocks/verify.js file #4130
  • Create protocol-spec json for all fork choice patterns #4129
  • Functional GET tests taking too long on Jenkins #4124
  • Separate P2P integration tests into multiple files and improve naming and test descriptions #4121
  • Sync error on testnet #4119
  • Merge development into feature-bft #4098
  • README Set up new a blockchain application does not include configDevnet #4096
  • Framework should handle the cleanup successfully when failed on initialization #4093
  • Create protocol-spec json for Transaction replay specification #4092
  • API node/status/forging filter doesn't work as expected #4091
  • Create protocol-spec json for BFT specification #4088
  • Create protocol-spec json for basic current specification #4087
  • When a peer asks us for our peer list, we should not report the state property #4073
  • Create base class for peer list for peer directory #4048
  • Unit tests for eviction of peers from peer buckets #4045
  • Implement block processor #4041
  • Persist P2P secret to DB #4040
  • Mitigate transaction replay on different chains #4039
  • Remove redundant properties from transaction objects #4038
  • Don't use hardcode config options in the jest tests #4028
  • Add jest config clearMocks: true and remove jest.clearAllMocks() in tests #4026
  • Replace the usage of verify* with validate* for in-memory checks defined for block object #4025
  • Remove block dependency from blocks/utils #4012
  • Update delegates ranks at the end of the round #4006
  • Update vote weight of delegates #4005
  • Update rewards & fees at the end of the round #4004
  • Update missed Round #4002
  • Update Produce Block #4001
  • Add filter to Accounts entity to allow searching in account.asset field #3990
  • Fix and unskip the tests for applyTransaction function defined in transactionHandler #3987
  • Use consistently flat structures for asset property objects #3980
  • Add util functions to be used in integration test #3955
  • Target specific peers in Block Sync Mechanism #3916
  • Emit event when a block is finalized from the bft module #3908
  • Improve finality manager performance and add more test simulations #3894
  • Split block processing steps into separate functions and expose them from module/blocks #3869
  • Fix cyclomatic complexity in P2P constructor #3859
  • Check and Update NodeJS versions in Readme files #3852
  • Create ChainMeta entity to persist BFT information #3832
  • Move BlockSlots class into Dpos Module #3789
  • Create constants.js in Chain Module #3788
  • Create compontents/index.js in Chain Module #3787
  • Epic: Fast Chain Switcher Task List #3777
  • Implement functionality for removing blocks stored in temp table #3776
  • Blocks need to be restored from temporary table upon failure or application restart #3775
  • Update Application State interface to include prevotedConfirmedUptoHeight #3774
  • Block Synchronizer class to combine Block Synchronizaton Mechanism logic #3773
  • Blocks need to be stored in temporary table on block deletion #3772
  • Implement request and apply blocks of new chain step for Block Sync Mechanism #3771
  • Implement reverting to last common block step for Block Sync Mechanism #3770
  • Implement mechanism for finding commonBlock #3769
  • Implement obtain tip of chain step for Block Sync Mechanism #3768
  • Implement peer selection algorithm step for Block Sync Mechanism #3767
  • Do not include nonce when broadcasting #3702
  • Update the block processing to persist maxHeightPreviouslyForged #3696
  • Persist BFT attribute heightFinalized as part of atomic block write #3695
  • Load minimum block headers on block deletion #3694
  • Create submodule/bft to initiate the BFT logic at application startup #3693
  • Implement BFT LIP logic to add/remove headers as logic/bft.js #3692
  • Create data structure to store block headers for BFT #3691
  • Replace the previous Rounds module with the new Dpos module #3686
  • Remove previous Round implementation #3685
  • Update API /delegates/forgers endpoint to be BFT compliant #3684
  • Automatically cleanup round_delegates table #3683
  • Make usage of delegate list BFT compliant #3681
  • Add Round.undo function #3680
  • Reorganise P2P library folders and files #3678
  • Invoke applyPenalty network actions in framework #3672
  • Introduce advertiseAddress flag for peers #3661
  • Typo in the blocks RPC response #3644
  • Add Round.apply function #3633
  • Generate delegate list using round_delegates table #3631
  • Implement steps pertaining to BFT consensus protocol introduced in block reverting mechanism #3571
  • Implement steps pertaining to BFT consensus protocol introduced block processing mechanism #3570
  • Rounds module should support rolling back indefinite (until finality) number of rounds in the blockchain #3568
  • Add waiting threshold before forging block if node did not receive the block from previous slot #3564
  • Implement block synchronization mechanism introduced in the Introduce BFT consensus protocol LIP. #3563
  • Implement Fast chain switching mechanism as per the specifications in Introduce BFT consensus protocol LIP #3562
  • Implement method to identify chain recovery mode with BFT #3561
  • Introduce BFT module as described in the "Introduce BFT consensus protocol" LIP. #3560
  • Implement the fork choice rules described in "Introduce BFT consensus protocol" LIP #3559
  • Include height property in calculating the signature of the block #3558
  • The received time of the most recent block in the blockchain should be maintained #3557
  • Introduce heightPrevious and heightPrevoted properties in block headers #3556
  • Introduce BFT consensus protocol #3555
  • Improve the logger name for JSON logger #3532
  • Update eslintrc.json files #3468
  • Ignore typescript projects from eslint #3411
  • LIPS:0004 Introduce robust peer selection and banning mechanism #3328
  • Add missing unit test for transactions library #3331
  • Remove unwanted old database functions #2954
  • isNullByteIncluded mismatch regex #2907
  • Add missing unit tests for p2p #3338
  • Add lazy push mechanism to reduce overall bandwidth consumption in the network #3344
  • Add eager push mechanism to ensure that blocks and transactions propagate quickly #3345
  • Inefficient blocks transmission between peers #2424
  • Fix the number accuracy of vote calculations in round #2423

Merged pull requests: