Bako Safe is the native multisig wallet of Fuel Network. Gas-less vault creation, multi chain support and seamless experience.

What is BSafe?
BSAFE is a secure multi-signature non-custodial wallet built on top of Fuel Stack.We are the first multisig wallet based on the Fuel network. That will revolutionize the financial market in terms of safety and practicality. Our goal is to enhance security for organizations and individuals with an easy-to-use and cost-effective tool that provides not only day-to-day actions but also financial management. To achieve our goal, we start with a multi-sig wallet, SDKs and wallet connector for ecosy...

How to use BSafe SDK?
In the evolving landscape of modular blockchain technology, BSAFE stands out as Fuel's native stateless multisig. We are proud to announce our new SDK, a pivotal tool for developers on the Fuel Network. This SDK not only streamlines the integration of BSAFE multisig wallet functionality into decentralized applications (DApps) but also represents a significant advancement in secure and efficient transaction management for the entire blockchain ecosystem. In this article, we will dive into...

Simplifying Smart Contract Deployment with Bako Safe
Simplifying Smart Contract Deployment with Bako SafeIn this article, we introduce an exciting new feature of Bako Safe. You can now create an API token in your vault wallet, and visualize contract deployments directly within the app. This feature, together with the SDK and the Connector, significantly improves the developer experience and moves us closer to being a complete asset management solution for the Fuel ecosystem. Follow the steps below for the full process. Setting Up Your Environme...

What is BSafe?
BSAFE is a secure multi-signature non-custodial wallet built on top of Fuel Stack.We are the first multisig wallet based on the Fuel network. That will revolutionize the financial market in terms of safety and practicality. Our goal is to enhance security for organizations and individuals with an easy-to-use and cost-effective tool that provides not only day-to-day actions but also financial management. To achieve our goal, we start with a multi-sig wallet, SDKs and wallet connector for ecosy...

How to use BSafe SDK?
In the evolving landscape of modular blockchain technology, BSAFE stands out as Fuel's native stateless multisig. We are proud to announce our new SDK, a pivotal tool for developers on the Fuel Network. This SDK not only streamlines the integration of BSAFE multisig wallet functionality into decentralized applications (DApps) but also represents a significant advancement in secure and efficient transaction management for the entire blockchain ecosystem. In this article, we will dive into...

Simplifying Smart Contract Deployment with Bako Safe
Simplifying Smart Contract Deployment with Bako SafeIn this article, we introduce an exciting new feature of Bako Safe. You can now create an API token in your vault wallet, and visualize contract deployments directly within the app. This feature, together with the SDK and the Connector, significantly improves the developer experience and moves us closer to being a complete asset management solution for the Fuel ecosystem. Follow the steps below for the full process. Setting Up Your Environme...
Bako Safe is the native multisig wallet of Fuel Network. Gas-less vault creation, multi chain support and seamless experience.

Subscribe to Bako Safe

Subscribe to Bako Safe
Share Dialog
Share Dialog
<100 subscribers
<100 subscribers


nft://undefined/undefined/undefined?showBuying=true&showMeta=true
Welcome! In this post, we will guide you through the process of integrating your DApp with BSAFE's SDK.
Before diving into the technical aspects of this tutorial, it's important to understand the purpose of BSAFE and its SDK.
BSAFE is a non-custodial multisign wallet that empowers users to create vaults with specific members who can sign transactions for approval. It also enables the configuration of transaction approval rules, such as the required number of addresses needed to execute a transaction.
Currently, our SDK allows you to perform the following actions:
Create a vault
Register an address
Set transaction approval rules
Create and execute single transactions or batch payments
Sign transactions
Check the vault's balance
Let's begin by taking it step by step...
To fully grasp the concept of how BSAFE is built, it's crucial to understand the foundation. Our Vault is constructed using the Fuel Predicate. Once the Vault is built with its ABI and Buffer, a Fuel address is generated. This address serves as a storage space for all your assets.
During transaction execution, a validation process takes place to ensure that all addresses have signed the transaction. If this condition is met, the transaction is executed.
Now, let's dive in and make it happen.
Install BSAFE SDK in your Typescript project.
To do this step we recommend install Fuel TS in the project.
Alright, the installations are complete. Now, let's focus on the Vaults.
Our Vault extends all the features of Fuel Predicate, below we will explain how to generate an instance and manipulate your vault.
In this steps we will recommend install Fuel Wallet (Chrome extensions). To understand how to use the Fuel wallet, you can refer to the Fuel documentation.
In this step, we will create a vault and set the address and rules.
To create an instance of the Vault, you need to pass the following parameters in the Configurables:
network: URL of Fuel Network; in this version, it is working with (beta-4)
SIGNATURES_COUNT: length of required signatures
SIGNERS: all addresses included in the Vault
import {Vault} from "bsafe";
new Vault({
configurable: {
network: 'FUEL_NETWORK',
SIGNATURES_COUNT: 1,
SIGNERS: ['FUEL_ACCOUNT_ADDRESS']
}
})
In this section, you'll learn how to identify the signer in your vault.
When instantiating your Vault, you can obtain the address of your Vault by accessing the property: vault.address
import {Vault} from "bsafe";
const vault = new Vault({
configurable: {
network: 'FUEL_NETWORK',
SIGNATURES_COUNT: 1,
SIGNERS: ['FUEL_ACCOUNT_ADDRESS']
}
});
console.log(vault.address); // fuel1123klajsdh....
So, now let's learn how to check the balance in ETH on the vault.
To add assets to your vault, use the FUEL faucet.
With your Vault instance, you can search for the balance in ETH with the following method: vault.getBalance(). This method will return a BN. To convert it to a string, execute: balance.format()
import {Vault} from "bsafe";
const vault = new Vault({
configurable: {
network: 'FUEL_NETWORK',
SIGNATURES_COUNT: 1,
SIGNERS: ['FUEL_ACCOUNT_ADDRESS']
}
});
const balance = await vault.getBalance();
console.log(balance.format()); // Result: 0.0000000
But how can we check all assets?
To search for all assets in your predicate, simply execute the vault.getBalances() method. This method will return a list of CoinQuantities with the following properties:
amount: value of your Asset in BN
assetId: identifier of your asset "0x000...."
import {Vault} from "bsafe";
const vault = new Vault({
configurable: {
network: 'FUEL_NETWORK',
SIGNATURES_COUNT: 1,
SIGNERS: ['FUEL_ACCOUNT_ADDRESS']
}
});
const assets = await vault.getBalances();
console.log(assets); // CoinQuantity[]
At this point, we already know how to create, set rules, check the balance, and manage assets in a vault. Now, let's learn how to use the transactions module.
Once you have created your Vault instance and transferred the balance to it, you can interact with it by creating transactions and sending them to Fuel accounts.
To create a transfer instance, you will need your Vault instance. Execute the vault.includeTransaction() method passing ITransferAsset[] with the following properties:

import {Vault} from "bsafe";
const vault = new Vault({
configurable: {
network: 'FUEL_NETWORK',
SIGNATURES_COUNT: 1,
SIGNERS: ['FUEL_ACCOUNT_ADDRESS']
}
});
const transfer = vault.includeTransaction([
{
amount: bn(1_000).format(),
assetId: 'ASSET_ID',
to: 'FUEL_ADDRESS'
}
], []);
console.log(tranfer);
To execute the transfers, signing is required. This can be done by using the fuel wallet and signing the message with the transaction hash using the method wallet.signMessage(transfer.transaction.getHashTxId()) and adding this signature to the transaction through from the transfer.transaction.witnesses property.
import {Vault} from "bsafe";
const vault = new Vault({
configurable: {
network: 'FUEL_NETWORK',
SIGNATURES_COUNT: 1,
SIGNERS: ['FUEL_ACCOUNT_ADDRESS']
}
});
const transfer = vault.includeTransaction([
{
amount: bn(1_000).format(),
assetId: 'ASSET_ID',
to: 'FUEL_ADDRESS'
}
], []);
console.log(tranfer);
Once you have obtained all the necessary signatures, you can proceed to execute your transaction by using the method transfer.transaction.sendTransaction() . This will initiate the transfer within the chain, subjecting it to Vault validation. The method will then return the result along with the following response:

const transfer = vault.includeTransaction([
{
amount: bn(1_000).format(),
assetId: 'ASSET_ID',
to: 'FUEL_ADDRESS'
}
], []);
// Set all signatures and check if all account signed
const transactionResponse = await transfer.transaction.sendTransaction();
console.log(transactionResponse)
That's it! It's simple. Now you're ready to use BSAFE's SDK.
If you have any questions or suggestions, please join our Discord community and contribute with us to improve security on the FUEL ecosystem.
Useful links:
nft://undefined/undefined/undefined?showBuying=true&showMeta=true
Welcome! In this post, we will guide you through the process of integrating your DApp with BSAFE's SDK.
Before diving into the technical aspects of this tutorial, it's important to understand the purpose of BSAFE and its SDK.
BSAFE is a non-custodial multisign wallet that empowers users to create vaults with specific members who can sign transactions for approval. It also enables the configuration of transaction approval rules, such as the required number of addresses needed to execute a transaction.
Currently, our SDK allows you to perform the following actions:
Create a vault
Register an address
Set transaction approval rules
Create and execute single transactions or batch payments
Sign transactions
Check the vault's balance
Let's begin by taking it step by step...
To fully grasp the concept of how BSAFE is built, it's crucial to understand the foundation. Our Vault is constructed using the Fuel Predicate. Once the Vault is built with its ABI and Buffer, a Fuel address is generated. This address serves as a storage space for all your assets.
During transaction execution, a validation process takes place to ensure that all addresses have signed the transaction. If this condition is met, the transaction is executed.
Now, let's dive in and make it happen.
Install BSAFE SDK in your Typescript project.
To do this step we recommend install Fuel TS in the project.
Alright, the installations are complete. Now, let's focus on the Vaults.
Our Vault extends all the features of Fuel Predicate, below we will explain how to generate an instance and manipulate your vault.
In this steps we will recommend install Fuel Wallet (Chrome extensions). To understand how to use the Fuel wallet, you can refer to the Fuel documentation.
In this step, we will create a vault and set the address and rules.
To create an instance of the Vault, you need to pass the following parameters in the Configurables:
network: URL of Fuel Network; in this version, it is working with (beta-4)
SIGNATURES_COUNT: length of required signatures
SIGNERS: all addresses included in the Vault
import {Vault} from "bsafe";
new Vault({
configurable: {
network: 'FUEL_NETWORK',
SIGNATURES_COUNT: 1,
SIGNERS: ['FUEL_ACCOUNT_ADDRESS']
}
})
In this section, you'll learn how to identify the signer in your vault.
When instantiating your Vault, you can obtain the address of your Vault by accessing the property: vault.address
import {Vault} from "bsafe";
const vault = new Vault({
configurable: {
network: 'FUEL_NETWORK',
SIGNATURES_COUNT: 1,
SIGNERS: ['FUEL_ACCOUNT_ADDRESS']
}
});
console.log(vault.address); // fuel1123klajsdh....
So, now let's learn how to check the balance in ETH on the vault.
To add assets to your vault, use the FUEL faucet.
With your Vault instance, you can search for the balance in ETH with the following method: vault.getBalance(). This method will return a BN. To convert it to a string, execute: balance.format()
import {Vault} from "bsafe";
const vault = new Vault({
configurable: {
network: 'FUEL_NETWORK',
SIGNATURES_COUNT: 1,
SIGNERS: ['FUEL_ACCOUNT_ADDRESS']
}
});
const balance = await vault.getBalance();
console.log(balance.format()); // Result: 0.0000000
But how can we check all assets?
To search for all assets in your predicate, simply execute the vault.getBalances() method. This method will return a list of CoinQuantities with the following properties:
amount: value of your Asset in BN
assetId: identifier of your asset "0x000...."
import {Vault} from "bsafe";
const vault = new Vault({
configurable: {
network: 'FUEL_NETWORK',
SIGNATURES_COUNT: 1,
SIGNERS: ['FUEL_ACCOUNT_ADDRESS']
}
});
const assets = await vault.getBalances();
console.log(assets); // CoinQuantity[]
At this point, we already know how to create, set rules, check the balance, and manage assets in a vault. Now, let's learn how to use the transactions module.
Once you have created your Vault instance and transferred the balance to it, you can interact with it by creating transactions and sending them to Fuel accounts.
To create a transfer instance, you will need your Vault instance. Execute the vault.includeTransaction() method passing ITransferAsset[] with the following properties:

import {Vault} from "bsafe";
const vault = new Vault({
configurable: {
network: 'FUEL_NETWORK',
SIGNATURES_COUNT: 1,
SIGNERS: ['FUEL_ACCOUNT_ADDRESS']
}
});
const transfer = vault.includeTransaction([
{
amount: bn(1_000).format(),
assetId: 'ASSET_ID',
to: 'FUEL_ADDRESS'
}
], []);
console.log(tranfer);
To execute the transfers, signing is required. This can be done by using the fuel wallet and signing the message with the transaction hash using the method wallet.signMessage(transfer.transaction.getHashTxId()) and adding this signature to the transaction through from the transfer.transaction.witnesses property.
import {Vault} from "bsafe";
const vault = new Vault({
configurable: {
network: 'FUEL_NETWORK',
SIGNATURES_COUNT: 1,
SIGNERS: ['FUEL_ACCOUNT_ADDRESS']
}
});
const transfer = vault.includeTransaction([
{
amount: bn(1_000).format(),
assetId: 'ASSET_ID',
to: 'FUEL_ADDRESS'
}
], []);
console.log(tranfer);
Once you have obtained all the necessary signatures, you can proceed to execute your transaction by using the method transfer.transaction.sendTransaction() . This will initiate the transfer within the chain, subjecting it to Vault validation. The method will then return the result along with the following response:

const transfer = vault.includeTransaction([
{
amount: bn(1_000).format(),
assetId: 'ASSET_ID',
to: 'FUEL_ADDRESS'
}
], []);
// Set all signatures and check if all account signed
const transactionResponse = await transfer.transaction.sendTransaction();
console.log(transactionResponse)
That's it! It's simple. Now you're ready to use BSAFE's SDK.
If you have any questions or suggestions, please join our Discord community and contribute with us to improve security on the FUEL ecosystem.
Useful links:
No activity yet