Module communautaire génial

BitcoinJS (bitcoinjs-lib)

Statut de la construction NPM astuce pour le prochain commit

style js standard

La bibliothèque Bitcoin JavaScript pure pour node.js et les navigateurs.Estimée pour être utilisée par plus de 15 millions d'utilisateurs de portefeuilles et est l'épine dorsale de presque tous les portefeuilles Web Bitcoin en production aujourd'hui.

Caractéristiques

  • Clean : JavaScript pur, code concis, facile à lire.
  • Tested : couverture> 90%, tests d'intégration tiers.
  • Careful : processus d'approbation de deux personnes pour les petites demandes de tirage ciblées.
  • Compatible : Fonctionne sur Node.js et tous les navigateurs modernes.
  • Powerful : prise en charge de fonctionnalités avancées, telles que les portefeuilles HD multi-sig.
  • Secure : forte génération de nombres aléatoires, versions signées PGP, développeurs de confiance.
  • Principled : pas de support pour les navigateurs avec merde RNG (IE <11)
  • Standardized : style de codage de la communauté Node, Browserify, stdlib et Buffers de Node.
  • Fast : code optimisé, utilise des tableaux typés au lieu de tableaux d'octets pour les performances.
  • Compatible avec les Experiment-friendly : prise en charge de Bitcoin Mainnet et Testnet.
  • Altcoin-ready : capable de travailler avec des crypto-monnaies dérivées de Bitcoin (telles que Dogecoin).

Dois-je l'utiliser en production?

Si vous envisagez d'utiliser la branche master de cette bibliothèque en production, arrêtez . Master n'est pas stable; c'est notre branche de développement, et seules les versions marquées peuvent être classées comme stables .

Installation

1
npm install bitcoinjs-lib

Installer

Node.js

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

Browser

Si vous savez comment utiliser browserify, ignorez-le et procédez normalement. Ces étapes sont à titre indicatif uniquement et peuvent ne pas convenir à votre application.

Browserify est supposé être installé pour ces étapes.

Pour votre projet, créez un fichier 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 }

Maintenant, pour compiler pour le navigateur:

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

Vous pouvez maintenant mettre <script src="app.js" /> dans votre page Web, en utilisant foo.myFunction pour créer une nouvelle clé privée Bitcoin.

REMARQUE : si vous uglifiez le javascript, vous devez exclure les noms de variable suivants de la BigInteger : BigInteger , ECPair , Point . Cela est dû à la fonction-nom-canard-typing utilisée dans typeforce .

Exemple:

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

REMARQUE : Cette bibliothèque suit les fonctionnalités de Node LTS, si vous avez besoin d'ES5 strict, utilisez --transform babelify en conjonction avec votre étape browserify (en utilisant un préréglage es2015 ).

REMARQUE : si vous prévoyez que cette bibliothèque s'exécute sur un appareil iOS 10, assurez-vous que vous utilisez buffer@5.0.5 ou une version ultérieure .

Typescript or VSCode users

Les déclarations de type pour Typescript sont disponibles pour la version ^3.0.0 de la bibliothèque.

1
npm install @types/bitcoinjs-lib

Vous pouvez maintenant utiliser bitcoinjs-lib tant que bibliothèque compatible avec le bitcoinjs-lib .

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

Pour VSCode (et d'autres éditeurs), il est conseillé aux utilisateurs d'installer les déclarations de type, car Intellisense utilise ces informations pour vous aider à coder (autocomplétion, analyse statique).

Signaler tout bogue lié à la dactylographie sur @dlebrecht DefinitelyTyped fork , soumettre des RP à DefinitelyTyped

Flow

Les définitions de Flow Typechecker sont disponibles dans le référentiel de type Flow .

Vous pouvez soit les télécharger directement à partir du référentiel, soit avec la CLI de type flux

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

Les définitions sont complètes et à jour avec la version 2.2.0. Les définitions sont gérées par @ runn1ng .

Exemples

Les exemples ci-dessous sont mis en œuvre en tant que tests d'intégration, ils devraient être très faciles à comprendre. Sinon, les demandes d'extraction sont appréciées. Certains exemples interagissent (via HTTPS) avec un fournisseur de blockchain tiers (3PBP).

Si vous avez un cas d'utilisation qui, selon vous, pourrait être répertorié ici, veuillez le demander !

Projets utilisant BitcoinJS

Contribuant

Nous acceptons toujours les demandes d'extraction, mais nous adhérons à des normes spécifiques en ce qui concerne le style de codage, le développement piloté par les tests et les messages de validation.

Veuillez faire de votre mieux pour les respecter lorsque vous contribuez à économiser sur les corrections triviales.

Running the test suite

1 2
npm test npm run-script coverage

Bibliothèques complémentaires

  • Bibliothèque de codage d'URL compatible BIP21 -A BIP21
  • BIP38 - Clés privées protégées par un mot de passe
  • BIP39 - Génération mnémonique pour clés déterministes
  • BIP32-Utils -Un ensemble d'utilitaires pour travailler avec BIP32
  • BIP66 - Décodage de signature DER strict
  • BIP68 - Bibliothèque d'encodage à temps de verrouillage relatif
  • BIP69 -Indexation Lexicographique des Entrées et Sorties de Transaction
  • Encodage / décodage Base58 -Base58
  • Base58 Check -Base58 check encodage / décodage
  • Bibliothèque d' encodage Bech32 compatible Bech32 -A BIP173
  • coinselect -Un module de sélection d'entrée de transaction optimisant les frais pour bitcoinjs-lib.
  • merkle-lib -Une bibliothèque soucieuse de performances pour les calculs de racine et d'arbre merkle.
  • minimaldata -Un module pour vérifier la politique de bitcoin: SCRIPT_VERIFY_MINIMALDATA

Alternatives

MIT DE LICENCE