Módulo de comunidad impresionante

BitcoinJS (bitcoinjs-lib)

Estado de construcción NPM 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.

Caracteristicas

  • 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 específicas.
  • Compatible : funciona en Node.js y todos los navegadores modernos.
  • Powerful : compatibilidad con funciones avanzadas, como carteras HD multi-sig.
  • Secure : fuerte generación de números aleatorios, lanzamientos firmados por PGP, desarrolladores de confianza.
  • Principled : No hay soporte para navegadores con RNG basura (IE <11)
  • Standardized : estilo de codificación de la comunidad de nodo, Browserify, stdlib y búfer de Node.
  • Fast : código optimizado, utiliza matrices escritas en lugar de matrices de bytes para el rendimiento.
  • Compatible con Experiment-friendly : compatibilidad con Bitcoin Mainnet y Testnet.
  • Altcoin-ready : Capaz de trabajar con criptomonedas derivadas de bitcoins (como Dogecoin).

¿Debería usar esto en producción?

Si está pensando en utilizar la rama maestra de esta biblioteca en producción, detenga .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

Preparar

Node.js

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

Browser

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

Se asume que Browserify está instalado para estos pasos.

Para su proyecto, cree un archivo index.js

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 poner <script src="app.js" /> en su página web, usando foo.myFunction para crear una nueva clave privada de Bitcoin.

NOTA : Si uglifica el javascript, debe excluir los siguientes nombres de variables para que no se alteren: BigInteger , ECPair , Point . Esto se debe a la función-nombre-pato-tipado que se usa en typeforce .

Ejemplo:

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

NOTA : Esta biblioteca rastrea las características de Node LTS, si necesita un ES5 estricto, use --transform babelify junto con su paso de browserify (usando un es2015 preestablecido de es2015 ).

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 TypeScript están disponibles para la versión ^3.0.0 de la biblioteca.

1
npm install @types/bitcoinjs-lib

Ahora puede usar bitcoinjs-lib como 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 usa esa información para ayudarlo 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 comprobador 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 de Blockchain de terceros (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 nos adherimos a estándares específicos con respecto al estilo de codificación, el desarrollo impulsado por pruebas y los 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 por contraseña
  • BIP39 - Generación mnemónica para claves deterministas
  • BIP32-Utils: un conjunto de utilidades para trabajar con BIP32
  • BIP66 - Decodificación de firma DER estricta
  • BIP68 -Biblioteca de codificación de tiempo de bloqueo relativo
  • BIP69 - Indexación lexicográfica de entradas y salidas de transacciones
  • Codificación / decodificación Base58 -Base58
  • Comprobación de Base58 - Codificación / decodificación de comprobación de Base58
  • Bech32 -A biblioteca de codificación Bech32 compatible con BIP173
  • coinselect -Un módulo de selección de entrada de transacciones con optimización de tarifas para bitcoinjs-lib.
  • merkle-lib -Una biblioteca consciente del rendimiento para cálculos de árbol y raíz de merkle.
  • minimaldata -Un módulo para verificar la política de bitcoin: SCRIPT_VERIFY_MINIMALDATA

Alternativas

LICENCIA MIT