Version 9.0.0
Summary
This release comes with a lot of important new features that improve efficiency and increase versatility in browser environments. We have observed that both CPU and bandwidth usage decreased by at least an order of magnitude.
The biggest contributing factor for reduced resource usage is a new algorithm for sharing existing orders. As a result of this change (and the new custom order filters feature), orders from previous versions of Mesh cannot be shared with nodes running version 9.0.0 or later, and vice versa. Another important side effect to keep in mind is that it might take slightly longer for new peers to receive all the existing orders compared to previous versions. Even this downside can be mitigated over time by tweaking our new algorithm, while retaining the benefit of lower CPU usage and bandwidth.
Breaking changes 🛠
- As a result of implementing custom order filters, some of the code Mesh uses under the hood to share orders with peers has changed. As a result this version of Mesh cannot share orders with any older versions and vice versa (#630).
- Implemented a new protocol for sharing existing orders with peers. This will drastically reduce bandwidth and CPU usage and increase the speed at which new orders are propagated. (#692).
- Rename
RPC_ADDR
toWS_RPC_ADDR
since we now support both WS and HTTP JSON-RPC endpoints. (#658)
Features ✅
- Implemented custom order filters, which allow users to filter out all but the orders they care about. When a custom order filter is specified, Mesh will only send and receive orders that pass the filter. (#630).
- Developers can now override the contract addresses for any testnet using the
CUSTOM_CONTRACT_ADDRESSES
env config (#640). - Added
getOrdersForPageAsync
method to@0x/mesh-rpc-client
WS client interface so that clients can paginate through the retrieved orders themselves (#642). - Added support for passing in your own Web3 provider when using the
@0x/mesh-browser
package. (#665). - Add support for orders involving Chai ERC20Bridge assetData (#663)
- Add support for calling JSON-RPC methods over HTTP (env config
HTTP_RPC_ADDR
defaults tolocalhost:60556
). (#658)
Bug fixes 🐞
- Fixed some of the browser typescript bindings to be consistent with the Go and smart contract implementations (#697).