I can ask you the same question. Does this look like nothing?
The above was posted in RISE thread, but since they've been copying Lisk code, I guess the same issues are present in Lisk.
Now, are they crazy to create a new code from scratch, OR they're not skilled enough to make it work without Lisk team, OR Lisk code is indeed so bad ?
I know nothing about the Rise Code. But I can tell you the Lisk development since the beginning has made a great step.
And the first priority is stability and security.
All changes made to the Lisk core:Build- Fixed address in use errors on restart.
- PostgreSQL is now included with the “Binary” install, removing the need to install it separately. A simple bash lisk.sh coldstart will initialise the database on first start.
- Running lisk.sh as root is now prevented by default.
- Added lisk.sh reload command. @Isabello
- Fixed #6. lisk.sh restart now cycles both Node.js and Postgresql. @Isabello
- Fixed #10. lisk.sh start/stop/restart now work more reliably. @Isabello
- New simpler binary installation, thanks to liskInstall.sh. @Isabello
- Added tune.sh for optimizing the default postgresql.conf. @Isabello
- Preliminary support for checksummed archives. @Isabello
- Fixed #76. Updating node/lisk-node to 0.12.14.
- installLisk.sh - added mainnet vs testnet installation.
- installLisk.sh - laying framework for upgrade support.
- tune.sh - corrected bsd memory allocation.
- Updating node/lisk-node to 0.12.15.
- Closed #44. Added timestamp to postgresql logs.
- Added empty blockchain.db.gz to allow for starting the blockchain from 0.
- Updating node/lisk-node to 0.12.16.
lisk.sh- Closed #31. Added -s flag to support new snapshot feature.
- Closed #31. Added -c flag to specify config.json at runtime.
- Closed #21. Adding prereq checks, correct md5 checks for bsd/darwin.
- Implemented standard location for PID and log
- Reducing ram usage on machines with less than 1024Mb
- Made further reliability improvements to process
- Fixing postgresql locale / character encoding issues.
- Adjusted log naming based on DB instance Lisk is using.
- Determining whether Lisk is running based on PID and config.json input.
- Implemented new cases for independent management of Nodejs and PostgreSQL.
- Implemented url flag for lisk.sh to allow remote snapshots to be used with rebuild.
- Updated rebuild logic to allow for local backups to be reused and to specify file name.
- Improved lisk startup to display current block height after start or status is issued.
- Implemented new logic for interactive snapshotting.
- Added progress bar when downloading snapshots.
installLisk.sh- Added flag options for batch and silent install @34ro.
- Reducing ram usage on machines with less than 1024Mb RAM.
- Made further reliability improvements to process
- Fixing postgresql locale / character encoding issues.
- Removed duplicated block height check already present in lisk.sh.
- Changed coldstart to use empty blockchain.db.gz.
lisk_snapshot.sh- Implemented lisk_snapshot.sh for automated database backups.
- Added snapshot.json for configuring lisk_snapshot.sh backups.
Front end- Complete rebranding of the client UI.
- Complete clean-up of the old code base.
- Added translations for 14 languages (Chinese, Russian, German, Dutch, Greek, Spanish, French, Hungarian, Italian, Japanese, Norwegian, Portuguese, Romanian, Ukrainian).
- Enforced BIP39 passphrases.
- Enforced BIP39 second passphrases.
- Unified every modal.
- Improved Dapp registration and Multi-signature registration modals.
- Added fees overview to every modal.
- Added more descriptions to every modal.
- Removed usernames and contacts (to be later reimplemented as a separate Identity Dapp sidechain).
- Fixed several browser specific UI bugs and inconsistencies.
- Improved and unified the overall user interface.
- Fixed #30. Voting now possible after enabling 2nd passphrase @pilldriver.
- Fixed #29. Resetting application state between sessions @2mdoty.
- Fixed #13. Improved error handling when sending transactions @karek314.
- New and improved Russian translation @densmirnov.
- Refactored delegate username validations.
- Fixed non-functioning delegate registration. @2mdoty
- Fixed #34. Dapp registration when 2nd passphrase enabled.
- Fixed #43. Language switcher now works for all languages. @senikk
- Complete change of terminology from dapps to blockchain applications.
- Implemented feeService. Fetching transactions fees for each transaction type.
- Adding security warning before opening apps.
- Closed #9. Disabling buttons on first click. Adding success/error toasts.
- Closed #14. Explaining master passphrase.
- Closed #17. Fixing Safari font-weight / aliasing.
- Fixed #31. Updating bitcore-mnemonic @mrv777.
- Fixed #38. Including total count of delegates.
- Fixed Lisk address validations.
- Closed #47. Replacing zeroclipboard with clipboard.js.
- Closed #50. Fixed Invalid Lisk amount error when sending fractional amount.
- Closed #57. Updating bitcore-mnemonic to version 1.0.1.
- Closed #59. Checking for zero amount after building parts.
- Closed #67. Removing prefixes from orderBy parameters.
- Fixed broken sync status indicator.
- Updated translations.
- Added Polish language support.
- Fixating and updating dependency versions.
- Fixing calls to null u_multisignatures/multisignatures.
- Fixing call to undefined resp.data.account.
Back end- Complete clean-up of the old code base.
- Implemented Forging Rewards with an offset (first week no rewards).
- Changed the transaction fee to a constant 0.1 LISK.
- Revised error and logs messages throughout all backend modules.
- Change of address format (addresses now end with an L).
- Allowing dapps installation from GitHub using https.
- Fixed #13. Checking for presence of recipientId @fix.
- SSL: Using the default cipher from recent nodejs version to protect against weak RC4 cipher @TheGoldenEye.
- Fixed unrecoverable fork when comparing delegate id to generator id.
- Fixed #45. Improved sync / block insertion rate.
- Fixed #3. Setting X-Frame-Options/CSP headers @fix.
- Improved logging of received unconfirmed transactions.
- Improved logging of blocks loading from peer.
- Imposing hard limit on number of transactions per block.
- Changed database engine from SQLite to [PostgreSQL](
http://www.postgresql.org/). Providing faster query performance, better support for concurrency, and further options for scalability.
- Removed usernames and contacts from mainchain (to be later reimplemented as a separate Identity Dapp sidechain). Delegate usernames still remain.
- Added dapp zip link storage mechanism, replaces GitHub and Sia integration, with alternative decentralized solutions to be implemented in future releases.
- Implemented concatenated inserts/updates, dramatically reducing number of round trips between client and database:
https://github.com/vitaly-t/pg-promise/ ... ance-Boost
- Implemented promise based database logic using:
https://github.com/vitaly-t/pg-promise- Added optional PostgreSQL event monitoring using:
https://github.com/vitaly-t/pg-monitor (see: config.json:db.logEvents). This will be used for finding further efficiency improvements at the database level.
- Enabled gzip compression on all http requests using:
https://github.com/expressjs/compression. Significantly reducing the size of payloads transmitted between peers on the network, and also for lisk-ui (Example: vendor_app.js : Without compression 5.4MB, With compression: 1.2MB).
- Improved syncing reliability and chain comparison efficiency between peers, through query and code refactoring of Blocks#getIdSequence and the /peer/blocks/common API endpoint.
- Accounts#getDelegate(s): Calculating approval rating from total supply rather than a static amount.
- Increased max transactions per block from 10 to 25 (subject to further change after more testing and efficiency improvements have been made).
- Changed peers communication format from CSV to JSON.
- Fixed DApps#getInstalledIds, filtering installed ids to only include numerically named folders.
- Fixed “Dapp not ready” messages when auto-launching dapps upon starting client.
- Closed #24. Changing ‘sync’ to ‘syncing’. @HeisenbergCoin
- Closed #33. Logging each client request. @slasheks
- Fixed #36. Adding username and publicKey properties. @fix
- Fixed #47. Changing timestamps to UTC. @TheGoldenEye
- Fixed #50. Indicating forged blocks more clearly. @punkrock
- Fixed #52. Removing virgin field from mem_accounts. @simonmorgenthaler
- Fixed #54. Restricting total number of votes to 101. @TheGoldenEye
- Fixed #55. Fixing circular reference.
- Updated all 3rd party node modules to latest compatible versions.
- Switched from zip to gzipped tar for release packaging.
- Generated new genesis block for use on open testnet.
- Closed #69. Loading schema using external SQL file @vitaly-t.
- Closed #84. Allowing the setup of logging path in config.json @TheGoldenEye.
- Fixed #77. Peers API endpoint now works when filtered by state @slasheks.
- Fixed all known casting issues caused by db migration.
- Fixed ‘Recipient not found’ error on virgin accounts.
- Improved error logging/comments on fork causes.
- Added proper delegate username validations.
- Fixed test coverage of delegates API.
- Nearly Completed work towards #82, fork cause 3: @karmacoma
— Heavy refactoring of Round#tick, Round#backwardTick.
— Memory table updates are now wrapped within db transactions.
— Added checks for missed/unapplied mem_rounds on startup.
— Dropping mem_rounds table on reload if not in a valid state.
— Skipping delegate slot when round is ticking.
— Don’t receive block when round is ticking.
- Completed work towards #82, fork cause 3: @karmacoma
— Removing use of setImmediate in round ticks.
— Scoping each invocation of RoundPromiser.
— Iterating over delegates asynchronously.
— Getting outsiders only at end of round.
— Fixing finishRound logic.
- Fixed pending transactions API endpoint. @fix
- Fixed #8. Delegate usernames must now be lowercase. @fix
- Fixed #40. API payloads are now limited to 2Mb per request. @fix
- Fixed ip address detection when using proxy. @Isabello
- Fixed #122. Corrected schema errors in dapp transfers. @TheGoldenEye
- Fixed #101, #107 productivity calculations. @mrv777
- Fixed #90. Translating ips from long. @cezarsn
- Fixed #131. Added nethash p2p verification. @fix
- Fixed #22. Cannot read property ‘senderPublicKey’ of undefined. @fix
- Fixed forced blocks verification on startup, i.e: config.json-loading-verifyOnLoading.
- Closed #126. Using recommended pg-promise approach. @vitaly-t
- Updated transaction fees. 25 LSK for Delegate and Dapp registrations.
- Change of blockchain application categories
- Moved large queries into postgresql views
- Extracted SQL logic into separate modules
- Closed #134 Adding GET /api/blocks/getFees endpoint.
- Closed #137 Adding GET /api/blocks/getNethash endpoint.
- Standardised and fixed up test-suite.
- Fixed Lisk address validations.
- Fixing /apt/blocks/get?id= endpoint.
- Improved peers connectivity / preventing network partitioning.
- Improved logging when rebuilding chain.
- Set default loadPerIteration to 1000.
- Temporary extension of reward offset.
- Reverted forging timeout feature which was causing network to pause.
- Closed #110. Fixed fatal error when tmp directory does not exist. @m-schmoock.
- Closed #119. Added snapshot functionality.
- Closed #140. Adjusting levels for various log messages @tharude.
- Closed #160. Preventing / gracefully handling 101 votes exceeded errors @karek314.
- Closed #161. Improving consistency of GET /api/delegates?orderBy= results @ByronP.
- Closed #166. Standardising GET /api/transactions?orderBy= field prefixing @ByronP.
- Closed #171. Snipping secrets from logs @cezarsn.
- Closed #191. Configuring CORS with pre-flight.
- Closed #192. Normalising address casing, upon setting and merging of accounts.
- Closed #198. Added GET /api/delegates/search endpoint.
- Closed #201. Improving/log order and format @m-schmoock.
- Closed #203. Allowing local forging via config switch @m-schmoock.
- Closed #208. Fixed fatal error when trying to install a broken dapp link @m-schmoock.
- Closed #233. Improving efficiency of GET /api/accounts/top endpoint.
- Closed #237. Fixed PUT /api/multisignatures endpoint, including test coverage @mongrim.
- Closed #238. Fixed transaction broadcast reliability. Added unconfirmed transaction expiry @Crypto2.
- Merge #187. Fixed SQL errors in DappsSql module @TheGoldenEye.
- Merge #189. Added whiteList / blackList extension allowing cidr subnets @TheGoldenEye.
- Merge #226. Using local mocha dependency for tests @mfressdorf.
- Merge #199. Do not leave loop early, if ip was not found yet @TheGoldenEye.
- Fixed DApp#getWithdrawalLastTransaction error.
- Fixed invalid results yielded by GET /api/delegates/count endpoint.
- Refactored orderBy parameter parsing for all endpoints.
- Improved efficiency. Performing upsert when merging accounts.
- Fixed intermittent unnecessary rebuild of memory tables.
- Fixed inconsistent multisignature maximum lifetime (72 hours).
- Implemented chronological database migration system.
- Backported inTransfer / outTransfer module fixes. Resolves critical issue when saving outTransfer (type 7) transactions, used to initiate LSK transfers between a sidechain and the mainchain. The supporting test-suite has been improved to ensure this basic functionality is maintained between releases.
- Backporting transaction signature malleability fix. Replacing ed25519 implementation with js-nacl version 1.2.1, a high level API to libsodium.
- Closed #197. Improving error messages when account does not have enough funds. Yielding sender address and account balance.
- Closed #266. Changed behavior of POST /api/accounts/open and POST /api/accounts/generatePublicKey. New accounts are no longer written to mem_accounts. Added one-time migration to delete dormant accounts which have never received or sent funds.
- Closed #266. Verifying public key type, length and format in Account.prototype.set and Account.prototype.merge.
- Closed #266. Added virgin column to mem_accounts. Indicating whether an unconfirmed transaction sent from an account has been applied.
- Closed #266. Added protect_mem_account database trigger. Making address, u_username, username, virgin, publicKey, and secondPublicKey columns immutable once written.
- Closed #266. Added senderPublicKey exceptions to Transaction.prototype.verify.
- Added missing address validation to GET /accounts?address=.
- Fixed error on GET /api/delegates?orderBy=unknown:asc.
- Fixed error on GET /api/delegates?limit=0.
- Closed #163. Adding default orderBy to /api/blocks (height:desc).
- Merged #210. Block processing rewrite @fix.
- Preventing data corruption of memory tables after reload or shutdown #213.
- Closed #222. Fixing block reward calculation within first few blocks after milestone.
- Closed #258. Detecting numericality of snapshot round. Allowing node app.js —snapshot=foobar to default to the highest round.
- Closed #260. Removing infinite recursion in Loader.prototype.getNetwork.
- Closed #276. Finishing snapshot within __private.applyBlock.
- Closed #289. Prevent sync slowdown after receiving unconfirmed transactions.
- Conditionally loading blocks from network; when there has been no block “receipts” over network transport, or when last receipt was over 120 seconds ago.
- Added GET /api/loader/status/ping endpoint @34ro.
- Added GET /api/blocks/getEpoch endpoint.
- Added nethash and epoch properties to GET /api/blocks/getStatus.
- Fixed orphan account check. Excluding mem_accounts with NULL blockId.
- Fixed invalid type comparison on unapplied rounds.
- Fixed reported block height when rebuilding blockchain.
- Improved error logging with JSON dump of affected block.
- Closed #265. Fixing “Account not found” error when sending transactions to virgin account using POST /api/transactions.
- Fixed #279. Removing erroneous unconfirmed transactions.
- Fixed #279. Removing redundant double spend collection.
- Fixed undefined is not a function error. After error thrown while verifying transaction bytes.
- Added verification of transaction assets for all transaction types.
- Improved error logging with JSON dump of affected transaction.
- Improved logging of apply / undo of transactions at debug level.
- Performing sender balance checks using bignum arithmetic.
- Closed #269. Fixed crash on 404 error for POST /api/dapps/install.
- Downgraded npm to latest LTS release 2.15.10.
- Improving peers db efficiency #104. Sequencing peers updates.
- Improving peers db efficiency #104. Replacing insert / update with single upsert.
- Improving peers db efficiency #104. Chaining database queries when adding dapp peer.
- Closed #147. Replacing request with popsicle. Fixing memory leak on large request bodies, e.g. loading blocks from peer.
- Merged #227. Improved peer discovery using histogram cut selection of “good” peers @fix.
- Closed #231. Implementing API rate limiter. Individually configurable for both /api and /peer. Disabled by default.
- Added EHEADERS, ERESPONSE, ENETHASH peer error codes, extending:
https://github.com/blakeembrey/popsicle#error-handling.
- Fixed timers in Loader.prototype.onPeerReady.
- Only trigger nextLoadBlock if loaded and not already syncing.
- Fixed halt to nextLoadUnconfirmedTransactions recursion when syncing.
- Fixed halt to nextLoadSignatures recursion when syncing.
- Checking nethash for all transport /peer requests.
- Returning JSON response for POST /peer/blocks.
- Returning success or error for GET /api/peers/get.
- Added success property to GET /peer/transactions.
- Ignoring already processed or confirmed transactions for POST /peer/transactions.
- Added transactionId property to POST /peer/transactions.
- Added success property to GET /peer/height.
- Removing peers which return bad response code.
- Removing peers with invalid request headers.
- Removing peers with invalid nethash.
- Improved logging of peer changes at debug level.
- Increased default peer timeout to 5000 ms.
- Fixed unwanted rejection of seed peers due to lack of os, version metadata.
- Removed unnecessary peer loopback detection.
- Validating peer headers using zschema only.
- Closed #147. Dramatically improved CPU and memory efficiency.
- Moved schema validations into separate modules, to eliminate unnecessary continous object creation.
- Added unique ids to schema validations, to better utilize z-schema schema caching.
- Nullifying any large objects identified by memory profiling at the earliest opportunity.
- Decoupled transaction types from modules into separately addressed modules.
- Defining functions on constructor prototype where possible.
- Using async for control flow, to remove deep nesting of code.
- Fully linted code base using jshint to a strict standard.
- Created database indexes on memory tables.
- Complete rewrite and abstraction of API tests, for cleaner tests.
- Massively expanded API test coverage, resulting in many fixes.
- Added initial unit test coverage, e.g. for block rewards.
- Removed unimplemented serveHttpAPI/Wallet options from config.json.
- Added maxUpdatePeers option to config.json.
- Added trustProxy setting to config.json.
- Updated all dependencies to latest compatible versions.
- Replaced underscore, util-extend with lodash.