Fireblocks
Liquid Collective Platforms can use Fireblocks to custody digital assets.
Fireblocks is an easy-to-use platform to create new blockchain-based products and manage day-to-day digital asset operations. Fireblocks provides an MPC-based wallet allowing users to store their digital assets.
This guide will provide Platforms with a step-by-step process for using Fireblocks to interact with the Liquid Collective protocol.
Architecture
Below is an example architecture for a Platform that uses Fireblocks as a custodian when the Platform's users stake ETH and/or redeem LsETH.

Implementation
This implementation will take advantage of the Fireblocks SDK, specifically the Javascript SDK. Please follow the Fireblocks Javascript Guide to install the appropriate dependencies.
Dependencies
Create a new Javascript file, such as index.js.
Define dependencies at top of file.
Vault & wallet
Create or use an existing Fireblocks vault.
Response:
Next, put digital assets into the Fireblocks account.
Define the contract address for Goerli:
Call the supported digital assets in Fireblocks.
Response:
Add the LsETH to the newly created vault.
Request:
Response:
Creating Depositor and Allowlisting
Now that you have an address associated with your Fireblocks account, you will create a Depositor object and add the wallet address to the Liquid Collective protocol Allowlist via the Alluvial API.
The steps for onboarding and adding to the Allowlist can be found in the staking guide. Come back to this guide once your wallet(s) have been successfully added to the Allowlist.
Stake ETH
Now that you have successfully added your wallets to the Allowlist you can continue with staking.
In order to interact with the Liquid Collective protocol you will need to invoke Smart Contract functions.
This guide will use the Fireblocks Ethers.js provider, created by the Fireblocks team. To install read the Fireblocks documentation.
In the index.js file add new dependencies
The Liquid Collective uses a TUPProxy architecture. Below are the details about the Proxy address and implementation contract.
Goerli
0x3ecCAdA3e11c1Cc3e9B5a53176A67cc3ABDD3E46
0xF32fC26C9604a380c311e7eC0c5E545917e7934f
Mainnet
0x8c1BEd5b9a0928467c9B1341Da1D7BD5e10b6549
0x48D93d8C45Fb25125F13cdd40529BbeaA97A6565
Create a separate file called Contract.json.
In the file, add the ABI for the Liquid Collective protocol:
Define the ABI address for Goerli.
Define the EIP-1193 Provider.
Create a function that calls the deposit function.
Request:
Submitting transactions will involve the Fireblocks TAP policy.
You've successfully staked ETH and should see LsETH returned in your Fireblocks vault.
Response:
Now you can implement the LsETH redemption flow, providing your users the ability to redeem their LsETH for ETH.
Redeem LsETH
The next step is to allow the allowlisted wallets the ability to redeem their LsETH for ETH, thereby burning their LsETH.
There is a two-step process to receive the redeemed ETH. First, you will create a RedeemRequest that results in a redemption ID being returned. Once the redemption has been satisfied (full or partial) you can make a claimRedeemRequest call.
For more information check out Liquid Collective's redemption documentation.
Create a redemption request
The first function you will call is the requestRedeem.
Request:
A request redeem ID will be generated.
You can retrieve the request redeem ID either via the Alluvial API or by listening the the Redeem Manager contract events. More information can be found here.
Resolve redeem request
In order to get the Withdrawal Event ID, invoke the resolveRedeemRequest or call via the Alluvial API.
The example below will show invoking the resolveRedeemRequest function.
Request:
Response:
111
The resolveRedeemRequest function returns the status of the Withdrawal Event ID. More can be found here.
You can proceed to make a claim now that you have both your redemption ID (53) and Withdrawal Event ID (111).
Create a claim request
To make a claim request provide both the redemption request ID and the Withdrawal Event ID in an array.
Submitting transactions will involve the Fireblocks TAP policy.
Request:
After the claim is processed you will see the the deposit of ETH into your Fireblocks wallet.
To see the status of the claim you can either listen for events or use the Alluvial API. More information on the claiming process can be found here.
Congratulations! You have now implemented the ETH staking and LsETH redemption flow using a Fireblocks account and SDK.
Appendix:
Below is the full code from the snippets above:
Last updated
Was this helpful?