Skip to content

Releases: dydxprotocol/v4-chain

Protocol v6.0.3-rc0

04 Sep 21:18
c965b80
Compare
Choose a tag to compare
Protocol v6.0.3-rc0 Pre-release
Pre-release

Fix consensus bug in market update antehandler.

Note:
This is not backwards compatible with previous v6.0.x versions. Consider all prior versions deprecated.

[DEPRECATED] Release protocol/v6.0.2

28 Aug 20:41
9f207d5
Compare
Choose a tag to compare
Pre-release

Changes

Added deprecated message to update x/vault params.

Notes

This version is state-compatible with v6.0.1 and thus is a rolling upgrade.

Release protocol/v5.2.3

21 Aug 18:09
f73a311
Compare
Choose a tag to compare

Changes
Added pagination to liquidation daemon requests.

Notes
This is a rolling path upgrade (state-compatible).

[DEPRECATED] Release protocol/v6.0.1

21 Aug 19:58
dadd984
Compare
Choose a tag to compare
Pre-release

Changes
Added pagination to liquidation daemon requests.

Notes
This is a rolling path upgrade (state-compatible).

indexer/v6.0.1

21 Aug 20:22
53db8fa
Compare
Choose a tag to compare
indexer/v6.0.1 Pre-release
Pre-release

What's Changed

Full Changelog: indexer/v6.0.0...indexer/v6.0.1

[DEPRECATED] Protocol v6.0.0

19 Aug 20:19
39e1921
Compare
Choose a tag to compare
Pre-release

Highlights

This release includes changes in following major areas:

  • Integration of x/marketmap
  • Marketmap Revenue sharing
  • Timestamp Nonce
  • Individual Vault Parameters

Detailed Changes

Integration of x/marketmap

Integrated the x/marketmap module, which is created by the Skip team. This module enables on-chain tracking of listable markets, which opens the possibility of users’ permissionlessly listing markets in the near future.

Check out this blog post for more information about this integration.

The market map can be updated via a Market Mapper, voted on through governance. The Market Mapper will continuously add new listable markets to the market map that users may want to trade, as well as update the metadata (e.g. liquidity and reference price) of existing markets when market conditions change. Revenue share functionality has been created to compensate Market Mappers and can also be voted on by governance: #1733

x/marketmap becomes the source of truth for which markets and oracle sources the sidecar will query prices from. As such, it is now required for a market to exist in the market map before an oracle market can be created for it: #1960.

x/marketmap will contain all listable markets, but for performance reasons, prices should not be fetched for a market if it is not tradable on chain. The enabled flag for each market in the market map determines if prices should be fetched for it and this flag will be set to true when a new oracle market is created for it in x/prices: #1948

New markets added to the market map are required to have their enabled flag set to false because these markets are not yet tradable and prices should not yet be fetched for them, and for any markets already tradable, updates to these markets in the market map are not allowed to change the enabled flag to false so that prices will always be fetched for them: #1962

On upgrade, all existing tradable markets (markets in x/prices) will have a market map entry created with enabled set to true: #1922

Marketmap Revenue Sharing

Includes the addition of the x/revshare module, which houses all the logic to incentivize the marketmapper to add new markets to x/marketmap .

The marketmapper will receive a certain configurable percentage of the new market trading fee proceeds for upto a certain configurable time period. These configurable parameters will be set through governance.

This feature implements changes to set the above mentioned parameters through governance, record revshare details during market creation and distribute the trading fee revenue share whenever the new market gets traded.

Timestamp Nonce

Transaction sequence number validation has been expanded to accept either a timestamp nonce (unix millisecond timestamp) or incremental sequence number (existing method). If a timestamp nonce is supplied as the sequence number, it will be validated using new timestamp nonce rules. Otherwise, the sequence number use the existing workflow which requires incremental values. This feature allows users to submit transactions without the need to get/store their current sequence number, while still enabling protection from replay attacks.

A timestamp is a valid timestamp nonce if:

  1. now - 30s ≤ timestamp ≤ now + 30s
  2. timestamp is strictly larger than any of the largest 20 timestamp nonces previously submitted in the account’s lifetime
  3. timestamp has never been used before

If the timestamp is invalid, users can expect the following error messages:

  1. 'timestamp nonce {timestamp} not within valid time window: incorrect account for validation 1
  2. 'timestamp nonce {timestamp} rejected: incorrect account sequence' for validations 2 or 3

Individual Vault Parameters

Each vault now can have its own parameters that determine how it quotes in the corresponding market, allowing vaults to better cater to the characteristics of the markets they quote in. Governance can set such parameters of a specific vault by submitting MsgSetVaultQuotingParams in a proposal. When a vault does not have individual parameters, it defaults to DefaultQuotingParams, a module-wide variable that can also be updated via MsgUpdateDefaultQuotingParams in a governance proposal.

Indexer v6.0.0

19 Aug 20:25
38528b2
Compare
Choose a tag to compare
Indexer v6.0.0 Pre-release
Pre-release

Marketmap Revenue Sharing

  • [TRA-434] Governance msg MsgSetMarketMapperRevShareDetailsForMarket (#1820)
  • [TRA-442] Add query for market mapper revenue share params (#1746)
  • [TRA-433] Add MarketMapperRevShareDetails state and associated functions (#1744)
  • [TRA-415] implement market mapper rev share gov msg (#1733)
  • [TRA-414] Add x/revshare module skeleton (#1719)
  • [TRA-354] Add a hard cap to the number of markets listed for PML (#1644)

Vault

  • Revert vault flickering indexer changes (#1902)
  • [TRA-169] keep existing vault orders if price and size don't need updates (#1886)
  • [TRA-475]: Add Transfer Between endpoint (#1839)
  • [TRA-461] Remove x/vault/MsgWithdrawFromVault (#1859)
  • [TRA-471] update shares in vault query response to use NumShares type (#1834)
  • [TRA-466] add individual parameters of vaults (#1828)
  • [TRA-461] define MsgWithdrawFromVault proto (#1815)
  • [TRA-446] include vault shares in genesis state (#1774)
  • Update order replacement protos to include old order id (#1664)

Performance

  • Optimize pnl queries (#1812)
  • [CT-971] Add flag for socks batch processing (#1777)
  • Remove extra db lookup (#1645)
  • [CT-919] Add pnl stats task (#1675)
  • Update and optimize use of ws library in socks (#1409)
  • Handle order replacement in vulcan (#1686)
  • Handle stateful order replacement in Ender (#1667)
  • decode message in socks only once (#1646)
  • Remove unnecessary redact (#1648)
  • [CT-875] Simplify indexer messages for short term order replacement (#1593)
  • [CT-808] Add pagination for pnl endpoint (#1529)
  • [CT-808] Add subaccount limit per pnl run (#1527)
  • Add support for pagination at controller level. (#1420)
  • [OTE-308] Update upsert querybuilder and compliance table upsert function (#1477)

Bug Fix

  • [CT-970] Add debug logs to roundtable task, fix case where marketId!=perpetualId (#1786)
  • Cherry-pick "Handle invalid price level updates gracefully. (#1747)" (#1749)
  • [CT-913] Fix issue where pnl wasn't being calculated for some subaccounts (#1662)
  • Fix subaccount validation to account for updated subaccount limit. (#1513)

Compliance

  • [OTE-626]: Add support for whitelisted addresses (#1966)
  • Do not overwrite existing CLOSE_ONLY/BLOCKED compliance statuses (#1926)
  • fix updatedAt in /geoblock response (#1925)
  • Align screen & geoblock compliance endpoints (#1829)
  • Fix screen endpoint (#1759)
  • [OTE-438] Allow users to read data if they are in FIRST_STRIKE_CLOSE_ONLY (#1716)
  • [OTE-419] Add GB_GEO to compliance reasons (#1697)

Miscellaneous Improvements

  • Set fromBeginning to false by default (#2101) (#2107)
  • Change fromBeginning to a flag (backport #1998) (#2105)
  • Sample onBatch stats (#1942)
  • Set all ints in documentation to ints rather than numbers (#1684)
  • [TRA-499] remove pagination from historical-pnl/parentSubaccountNumber endpt (#1912)
  • increase default API limit from 100 -> 1000 (#1814)
  • fix historical pnl endpoint name in docs (#1863)
  • Add baseOpenInterest to perpetual_markets athena table (#1830)
  • Set heartbeat defaults (#1813)
  • Adam/ct 861 websocket topic for blockheight (#1705)
  • Send order remove subaccount message on order replace (#1735)
  • [OTE-420]: Deprecate ONBOARD from Indexer (#1728)
  • Rename & add some more tags to stats (#1715)
  • Change >=2 to >2 for stale pnl accounts (#1704)
  • Add latest block height to /addresses API endpoint (#1701)
  • Flip SEND_SUBACCOUNT_WEBSOCKET_MESSAGE_FOR_CANCELS_MISSING_ORDERS flag default to true (#1574)
  • Flip LOOPS_ENABLED_UNCROSS_ORDERBOOK flag default to true (#1683)
  • [TRA-380] use serializable int for equity and inventory in vault query (#1688)
  • Code cleanup (#1679)
  • [CT-873] Deprecate FOK orders (#1597)
  • Rename order_replace proto event to order_replacement (#1665)
  • Candles HLOC Data (#1887)
  • Add marketType to perpetual_markets athena table (#1659)
  • Comment out debug logs (#1654)
  • Ensure message forwarder samples all stats (#1653)
  • [CT-756] add roundtable task that uncrosses orderbook (#1594)
  • [CT-885] Deprecate and remove OpenOrdersCache (#1613)
  • [CT-874] Add realizedPnl/unrealizedPnl to consolidated subaccount websocket msg sent from fills/liquidations/deleveraging Ender handlers (#1603)
  • [CT-839] Add blockHeight to subaccount websocket message (#1585)
  • Restore prior API ordering when page param is not specified (#1560)
  • [TRA-109] Filter out transfers between child subaccounts of same parent. (#1544)
  • [CT-846] Send subaccount websocket message when cancel is received for non-existent order (#1540)
  • [CT-852] Deprecate StatefulOrderPlacementV1 (#1545)
  • Remove onboard/connect validation error logging (#1526)
  • Upgrade kafkajs to 2.2.4 in Indexer (#1514)
  • [CT-838] Add updatedAtHeight to /addresses/…/subaccountNumber/… API endpoint (#1502)
  • [CT-834] new endpoint for stateful orders (#1501)
  • Update indexer README (#1482)
  • [TRA-109] Add parent subaccount websocket (#1463)
  • [TRA-107] Add parentSubaccountNumber endpoint for historical-pnl (#1476)
  • Orderbook Fills protos (#1446)

Test release for upgrade container test

17 Aug 04:00
39e1921
Compare
Choose a tag to compare
Pre-release

Release v6.0.0-dev999

Release protocol/v5.2.2

14 Aug 18:01
488e410
Compare
Choose a tag to compare

Changes
Updated indexer full-node's Kafka produce clients with more durable config settings.

Notes
This is a rolling path upgrade (state-compatible) and only affects indexer full-nodes.
Recommend those hosting indexer full-nodes to adopt.

v5.2.1 was intentionally skipped

indexer/v5.0.12

07 Aug 18:06
0356879
Compare
Choose a tag to compare

What's Changed

Full Changelog: indexer/v5.0.11...indexer/v5.0.12