Impresionante módulo comunitario

BitcoinJS (bitcoinjs-lib)

Estado de construcción MNP consejo para el próximo compromiso

estilo estándar js

La biblioteca Bitcoin de JavaScript puro para node.js y navegadores. Se estima que la utilizan más de 15 millones de usuarios de billeteras y es la columna vertebral de casi todas las billeteras web de Bitcoin en producción en la actualidad.

Características

  • Clean: JavaScript puro, código conciso, fácil de leer.
  • Tested: Cobertura > 90%, pruebas de integración de terceros.
  • Careful: Proceso de aprobación de dos personas para solicitudes de extracción pequeñas y enfocadas.
  • Compatible: Funciona en Node.js y todos los navegadores modernos.
  • Powerful: Compatibilidad con funciones avanzadas, como billeteras HD multifirma.
  • Secure: Fuerte generación de números aleatorios, versiones firmadas por PGP, desarrolladores confiables.
  • Principled: No hay soporte para navegadores con RNG basura (IE < 11)
  • Standardized: Estilo de codificación de la comunidad de Node, Browserify, stdlib y Buffers de Node.
  • Fast: Código optimizado, utiliza matrices escritas en lugar de matrices de bytes para mejorar el rendimiento.
  • Apto para experimentos: compatibilidad con Bitcoin Mainnet y Testnet.
  • Listo para Altcoin: Capaz de trabajar con criptomonedas derivadas de bitcoin (como Dogecoin).

¿Debería usar esto en producción?

Si está pensando en utilizar la rama master de esta biblioteca en producción, deténgase . Master no es estable; es nuestra rama de desarrollo y solo las versiones etiquetadas pueden clasificarse como estables .

Instalación

1
npm install bitcoinjs-lib

Configuración

Node.js

1
var bitcoin = require('bitcoinjs-lib')

Browser

Si está familiarizado con el uso de browserify, ignórelo y continúe con normalidad. Estos pasos son solo de orientación y pueden no ser adecuados para su aplicación.

Se supone que Browserify está instalado para estos pasos.

Para su proyecto, cree un index.jsarchivo

1 2 3 4 5 6 7 8 9 10
let bitcoin = require('bitcoinjs-lib') // your code here function myFunction () { return bitcoin.ECPair.makeRandom().toWIF() } module.exports = { myFunction }

Ahora, para compilar para el navegador:

1
browserify index.js --standalone foo > app.js

Ahora puede ingresar <script src="app.js" />a su página web y usarla foo.myFunctionpara crear una nueva clave privada de Bitcoin.

NOTA : Si feas el javascript, debes excluir los siguientes nombres de variables para que no se modifiquen: BigInteger, ECPair, PointEsto se debe a la función-name-duck-typing utilizada en typeforce .

Ejemplo:

1
uglifyjs ... --mangle reserved=['BigInteger','ECPair','Point']

NOTA : Esta biblioteca rastrea las características de Node LTS; si necesita ES5 estricto, úselo --transform babelifyjunto con su browserifypaso (usando un es2015ajuste preestablecido).

NOTA : Si espera que esta biblioteca se ejecute en un dispositivo iOS 10, asegúrese de utilizar buffer@5.0.5 o superior.

Typescript or VSCode users

Las declaraciones de tipo para Typecript están disponibles para la versión ^3.0.0de la biblioteca.

1
npm install @types/bitcoinjs-lib

Ahora puede utilizarlo bitcoinjs-libcomo una biblioteca compatible con mecanografiado.

1
import { HDNode, Transaction } from 'bitcoinjs-lib'

Para VSCode (y otros editores), se recomienda a los usuarios que instalen las declaraciones de tipo, ya que Intellisense utiliza esa información para ayudarle a codificar (autocompletado, análisis estático).

Informe cualquier error relacionado con el mecanografiado en @dlebrecht DefinitelyTyped fork , envíe PR a DefinitelyTyped

Flow

Las definiciones para el verificador de tipos de flujo están disponibles en el repositorio de tipos de flujo.

Puede descargarlos directamente desde el repositorio o con la CLI de tipo flujo

1 2
# npm install -g flow-typed $ flow-typed install -f 0.27 bitcoinjs-lib@2.2.0 # 0.27 for flow version, 2.2.0 for bitcoinjs-lib version

Las definiciones están completas y actualizadas con la versión 2.2.0. Las definiciones son mantenidas por @runn1ng .

Ejemplos

Los siguientes ejemplos se implementan como pruebas de integración, deben ser muy fáciles de entender. De lo contrario, se agradecen las solicitudes de extracción. Algunos ejemplos interactúan (a través de HTTPS) con un proveedor externo de blockchain (3PBP).

Si tiene un caso de uso que cree que podría incluirse aquí, ¡ solicítelo !

Proyectos que utilizan BitcoinJS

Contribuyendo

Siempre aceptamos solicitudes de extracción, pero cumplimos con estándares específicos con respecto al estilo de codificación, desarrollo basado en pruebas y mensajes de confirmación.

Haga su mejor esfuerzo para cumplir con estos cuando contribuya a ahorrar en correcciones triviales.

Running the test suite

1 2
npm test npm run-script coverage

Bibliotecas complementarias

  • BIP21 : una biblioteca de codificación de URL compatible con BIP21
  • BIP38 : claves privadas protegidas con contraseña
  • BIP39 : generación mnemotécnica para claves deterministas
  • BIP32-Utils : un conjunto de utilidades para trabajar con BIP32
  • BIP66 : decodificación estricta de firmas DER
  • BIP68 : biblioteca de codificación de tiempo de bloqueo relativo
  • BIP69 - Indexación lexicográfica de entradas y salidas de transacciones
  • Base58 : codificación/decodificación Base58
  • Comprobación Base58 : codificación/decodificación de comprobación Base58
  • Bech32 : una biblioteca de codificación Bech32 compatible con BIP173
  • coinselect : un módulo de selección de entradas de transacciones que optimiza las tarifas para bitcoinjs-lib.
  • merkle-lib : una biblioteca centrada en el rendimiento para cálculos de raíces y árboles de Merkle.
  • minimaldata - Un módulo para verificar la política de bitcoin: SCRIPT_VERIFY_MINIMALDATA

Alternativas

LICENCIA _