2014-12-04 3 views
2

У меня есть приложение, в котором я создаю кошелек HD с кодовой фразой и сохраняю общедоступный главный ключ в базе данных для пользователя.Соответствие KeyPath в приложении с Wallet32 Keypath для кошельков Bip44

Затем я хочу, чтобы пользователь мог создать резервную копию кошелька в свой кошелек, в этом случае я использую Wallet32. Восстановить учетную запись в Wallet32, который использует ключ путь м/44 «/ 0»/0'/

На моей стороне приложения, я создаю ключевой ресурс, как так (в C#):

KeyPath newKeyPath = new KeyPath("44/0/0/0/0" + nextDerivation); 
var childKey = pubkey.Derive(newKeyPath); 

Следующая переменнаяDerivsation просто увеличивается с каждой покупкой. Когда производный открытый ключ создается со стороны приложения, он не совпадает с производным открытым ключом в wallet32. Итак, если платеж производится через приложение, Wallet32 не подбирает его.

Я использую библиотеку C# NBitcoin. Когда я пытаюсь добавить апостроф в строке так, как ключевого ресурса:

KeyPath newKeyPath = new KeyPath("44'/0'/0'/0/0" + nextDerivation); 
var childKey = pubkey.Derive(newKeyPath); 

Тогда я получаю ошибку «неверный формат ввода». Я не уверен, нужны ли эти апострофы или нет, но когда я ввожу тот же путь деривации в генератор Bip32, я могу создать те же открытые ключи. Я могу отправить платеж на производный адрес, и wallet32 подбирает его.

Может ли кто-нибудь указать мне в правильном направлении на то, что мне нужно использовать для KeyPath в библиотеке NBitcoin, чтобы получить те же результаты?

ответ

0

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

Я думаю, что 44' означает, что Wallet32 использует „закаленный ключ“ 44, в отличие от только 44, что означает, что вы используете не затвердевший ключ 44 (подробнее в BIP32)

Я не знаю, из таких обозначений я могу поддержать его в NBitcoin, так как я думаю, что это полезно, но мне нужны некоторые тестовые данные, вы бы мне сгенерировали?

Прямо сейчас, если вы хотите, чтобы это сработало, считайте ключ 44 'равным (44u | (1u < < 31)) Другими словами, 44 с первым битом 1, чтобы сказать, что он затвердел.

я могу исследовать, что более глубоко и реализовать это право в NBitcoin если вы можете дать мне пример (Root HD Key + путь + Child HD Key)

[UPDATE]

Реализован в 1.0. 7.10 at (https://github.com/NicolasDorier/NBitcoin/commit/ce5b70d6d27d7fc2cedd089bfd1133a6cd490c97)

Ваш код должен работать так, как есть, запустить Update-Package NBitcoin ваше решение, спасибо, что указали это.

+0

Я право не читать: https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki Реализация этого, вы просто должны сделать Update-пакет, чтобы сделать оно работает –

Смежные вопросы