0.0.51 • Published 1 month ago

bakosafe v0.0.51

Weekly downloads
-
License
Apache-2.0
Repository
-
Last release
1 month ago

📦 Bako Safe SDK

Links

Resources

  • Create shared wallets 💰
  • Set up sending requirements 🔧
  • Validate signatures 🔏
  • Send different assets to different destinations in the same transaction 📤
  • Data persistence for transactions with the BAKO SAFE API 📝

Install

yarn add bakosafe
npm install bakosafe

Requirements

The guist

You can find more information about this time in the official documentation

There are currently two ways to use this package, the first of which is with the data persistence of the API built Bako Safe and used in the dApp Bako Safe and there is another without the data persistence, only to generate and validate transactions.

In a simple way, we can implement use without data persistence

import { BN, Provider, Wallet, bn, Address } from 'fuels';
import {
    Vault,
    IPayloadVault,
    IPayloadTransfer,
    sign,
    defaultConfigurable,
    mocks,
    accounts,
    IFormatTransfer,
    NativeAssetId
} from 'bakosafe'

// if you run a local node of FuelVm use http://localhost:4000/graphql
const fuelProvider = new Provider('https://beta-5.fuel.network/graphql');

//
const signers = [Address.fromRandom().toString(), Address.fromRandom().toString()];

// make your vault
const VaultPayload: IPayloadVault = {
    configurable: {
        SIGNATURES_COUNT: 1, // required signatures
        SIGNERS: signers, // witnesses account
        network: fuelProvider.url // your network connected wallet
        chainId: await fuelProvider.getChainId() // get chain id or try 0 to fuel node
    },
    provider: fuelProvider,
};

const vault = await Vault.create(VaultPayload);

// This data is an array with all outputs, we send to 2 diferent accounts
const transfer: IFormatTransfer[] =
    {
        name: `tx_example`
        assets: [
            {
                amount: bn(1_000).format(), // value to send on string formatt
                assetId: NativeAssetId, // to send ETH coins
                to: Address.fromRandom().toString() // destination of coins
            },
            {
                amount: bn(1_000).format(), // value to send on string formatt
                assetId: NativeAssetId, // to send ETH coins
                to: Address.fromRandom().toString() // destination of coins
            }
        ]
    }


// Create a transaction
const tx = await vault.BSAFEIncludeTransaction(transfer);

// use the fuel wallet to collect signatures
tx.witnesses = [
    //your signatures
]

// Send transaction
tx.send()
const result = await tx.wait();

If you need use the version with data persistence, check this tests to verify implementation.