Socket
Socket
Sign inDemoInstall

@turnkey/eip-1193-provider

Package Overview
Dependencies
Maintainers
6
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@turnkey/eip-1193-provider

EIP-1193 Provider for Turnkey.


Version published
Weekly downloads
10
decreased by-73.68%
Maintainers
6
Weekly downloads
 
Created
Source

Turnkey EIP-1193 Provider

The @turnkey/eip-1193-provider package delivers a Turnkey-compatible Ethereum provider that adheres to the EIP-1193 standards. It's built to integrate seamlessly with a broad spectrum of EVM-compatible chains, offering capabilities like account management, transaction signing, and blockchain interaction. This initial setup is intended for use in conjunction with the @turnkey/http and @turnkey/webauthn-stamper package, for initial authentication.

Installation

Before you start using the Turnkey EIP-1193 Provider, make sure to install the necessary packages in your project. This guide assumes you have a Node.js environment ready for development.

Install the required packages using NPM or Yarn:

npm install @turnkey/eip-1193-provider @turnkey/http @turnkey/webauthn-stamper
pnpm add @turnkey/eip-1193-provider @turnkey/http @turnkey/webauthn-stamper
yarn add @turnkey/eip-1193-provider @turnkey/http @turnkey/webauthn-stamper

Initialization

To set up the Turnkey EIP-1193 Provider, you need to initialize it with your configuration, which includes setting up the Turnkey client with your base URL and stamper.

import { WebauthnStamper } from "@turnkey/webauthn-stamper";
import { TurnkeyClient } from "@turnkey/http";

const stamper = new WebauthnStamper({
  rpId: "example.com",
});

// Initialize the Turnkey HTTP client
const turnkeyClient = new TurnkeyClient(
  { baseUrl: "https://api.turnkey.com" },
  stamper
);

// Get the organizationId of the sub-organization connected to the users account
const { organizationId } = await turnkeyClient.getWhoami({
  organizationId: process.env.ORGANIZATION_ID,
});

// Get the user wallets associated with their sub-organization
const { wallets } = await turnkeyClient.getWallets({
  organizationId,
});

// Get the walletId to connect to the provider
const walletId = wallets[0].walletId;

const chain = {
  chainName: "Ethereum Mainnet",
  chainId: "0x1",
  rpcUrls: ["https://mainnet.infura.io/v3/your-infura-project-id"],
};

// Initialize the EIP-1193 Provider with your configuration
const provider = await createEIP1193Provider({
  walletId,
  organizationId,
  turnkeyClient,
  chains: [
    chain,
    // Add more chains as needed
  ],
});

Usage

eth_requestAccounts

Requests the user to provide an Ethereum address for identification, as specified by EIP-1102. This method initiates connectivity with the client and will prompt for passkey authentication.

const accounts = await provider.request({ method: "eth_requestAccounts" });
// Logs the array accounts associated with the provided walletId & organization
console.log(accounts);

Authentication Prompt Methods

The following methods also prompt for passkey authentication:

  • personal_sign: Signs a message with the specified account.
  • eth_sign: Signs data with the specified account.
  • eth_signTransaction: Signs a transaction with the specified account.
  • eth_signTypedData_v4: Signs typed data according to EIP-712 with the specified account.
  • eth_sendTransaction: Submits a transaction to the network for execution.

Testing (Local)

  1. Copy .env.example to .env.local
cp .env.example .env
  1. Start the Anvil node in one shell:
pnpm anvil
  1. Run the tests in a new shell:
pnpm test

Contributing

We welcome contributions to improve the Turnkey EIP-1193 Provider. Please follow the project's contribution guidelines.

License

This project is licensed under LICENSE, with detailed information available in the repository.

Keywords

FAQs

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