Fantastico modulo della community

BitcoinJS (bitcoinjs-lib)

Stato build NPM suggerimento per il prossimo commit

js-standard-style

La libreria Bitcoin JavaScript pura per node.js e browser. Si stima che sia utilizzata da oltre 15 milioni di utenti di wallet ed è la spina dorsale per quasi tutti i web wallet Bitcoin in produzione oggi.

Caratteristiche

  • Clean : JavaScript puro, codice conciso, facile da leggere.
  • Tested : copertura> 90%, test di integrazione di terze parti.
  • Careful : processo di approvazione di due persone per richieste pull piccole e mirate.
  • Compatible : funziona su Node.js e tutti i browser moderni.
  • Powerful : supporto per funzionalità avanzate, come multi-sig, portafogli HD.
  • Secure : forte generazione di numeri casuali, rilasci firmati PGP, sviluppatori affidabili.
  • Principled : nessun supporto per i browser con crap RNG (IE <11)
  • Standardized : stile di codifica della comunità dei nodi, Browserify, stdlib e buffer di Node.
  • Fast : codice ottimizzato, utilizza array tipizzati invece di array di byte per le prestazioni.
  • Experiment-friendly : supporto per Bitcoin Mainnet e Testnet.
  • Altcoin-ready : in grado di lavorare con criptovalute derivate da bitcoin (come Dogecoin).

Dovrei usarlo in produzione?

Se stai pensando di utilizzare il ramo principale di questa libreria in produzione, interrompi .Master non è stabile; è il nostro ramo di sviluppo e solo le versioni contrassegnate possono essere classificate come stabili .

Installazione

1
npm install bitcoinjs-lib

Impostare

Node.js

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

Browser

Se hai familiarità con l'utilizzo di browserify, ignoralo e procedi normalmente. Questi passaggi sono solo di consulenza e potrebbero non essere adatti alla tua applicazione.

Si presume che Browserify sia installato per questi passaggi.

Per il tuo progetto, crea un file 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 }

Ora, per compilare per il browser:

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

Ora puoi inserire <script src="app.js" /> nella tua pagina web, utilizzando foo.myFunction per creare una nuova chiave privata Bitcoin.

NOTA : se si snellisce il javascript, è necessario escludere la modifica dei seguenti nomi di variabili: BigInteger , ECPair , Point , a causa della digitazione nome-funzione-duck-typing utilizzata in typeforce .

Esempio:

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

NOTA : questa libreria tiene traccia delle funzionalità Node LTS, se hai bisogno di ES5 rigoroso, usa --transform babelify insieme al passaggio browserify (utilizzando un preset es2015 ).

NOTA : se prevedi che questa libreria venga eseguita su un dispositivo iOS 10, assicurati di utilizzare buffer@5.0.5 o versione successiva.

Typescript or VSCode users

Le dichiarazioni di tipo per Typescript sono disponibili per la versione ^3.0.0 della libreria.

1
npm install @types/bitcoinjs-lib

È ora possibile utilizzare bitcoinjs-lib come libreria conforme al dattiloscritto.

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

Per VSCode (e altri editor), si consiglia agli utenti di installare le dichiarazioni di tipo, poiché Intellisense utilizza tali informazioni per semplificare il codice (completamento automatico, analisi statica).

Segnala eventuali bug relativi al dattiloscritto al fork di @dlebrecht DefinitelyTyped , invia PR a DefinitelyTyped

Flow

Le definizioni per il controllo dei tipi di flusso sono disponibili nel repository di tipi di flusso.

È possibile scaricarli direttamente dal repository o con la CLI tipizzata dal flusso

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

Le definizioni sono complete e aggiornate con la versione 2.2.0 Le definizioni sono mantenute da @ runn1ng .

Esempi

Gli esempi seguenti sono implementati come test di integrazione, dovrebbero essere molto facili da capire. In caso contrario, le richieste pull sono apprezzate. Alcuni esempi interagiscono (tramite HTTPS) con un provider di blockchain di terze parti (3PBP).

Se hai un caso d'uso che ritieni possa essere elencato qui, chiedilo !

Progetti che utilizzano BitcoinJS

Contribuire

Accettiamo sempre richieste pull, ma aderiamo a standard specifici per quanto riguarda lo stile di codifica, lo sviluppo test driven e i messaggi di commit.

Si prega di fare del proprio meglio per aderire a questi quando si contribuisce a risparmiare su correzioni banali.

Running the test suite

1 2
npm test npm run-script coverage

Biblioteche complementari

  • BIP21 - Una libreria di codifica URL compatibile con BIP21
  • BIP38 - Chiavi private protette da passphrase
  • BIP39 -Generazione mnemonica per chiavi deterministiche
  • BIP32-Utils -Un set di utilità per lavorare con BIP32
  • BIP66 -Rigorosa decodifica della firma DER
  • BIP68 - Libreria di codifica relativa al tempo di blocco
  • BIP69 - Indicizzazione lessicografica degli input e degli output delle transazioni
  • Codifica / decodifica Base58 -Base58
  • Base58 Check -Base58 controlla codifica / decodifica
  • Bech32 - Libreria di codifica Bech32 conforme a BIP173
  • coinselect -Un modulo di selezione dell'input di transazione che ottimizza le commissioni per bitcoinjs-lib.
  • merkle-lib -Una libreria consapevole delle prestazioni per i calcoli della radice e dell'albero merkle.
  • minimaldata -Un modulo per controllare la politica bitcoin: SCRIPT_VERIFY_MINIMALDATA

Alternative

LICENZA MIT