Fireblocks
Fireblocks is an enterprise grade MPC wallet provider providing industry's most secure custodial and non-custodial wallets. Fireblocks has created a multi-layer security matrix that layers MPC, secure enclaves, our signature Policy Engine, and an asset transfer network to provide the strongest software and hardware defense available against evolving attack vectors.
Fireblocks' security structure provides a truly secure environment for storing, transferring, and issuing digital assets. This ensures that your assets are protected from cyberattacks, internal colluders, and human errors. As a result, Fireblocks serves as the foundation for thousands of digital asset businesses and has securely transferred over $3T in digital assets.
Fireblocks' MPC wallets are EOA accounts, which in any account abstraction enabled wallet is the root of their security & trust model. Using Fireblocks MPC based EOA wallets in combination with the Account Kit will give you the best of both worlds; Enterprise grade security for securing your off-chain key material, and the utmost flexibility of your on-chain smart accounts.
Integration
Install the Fireblocks Web3 Provider
Using FireblocksSigner
in the aa-signers
package requires installation of the @fireblocks/fireblocks-web3-provider
SDK. aa-signers
lists it as optional dependency.
npm i -s @fireblocks/fireblocks-web3-provider
Create a SmartAccountSigner
Next, setup the Fireblocks SDK and create an authenticated FireblocksSigner
using the aa-signers
package:
import { FireblocksSigner } from "@alchemy/aa-signers/fireblocks";
import { ChainId } from "@fireblocks/fireblocks-web3-provider";
export const createFireblocksSigner = async () => {
const fireblocksSigner = new FireblocksSigner({
privateKey: process.env.FIREBLOCKS_API_PRIVATE_KEY_PATH!,
apiKey: process.env.FIREBLOCKS_API_KEY!,
vaultAccountIds: process.env.FIREBLOCKS_VAULT_ACCOUNT_IDS,
chainId: ChainId.SEPOLIA,
});
await fireblocksSigner.authenticate();
return fireblocksSigner;
};
Use it with Modular Account
Let's see it in action with aa-alchemy
:
import { createModularAccountAlchemyClient } from "@alchemy/aa-alchemy";
import { sepolia } from "@alchemy/aa-core";
import { createFireblocksSigner } from "./fireblocks";
const chain = sepolia;
const provider = await createModularAccountAlchemyClient({
apiKey: "ALCHEMY_API_KEY",
chain,
signer: await createFireblocksSigner(),
});