Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@funkit/core

Package Overview
Dependencies
Maintainers
1
Versions
69
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@funkit/core

Funkit core SDK provides feature-rich and extensible smart wallets built on account abstraction

  • 1.0.16
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
608
decreased by-5.74%
Maintainers
1
Weekly downloads
 
Created
Source

backdrop

FunKit Core

FunKit empowers you to create feature-rich and extensible smart wallets built on account abstraction. Leveraging the FunKit, you can customize gas behavior, adopt multi-sig and common authentication method, monetize your application, execute any transactions from smart wallets, and much more.

This repo only covers FunKit Core SDK which does not provide any frontend specific optimizations. Check our Web SDK if you want to further simplify your application with our react hooks.

Table of Contents

  1. Installation
  2. Quick Start
  3. Testing
  4. More Resources

Installation

npm i @funkit/core --save
# or
yarn add @funkit/core

Quick Start

FunKit needs to be configured with an API key. Get a key by logging to our dashboard.

1. Import

Import all required classes.

import { FunWallet, configureEnvironment, Auth } from "@funkit/core"

2. Configure wallet environment

Set your environment variables describing how your smart wallets interact with blockchains. This can include chain, apiKey, and optional gasSponsor.

  1. chain - Each FunWallet exists on an EVM-compatible blockchain.
  2. apiKey - You can get an API key by logging to our dashboard.
  3. gasSponsor - All wallets have to pay gas to execute transactions on a blockchain. You can pre-fund the wallet with native tokens or you can have third parties to pay for gas by specifying a gasSponsor.
await configureEnvironment({
    chain: CHAIN_ID,
    apiKey: API_KEY,
    gasSponsor: {
        sponsorAddress: SPONSOR_ADDRESS
    }
})

3. Set up authentication

Next, you need a way to sign transactions. All authentication in FunKit is handled with the Auth object. You can use privateKey, viem client, web3 provider, ethers.js signer, rpcProvider or windowEth (MetaMask) to build the Auth. Check more examples about how to create auth with different inputs here

const auth = new Auth({ privateKey: PRIVATE_KEY })

4. Initialize the FunWallet

With the Auth instance that you just created, you can now initialize your FunWallet. Here are the FunWallet constructor parameters:

  1. users - This is a User[] that holds all users that can access your FunWallet. For simplicity, we’re only including 1 user here.
  2. uniqueId - This is a random seed that is generated from our Auth instance. The purpose of this seed is to generate the address of our FunWallet.
const wallet = new FunWallet({
    users: [{ userId: auth.getAddress() }],
    uniqueId: auth.getWalletUniqueId()
})

5. Initiate a Transfer

Now we have the wallet object, we will show how to transfer some basic ERC-20 tokens to other addresses. Note that the smart wallet will only be created on the blockchain after executeOperation is finished.

const transferOp = await wallet.transfer(auth, await auth.getUserId(), {
    to: RECIPIENT_ADDRESS,
    amount: AMOUNT,
    token: TOKEN_TO_SEND
})
const receipt = await funWallet.executeOperation(auth, transferOp)
console.log(receipt)

Testing

Testing on Goerli

You can test FunKit on Ethereum goerli testnet with the following configuration. We have a gas sponsor that will cover your gas cost for the first 200 operations so you don’t have to worry about pre-funding the wallet or setting up the gas sponsor to start.

await configureEnvironment({
    chain: "goerli",
    gasSponsor: {
        sponsorAddress: "0xCB5D0b4569A39C217c243a436AC3feEe5dFeb9Ad"
    },
    apiKey: API_KEY
})

More Resources

  • Documentation - Complete how-to guides and API reference docs.
  • Demo - Try FunKit Core in action.
  • Discord - Ask us a question, or just say hi!

Keywords

FAQs

Package last updated on 17 Jun 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc