2.0.4 • Published 1 year ago

@ultraos/ultra-ledger-lib v2.0.4

Weekly downloads
-
License
-
Repository
github
Last release
1 year ago

Ultra Antelope Ledger Lib

Provides a simple way to integrate Ledger into Node Environments for Antelope Based Chains.

Requirements

Must be used in a Chrome or Firefox web page.

Built with Node 18+

Does not work with Node Directly

Usage

Basic Response Interface

When working with this tool, you will get a response and a status message.

type Response = { status: boolean; data: any };

Connection & Get Public Key

async function start() {
  // This will wait until the ledger app is open and connected.
  // Tries roughly for 30s before giving up.
  const ledgerApi = await connect();
  if (!ledgerApi) {
    throw new Error("Failed to connect to ledger device");
  }

  const pubKey = await ledgerApi.getPublicKey({ ledgerIndex: 0 });
  if (!pubKey) {
    throw new Error("Could not get public key on index 0")
  }

  console.log(pubKey);
}

Sign Transaction

async function start() {
  // This will wait until the ledger app is open and connected.
  // Tries roughly for 30s before giving up.
  const ledgerApi = await connect();
  if (!ledgerApi) {
    throw new Error("Failed to connect to ledger device");
  }

  const transactionWithHeaders = await someTransactionBuilderHere(); // @wharfkit/antelope OR @ultraos/ultra-signer-lib
  const chain_id = await someChainIdFetch(); // @wharfkit/antelope OR @ultraos/ultra-signer-lib
  const ledgerIndex = 0;

  const result = await ledgerApi.signTransaction(JSON.parse(JSON.stringify(transactionWithHeaders)), chain_id, ledgerIndex);
  if (!result || !result.data) {
    throw new Error(result.data)
  }

  // txid -> result.response
  console.log(result.data);
}

Buffer Issues / Errors

If you are using this in a Web Application what you will need to do is setup Vite with polyfill for Buffer.

vite.config.ts

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { nodePolyfills } from 'vite-plugin-node-polyfills';

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue(), nodePolyfills({ protocolImports: true })],
  optimizeDeps: {
    esbuildOptions: {
      define: {
        global: "globalThis",
      },
    },
  },
})
2.0.4

1 year ago

2.0.3

1 year ago

2.0.2

2 years ago

1.1.1-debug2

2 years ago

1.1.0-debug

2 years ago

1.1.0

2 years ago

1.0.9

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago