Socket
Socket
Sign inDemoInstall

@bitauth/libauth

Package Overview
Dependencies
0
Maintainers
1
Versions
28
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @bitauth/libauth

ultra-lightweight library for Bitcoin Cash, Bitcoin, and Bitauth


Version published
Weekly downloads
65K
decreased by-3.63%
Maintainers
1
Created
Weekly downloads
 

Changelog

Source

3.0.0

Major Changes

Minor Changes

Patch Changes

  • #127 e5c275f Thanks @bitjson! - generateRandomBytes: always verify unique results across two runs

    Fixes #119. Old behavior is available at generateRandomBytesUnchecked.

Readme

Source

Libauth logo

An ultra-lightweight JavaScript library for Bitcoin Cash, Bitcoin, and Bitauth applications.

Docs: Getting Started →

API Reference

NPM version Codecov CI Follow Libauth on Twitter Join Chat on Telegram npm downloads GitHub stars

Libauth

An ultra-lightweight JavaScript library for Bitcoin Cash, Bitcoin, and Bitauth applications.

Libauth has no dependencies and works in all JavaScript environments, including Node.js, Deno, and browsers.

Purpose

Libauth is designed to be flexible, lightweight, and easily auditable. Rather than providing a single, overarching, object-oriented API, all functionality is composed from simple functions. This has several benefits:

  • Flexibility – Even highly-complex functionality is built-up from simpler functions. These lower-level functions can be used to experiment, tweak, and remix your own higher-level methods without maintaining a fork of the library.
  • Smaller application bundles – Applications can import only the methods they need, eliminating the unused code (via dead-code elimination).
  • Better auditability – Beyond having no dependencies of its own, Libauth's functional programming approach makes auditing critical code easier: smaller bundles, smaller functions, and less churn between versions (fewer cascading changes to object-oriented interfaces).
  • Fully-portable – No platform-specific APIs are ever used, so the same code paths are used across all JavaScript environments (reducing the auditable "surface area" and simplifying library development).

Quick Start

To get started, install @bitauth/libauth:

npm install @bitauth/libauth
# OR
yarn add @bitauth/libauth

And import the functionality you need:

import { secp256k1 } from '@bitauth/libauth';
import { msgHash, pubkey, sig } from 'somewhere';

secp256k1.verifySignatureDERLowS(sig, pubkey, msgHash)
  ? console.log('🚀 Signature valid')
  : console.log('❌ Signature invalid');

See Installation for more guidance on getting set up.

Guides

These guides introduce some of the high-level concepts and functionality provided by Libauth.

More Examples

In addition to the usage examples in these guides, note that Libauth includes comprehensive tests that can help demonstrate usage of all functionality.

For example, utilities related to hexadecimal-encoded strings are defined in hex.ts; for thorough usage examples, see the co-located hex.spec.ts. You can also use GitHub search to see how a particular utility is used throughout the library, e.g. splitEvery.

API Overview

Below is a partial selection of functionality provided by Libauth. If you're looking for something else, be sure to search the API Reference.

High-level utilities are composed from lower-level utilities which are also exported, so it's often possible to remix behavior in your own codebase with relatively little duplication or maintenance burden. See the Defined in ... link on each utility's API reference page to review and copy the implementation.

Table of Contents

Address Formats

Base58 Addresses
Bech32
CashAddress
CashAddress-like Formats

Crypto

Formats

Base-N Conversion
Base64
Binary Strings (e.g. 00101010)
Hex (Hexadecimal-Encoded Strings)
Logging
Numbers
CompactUint (A.K.A. "VarInt" or "CompactSize")
Satoshi Values
VM Numbers (A.K.A. "ScriptNum")
Miscellaneous
Time
UTF8

Keys

BIP32 Hierarchical Deterministic (HD) Keys
BIP39 Mnemonic Phrases
Wallet Import Format (WIF)
Key Utilities

P2P Messages

Decoding Utilities
Transactions
Outputs
Dust Calculation

Virtual Machines

Built-In VMs
Debugging
Combinators

Wallet Engine

Bitcoin Cash Metadata Registries (BCMRs)
CashAssembly Language & Compiler
Multi-Party Compilation
P2PKH Utilities
Wallet Templates

VMB Tests

Libauth's test suite includes a set of cross-implementation Virtual Machine Bytecode (VMB) test vectors for each supported VM. See Libauth VMB Tests for details.

CashAssembly

CashAssembly is the assembly language used by Libauth's Wallet Templates. To learn more about CashAssembly, read the Bitauth IDE Guide.

Contributing

Pull Requests welcome! Please see CONTRIBUTING.md for details.

Keywords

FAQs

Last updated on 10 Apr 2024

Did you know?

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc