Overview

Preferred Restaking centers on the cryptographic verification of underlying Ethereum validators and their stake authentication, a fundamental aspect of Proof of Stake delegations design. Only validators with an active status can participate in consensus validation; thus, they are only eligible for restaking.

The PNO module utilizes the Proof of Neutrality Validator Registry (PON Registry), which serves as a state bridge between the Ethereum Consensus Layer and the Ethereum Execution Layer - EVM. This authenticates validators and associated LRT/LST protocols, confirming their active status and balances for smart contracts, and provides “Validator Hooks,” a verified hot mapping to the consensus layer validator on the EVM.

Native delegation allows all Ethereum validators, including solo stakers and liquid staking protocols, to natively delegate their authenticated validator stake for restaking with other applications.

Preferred Restaking with the PNO module also introduces a “liquid delegation” model. This allows listed LST/LRT token holders to retain spending power and restake their assets with other application utilities. This ground-up smart contract architecture revolutionizes the delegation of LST/LRT tokens, unlocking DeFi opportunities and enabling users to simultaneously use their LST/LRT for restaking and various DeFi applications.

Consensus Layer Validator Authentication using the PON Registry has been implemented for the following LST/LRT protocols (in no particular order), and the verified validator state is fully available on EVM for smart contracts:

  • Ether.fi
  • Lido
  • Rocket pool,
  • and solo stakers too!

PON Registry Authenticated Validator hooks enable any smart contract platform access to a unified validator registry replicated from the consensus layer. Facilitating the creation of many restaking markets thanks to preferred restaking PNO module.

Lookup of validator registry

Suppose we want to look up all of the Ether.fi validators authenticated, we could run the following subgraph query:

{
  proposers(where: {
    payoutRecipient: "<replace wallet address here>"
  }) {
    id
  }
}

On the following playground: https://thegraph.com/hosted-service/subgraph/pon-network/proof-of-neutrality

payoutRecipient can be substituted for each protocol:

  • Ether.fi treasury: 0x6329004e903b7f420245e7af3f355186f2432466
  • Lido treasury: 0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c
  • Rocket pool rETH pool: 0xae78736Cd615f374D3085123A210448E74Fc6393

Example response (Rocketpool):

{
  "data": {
    "proposers": [
      {
        "id": "0xae2c18bee80a76e69c51ee7c59ef9c93bfced12a4a534d11abdea64a4aa3f3fb2555d2eaecad3b5749ca4b8f1e678f11"
      }
    ]
  }
}

Where id is the BLS public key of the authenticated validator associated with the protocol payout address. The payout address can be managed by the protocol DAO so contact Blockswap labs if the desired protocol is not supported or if instructions for updating the protocol payout address for future restaking rewards are required.

Authentication

Want to authenticate via a script? Download the PON SDK and run the following:

const signer = new ethers.Wallet(
        'PRIVATE_KEY',
        provider
    );

const sdk = new PoNSdk(signer);

const rocketPoolValidatorBlsPublicKeysBeingAuthenticated = [
    '0xae2c18bee80a76e69c51ee7c59ef9c93bfced12a4a534d11abdea64a4aa3f3fb2555d2eaecad3b5749ca4b8f1e678f11'
];

const authenticatorWalletAddressPayingGas = signer.address;

const batchRocketpoolValidatorAuthentication = await sdk.proposerRegistry.batchRocketpoolValidatorAuthentication(
        rocketPoolValidatorBlsPublicKeysBeingAuthenticated,
        authenticatorWalletAddressPayingGas
    );

console.log('batchRocketpoolValidatorAuthentication', batchRocketpoolValidatorAuthentication);

The wallet paying for the GAS is expected to hold 0.1 ether worth of the LST / LRT token associated with the validators they are authenticating. 0.1 eETH would be required to authenticate Ether.fi validators for example (no limit on number of validators).

Alternatively LST/LRT protocols themselves can also authenticate consensus layer validators associated with their pools from the following addresses:

  • Ether.fi Node Manager 0x8B71140AD2e5d1E7018d2a7f8a288BD3CD38916F
  • Lido DAO: 0x2e59A20f205bB85a89C53f1936454680651E618e
  • Rocket pool placeholder: 0xae78736Cd615f374D3085123A210448E74Fc6393

This means that as a protocol authenticating its own validators, the above script given would use the wallet addresses specified in the list for the field authenticatorWalletAddressPayingGas which will also be the wallet executing the transaction.

However authenticatorWalletAddressPayingGas will be set to the user’s own address in the case they are an LRT/LST owner and meet the criteria of having 0.1 ether balance worth of the LRT/LST.

Finding validators to authenticate

https://api-docs.rated.network/rated-api/api-reference/v1-beta/ethereum/metadata

APIs such as Rated Network API will expose validators associated with pool entities such that the BLS public keys can be curated in a programmatic way for the above authentication script.