Módulo comunitario incrible

BitcoinJS (bitcoinjs-lib)

Estado de compilación NPM consello para a próxima entrega

js-estándar-estilo

A biblioteca pura Bitcoin de JavaScript para node.js e navegadores. Estímase que a utilizan 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 peticións de tracción pequenas e enfocadas.
  • Compatible: Funciona en Node.js e en todos os navegadores modernos.
  • Powerful: Soporte para funcións avanzadas, como carteiras multi-sig, HD.
  • Secure: Forte xeración de números aleatorios, lanzamentos asinados por PGP, desenvolvedores de confianza.
  • Principled: Non hai soporte para navegadores con RNG porco (IE <11)
  • Standardized: Estilo de codificación da comunidade de nodos, Browserify, stdlib de Node e Buffers.
  • Fast: Código optimizado, utiliza matrices escritas no canto de matrices de bytes para o rendemento.
  • Adecuado para os experimentos: soporte de Bitcoin Mainnet e Testnet.
  • Listo para Altcoin: é capaz de traballar con criptomonedas derivadas de bitcoins (como Dogecoin).

Debo usar isto na produción?

Se estás pensando en usar a rama mestra desta biblioteca en produción, detén. O mestre 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á familiarizado co uso de browserify, ignore isto e proceda con normalidade. Estes pasos son só recomendativos e poden non ser adecuados para a súa aplicación.

Suponse que Browserify está instalado para estes pasos.

Para o seu proxecto, cree 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 : O JavaScript enfear o Se, debes seguintes nomes de variables do exclúe o ser mutilado: BigInteger, ECPair, Pointiso por mor da IS Función-name Usado en Pato-Typing. Typeforce .

Exemplo:

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

NOTA : Esta biblioteca fai un seguimento das funcións de Node LTS, se precisa ES5 estricto, úsao --transform babelifyxunto co seu browserifypaso (usando un es2015preajustado).

NOTA : Se esperas que esta biblioteca funcione nun dispositivo iOS 10, asegúrate de que estás 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 co mecanoscrito.

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 (autocompletado, análise estática).

Informe de calquera erro relacionado co mecanoscrito no garfo @dlebrecht DefinitelyTyped , envíe PR a DefinitelyTyped

Flow

As definicións para o mecanógrafo de fluxo están dispoñibles no repositorio con tipo de fluxo.

Pode 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 mantéñena @ runn1ng .

Exemplos

Os exemplos que se indican a continuación están implementados como probas de integración. Deben ser moi fáciles de comprender. Se non, agradécense as solicitudes de extracción. Algúns exemplos interactúan (a través de HTTPS) cun provedor de blockchain de terceiros (3PBP).

Se tes un caso de uso que consideras que podería aparecer aquí, pídelo .

Proxectos que empregan BitcoinJS

Contribuíndo

Sempre aceptamos as solicitudes de extracción, pero cumprimos con estándares específicos en canto ao estilo de codificación, desenvolvemento de probas e mensaxes de confirmación.

Por favor, faga o mellor posible para cumprir isto cando contribúa a aforrar en triviais correccións.

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 - Claves privadas protexidas por frase
  • BIP39 -Xeración mnemónica de claves deterministas
  • BIP32-Utils: un conxunto de utilidades para traballar con BIP32
  • BIP66 - Descodificación da sinatura DER estricta
  • BIP68 -Libreria de codificación relativa ao tempo de bloqueo
  • BIP69 -Indexación lexicográfica de entradas e saídas de transaccións
  • Codificación / descodificación Base58 -Base58
  • Base58 Check -Base58 comprobar codificación / descodificación
  • Biblioteca de codificación Bech32 compatible con Bech32 -A BIP173
  • coinselect -Un módulo de selección de entrada de transacción que optimiza as taxas 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

LICENCIA MIT