Impresionante módulo de comunidad

BitcoinJS (bitcoinjs-lib)

Estado de compilación NPM consejo para la próxima confirmación

js-standard-style

La biblioteca de Bitcoin JavaScript pura para node.js y navegadores. Se estima que está en uso por más de 15 millones de usuarios de billetera y es la columna vertebral de casi todas las billeteras web de Bitcoin en producción hoy en día.

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

¿Debo usar esto en producción?

Si está pensando en utilizar la rama maestra de esta biblioteca en producción, deténgase , la maestra 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 proceda normalmente. Estos pasos son solo informativos y pueden no ser adecuados para su aplicación.

Se supone 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 de ser maltratados: BigInteger , ECPair , Point . Esto se debe a la función-nombre-pato-tipificación utilizada en typeforce .

Ejemplo:

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

NOTA : Esta biblioteca rastrea las funciones del Nodo LTS, si necesita un ES5 estricto, use --transform babelify junto con su paso de browserify (usando un preset es2015 ).

NOTA : Si espera que esta biblioteca se ejecute en un dispositivo iOS 10, asegúrese de estar usando 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.0 de la biblioteca.

1
npm install @types/bitcoinjs-lib

Ahora puede usar bitcoinjs-lib como una biblioteca compatible con el mecanografiado.

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

Para VSCode (y otros editores), se aconseja 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 los RP a DefinitelyTyped

Flow

Las definiciones de Flow typechecker están disponibles en el repositorio de tipo 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. @ Runn1ng mantiene las definiciones .

Ejemplos

Los ejemplos a continuación 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).

Tienes que tener un uso Caso A Si usted siente que podría estar listados pantalla, por favor preguntar por ella !

Proyectos que utilizan BitcoinJS

Contribuyendo

Siempre aceptamos solicitudes de extracción, pero cumplimos con estándares específicos en lo que respecta al estilo de codificación, el desarrollo basado en pruebas y los mensajes de compromiso.

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

Complementando Bibliotecas

  • BIP21 -Una biblioteca de codificación de URL compatible con BIP21
  • BIP38 - Claves privadas protegidas por contraseña
  • BIP39 - Generación nemó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 - Indización lexicográfica de entradas y salidas de transacciones
  • Base58 -Base58 codificación / decodificación
  • Base58 Check -Base58 verificación de codificación / decodificación
  • Bech32 - Una biblioteca de codificación Bech32 compatible con BIP173
  • coinselect -Un módulo de selección de entrada de transacción de optimización de tarifas para bitcoinjs-lib.
  • merkle-lib: una biblioteca consciente del rendimiento para cálculos de raíz y árbol de merkle.
  • minimaldata -Un módulo para verificar la política de bitcoin: SCRIPT_VERIFY_MINIMALDATA

Alternativas

MIT DE LICENCIA