Search…
Fireblocks
This page describes how to stake assets held in Fireblocks on Kiln validators.

Stake Ethereum

To stake Ethereum held in Fireblocks, simply create an account on the Kiln dashboard and scan the Wallet Connect QR code with your Fireblocks app, as shown in the video below:
Note that you will need to whitelist the Kiln batch deposit contract in Fireblocks to be able to deposit to it. This is a simple open-source contract optimises the gas cost of doing large staking deposits.

Stake Solana

Solana staking is currently only supported via the Fireblocks API (not via the UI).
To stake, you will need to run a short script similar to the one below.
This script uses the Solana Staking SDK provided by Fireblocks.
import fs from "fs";
import path from "path";
import { FireblocksSDK } from "fireblocks-sdk";
import { SolStaker } from "./src/sol-staker"
​
​
const apiSecret = fs.readFileSync(path.resolve(__dirname, '<path_to_your_secret_key>'), "utf8");
const apiKey = "<your_fb_api_key>"
const fireblocks = new FireblocksSDK(apiSecret, apiKey);
​
const DEVNET: boolean = true;
const VAULT_ACCOUNT = "<your_vault_account_id>";
​
const solStaker = new SolStaker(fireblocks, VAULT_ACCOUNT, DEVNET);
​
(async() => {
​
// await solStaker.createStakeAccount('<amount_to_stake>');
// await solStaker.delegate('<validator_address>')
// await solStaker.deactivate();
// await solStaker.withdrawStakedBalance('<amount_to_withdraw>')
})();
​Here is a complete Support article from the Fireblocks team on how to stake Solana (attached for convenience).
Staking SOL – Fireblocks Help Center.pdf
271KB
PDF
For the Kiln Solana validator addresses, visit this page.

Stake Tezos

Tezos staking is currently only supported via the Fireblocks API (not via the UI).
To stake, you will need to run a short script similar to the one below.
This script uses the Tezos Staking SDK provided by Fireblocks.
import fs from "fs";
import path from "path";
import { FireblocksSDK } from "fireblocks-sdk";
import { setDelegate } from "./src/xtz-staker";
​
const apiSecret = fs.readFileSync(path.resolve(__dirname, "secret_key_path"), "utf8");
const apiKey = "api_key";
const fireblocks = new FireblocksSDK(apiSecret, apiKey);
// Consts for delegation:
// Tezos Public RPC url
const url: string = "https://rpc.tzbeta.net/"; //testnet: https://testnet-tezos.giganode.io
const destination: string = "baker_address";
const vaultAccountId = 'vault_account_id'
const reveal = false;
/* Set Delegate Operation: Params:
1. FireblocksSDK instance
2. Tezos public RPC url
3. Destination baker's address (tz1...)
4. Vault account ID of the source
5. Reveal - "true" in case the source address should be revealed (No any historical outgoing transaction)
NOTE: "REVEAL" should be done only on the FIRST OUTGOING source wallet's operation!
NOTE: For undelegate - pass empty string as destination
*/
setDelegate(fireblocks, url, destination, vaultAccountId, reveal);
​
​Here is a complete Support article from the Fireblocks team on how to stake Tezos (attached for convenience).
Staking XTZ – Fireblocks Help Center.pdf
224KB
PDF

What about coin X?

  • DOT and ADA are also supported for staking by Fireblocks in the same way as Solana and Tezos. Kiln is working on support for these two assets.
  • For all other PoS chains, it is possible to stake with Fireblocks but only via the API, and there is no example code or SDK provided yet by the Fireblocks team. The staking transaction has to be issued via the Raw Signing API.