This changelog is a work in progress and may contain notes for versions which have not actually been released. Check the Releases page to see full release notes and more information about the latest released versions.
txHashes key in the
OrderEvents emitted from the
orders JSON-RPC subscription and replaced it with
contractEvents, an array of decoded order-relevant contract events. Parsing these events allows callers to find every discrete order fill/cancel event. (#420)
Kind key in
EndState to better elucidate that it represents the aggregate change to the orders state since it was last re-validated. As an end state, it does not capture any possible intermediate states the order might have been in since the last re-validation. Intermediate states can be inferred from the
contractEvents included (#420)
Removed the max expiration limit for orders. The only remaining expiration constraint is that the unix timestamp does not overflow int64 (i.e., is not larger than 9223372036854775807). (#400)
Fixed bug where we weren't updating an orders
fillableTakerAssetAmount in the DB when orders were being partially filled or when their fillability increased due to a block re-org. (#439)
verbosity field optional in the TypeScript
Config type. (#410)
Fixed issue where we weren't re-validating orders potentially impacted by the balance increase of the recipient of an ERC20 or ERC721 transfer. (#416)
Fixed a DB transaction deadlock accidentally introduced in the v4.0.0-beta release. (#403)
Renamed the environment variable
P2P_TCP_PORT (#366). This makes it possible to configure Mesh to use both the TCP and Websocket transports by listening on different ports.
Added ability to use custom bootstrap list via the
BOOTSTRAP_LIST environment variable (#374). Typically this should only be used for testing/debugging.
Order hash calculations are now cached, which slightly improves performance (#365).
BlockWatch so that it can be used without using
LevelDB for Ethereum block storage. (#355)
Fixed two related bugs: One where order expiration events would be emitted multiple times and another that meant subsequent fill/cancel events for orders deemed expired were not emitted. Fills/cancels for expired orders will continue to be emitted if they occur within ~4 mins (i.e. 20 blocks) of the expiration (#385).
Fixed a data race-condition in OrderWatcher that could have caused order collection updates to be overwritten in the DB. (#386)
Fixed a bug where
lastUpdated were not always being properly updated in the DB. (#386)
Fixed some issues with key prefixes for certain types not being applied correctly to logs (#375).
Fixed an issue where order hashes were not being correctly logged (#368).
Mesh will now properly shut down if the database is unexpectedly closed (#370).
Fixed bug which resulted in orders that were close to expiring being re-added and removed multiple times, resulting in multiple ADDED and EXPIRED events for the same order (#352).
Modified Mesh's validation logic to reject and consider invalid any partially fillable orders. While this is
technically a breaking change, partially fillable orders are rare in the wild and we don't expect this will
affect many users. (#333)
GetStatsAsync method to
getStatsAsync in TS client
De-dup order submitted via the JSON-RPC method
mesh_addOrders before performing validation (#331)
"declaration": true, to TS client's
tsconfig.json so that downstream projects can use it's TS typings. (#325)
mesh_addOrders treats orders that are already stored on the Mesh node. Previously, they would be rejected with code
OrderAlreadyStored. Now, if the order is stored and fillable, it will be accepted. If it is stored but unfillable, it will be rejected with
OrderAlreadyStoredAndUnfillable. We additionally added a
isNew property to the accepted orderInfos returned, so that callers can discern which orders Mesh already knew about. (#316)
Added backup bootstrap nodes provided by the libp2p community
Reduced AdvertiseBootDelay for bootstrap nodes
Implemented a check that will alerts you when switching to a different Ethereum network ID. (#301) -- special thanks to @hrharder!
Made environment variable parsing more generous by automatically removing quotes if needed (#306)
Increased robustness by removing panics and failing more gracefully (#312)
RPC server is now started while block event backfilling is happening under the hood instead of waiting for it to complete (#318)
mesh_getStats endpoint which returns a host of useful information about the state of the Mesh node (e.g., number of fillable order stored, number of peers, peerID, etc...) (#322)
Log messages are no longer incorrectly fired when receiving orders which have already been seen (#286)
Fixed a bug where Mesh was still running after the database was closed (#300)
Handled Parity "unknown block" error gracefully like we do Geth's (#285)
This release fixes several bugs:
Uninitialized TxHashes map & accidental inclusion of null address txHash in order events (#280)
Concurrent read/write issue in OrderWatcher's EventDecoder (#278)
Non-unique logging keys causing Elastic Search indexing issues (#275)
It also includes a reduction in the delay before which bootstrap nodes advertise themselves as relays from 15mins to 30sec.
This version introduces a temporary hack in order to help some Mesh nodes find their public IP address under certain circumstances.
This release fixes a bug in how AutoNAT and AutoRelay services were discovered.
This release fixes some networking related issues with our bootstrap nodes.
Bootstrap nodes now advertise the correct public IP address.
Bootstrap nodes now also operate as a relay.
These fixes will help smooth out any issues with peer discovery.
This release fixes a few minor bugs and includes additional documentation.
Set a custom protocol ID for our DHT in order to separate it from the default IPFS DHT.
Fixed a bug in the getOrders JSON-RPC endpoint where fillableTakerAssetAmount was sometimes being encoded as numbers instead of strings.
Converted addresses to all lowercase (non-checksummed) in the JSON-RPC API.
Added a guide for running a Mesh node with telemetry-enabled.
This release adds AutoNAT support for our bootstrap nodes. This enables peers who are behind NATs to find each and connect to each other (in most cases).
In addition, this release includes some changes to default network timeouts and documentation improvements.
This is the initial beta release for 0x Mesh!
This release supports the following features:
Automatic peer discovery via a DHT.
A JSON-RPC endpoint for interacting with your Mesh node. It includes support for adding new orders and subscribing to order updates.
Efficient order validation and order watching under the hood. You will get notified quickly when orders are expired, canceled, or filled.
Basic limitations on the size and types of messages sent by peers. Peers that send malformed messages or messages that are too big will be dropped.
In addition to improving stability and scalability we plan to release many more important features in the near future. Check out https://github.com/0xProject/0x-mesh/issues for more information about what we are working on.