Parimutuel 28 Mar 22 Update
Development of the parimutuel protocol on Solana started in the late summer of 2021 and we've come a long way since then. In this release note update, we'd like to provide a brief summary of the journey so far, and as we approach parimutuel mainnet launch, to describe the various milestones we have planned. Following that, we plan to post release notes on a regular cadence as features & fixes are released.
As the parimutuel has been the first product Hxro Network core engineers developed on Solana, there has been a large learning curve. As a result, for the Parimutuel v0 the design avoids too much flexibility in order to get from 0 to 1. For simplicity, the protocol will initially only support dual outcome up/down parimutuel pools.
On these pools, the protocol allows any permissioned party to: 1. Create and launch an up/down market for any asset pair supported by a Pyth data feed, and; 2. Denominate the market in any SPL token. For the MVP, core engineers will initially launch USDC denominated markets. Additional denominations will be considered on a case by case basis.
Below is a system diagram of what our deployment looks like today along with a connected operator.
HXRO Parimutuel Deployment
As mentioned above, the v0 Parimutuel Protocol was built with all logic embedded into a single contract. While building the networks derivatives protocol Dexterity (more on this in a separate post) core engineers advanced to a more modularized architecture. This will eventually be applied to the parimutuel protocol to expand the numbers of outcomes and different sources of settlement that can be supported. Similiar to Dexterity, this will break up the contract into a pluggable architecture as we choose our next strategic step for the protocol.
A realtime program like the parimutuel requires a lot of consistent cranking and this only multiplies as we add more pool durations and currency pairs. To get the settlement price right we need to copy the right pyth price across every second and ideally on every slot. Clearly this is not something we can achieve with public infrastructure so we chose to partner with Triton to get our own dedicated nodes. Even on a dedicated node, we have to use some careful concurrency to ensure instructions are sent as fast as possible, then asynchronously confirmed and retried (or abandoned if too late) as necessary. This has been one of the more challenging obstacles in building the parimutuel protocol as settlement procedure is important (since a small divergence can change the pool outcome at expiration). After a fair bit of trial and error but we are now happy with the solution reached, however we'll only be sure once the logic is tried on mainnet.
Similiar to Dexterity, the Parimutuel Protocol is designed to be a market building block for a wide spectrum of both centralized and decentralized projects and use case. Allowing big centralized applications to build on the networks technology will be a great addition to the ecosystem and bring transparency, awareness, liquidity and catapult the project further towards the mainstream. Those participants - who often come from the traditional marketplace - might not necessarily be accustomed to the nuances of decentralization, with an obvious example being that we need to pay rent for storage and that accounts will disappear when the rent exempt SOL is collected. Therefore the network will initially build a separately supported infrastructure to record all pool and position data so it can be made available as needed to network participants and operating partners.
While the parimutuel is primarily intended to be composed with our on-chain programs, the goal is to allow anyone to be able to easily build on it. Additionally, automated API users of parimutuel markets (such as those that currently use parimutuel CEX's such as hxro.trade) should have the ability to easily connect into global parimutuel liquidity. The core team is therefore providing an SDK (written in Rust, with Python bindings also offered), as well as an API server (the SDK wrapped in a web server offered as a docker container).
We are just putting the final touches on the MVP mainnet release and doing final testing and we are planning to launch a closed mainnet beta in this week. This closed period will at first only include the contract and crank without access to APIs or liquidity offered by SAMM (more on this in a future post). We expect this phase to last to mid April and unless we face any unforeseen problems we then envisage the following schedule:
- Parimutuel Closed Mainnet Beta - THIS WEEK!
- SDK & API Release - 4/22
- Permissioned PositionDB access and operator onboarding - 5/22
- Hxro Network Parimutuel App/Operator Store (more on this in separate post) Release - 6/22
This will complete the first phase of development for the Parimutuel Protocol. From there we have an ambitious goal to open up parimutuels for different kinds of pools and markets. This will require a refactor of the smart contract and separation of concerns. We will be available to help source oracles and liquidity based on what the community wants us to build or build on top of the Hxro Parimutuel Protocol, so stay tuned.