Хорошо, может быть, это немного рано, чтобы подтолкнуть к GitHub, но я сделал это в любом случае, потому что мне очень нравится то, что я сделал, и я хочу показать это людям. Я должен был создать «экспериментальную» ветвь, но я совершенно забыл, и я не мастер ублюдка достаточно, чтобы восстановить процесс. Так что до сих пор в основной ветке.
Я вернулся к истокам, избавившись от ненужных вещей (например, шифрование и мастер-ключей) и сосредоточиться на работе эффективно с ключами и адресами.
Теперь вам не придется «использовать Bitcoin :: Key» или «использовать Bitcoin :: Адрес», просто:
использовать Bitcoin;
Вам не нужно явно вызвать конструктор, либо. Я перегружена интерпретация константы с прагмой перегрузки и его функцией перегрузки :: констант. Так что теперь, когда вы набираете строку litteral, которая выглядит как адрес Bitcoin или ключ Bitcoin в WIF, чеки PERL и посмотреть, что это exacly (при проверке контрольной суммы, конечно).
Это позволяет написать что-то вроде:
сказать "5KFtidLNEgFicv1QWGjMUECprKEQdLEqDGA7V5F8PJDZxaazRG7"->адрес;
Perl будет волшебно признать это Bitcoin ключ поэтому он будет создавать соответствующий объект перед вызовом его метода адреса. Это должно нормально печатать "1NZunrMgUVoe7H46GZW3x1NUxGPSyJUCSL",
Кроме того, в настоящее время
Bitcoin :: Ключ унаследован от
Math :: BigInt, так что вы можете прозрачно сделать арифметику на них, и вы получите полученный ключ. Это может быть полезно для определения главного ключа или для Диффи-Хеллмана, как схемы:
сказать "5KFtidLNEgFicv1QWGjMUECprKEQdLEqDGA7V5F8PJDZxaazRG7" * 2;
Одна вещь, которую еще нужно сделать, это имея эту арифметику быть модульным, но оно не должно быть слишком трудно.
Случайная генерация нового ключа осуществляется с помощью специального конструктора под названием «случайных»:
сказать случайный Bitcoin :: Ключ;
Это на самом деле конструктор
EC :: АСС :: PrivateKey, от кого
Bitcoin :: Ключ наследует тоже (да, я сделал множественное наследование). Я думаю, что это имеет смысл, так как ключ Bitcoin является как Base58 кодированные данные и ECDSA PrivateKey.
Кроме того, я решил использовать переменные среды для настройки поведения библиотеки. Например, если вы хотите работать с тестовой сети, просто определить BITCOIN_TEST ENV вар (вы можете положить что-нибудь в нем, это не имеет значения):
$ Экспорт BITCOIN_TEST = да
$ Perl -Мы «использовать Bitcoin; [Ваш код здесь ...]
или
$ BITCOIN_TEST = Perl -Мы 'использовать Bitcoin;'
Более придет.