Liquidity Provider Journey

High-level process flow from the point of view of a Liquidity Provider (Buyer)

Setup & prerequisites

Registering wallets

Buyers must register the Ethereum wallets receiving withdrawals from the validator marketplace smart contracts (see section 4 below). A unique identifier is assigned by the buyer to each linked wallet. IDs are provided when quotes are posted in response to RFQs to specify where buyers wish to receive the balance of the validators they purchase. To learn more on how wallets can be registered please review the NORTHSTAKE API documentation.

Subscribing to webhooks

Buyers must subscribe to the necessary webhooks to receive relevant real-time updates and notifications. Webhooks can be found here


1. Receiving RFQs from depositors

Whenever a depositor creates an RFQ available for bidding, a webhook called RFQAvailable sends the following information to buyers:

  • RFQ ID: Unique RFQ Reference
  • Validator(s): the set of validators for sale. For each validator, the following parameters are shown:
    • Validator Index: Unique validator identifier
    • Balance: Current validator balance
    • Estimated Exit time: An estimate of each validator's full withdrawal
  • Total balance: The total balance of the set of validators for sale
  • All validators estimated exit time: An estimate of when all validators will be fully withdrawn

2. Submit a quote

Buyers can submit quotes in response to specific RFQs. When submitting a quote, the liquidity provider's submission has to include:

  • RFQ ID: Unique identifier of the RFQ the bid is for
  • Amount: Bid amount for the validators for sale, denominated in ETH
  • Wallet ID: The identifier of the registered (linked) wallet address that will be receiving the validator balance if the quote is accepted

📘

When submitting quotes, buyers must submit wallet IDs, NOT wallet addresses.


3. Acceptance of bids & transfers to escrow

If a depositor accepts the quote submitted by the LP, the LP will receive the message via a webhook called: RFQBidAccepted which contains the following information:

  • RFQ ID: Unique identifier of the RFQ
  • Quote ID: Unique identifier of the accepted quote
  • Amount: Bid amount denominated in ETH
  • Timestamp
  • Escrow Address: Address where the validator balance will be withdrawn

As the first step to settle the trade, buyers have to transfer the amount of ETH specified in the bid to the escrow wallet, using the wallet chosen when submitting the quote in step #2. "Submit a quote".

🚧

Multiple transactions can be sent to Escrow, as long as the wallet balance reaches the agreed upon amount of ETH

Once the funds are transferred to escrow, sellers are prompted to accept an exit proposal resulting in the full withdrawals of the validators sold to the buyer.

When the depositor has completed the exit proposal, a message is sent to the liquidity providervia the webhook: RFQValidatorWithdrawalChange and contains:

  • Timestamp
  • Transaction hash: the transaction hash for the contract call

The LPcan verify the withdrawal of the validator and the beneficiary by directly interacting with the smart contract on Etherscan.

4. Awaiting validator exit & smart contract withdrawal

Once the validator balance is withdrawn from the Beacon Chain and transferred to the smart contract, a webhook called RFQValidatorExited will send a message containing:

  • Timestamp Time of full withdrawal
  • Validator Index

The LPcan now call the ()claimWithdrawals smart contract method to receive the funds to the designated linked wallet.