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

@silencelaboratories/walletprovider-sdk

Package Overview
Dependencies
Maintainers
0
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@silencelaboratories/walletprovider-sdk

Frontend SDK for Wallet Providers

  • 0.0.7
  • npm
  • Socket score

Version published
Weekly downloads
1.1K
decreased by-7.07%
Maintainers
0
Weekly downloads
 
Created
Source

walletprovider-sdk

The frontend library for Silent Network.

Demo

Under the demo directory we provide the sample webpage that shows example usage of the library. In order to run it execute the following:

  1. Build the library
bun install
bun run build
  1. Run the demo
cd demo
npm install
npm run dev

The demo fetches configuration from the .env file. We provided example .env here.

The demo communicates with backend service. Run it before using the demo page.

Using the library

The library is published on npmjs registry.

Install it in your project as usual:

npm i @silencelaboratories/walletprovider-sdk

The backend

The library communicates with backend service. The example implementation of such service is accessible here. Please refer to backend documentation in order to run the service.

Frontend uses WalletProviderServiceClient object in order to connect to the backend and send requests.

Documentation

For description of classes, interfaces, types, please refer to documentation.

Keygen

The full working example is in the demo. The core object to use is the NetworkSigner.

It allows to generate keys and do signatures. In order to create, you need two other components. The WalletProviderServiceClient that connects to the Backend part of the SDK, and the authentication module. Currently we provide EOA authentication via EOAAuth.

Let's create the NetworkSigner

const wpClient = await createWalletProviderService(clusterConfig);
// Authenticate using EOA
const eoaAuth = new EOAAuth(accountsFromBrowserWallet[0], new BrowserWallet());

// Create a new signer instance
const sdk = new NetworkSigner(wpClient, threshold, partiesNumber, eoaAuth);

Now you can generate a key, using the authenticateAndCreateKey method. The method accepts optional permissions. No permissions means allow all operations.

const permissions = {
  permissions: [
    {
      type: 'erc20',
      method: 'approve',
      to: '0x1234567890123456789012345678901234567890',
      args: {
        spender: '0x1234567890123456789012345678901234567890',
        value: 10000,
        eq: '<',
      },
    },
  ],
};

// Generate a new key
let resp: KeygenResponse = await sdk.authenticateAndCreateKey(JSON.stringify(permissions));

Calling this method will cause to the Browser Wallet window to pop up, requesting the User to sign the request. After execution KeygenResponse is returned.

The KeygenResponse contains keyId and publicKey. The publicKey is the public part of the key generated by Silent Network. Use the keyId in subsequent calls to sign.

Signing

The full signing example is here.

Use the NetworkSigner.authenticateAndSign method in order to generate a signature.

let signMessage = JSON.stringify({
  userOperation: {
    sender: '0x8d4cb2540d993fe34c646299f1ab4af3012ff34c',
    nonce: '0x7',
    initCode: '',
    callData: '0000189a...',
    callGasLimit: '123130',
    verificationGasLimit: '153427',
    preVerificationGas: '66768',
    maxFeePerGas: '',
    maxPriorityFeePerGas: '',
    paymasterAndData: '',
  },
  entryPointVersion: 'v0.6.0',
  entryPointAddress: '0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789',
  chainId: 80002,
});

let resp = await sdk.authenticateAndSign(selectedKeyId, signMessage);

The SignResponse contains the signature sign and the recovery ID recid.

Developing the library

Audience of this section are library developers.

Bun runtime is required

Install bun from https://bun.sh

Install dependencies

bun install

Build

bun run build

The output will be in the dist folder.

Test

Create *.test.ts files and run tests with:

bun run test
# or watch test
bun run test:watch

Format the code

bun run format

Generate the documentation

bun run docs

FAQs

Package last updated on 04 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