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

Releases: 0xProject/0x-mesh

Release 7.1.0-beta-0xv2 -- Backport

30 Jan 19:26
8cd82a9
Compare
Choose a tag to compare

Summary

This release is a backport of several fixes applied to Mesh versions for 0x V3, to a Mesh version for 0x V2.

Features ✅

  • Reduce startup time for Mesh node by only waiting for a block to be processed if Mesh isn't already sync'ed up to the latest block. (#622)
  • Developers can now override the contract addresses for any testnet using the CUSTOM_CONTRACT_ADDRESSES env config (#640).
  • Add getOrdersForPageAsync method to @0x/mesh-rpc-client WS client interface so that clients can paginate through the retrieved orders themselves (#642).

Bug fixes 🐞

  • Fixed a bug where we attempted to update the same order multiple times in a single DB txn, causing the later update to noop. (#623).
  • Fixed a bug which could cause Mesh to exit if a re-org condition occurs causing a block to be added and removed within the same block sync operation. (#614).
  • Fix bug where we attempted to update the same order multiple times in a single DB txn, causing the later update to noop. (#623)

Version 8.2.0

27 Jan 22:01
0ca1efd
Compare
Choose a tag to compare

Summary

Features ✅

  • Added getStatsAsync to the @0x/mesh-browser package. (#654).
  • Added getOrdersAsync and getOrdersForPageAsync to the @0x/mesh-browser package. (#655).

Bug fixes 🐞

  • Update DevUtils contract address to fix intermittent revert issues. (#671).

Version 8.1.2

23 Jan 00:06
7854825
Compare
Choose a tag to compare

Summary

Bug Fixes 🐞

  • Update DevUtils contract to version that removed maker transfer simulation. (#662).
  • Fix faulty Go to Javascript conversion logic. (#659).
  • Updated dockerfiles to work with Go modules. (#646).
  • Update DevUtils mainnet contract address to version that fixes MAP order validation issue (#644).

Version 8.1.1

16 Jan 18:45
529af7c
Compare
Choose a tag to compare

Summary

Bug fixes 🐞

  • Fixed a regression which can result in memory leaks. (#650).

Version 8.1.0

16 Jan 18:45
73e3fef
Compare
Choose a tag to compare

Support for 0x v3

This is the first release that uses 0x protocol v3 without the -0xv3 suffix in the version name. 0x v3 is now the default protocol version for Mesh. Support for 0x v2 is deprecated.

Users who are upgrading from 0x v2 to 0x v3 will need to wipe their database, as the old v2 orders are not compatible with this version of Mesh. This can typically be done by running rm -rf $DATA_DIR/db.

If you are upgrading from an older version of Mesh with the 0xv3 suffix, make sure to check the changelog
here: https://github.com/0xProject/0x-mesh/blob/0xV3/CHANGELOG.md#breaking-changes- to see if there are any breaking changes. Version 8.1.0 can be thought of as immediately following version v8.0.0-beta-0xv3.

Beta status

This release is the first without a -beta suffix. We removed the suffix because we have reached a point where Mesh is being used by some teams in production. We feel that for many use cases, Mesh is stable enough for production use. However, we caution that there are some issues and shortcomings in the current version, which generally fall into two categories:

  1. Order sharing: We know that orders are not propagating through the network as quickly as we would like. We have a lot of ideas for how to optimize order propagation speed in the future and there should be major improvements coming soon. See #594, #551, and #638.
  2. Browser usage: Mesh can run directly in the browser via the @0x/mesh-browser package. We have supported this for a while and have examples and integration tests in this repository. While the basic functionality is working, there are still some important missing features and issues to address before @0x/mesh-browser is feasible for most production use cases.

Summary

Features ✅

  • Reduced startup time for Mesh node by only waiting for a block to be processed if Mesh isn't already sync'ed up to the latest block. (#622)
  • Increased the maximum size for encoded orders from ~8kB to 16kB (#631).

Bug fixes 🐞

  • Fixed a typo ("rendervouz" --> "rendezvous") in GetStatsResponse. (#611).
  • Fixed a bug where we attempted to update the same order multiple times in a single DB txn, causing the later update to noop. (#623).
  • Fixed a bug which could cause Mesh to exit if a re-org condition occurs causing a block to be added and removed within the same block sync operation. (#614).

Version 7.0.1-beta

19 Dec 22:41
07530fb
Compare
Choose a tag to compare
Version 7.0.1-beta Pre-release
Pre-release

Summary

Breaking changes 🛠

  • Changed the response from @0x/mesh-ts-client's getOrdersAsync endpoint to include the snapshotID and snapshotTimestamp at which the Mesh DB was queried along with the orders found. (#591)
  • Increased the default ETHEREUM_RPC_MAX_REQUESTS_PER_24_HR_UTC from 100k to 200k (#596).

Features ✅

  • Instead of progressing Mesh forward by a single block on every invocation of the BLOCK_POLLING_INTERVAL, we now attempt to sync as many blocks as necessary to reach the latest block available. This will reduce the chances of Mesh becoming out-of-sync with it's backing Ethereum node (#564)
  • Added a new environment variable ENABLE_ETHEREUM_RPC_RATE_LIMITING and config option enableEthereumRPCRateLimiting which can be used to completely disable Mesh's internal Ethereum RPC rate limiting features. By default it is enabled, and disabling can have some consequences depending on your RPC provider. (#584)
  • Added a SnapshotTimestamp field to GetOrdersResponse, the return type of the mesh_getOrders RPC method. This way, the caller can know at what point in time the snapshot had been created. (#591)
  • Improved batching of events emitted from order events subscriptions (#566)
  • Added timestamp to order events (#602)

Bug fixes 🐞

  • Fixed an issue where order updates could have been missed if Mesh discovered blocks but didn't have time to process them before getting shut down. Now, blocks are only persisted to the DB once any order updates resulting from it have been processed. (#566).
  • Fixed a race-condition when adding new orders to Mesh which could result in order-relevant events being missed if they occured very soon after the order was submitted and the order validation RPC call took a long time (#566).
  • Upgraded the web3-provider dependency used by @0x/mesh-rpc-client in order to fix a bug where it was requiring either process OR window to exist in the global scope (#601).
  • Fixed an issue where the internal Ethereum RPC rate limiter could be too aggressive in certain scenarios (#596).
  • Add a default RPC request timeout of 30sec to all non-subscription requests sent by @0x/mesh-rpc-client to avoid the client from hanging endlessly if it misses a response due to network disruption (#603).

Version 6.1.2-beta

04 Dec 23:49
017d42d
Compare
Choose a tag to compare
Version 6.1.2-beta Pre-release
Pre-release

Summary

Bug fixes 🐞

  • Fixed a bug which could cause Mesh to crash with a nil pointer exception if RPC requests are sent too quickly during/immediately after start up (#560).

Version 6.1.1-beta

21 Nov 21:58
9ea8cf7
Compare
Choose a tag to compare
Version 6.1.1-beta Pre-release
Pre-release

Summary

Bug fixes 🐞

  • Fixed a bug where the internal order event feed could be come blocked, rendering Mesh unable to receive any new orders or update existing ones (#552).

Version 6.1.0-beta

20 Nov 21:01
2a74919
Compare
Choose a tag to compare
Version 6.1.0-beta Pre-release
Pre-release

Summary

Features ✅

  • Added support for persistence in the browser. Users of the @0x/mesh-browser package will now be able to retain orders and other relevant parts of the state when refreshing the page or closing and re-opening the browser. (#533).

Bug fixes 🐞

  • Fix bug where Mesh nodes were logging receipt and re-sharing with peers duplicate orders already stored in it's DB, if the duplicate order was submitted via JSON-RPC. (#529)
  • Add missing UNEXPIRED OrderEventEndState enum value to both @0x/mesh-rpc-client and @0x/mesh-browser and missing STOPPED_WATCHING value from @0x/mesh-rpc-client.
  • Fixed a potential memory leak by using the latest version of github.com/libp2p/go-libp2p-kad-dht (#539).
  • Changed the default port for RPC_ADDR from a random available port to 60557. Some documentation already assumed 60557 was the default port. Now all documentation has been updated for consistency with this change. (#542).
  • Fixed a potential nil pointer exception in log hooks (#543).
  • Fixed a bug where successful closes of an rpc subscription were being reported as errors (#544).
  • We now log the error and stack trace if an RPC method panics. Before, these errors were swallowed by the panic recovery logic in go-ethereum's rpc package. (#545)
  • Previously, we used to fast-sync block events missed since a Mesh node was last online. If this was more than 128 blocks ago, the fast-sync would fail if Mesh was not connected to an Ethereum node with the --archive flag enabled. We now fast-sync only if less than 128 blocks have elapsed. Otherwise, we simply re-validate all orders and continue processing block events from the latest block. (#407)

Version 6.0.1-beta

12 Nov 21:57
2512619
Compare
Choose a tag to compare
Version 6.0.1-beta Pre-release
Pre-release

Summary

This release doesn't add any new features or breaking changes. It just fixes some bugs from the previous release (6.0.0-beta).

Bug fixes 🐞

  • Fixed an oversight which granted immunity from bandwidth banning for any peer using a relayed connection (#509).
  • Fixed a typo in the @0x/mesh-browser package that resulted in some config options not being passed through correctly (#502).
  • Fixed a bug in ETH JSON-RPC rate limiter where not all dates were being properly converted to UTC, causing Mesh to malfunction if the local time was a day earlier or later than UTC. (#505)
  • Fixed a bug in the TypeScript RPC client that prevented orders from being added (#514).