Skip to content

Releases: multiversx/mx-chain-go

v1.0.116

17 May 21:10
Compare
Choose a tag to compare

Release v1.0.116 is out 🚀

What's new:

  • #1720 Improved code coverage in epochStart and update packages.
  • #1739 Implemented a special elrond key in which the rewards value is saved. This will be used whenever a SC address is the reward address for one ore more nodes.
  • #1538 Added a test that proves the epoch economics data is calculated as expected.
  • #1742 Added the close mechanism for go routines through context and io.Close implementation. Components affected: chronology, SPOS worker, syncTimer, bootstrapper, epochStartTrigger, miniBlocksPoolsCleaner, txsPoolsCleaner.
  • #1737 Added unit tests in trie package, removed unused SignalEndOfProcessing() from multiDataInterceptor, exported trie consts in config.
  • #1716 A sender can have no more than k transactions in the pool. The transactions can not exceed s bytes in total. These limits are checked and enforced at transaction insertion (addition) time.
  • #1730 Referenced latest version of Arwen, reference latest version of delegation contract, adjust gas metering for deployments (less gas used now), integrated new delegation SC when executing genesis blocks, added verify process after delegation call to make sure the contract has the correct state, added versioning checks when deploying genesis SC, fixed long tests/unit tests.

Bug fixes:

  • #1745 Fixed the case when rewards transactions were not indexed because method that get rewards transactions from pool was called after transactions was removed from pool. Fix: call the method that reads the transactions before they are removed from the pool.
  • #1749 Auction smart contract was calling in the wrong order the staking smart contract.

BoNwards wave 49

13 May 17:02
Compare
Choose a tag to compare

Release v1.0.115 is out 🚀

What's new:

  • #1455 Genesis file refactor: changed the genesis file to allow the following operations: balance minting, direct staking and delegated staking. Added checks against both genesis.json and nodesSetup.json files. Added the possibility to deploy smartcontracts at genesis time.
  • #1524 Heartbeat system refactoring by carving out the components from the node package. The heartbeat system can no longer be deactivated from the config.toml file as this will cripple the node's network sharding subsystem.
  • #1723 Enabled the route which returns the cost of a transaction: /transaction/cost
  • #1713 Added software version to the block header and check for it to be non-zero length and less than 10.
  • #1714 Refactored the size check unmarshalizer in order to optimize how it works. Instead of doing a marshal operation on the received obj will try to do a type assertion to convert obj (type interface{}) in a Sizer type obj. If type assertion works fine new object of type Sizer can return size in bytes of the received object.
  • #1721 Standardized the randez-vous strings to the format suggested by the libp2p team. The format will be in the form /erd/kad/[version] (such as /erd/kad/1.0.115).
  • #1726 Implemented a grace period in which the node's rating won't be decreased after a hardfork event.
  • #1553 Updated libp2p libraries to the newest released versions. Added prints in ContinuousKadDhtDiscoverer that will help the debugging process, added basic print capability for external libp2p libraries. Refactored netMessenger closing process. Now the instance will safely stop all launched go routines

Bug fixes:

  • #1552 Hardfork fixes regarding the import and export mechansim.
  • #1712 Fix new relevant issues found by running some linters supported by the GolangCI tool.
  • #1715 Enable "put" functionality to new persister only after persister is created.
  • #1554 Moved minNumPeersToConsider and minNumOfPeersToConsiderBlockValid to config.toml file.
  • #1721 Fixed the bad config passing on the peerDiscoverer implementations, updated refresh interval for the seeder node.
  • #1726 Fixed start in epoch config for the minNumPeersToConsider and minNumOfPeersToConsiderBlockValid parameters.
  • #1537 Unstaked nodes were not actually removed from the network. Leaving nodes were set to observer status and moved to shard zero and it appeared they are reshuffled. Priority given to unstake nodes before rating leaving nodes.
  • #1724 Fixed the situation when unbond could work if the node is still a validator (because of the insufficient number of new nodes that would have replaced the leaving nodes)
  • #1729 Fixed the restart with DB issue that was caused by the wrongly placed set epoch for put call.
  • #1725 Minor fixes in local testnet scripts and in SC address prints.
  • #1728 Added checks for epoch start configuration when starting the bootstrap component. Otherwise, this could occur in late errors.

Note: This release should start with a new DB

BoNwards wave 48

08 May 18:49
Compare
Choose a tag to compare

Release v1.0.114 is out 🚀

What's new:

  • #1502 Implemented ESDT system smart contract which handles the token issuing. That is the starting point of any ESDT token. Through the issuing the issuer will receive the initial supply in his own account.
  • #1508 Added integration test for ESDT token
  • #1500 Greedily evict senders with initial nonce gaps: Upon a number of failed selections (after the expiration of their grace period) the senders with initial nonce gaps are collected into a list of sweepable items and removed from the cache (at the end of the selection phase).
  • #1514 Developer fee adjustments: Implemented a way to allow the propagation of the developer fees to metachain as well so that metachain has clear view of all fees in the system and take them into account when computing the rewards at the end of an epoch.
  • #1507 Prune and cancel prune when snapshot in progress: enable trie pruning while a trie snapshot is in progress, all pruning operations (prune, cancel prune) must be buffered, and after the snapshotting process has finished, they must executed sequentially and in the same order that they were added to the pruning buffer.
  • #1462 Added new REST API routes: /network/config and /network/status
  • #1447 Added REST API config file: Added an api.toml file which contains all the endpoints available in the node and options to enable or disable them. This way, if a node doesn't want to expose some (or all) of the API routes, this can be done now.
  • #1484 Added new data fields in elastic search transaction.
  • #1513 Changed the transaction data field back to string: when signing the transaction, the data field has to be in string format. Added a custom marshalizer for transactions which does not escape HTML characters in strings.

Bug fixes:

  • #1508 ESDT fixes: fixed gas consumed fee computation for current shard, eliminated useless smart contract results, fixed treating the error of an asyncCall.
  • #1511 Staking/auction improvements: fixed the gas consumption to staking and auction SC, fixed cases of stake-unstake-stake, fixed cases of stake-unstake-unbond-stake, fixed cases of stake-unstake-stake-claim.
  • #1512 Fixed situation in which missing cross headers requested are recieved and notified first in block processor registered handler and afterward in block tracker registered handler. This caused situation when actually received missing headers were not found in block tracker list in first iteration (until another 6 sec passed or another arbitrary cross header is received)
  • #1512 Fixed edge case when method requestHeadersIfMissing from block processor was not worked as expected and requests for next missing cross headers have not been done.
  • #1501 Fixed some race conditions in tx cache: Add a (somehow structural) constraint that NotifyScoreChange is only called under an already acquired mutex on the mutating txListForSender. Previously, if that were to be called concurrently, data races on ComputeScore() >> len(linkedList) would have occurred.
  • #1515 Fix overflow of lossy / imprecise counter: this bug (resulting in a panic) appeared only on very stressful local system tests, with extremely small cache (1% of real size) and a large number of incoming transactions.
  • #1518 Fix edge case on reset probable highest nonce: fixed edge case when repetitive timeout errors, or any hind of errors occurred when a node is syncing (requesting next header or missing miniblocks) but before the actual starting of processing/committing block, would not triggered the action of resetting probable highest nonce and the action of cleaning headers pool.
  • #1516 If process of local storage, shuffled out and synchronization failed, there is no need to retry the full sync again for start in epoch. Fixed epoch start meta header resolver. Fixed snapshot pruning buffer length.
  • #1527 Fixed the evictionWaitingList cache overflow.
  • #1523 Fixed an edgecase that happened when a putBatch operation was called on an already closed persister.
  • #1526 In case of bootstrap if syncing the epoch start metablock returns with any error, this should be treated as critical, node should not start.

Special feature:

  • #1553 testing the new libp2p libraries + removed the DisableRelay option as to allow correct connections between peers + enforced the protocol ID, standardized the protocol ID string (see p2p.toml config file)

Note: This release should start with a new DB

BoNwards wave 47

02 May 19:30
Compare
Choose a tag to compare

Release v1.0.113 is out 🚀

What's new:

  • #1498 Added rewards for community: at the end of the epoch a percentage defined in config from the protocol rewards will be directed towards a community account.
  • #1496 Transactions stored in the datapool are now sorted by gas price if multiple transactions are found for the same sender and the same nonce.
  • #1492 Simplified the way staking/unstaking/unbonding and unjailing occur.
  • #1494 Cleanup: removed the address container interface and implementations as to simplify the method calls. Replaced with plain byte slice.

Bug fixes:

  • #1497 Fixed closing the bootstrap storage if an error occurred when trying to fetch initial data from that storage.
  • #1497 Added a fix to the levelDB implementation so close can be called multiple times.
  • #1497 Added waiting time and retries when opening a persister. This will prevent returning immediately when encountering the "resource temporarily unavailable" error.
  • #1503 Fixed edge case when received metablocks were added in cache before the block tracker initialization leading to perpetual requests of metablocks that were actually long time received.
  • #1503 Fixed the event timestamp in resolver debugger, transformed some log.Debug in log.Trace, changed the order of the nodesSetup fields.
  • #1492 Fixed saving the correct metablock in storage after bootstrap. Otherwise, the block tracker component would have behaved in an unpredictable way.
  • #1492 The node returns an error and stop if it can not synchronize the data trie.
  • #1492 Fixed trie snapshot to take the snapshot on the correct shard header (the shard header notarized by the tart-of-epoch metablock)

Note: This release should start with a new DB

BoNwards wave 46

30 Apr 14:59
Compare
Choose a tag to compare

Release v1.0.112 is out 🚀

What's new:

  • this version is 100% compatible with the v1.0.111. We needed to create a new release in order to start from the genesis the whole network.

Note: This release should start with a new DB

BoNwards wave 45

30 Apr 13:56
a21faa3
Compare
Choose a tag to compare

Release v1.0.111 is out 🚀

What's new:

  • #1470 Implemented a mechanism through which the proposer will wait for more than 2/3+1 signatures in subround signature until max subround allocated time would be reached.
  • #1475 Added the possibility to remove a failed resolved hash if that hash becomes available on a next request, added timestamp on events.
  • #1427 Added checks that signal if the implementations respect the interfaces.
  • #1448 Added functionality to reshuffle nodes between shards. The node is restarted and the mechanism for startInEpoch kicks in requesting the missing functionality. If the validator is shuffled out of one shard it will restart and move to another shard.
  • #1479 Added identity field on the heartbeat message, taken from prefs.toml. This will be used to securely identify nodes on our validator's page.
  • #1417 Refactor the component which reads data from storage when bootstrapping in order to make it able to be tested.
  • #1476 Moved a lot of components from the main.go area to a separate package and write unit tests for them.

Bug fixes:

  • #1470 Fixed an edge case when final check point was not re-computed on rollback after forkDetector.RemoveHeader method was called.
  • #1470 Fixed an edge case on sync, when received requested missing miniblocks were not added in the same order in block.Body structure which should be passed to blockProcessor.ProcessBlock method.
  • #1472 Recalibrated how processed and pending miniblocks are calculated in case of start in epoch. Added requests on processing of start in epoch to request the missing mteablocks.
  • #1485 Start in epoch with DB without the node shuffled to another shard started with the genesisNodesConfig and couldn't continue. Added currentNodesConfig saved in the DB also for the case the node was not shuffled.
  • #1483 Fixed situation when on forced roll back (with reset probable highest nonce) not all higher header nonces already received, are removed from pool.
  • #1483 Fixed situation when fork is detected on a header received too late but with higher epoch.
  • #1483 Clear consensus group cacher when epoch is changed.
  • #1488 The displayRatings function failed on the first block of every epoch because the nodesConfiguration for the new epoch was not found. Moved displayRatings on metablocks after the nodesConfiguration is created by the nodesCoordinator.
  • #1488 The signedBlocksThreshold was verified not just for the eligible list members but for all validators and for the waiting validators the signedBlocks was always 0 and a debug message appeared: "below signedBlocksThreshold".
  • #1488 computeSignedThreshold is done only on eligible Validators.
  • #1486 fixed some integration tests
  • #1491 When committing the main trie, collect all the dirty hashes from the data tries, and add them to the main trie new hashes (just like the oldHashes).
  • #1491 Do not cancel prune when snapshot is in progress.
  • #1491 Do not cancel prune on snapshotEpochStartFromMeta().
  • #1491 Cancel prune on previousRootHash, not on current rootHash.
  • #1493 Fixed the start in epoch 1 with existing database

BoNwards wave 44

24 Apr 17:52
12a3c9f
Compare
Choose a tag to compare

Release v1.0.110 is out 🚀

What's new:

  • Skip transaction revalidation in order to save CPU time
  • Added the metric in node/status rout that specify the current number of shards without metachain
  • Optimized trie nodes synchronization by requesting a batch of hash nodes instead of requesting one by one
  • Changed the validator key filename from initialNodesSk.pem to validatorKey.pem
  • The node removes the inactive observers from the heartbeat cache in a predefined time (usually 10 minutes)

Bug fixes:

  • Fixed concurrency issue in trie pruning and trie snapshoting: the trie snapshot and trie pruning for a certain root hash needed to be executed in this order. There was an edge case when the pruning occurred before the snapshot, the result being that the hashes needed for the snapshot were removed before they were saved in the snapshot, thus the error
  • Fixed a bug that prevented jurnalized data tries being deleted when reloading the trie from a previous hash
  • Fixed the peerType and shardID for the inactive inactive validators that were not updated during the offline period.

Note: This release should start with a new DB

BoNwards wave 43

21 Apr 18:51
Compare
Choose a tag to compare

Release v1.0.109 is out 🚀

What's new:

  • Added the possibility to keep the oldest epoch in metablock pruning storer

Bug fixes:

  • Fixed a trie bug that appeared when deleting a node
  • Fixed a bug that occurred after the state revert to a block in epoch trigger that should have searched for the first epoch start block it could find
  • Fixed bech32 warn message that happened due to a print

BoNwards wave 42 - hotfix

20 Apr 07:19
Compare
Choose a tag to compare
  • Fixed key-value range problem when creating missing miniblock map and append to slice with predefined len

BoNwards wave 42

18 Apr 21:15
Compare
Choose a tag to compare
  • Fixed the removal of a validator. The order in which the validators were removed from the eligible list could be different because of a range on a map with the shards. This combined with the optimized remove from list by index could remove different validators from the eligible and waiting lists.