Mòdul comunitari fantàstic

BitcoinJS (bitcoinjs-lib)

Estat de construcció NPM consell per a la propera commissió

js-estàndard-estil

La biblioteca de Bitcoin de JavaScript pura per a node.js i navegadors. Es calcula que l'utilitzen més de 15 milions d'usuaris de carteres i és la columna vertebral de gairebé totes les carteres web de Bitcoin en producció actual.

Característiques

  • Clean: JavaScript pur, codi concís, fàcil de llegir.
  • Tested: Cobertura > 90%, proves d'integració de tercers.
  • Careful: procés d'aprovació de dues persones per a sol·licituds d'extracció petites i enfocades.
  • Compatible: Funciona amb Node.js i tots els navegadors moderns.
  • Powerful: Suport per a funcions avançades, com ara carteres multi-sig, HD Wallets.
  • Secure: generació de números aleatoris forts, versions signades PGP, desenvolupadors de confiança.
  • Principled: No hi ha suport per a navegadors amb crap RNG (IE < 11)
  • Standardized: Estil de codificació de la comunitat de nodes, Browserify, stdlib i Buffers de Node.
  • Fast: Codi optimitzat, utilitza matrius escrites en lloc de matrius de bytes per al rendiment.
  • Adequat per a experiments: suport de Bitcoin Mainnet i Testnet.
  • Altcoin llest: capaç de treballar amb criptomonedes derivades de bitcoins (com ara Dogecoin).

Hauria d'utilitzar això en producció?

Si esteu pensant a utilitzar la branca mestra d'aquesta biblioteca en producció, atureu . Master no és estable, és la nostra branca de desenvolupament i només les versions etiquetades es poden classificar com a estables .

Instal·lació

1
npm install bitcoinjs-lib

Configuració

Node.js

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

Browser

Si esteu familiaritzat amb com utilitzar browserify, ignoreu-ho i procediu amb normalitat. Aquests passos són només d'assessorament i poden no ser adequats per a la vostra aplicació.

Se suposa que Browserify està instal·lat per a aquests passos.

Per al vostre projecte, creeu un index.jsfitxer

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 }

Ara, per compilar per al navegador:

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

Ara podeu posar <script src="app.js" />a la vostra pàgina web, fent servir foo.myFunctionper crear una nova clau privada de Bitcoin.

NOTA : Si engresqueu el javascript, heu d'excloure els noms de variables següents de ser alterats: BigInteger, ECPair, Point. Això es deu a la funció-nom-ànec-escriptura que s'utilitza a typeforce .

Exemple:

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

NOTA : Aquesta biblioteca fa un seguiment de les funcions de Node LTS, si necessiteu un ES5 estricte, utilitzeu-lo --transform babelifyjuntament amb el vostre browserifypas (utilitzant un es2015valor predefinit).

NOTA : si espereu que aquesta biblioteca s'executi en un dispositiu iOS 10, assegureu-vos que feu servir buffer@5.0.5 o superior.

Typescript or VSCode users

Les declaracions de tipus per a Typescript estan disponibles per a la versió ^3.0.0de la biblioteca.

1
npm install @types/bitcoinjs-lib

Ara podeu utilitzar bitcoinjs-lib-lo com a biblioteca compatible amb mecanografia.

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

Per a VSCode (i altres editors), es recomana als usuaris que instal·lin les declaracions de tipus, ja que Intellisense utilitza aquesta informació per ajudar-vos a codificar (compleció automàtica, anàlisi estàtica).

Informa de qualsevol error relacionat amb mecanografia a @dlebrecht DefinitelyTyped fork , envia PR a DefinitelyTyped

Flow

Les definicions del verificador de tipus de flux estan disponibles al repositori de tipus de flux.

Podeu descarregar-los directament des del repositori o amb la CLI de tipus 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 definicions estan completes i actualitzades amb la versió 2.2.0 Les definicions les manté @runn1ng .

Exemples

Els exemples següents s'implementen com a proves d'integració, haurien de ser molt fàcils d'entendre. En cas contrari, s'agraeixen les sol·licituds d'extracció. Alguns exemples interactuen (mitjançant HTTPS) amb un proveïdor de cadena de blocs de tercers (3PBP).

Si teniu un cas d'ús que creieu que es podria enumerar aquí, demaneu-lo !

Projectes que utilitzen BitcoinJS

Contribuint

Sempre acceptem sol·licituds d'extracció, però ens adherim a estàndards específics pel que fa a l'estil de codificació, el desenvolupament basat en proves i els missatges de confirmació.

Si us plau, feu tot el possible per complir-los quan contribuïu a estalviar en correccions trivials.

Running the test suite

1 2
npm test npm run-script coverage

Biblioteques complementàries

  • BIP21 : una biblioteca de codificació d'URL compatible amb BIP21
  • BIP38 : claus privades protegides per frase de contrasenya
  • BIP39 - Generació mnemotècnica de claus deterministes
  • BIP32-Utils : un conjunt d'utilitats per treballar amb BIP32
  • BIP66 - Descodificació estricta de signatura DER
  • BIP68 - Biblioteca de codificació relativa en temps de bloqueig
  • BIP69 - Indexació lexicogràfica d'entrades i sortides de transaccions
  • Base58 - Codificació/descodificació Base58
  • Base58 Check - Codificació/descodificació Base58
  • Bech32 : una biblioteca de codificació Bech32 compatible amb BIP173
  • coinselect : un mòdul de selecció d'entrada de transaccions que optimitza les tarifes per a bitcoinjs-lib.
  • merkle-lib - Una biblioteca conscient del rendiment per als càlculs d'arrel i arbre de merkle.
  • minimaldata : un mòdul per comprovar la política de bitcoins: SCRIPT_VERIFY_MINIMALDATA

Alternatives

LLICÈNCIA _