Impresionante módulo comunitario

BitcoinJS (bitcoinjs-lib)

Estado de construción NPM consello para o próximo compromiso

js-estilo estándar

A biblioteca de Bitcoin de JavaScript puro para node.js e navegadores. Estímase que está en uso por máis de 15 millóns de usuarios de carteiras e é a columna vertebral de case todas as carteiras web de Bitcoin en produción na actualidade.

características

  • Clean: JavaScript puro, código conciso, fácil de ler.
  • Tested: Cobertura > 90 %, probas de integración de terceiros.
  • Careful: proceso de aprobación de dúas persoas para solicitudes de extracción pequenas e enfocadas.
  • Compatible: Funciona en Node.js e todos os navegadores modernos.
  • Powerful: Compatibilidade con funcións avanzadas, como carteiras multisig HD.
  • Secure: xeración de números aleatorios fortes, versións asinadas por PGP, desenvolvedores de confianza.
  • Principled: Non hai soporte para navegadores con crap RNG (IE < 11)
  • Standardized: Estilo de codificación da comunidade de nodos, Browserify, stdlib e Buffers de Node.
  • Fast: Código optimizado, usa matrices escritas en lugar de matrices de bytes para o rendemento.
  • Adecuado para experimentos: soporte de Bitcoin Mainnet e Testnet.
  • Listo para Altcoin: capaz de traballar con criptomoedas derivadas de bitcoins (como Dogecoin).

Debo usar isto na produción?

Se estás pensando en usar a rama mestra desta biblioteca na produción, deixa de . Master non é estable, é a nosa rama de desenvolvemento e só as versións etiquetadas poden clasificarse como estables .

Instalación

1
npm install bitcoinjs-lib

Montar

Node.js

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

Browser

Se estás familiarizado con como usar Browserify, ignórao e continúa normalmente. Estes pasos son só orientativos e poden non ser adecuados para a túa aplicación.

Suponse que Browserify está instalado para estes pasos.

Para o teu proxecto, crea un index.jsficheiro

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 }

Agora, para compilar para o navegador:

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

Agora podes poñer <script src="app.js" />na túa páxina web, usando foo.myFunctionpara crear unha nova clave privada de Bitcoin.

NOTA : Se feíste o Javascript, debes excluír os seguintes nomes de variables de ser alterados: BigInteger, ECPair, Point.Isto é debido á función-name-duck-typing usada en typeforce .

Exemplo:

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

NOTA : Esta biblioteca rastrexa as funcións de Node LTS, se necesitas un ES5 estrito, úsao --transform babelifyxunto co teu browserifypaso (usando un es2015predefinido).

NOTA : Se esperas que esta biblioteca se execute nun dispositivo iOS 10, asegúrate de estar usando buffer@5.0.5 ou superior.

Typescript or VSCode users

As declaracións de tipo para Typescript están dispoñibles para a versión ^3.0.0da biblioteca.

1
npm install @types/bitcoinjs-lib

Agora podes usalo bitcoinjs-libcomo biblioteca compatible con mecanografía.

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

Para VSCode (e outros editores), recoméndase aos usuarios que instalen as declaracións de tipo, xa que Intellisense usa esa información para axudarche a codificar (completado automático, análise estática).

Informe calquera erro relacionado con mecanografía en @dlebrecht DefinitelyTyped fork , envíe PR a DefinitelyTyped

Flow

As definicións para o comprobador de tipos de fluxo están dispoñibles no repositorio de tipos de fluxo.

Podes descargalos directamente desde o repositorio ou coa CLI de tipo fluxo

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

As definicións están completas e están actualizadas coa versión 2.2.0. As definicións son mantidas por @runn1ng .

Exemplos

Os exemplos seguintes impléntanse como probas de integración, deberían ser moi fáciles de entender. En caso contrario, apreciaranse as solicitudes de extracción. Algúns exemplos interactúan (a través de HTTPS) cun provedor de cadea de bloques de terceiros (3PBP).

Se tes un caso de uso que cres que podería enumerarse aquí, ¡ pregúntao !

Proxectos que utilizan BitcoinJS

Contribuíndo

Sempre aceptamos solicitudes de extracción, pero cumprimos estándares específicos no que respecta ao estilo de codificación, o desenvolvemento impulsado por probas e as mensaxes de confirmación.

Faga todo o posible por cumprir con estes cando contribúa a aforrar en correccións triviais.

Running the test suite

1 2
npm test npm run-script coverage

Bibliotecas complementarias

  • BIP21 : unha biblioteca de codificación de URL compatible con BIP21
  • BIP38 - Chaves privadas protexidas con contrasinal
  • BIP39 - Xeración mnemotécnica para claves deterministas
  • BIP32-Utils - Un conxunto de utilidades para traballar con BIP32
  • BIP66 - Decodificación de sinaturas DER estrita
  • BIP68 - Biblioteca de codificación de tempo de bloqueo relativo
  • BIP69 - Indización lexicográfica de entradas e saídas de transaccións
  • Base58 - Codificación/decodificación Base58
  • Base58 Check - Codificación/decodificación Base58
  • Bech32 : unha biblioteca de codificación Bech32 compatible con BIP173
  • coinselect - Un módulo de selección de entrada de transaccións optimizando tarifas para bitcoinjs-lib.
  • merkle-lib - Unha biblioteca consciente do rendemento para cálculos de raíz e árbore de merkle.
  • minimaldata - Un módulo para comprobar a política de bitcoins: SCRIPT_VERIFY_MINIMALDATA

Alternativas

LICENZA _