У меня есть приложение, в котором я создаю HD-кошелек с парольной фразой и сохраняю открытый мастер-ключ в базе данных для пользователя.
Затем я хочу, чтобы пользователь мог создать резервную копию кошелька в своем собственном кошельке, в этом случае я использую Wallet32. Я восстанавливаю учетную запись в Wallet32, которая использует путь ключа m/44'/0'/0'/
На стороне моего приложения я создаю путь к ключу так (в С#):
KeyPath newKeyPath = new KeyPath("44/0/0/0/0" + nextDerivation);
var childKey = pubkey.Derive(newKeyPath);
Переменная nextDerivsation просто увеличивается с каждой покупкой. Когда производный открытый ключ создается на стороне приложения, он не совпадает с производным открытым ключом в wallet32. Так вот, если оплата производится через приложение, Wallet32 ее не забирает.
Я использую библиотеку С# NBitcoin. Когда я пытаюсь добавить апострофы в строку keyPath следующим образом:
KeyPath newKeyPath = new KeyPath("44'/0'/0'/0/0" + nextDerivation);
var childKey = pubkey.Derive(newKeyPath);
Затем я получаю сообщение об ошибке «неверный формат ввода». Я не уверен, нужны ли эти апострофы или нет, но когда я ввожу тот же путь вывода в генератор Bip32, я могу создать те же открытые ключи. Я могу отправить платеж на полученный адрес, и wallet32 заберет его.
Может ли кто-нибудь указать мне правильное направление, что мне нужно использовать для KeyPath в библиотеке NBitcoin, чтобы получить те же результаты?
Ответ на stackoverflow
Краткий ответ: теперь реализовано обозначение «44'/0'», просто обновите свой пакет NBitcoin.