Skip to content

Releases: dydxprotocol/v4-chain

Release protocol/v5.2.4-rc0

20 Sep 21:54
805afca
Compare
Choose a tag to compare
Pre-release

Release v5.2.4-rc0

  • Includes a non-state-breaking fix

Rollout Instructions

  • State-compatible: this upgrade is state-compatible; therefore, nodes can upgrade asynchronously (aka rolling upgrade)

Release v6.0.4-rc2

25 Sep 02:10
805afca
Compare
Choose a tag to compare
Release v6.0.4-rc2 Pre-release
Pre-release

Changes

Prevent market mapper updates to USDT/USD.

Notes

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

Release protocol/v6.0.4-rc0

23 Sep 21:50
805afca
Compare
Choose a tag to compare
Pre-release

Release v6.0.4-rc0

  • Includes a non-state-breaking fix

Rollout Instructions

  • State-compatible: this upgrade is state-compatible with v6.0.3; therefore, nodes can upgrade asynchronously (aka rolling upgrade)

Indexer v6.0.5

18 Sep 21:53
7535c2f
Compare
Choose a tag to compare

What's Changed

Full Changelog: indexer/v6.0.4...indexer/v6.0.5

Indexer v5.0.15

18 Sep 21:53
4111ece
Compare
Choose a tag to compare

What's Changed

Full Changelog: indexer/v5.0.14...indexer/v5.0.15

Indexer v6.0.4

17 Sep 00:22
df12ead
Compare
Choose a tag to compare

What's Changed

Full Changelog: indexer/v6.0.3...indexer/v6.0.4

Indexer v5.0.14

17 Sep 00:21
67554cb
Compare
Choose a tag to compare

What's Changed

Full Changelog: indexer/v5.0.13...indexer/v5.0.14

Protocol v6.0.3

16 Sep 22:16
c965b80
Compare
Choose a tag to compare

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.3

16 Sep 22:23
d242fa4
Compare
Choose a tag to compare

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)

Indexer v5.0.13

09 Sep 18:11
dd84321
Compare
Choose a tag to compare

What's Changed

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