Генерация адреса и секретного ключа с помощью Bitcoinj (бумажный кошелек)

Можно сгенерировать допустимую пару ключей биткойнов со следующим кодом, использующим основную ветку биткойн:

import org.bitcoinj.core.Address;
import org.bitcoinj.core.DumpedPrivateKey;
import org.bitcoinj.core.ECKey;
import org.bitcoinj.core.NetworkParameters;

public class GeneratePrivateKeyBulk {

    public static void main(String[] args) {
        ECKey key = new ECKey();
        Address pubAddress = new Address(NetworkParameters.prodNet(), key.getPubKeyHash());
        DumpedPrivateKey privKey = key.getPrivateKeyEncoded(NetworkParameters.prodNet());
        System.out.println("Public address: " + pubAddress.toBase58() + "; Private key: " + privKey.toBase58());
    }
}

Это создает пригодный для использования открытый кодированный base58 открытый адрес и закрытый ключ, например, как1ERzRYYdbibaQt2kuNfgH8spuoqQxYkwQb,L3AuZ2vNt11ac2xSi6AYwzXyftqSVPcSuHNdTsSuRfknXvoRtWzFсоответственно.

Вопрос в том, как выполнить ту же операцию, чтобы получитьпару ключей Segwit?

Я посмотрел на документы bitcoinj, но не смог найти API для генерации адресов непосредственно как segwit.

Посмотрев на тесты и запрос на извлечение segwit, я обнаружил, что следующий код (добавленный к приведенному выше коду) будет генерировать адрес segwit (т. Е. Тот, который начинается с3например,31uLnxKteEYa2u1vgWyVPkTpVfUGduCV82)

Script script = ScriptBuilder.createP2SHOutputScript(1, Collections.singletonList(key));
Address segwitAddress = Address.fromP2SHScript(NetworkParameters.prodNet(), script);
System.out.println("Segwit address: " + segwitAddress.toBase58());

Насколько я понимаю, приведенный выше код должен использоваться в многозадачном сценарии, поэтому я не уверен, является ли это правильным способом получения адреса segwit из одного закрытого ключа. Это правильный / надежный / безопасный код для создания бумажного сегвит-кошелька?

Кроме того, есть ли способ добавить защиту паролем BIP38 к закрытому ключу с помощью bitcoinj? КлассBIP38PrivateKey есть только методы для расшифровки ключа BIP38 из существующего представления base58, но нет методов для шифрования пароля BIP38.

0 ответов

Другие вопросы по тегам