Удивительный модуль сообщества

BitcoinJS (bitcoinjs-lib)

Статус сборки NPM совет для следующего коммита

JS-стандарт стиль

Чистая библиотека биткойнов JavaScript для node.js и браузеров. Предполагается, что ее используют более 15 миллионов пользователей кошельков, и сегодня она является основой практически всех биткойн-веб-кошельков, работающих в настоящее время.

особенности

  • Clean : чистый JavaScript, лаконичный код, легко читаемый.
  • Tested : охват> 90%, сторонние интеграционные тесты.
  • Careful : процесс одобрения двух человек для небольших, сфокусированных запросов на получение.
  • Compatible : Работает на Node.js и всех современных браузерах.
  • Powerful : поддержка расширенных функций, таких как мульти-сиг, HD-кошельки.
  • Secure : Генерация случайных чисел, подписанные релизы PGP, надежные разработчики.
  • Principled : нет поддержки браузеров с дерьмом RNG (IE <11)
  • Standardized : стиль кодирования сообщества Node, Browserify, stdlib Node и буферы.
  • Fast : оптимизированный код, использует типизированные массивы вместо байтовых массивов для производительности.
  • Experiment-friendly : поддержка Bitcoin Mainnet и Testnet.
  • Altcoin-ready : способен работать с криптовалютами, полученными из биткойнов (такими как Dogecoin).

Должен ли я использовать это в производстве?

Если вы думаете об использовании основной ветки этой библиотеки в рабочей среде, остановитесь . Мастер не стабилен, это наша ветка разработки, и только помеченные выпуски могут быть классифицированы как стабильные .

Установка

1
npm install bitcoinjs-lib

Настроить

Node.js

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

Browser

Если вы знакомы с тем, как использовать browserify, игнорируйте это и действуйте в обычном режиме. Эти шаги носят рекомендательный характер и могут не подходить для вашего приложения.

Предполагается, что Browserify установлен для этих шагов.

Для вашего проекта создайте файл 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 }

Теперь, чтобы скомпилировать для браузера:

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

Теперь вы можете разместить <script src="app.js" /> на своей веб-странице, используя foo.myFunction для создания нового закрытого ключа Биткойна.

Примечание: Если вы уродовать в JavaScript, необходимо исключить следующие имена переменных из того искажаются: BigInteger , ECPair , Point . Это происходит из - за функции-имя-утка-типирования , используемого в typeforce .

Пример:

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

ПРИМЕЧАНИЕ . Эта библиотека отслеживает функции Node LTS, если вам нужен строгий ES5, используйте --transform babelify в сочетании с вашим шагом browserify (с использованием предустановки es2015 ).

ПРИМЕЧАНИЕ . Если вы ожидаете, что эта библиотека будет работать на устройстве iOS 10, убедитесь, что вы используете buffer@5.0.5 или выше.

Typescript or VSCode users

Объявления типов для Typescript доступны для версии ^3.0.0 библиотеки.

1
npm install @types/bitcoinjs-lib

Теперь вы можете использовать bitcoinjs-lib в качестве библиотеки, совместимой с машинописью.

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

Для VSCode (и других редакторов) пользователям рекомендуется устанавливать объявления типов, поскольку Intellisense использует эту информацию для помощи в кодировании (автозаполнение, статический анализ).

Сообщайте о любых ошибках, связанных с машинописным шрифтом, на @dlebrecht в разделе DefiniteTyped , отправляйте PR в DefiniteTyped

Flow

Определения для проверки типов потока доступны в репозитории с типом потока.

Вы можете загрузить их непосредственно из репозитория или с помощью CLI с типом потока

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

Определения полны и обновлены до версии 2.2.0. Определения поддерживаются @ runn1ng .

Примеры

Приведенные ниже примеры реализованы как интеграционные тесты, они должны быть очень просты для понимания, в противном случае, запросы на получение запросов приветствуются. Некоторые примеры взаимодействуют (через HTTPS) со сторонним провайдером цепочки блоков (3PBP).

Если у вас есть сценарий использования, который, по вашему мнению, может быть указан здесь, пожалуйста, попросите его !

Проекты, использующие BitcoinJS

Содействие

Мы всегда принимаем запросы на извлечение, но мы придерживаемся определенных стандартов в отношении стиля кодирования, разработки, управляемой тестированием, и сообщений о фиксации.

Пожалуйста, приложите все усилия, чтобы придерживаться их при внесении вклада, чтобы сэкономить на тривиальных исправлениях.

Running the test suite

1 2
npm test npm run-script coverage

Дополняющие библиотеки

  • BIP21- BIP21-совместимая библиотека кодирования URL
  • BIP38- Персональные ключи с парольной защитой
  • BIP39 -Мемоническая генерация для детерминированных ключей
  • BIP32-Utils - набор утилит для работы с BIP32
  • BIP66 - Строгое декодирование подписи DER
  • BIP68 - библиотека кодирования относительной блокировки
  • BIP69 -Лексикографическая индексация входов и выходов транзакций
  • Base58 -Base58 кодирование / декодирование
  • Base58 Check -Base58 проверить кодирование / декодирование
  • Bech32 - библиотека кодирования Bech32, совместимая с BIP173
  • coinselect -Оптимизирующий плату модуль выбора ввода транзакций для bitcoinjs-lib.
  • merkle-lib -Безопасная библиотека для вычисления корней и деревьев merkle.
  • minimaldata -Модуль для проверки политики биткойнов: SCRIPT_VERIFY_MINIMALDATA

альтернативы

ЛИЦЕНЗИЯ MIT