Skip to content

Commit

Permalink
Merge pull request #714 from 0xProject/release/9.0.0
Browse files Browse the repository at this point in the history
Release version 9.0.0
  • Loading branch information
albrow committed Feb 19, 2020
2 parents 0ca1efd + eba0305 commit ccec0f3
Show file tree
Hide file tree
Showing 97 changed files with 16,288 additions and 3,157 deletions.
2 changes: 1 addition & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ jobs:
environment:
BASH_ENV: ~/.nvm/nvm.sh
docker:
- image: circleci/golang:1.12.13-browsers
- image: circleci/golang:1.13.4-browsers
- image: 0xorg/ganache-cli:istanbul
environment:
VERSION: 5.1.0
Expand Down
24 changes: 24 additions & 0 deletions .drone.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,3 +83,27 @@ trigger:
- push
node_selector:
drone-builds: true
---
kind: pipeline
type: docker
name: mesh-publish-release-notes

steps:
- name: publish
image: plugins/github-release
settings:
api_key:
from_secret: github_public_repo
files:
- /
note: RELEASE_CHANGELOG.md
when:
event: tag
ref:
- refs/tags/v*
trigger:
event:
include:
- tag
node_selector:
drone-builds: true
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ rpc/clients/typescript/ganache.log
*.wasm
browser/lib
browser/ts/generated
browser/dist/bundle.js
examples/browser/dist/bundle.js
integration-tests/browser/dist/bundle.js
!integration-tests/data/standalone-0/keys/privKey
Expand Down
23 changes: 21 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,27 @@

This changelog is a work in progress and may contain notes for versions which have not actually been released. Check the [Releases](https://github.com/0xProject/0x-mesh/releases) page to see full release notes and more information about the latest released versions.

## v9.0.0

### 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](https://github.com/0xProject/0x-mesh/pull/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](https://github.com/0xProject/0x-mesh/pull/692)).
- Rename `RPC_ADDR` to `WS_RPC_ADDR` since we now support both WS and HTTP JSON-RPC endpoints. ([#658](https://github.com/0xProject/0x-mesh/pull/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](https://github.com/0xProject/0x-mesh/pull/630)).
- Developers can now override the contract addresses for any testnet using the `CUSTOM_CONTRACT_ADDRESSES` env config ([#640](https://github.com/0xProject/0x-mesh/pull/640)).
- Added `getOrdersForPageAsync` method to `@0x/mesh-rpc-client` WS client interface so that clients can paginate through the retrieved orders themselves ([#642](https://github.com/0xProject/0x-mesh/pull/642)).
- Added support for passing in your own Web3 provider when using the `@0x/mesh-browser` package. ([#665](https://github.com/0xProject/0x-mesh/pull/665)).
- Add support for orders involving Chai ERC20Bridge assetData ([#663](https://github.com/0xProject/0x-mesh/pull/663))
- Add support for calling JSON-RPC methods over HTTP (env config `HTTP_RPC_ADDR` defaults to `localhost:60556`). ([#658](https://github.com/0xProject/0x-mesh/pull/658))

### Bug fixes 🐞

- Fixed some of the browser typescript bindings to be consistent with the Go and smart contract implementations ([#697](https://github.com/0xProject/0x-mesh/pull/697)).

## v8.2.0

### Features ✅
Expand All @@ -13,7 +34,6 @@ This changelog is a work in progress and may contain notes for versions which ha

- Update DevUtils contract address to fix intermittent revert issues. ([#671](https://github.com/0xProject/0x-mesh/pull/671)).


## v8.1.2

### Bug fixes 🐞
Expand All @@ -30,7 +50,6 @@ This changelog is a work in progress and may contain notes for versions which ha

- Fixed a regression which can result in memory leaks. ([#650](https://github.com/0xProject/0x-mesh/pull/650)).


## v8.1.0

### Features ✅
Expand Down
11 changes: 7 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,13 @@ the dropdown menu in the GitHub UI to select `development`.
## Prerequisites

- [GNU Make](https://www.gnu.org/software/make/) If you are using a Unix-like OS, you probably already have this.
- [Go version 1.12.x](https://golang.org/dl/) (or use [the version manager called "g"](https://github.com/stefanmaric/g)). Go 1.13 is not supported yet (see https://github.com/0xProject/0x-mesh/issues/480).
- [Node.js version >=11](https://nodejs.org/en/download/) (or use the [nvm version manager](https://github.com/creationix/nvm))
- [Yarn package manager](https://yarnpkg.com/en/)
- [golangci-lint version 1.22.2](https://github.com/golangci/golangci-lint#install)
- [Go version 1.13.x](https://golang.org/dl/) (or use [the version manager called "g"](https://github.com/stefanmaric/g)).
- [Node.js version >=11](https://nodejs.org/en/download/) (or use the [nvm version manager](https://github.com/creationix/nvm)).
- [Yarn package manager](https://yarnpkg.com/en/).
- [golangci-lint version 1.22.2](https://github.com/golangci/golangci-lint#install).
- [Python](https://www.python.org/downloads/). (Many OSes already have this).
- [Google Chrome](https://www.google.com/chrome/). If you already have Google Chrome you typically don't need to do anything. On Ubuntu you can run `wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb && dpkg -i google-chrome-stable_current_amd64.deb; apt-get -fy install`.
- A C compiler such as [GCC](https://gcc.gnu.org/) or [Clang](https://clang.llvm.org/). Some OSes will already have this. On Ubuntu you can run `sudo apt-get install build-essential`.

## Installing Dependencies

Expand Down
8 changes: 6 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -38,21 +38,25 @@ test-all: test-go test-wasm-node test-wasm-browser


.PHONY: test-go
test-go: test-go-parallel test-go-serial
test-go: test-go-parallel test-go-serial test-browser-conversion


.PHONY: test-go-parallel
test-go-parallel:
go test ./... -race -timeout 30s


.PHONY: test-go-serial
test-go-serial:
go test ./zeroex/ordervalidator ./zeroex/orderwatch ./core -race -timeout 90s -p=1 --serial


.PHONY: test-browser-integration
test-browser-integration:
go test ./integration-tests -timeout 185s --enable-browser-integration-tests -run BrowserIntegration

.PHONY: test-browser-conversion
test-browser-conversion:
go test ./browser/go/conversion-test -timeout 185s --enable-browser-conversion-tests -run BrowserConversions

.PHONY: test-wasm-node
test-wasm-node:
Expand Down
16 changes: 11 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
[![Version](https://img.shields.io/badge/version-8.2.0-orange.svg)](https://github.com/0xProject/0x-mesh/releases)
[![Version](https://img.shields.io/badge/version-9.0.0-orange.svg)](https://github.com/0xProject/0x-mesh/releases)
[![Docs](https://img.shields.io/badge/docs-website-yellow.svg)](https://0x-org.gitbook.io/mesh)
[![Chat with us on Discord](https://img.shields.io/badge/chat-Discord-blueViolet.svg)](https://discord.gg/HF7fHwk)
[![Circle CI](https://img.shields.io/circleci/project/0xProject/0x-mesh/master.svg)](https://circleci.com/gh/0xProject/0x-mesh/tree/master)

# 0x Mesh

0x Mesh is a peer-to-peer network for sharing orders that adhere to the
[0x order message format](https://0x.org/docs/guides/v2-specification#order-message-format).
[0x order message format](https://0x.org/docs/guides/v3-specification#orders).

## Project status

We have reached the point where Mesh is being used by some teams in production. We feel that for many use cases, Mesh is stable enough for production. However, we caution that there are some issues and shortcomings in its current state, which generally fall into two categories:

- Order sharing: Mesh uses a significant amount of bandwidth for it's current order sharing algorithm and we intend on improving its efficiency by an order of magnitude. Until then, we advise you host your node on [Digital Ocean](https://www.digitalocean.com/) where it's hosting costs are cheaper (~$25 mo). We also 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](https://github.com/0xProject/0x-mesh/issues/594), [#551](https://github.com/0xProject/0x-mesh/issues/551), and [#638](https://github.com/0xProject/0x-mesh/issues/638).
- Browser usage: Mesh can run directly in the browser via the [@0x/mesh-browser](https://www.npmjs.com/package/@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](https://github.com/0xProject/0x-mesh/issues?q=is%3Aopen+is%3Aissue+label%3Abrowser) before `@0x/mesh-browser` is feasible for most production use cases.

WARNING: This project is still under active development. Expect breaking changes before the official release.

## Overview

Expand All @@ -18,14 +24,14 @@ WARNING: This project is still under active development. Expect breaking changes
from market makers. This allows them to increase the depth of their order
books and provide a better user experience.
- Market makers can use Mesh to reach a broader audience. Their orders will be
sent throughout the network and are more likely to be filled.
sent throughout the network and picked up by many trading venues and are therefore more likely to be filled.
- Mesh allows for a new type of relayer called a "serverless relayer". In the
serverless relayer model, each user runs Mesh in their browser and there is
no backend server or database. Instead, peers share orders directly with one
another. (There are pros and cons to this approach and it is probably not
suitable for all markets).

Both Relayers and Market makers can use Mesh to watch a set of orders for changes in fillability (e.g., cancellations, fills, expirations, etc...).
Both Relayers and Market makers can use Mesh to watch a set of 0x orders for changes in fillability (e.g., cancellations, fills, expirations, etc...).

0x Mesh is intended to be entirely automatic. It takes care of all the work of
receiving, sharing, and validating orders so that you can focus on building your
Expand Down
25 changes: 25 additions & 0 deletions RELEASE_CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
- [Docker image](https://hub.docker.com/r/0xorg/mesh/tags)
- [README](https://github.com/0xProject/0x-mesh/blob/v9.0.0/README.md)

## Summary

### 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](https://github.com/0xProject/0x-mesh/pull/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](https://github.com/0xProject/0x-mesh/pull/692)).
- Rename `RPC_ADDR` to `WS_RPC_ADDR` since we now support both WS and HTTP JSON-RPC endpoints. ([#658](https://github.com/0xProject/0x-mesh/pull/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](https://github.com/0xProject/0x-mesh/pull/630)).
- Developers can now override the contract addresses for any testnet using the `CUSTOM_CONTRACT_ADDRESSES` env config ([#640](https://github.com/0xProject/0x-mesh/pull/640)).
- Added `getOrdersForPageAsync` method to `@0x/mesh-rpc-client` WS client interface so that clients can paginate through the retrieved orders themselves ([#642](https://github.com/0xProject/0x-mesh/pull/642)).
- Added support for passing in your own Web3 provider when using the `@0x/mesh-browser` package. ([#665](https://github.com/0xProject/0x-mesh/pull/665)).
- Add support for orders involving Chai ERC20Bridge assetData ([#663](https://github.com/0xProject/0x-mesh/pull/663))
- Add support for calling JSON-RPC methods over HTTP (env config `HTTP_RPC_ADDR` defaults to `localhost:60556`). ([#658](https://github.com/0xProject/0x-mesh/pull/658))

### Bug fixes 🐞

- Fixed some of the browser typescript bindings to be consistent with the Go and smart contract implementations ([#697](https://github.com/0xProject/0x-mesh/pull/697)).


0 comments on commit ccec0f3

Please sign in to comment.