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

BitcoinJS (bitcoinjs-lib)

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

js-стандартный стиль

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

Функции

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

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

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

Монтаж

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это из-за IS-имя-функции Используется в Duck-типирования. Typeforce .

Пример:

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

ПРИМЕЧАНИЕ . Эта библиотека отслеживает функции узла 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 ОпределенноТипед , отправляйте PR в ОпределенноТипед

Flow

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

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

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 -A Библиотека кодирования URL, совместимая с BIP21
  • BIP38 - закрытые ключи, защищенные паролем
  • BIP39 - Генерация мнемоники для детерминированных ключей
  • BIP32-Utils - Набор утилит для работы с BIP32
  • BIP66 -Строгая расшифровка подписи DER
  • BIP68 - библиотека относительного кодирования времени блокировки
  • BIP69 - Лексикографическое индексирование входов и выходов транзакций
  • Кодирование / декодирование Base58 -Base58
  • Base58 Check -Base58 проверить кодировку / декодирование
  • Bech32 -A BIP173 совместимая библиотека кодирования Bech32
  • coinselect - оптимизирующий комиссию модуль выбора ввода транзакции для bitcoinjs-lib.
  • merkle-lib - библиотека, ориентированная на производительность, для вычислений корня и дерева Меркла.
  • Minimaldata -Модуль для проверки биткойн-политики: SCRIPT_VERIFY_MINIMALDATA

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

ЛИЦЕНЗИЯ MIT