Releases: dydxprotocol/v4-chain
Protocol v6.0.3-rc0
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
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
Changes
Added pagination to liquidation daemon requests.
Notes
This is a rolling path upgrade (state-compatible).
[DEPRECATED] Release protocol/v6.0.1
Changes
Added pagination to liquidation daemon requests.
Notes
This is a rolling path upgrade (state-compatible).
indexer/v6.0.1
[DEPRECATED] Protocol v6.0.0
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:
- now - 30s ≤ timestamp ≤ now + 30s
- timestamp is strictly larger than any of the largest 20 timestamp nonces previously submitted in the account’s lifetime
- timestamp has never been used before
If the timestamp is invalid, users can expect the following error messages:
'timestamp nonce {timestamp} not within valid time window: incorrect account
for validation 1'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
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 insocks
(#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
Release v6.0.0-dev999
Release protocol/v5.2.2
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
What's Changed
Full Changelog: indexer/v5.0.11...indexer/v5.0.12