Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
12 июня 2015, 12:49:09 PM   # 1
 
 
Сообщения: 157
Цитировать по имени
цитировать ответ
по умолчанию Re: [HOWTO] Иерархическая детерминированным кошелек

Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome"
Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE
Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e
подробнее...


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
всем привет BTCпарни  

В основе игры сети, я разрабатываю, есть возможность купить некоторые вещи, с точками, как система, она работает, но я перенесет всю денежную систему в Bitcoin за много преимуществ, которые вы уже знаете и даже не стоит комментировать.

В первом эскизе идеи я просто придумать с этим:
1) Каждый новый пользователь получает свой новый открытый ключ случайного частного +.
2) Каждый новый пункт получает свой новый открытый ключ случайного частного +.
3) Если система обнаруживает, что пункт X«S адрес получает плату от пользователь X«S адрес, деталь принадлежит пользователь X.

Это PURE Bitcoin и она работает, но:
Новые элементы добавляются все время, так что весь процесс создания адреса нового пункта должен выполняться на сервере делает это уязвимым для сервера хака.
Я пришел с идеей иметь кошелек UNIQUE OFFLINE COLD STORAGE за всю игру, но потом, и это главный вопрос: Как я узнаю, какой элемент сделал пользователь купить? Могу ли я использовать меньше смысловой цифры выходного значения для хранения идентификатора? Там есть способ хранения произвольных данных на выходе сценарии?

EDIT: Нашел !, используя HD Портмоне Но как закодировать его в Java?
Делек сейчас офлайн Пожаловаться на Дельки   Ответить с цитированием Мультицитирование сообщения от Делек Быстрый ответ на сообщение Делек


Как заработать Биткоины?
Без вложений. Не майнинг.


15 июня 2015, 1:25:42 PM   # 2
 
 
Сообщения: 412
Цитировать по имени
цитировать ответ
по умолчанию Re: [HOWTO] Иерархическая детерминированным кошелек

Получил 1806 Биткоинов
Реальная история.





Может быть, цветные монеты являются чем-то вы можете быть заинтересованы в Вы можете смешать цветные монеты по адресу, если вы будете следовать независимо от правил есть -. Таким образом, пользователь с помощью одного секретного ключа может содержать несколько активов.

Цветные монеты не намного больше, чем отслеживание ребенка сделок одного, где сообщаемой «цвет». Таким образом, пользователь собирает цветные монеты аналогично собирать предметы.
fbueller сейчас офлайн Пожаловаться на fbueller   Ответить с цитированием Мультицитирование сообщения от fbueller Быстрый ответ на сообщение fbueller

16 июня 2015, 2:45:12 PM   # 3
 
 
Сообщения: 157
Цитировать по имени
цитировать ответ
по умолчанию Re: [HOWTO] Иерархическая детерминированным кошелек

Я буду использовать Bitcoin, спасибо за информацию в любом случае. 
Делек сейчас офлайн Пожаловаться на Дельки   Ответить с цитированием Мультицитирование сообщения от Делек Быстрый ответ на сообщение Делек

16 июня 2015, 4:18:08 PM   # 4
 
 
Сообщения: 2002
Цитировать по имени
цитировать ответ
по умолчанию Re: [HOWTO] Иерархическая детерминированным кошелек

Я буду использовать Bitcoin, спасибо за информацию в любом случае. 

Цветные монеты Bitcoins.

Это просто способ идентификации конкретного вывода Bitcoin.
DannyHamilton сейчас офлайн Пожаловаться на DannyHamilton   Ответить с цитированием Мультицитирование сообщения от DannyHamilton Быстрый ответ на сообщение DannyHamilton

16 июня 2015, 4:36:58 PM   # 5
 
 
Сообщения: 157
Цитировать по имени
цитировать ответ
по умолчанию Re: [HOWTO] Иерархическая детерминированным кошелек

Я думал, в стандартной схеме Bitcoin, но это цветные монеты включены в некоторых Java библиотеке? Как я могу достичь такой же Ид вещи с bitcoinj?
Делек сейчас офлайн Пожаловаться на Дельки   Ответить с цитированием Мультицитирование сообщения от Делек Быстрый ответ на сообщение Делек

16 июня 2015, 4:41:20 PM   # 6
 
 
Сообщения: 1176
Цитировать по имени
цитировать ответ
по умолчанию Re: [HOWTO] Иерархическая детерминированным кошелек

Вы можете использовать смотреть бумажник на живом сервере, и держать монеты в холодильниках. В основном смотреть бумажник имеет только открытые ключи, так что даже если сервер взломан, то Bitcoin еще безопасно. С наблюдающим бумажником, вы можете просто отслеживать адреса и посмотреть, какие операции делаются.
lemipawa сейчас офлайн Пожаловаться на lemipawa   Ответить с цитированием Мультицитирование сообщения от lemipawa Быстрый ответ на сообщение lemipawa

16 июня 2015, 4:51:39 PM   # 7
 
 
Сообщения: 157
Цитировать по имени
цитировать ответ
по умолчанию Re: [HOWTO] Иерархическая детерминированным кошелек

Спасибо за часы только кончик, lemipawa, но, как я уже говорил ранее, элементы генерируются все время на лету: создание адреса, даже "смотреть только", Является задачей сервера и этого следует избегать.
Сценарий только один адрес для игры и Лота адресов для игроков, например:

1GAMExuq835482hv9823yq8q21aaz
1PLAYER1xuq835482hv9823yq8q21aaz
1PLAYER2xuq835482hv9823yq8q21aaz
1PLAYER3xuq835482hv9823yq8q21aaz
1PLAYER4xuq835482hv9823yq8q21aaz
1PLAYER5xuq835482hv9823yq8q21aaz
1PLAYER6xuq835482hv9823yq8q21aaz

Сделка
1PLAYER1xuq835482hv9823yq8q21aaz покупает товар [ID] для 0.001btc -> 1GAMExuq835482hv9823yq8q21aaz

Вопрос в том, где я могу хранить [ID] в пути, который будет прозрачным для Bitcoin сети, но полезно для меня?  
Делек сейчас офлайн Пожаловаться на Дельки   Ответить с цитированием Мультицитирование сообщения от Делек Быстрый ответ на сообщение Делек

23 июня 2015, 12:53:19 PM   # 8
 
 
Сообщения: 157
Цитировать по имени
цитировать ответ
по умолчанию Re: [HOWTO] Иерархическая детерминированным кошелек

Хорошо, так что я, наконец, нашел то, что должно работать.

Используя детерминированное поколение открытых ключей от фиксированного секретного ключа с помощью открытого ключа Master I может порождать много новых адреса без ущерба для секретного ключа мастера.
Эта теория была реализована в Электрум бумажнике (иерархическая детерминированным кошелек).
Теперь мне нужно только для создания нового общественного АДРЕСА от ведущего открытого ключа в Java. Можно ли с BitcoinJ для создания иерархических детерминированных кошельков? Где теория / информация о мастер открытых ключах? Спасибо, парни.
Делек сейчас офлайн Пожаловаться на Дельки   Ответить с цитированием Мультицитирование сообщения от Делек Быстрый ответ на сообщение Делек

24 июня 2015, 12:22:15 AM   # 9
 
 
Сообщения: 896
Цитировать по имени
цитировать ответ
по умолчанию Re: [HOWTO] Иерархическая детерминированным кошелек

Хорошо, так что я, наконец, нашел то, что должно работать.

Используя детерминированное поколение открытых ключей от фиксированного секретного ключа с помощью открытого ключа Master I может порождать много новых адреса без ущерба для секретного ключа мастера.
Эта теория была реализована в Электрум бумажнике (иерархическая детерминированным кошелек).
Теперь мне нужно только для создания нового общественного АДРЕСА от ведущего открытого ключа в Java. Можно ли с BitcoinJ для создания иерархических детерминированных кошельков? Где теория / информация о мастер открытых ключах? Спасибо, парни.

Да, это возможно ... BitcoinJ использует иерархические Детерминированные кошельки (см https://bitcoinj.github.io/working-with-the-wallet#seeds-and-mnemonic-codes).

У меня может быть некоторый код прокладки вокруг, но мне нужно, чтобы найти его. Это, безусловно, возможно.
coinpr0n сейчас офлайн Пожаловаться на coinpr0n   Ответить с цитированием Мультицитирование сообщения от coinpr0n Быстрый ответ на сообщение coinpr0n

24 июня 2015, 4:32:45 PM   # 10
 
 
Сообщения: 157
Цитировать по имени
цитировать ответ
по умолчанию Re: [HOWTO] Иерархическая детерминированным кошелек

Благодаря coinpr0n, я закодированы это ГНФАР:

Код:
государственной статической силы основных (String [] арг) бросает исключение {
байт [] RANDOMBYTES = новый байт [32];
новый SecureRandom () nextBytes (RANDOMBYTES).

DeterministicKey ключ1 = HDKeyDerivation.createMasterPrivateKey (RANDOMBYTES) .derive (1);
Строка serialized_xpub = key1.serializePubB58 ();
Строка serialized_xpriv = key1.serializePrivB58 ();

System.out.println ("Детерминированное дерево:");
System.out.println ("---- xpub: "+ Serialized_xpub);
для (целое х = 0; х<3; х ++) {
для (целое г = 0; г<3; г ++) {
Строка адреса = getAddressFromXCoord (serialized_xpub, X, Z, ложь);
Строка собств = getAddressFromXCoord (serialized_xpriv, X, Z, правда);
System.out.println ("------- получены оповещения от точек "+ Х +","+ Г +": "+ Адрес +"/"+ Собств);
}
}
System.out.println ("---- xpriv: "+ Serialized_xpriv);
}

Код:
статические getAddressFromCoords Строки (String serialized_x, Int х, Int Z, булевы собства) {
NetworkParameters PARAMS = MainNetParams.get ();
DeterministicKey root_xpub = DeterministicKey.deserializeB58 (нуль, serialized_x);
ИНТ x_positive = х>0 х: х * -1, z_positive = г>? 0 г: г * -1;

ключ DeterministicKey = HDKeyDerivation.deriveChildKey (root_xpub, новый ChildNumber (x_positive, ложь));
ключ = HDKeyDerivation.deriveChildKey (ключ, новый ChildNumber (z_positive, ложь));

если (х<0)
ключ = HDKeyDerivation.deriveChildKey (ключ, новый ChildNumber (x_positive, ложь));

если (г<0)
ключ = HDKeyDerivation.deriveChildKey (ключ, новый ChildNumber (z_positive, ложь));

если (собств) возвращают key.getPrivateKeyEncoded (Params) .ToString ();
иначе вернуть key.toAddress (Params) .ToString ();
}

И это выводит, например:
Код:
Детерминированное дерево:
---- xpub: xpub68yoVWPimjBPNSD9Lp4SzfPbhCVkZpYTxsSJkt1zqt2skkbd9NpR4Q6DFPbtgmnLnkZsbjKnqKuLNTRb3skiBToc6gDAHxyFake78sRwDeG
------- полученный громкая от точек 0,0 общественности: 12P4who4aXh3g4CX82Np7qkWcQRMtPU142 / частные: L3KBFty38whmgDrTPP2r93dK3gtQ6YNokQgYy17QiWp84eK6E6nc
------- полученный громкая от точек 0,1 общественности: 1LKMC8SHBtcj7bMkwU1rYorGfCYHeocrPC / частный: L5cVafedoXX6cWaeL9oCZRUhhPxHo2JTeZ9ovLaQm2vssuH7FQrH
------- полученный громкий от точек 0,2 общественности: 1Pbn6GW5LNtZVD8Le1ReGSz2QgvDE7e3bc / частный: KxUe45V9eC3T6oKG4cUfrnThvqW8hwWqHaWYtqjM1sMQMnxVcVA4
------- полученный громкая от точек 1,0 общественности: 1H4stLytbwDbmbMAm8FJjs2FEAsHAs7gBu / частный: KzkMyHgPLqHNTNidCpwZ8bESKjNvYGYDCdsS59MU4gi65iuaPtUx
------- полученный громкая из точек 1,1 общественности: 1LbuqXtbYAhJgZhvCmB78doft4BW3FKms4 / частные: Kx2YbnfM6To2DwpXkZfjwLVvmphbeK46DJFCvdmFWpoktzDjAvqw
------- полученные громкие из точек 1,2 общественности: 1AhADvSzuZLvWcHUZH4uQGx1XvkDExUWbT / частный: L3eWaZWynXRuXpRzzQgaCC8EpBzXBh76hSnX1LJArGvtP3USaM9C
------- получен общедоступный адрес из точек 2,0 общественности: 16deviewo45m65RqD2FxXTbnmtzUbNTBq / частные: KwbxyS65itURqC5aLmkphtZhV3caq2G4QpRbHRTxpcrFbdW3covr
------- полученный громкий от точек общественного 2,1: 1FpG3QmDM5FAfyUvLSP5mBsuaPHJcKPwQ / частный: KxApcJ2jmvVkf3FBPH5VspFMYTgBdeXHTyo9NxNbyrFon9eZKogo
------- полученный громкая от точек 2,2 общественности: 1JhTUw5W6HcTAhAqfJik7x9ECznm76m8KY / частный: L5826yjT7s6eU9Sk9PEX9ASpB8BFo2fLzAgnjWUXFQWJgdQ8Fiey
---- xpriv: xprv9uzT5zrpwMd69x8gEnXSdXSs9AfGAMpcbeWhxVcPHYVtsxGUbqWAWbmjQ9JvAeLLFVFJXtoJWy8WrMS1Ffg2cvacdXoVuLjmGsjiidJK7Uo

Теперь у меня есть некоторые вопросы:

1) Это нормально только, чтобы просто запустить MasterPrivateKey из 32 байтов в SecureRandom?
2) После создания MasterPrivateKey Звоню .derive (1). Что причина не используя .derive (0)?
3) После получения xpub, проверьте, как мне удалось закодировать "самолет" адресов (функция getAddressFromCoords). Это он прекрасно, чтобы сделать еще одного ребенка из ребенка, если координата отрицательна?
4) В то время как список открытых ключей, полученных из открытого ключа мастера растет шансы обнаружить секретный ключ также растет ?, я имею в виду, я могу генерировать бесконечные публичные адреса с xpub без EVER скомпрометировать закрытый ключ?
6) Если мне нужно получить секретный ключ некоторых из этих публичного адреса генерируется, как это может быть сделано? Использование xpriv с функцией как HDKeyDerivation.deriveChildPrivateKey (root_xpub, новый ChildNumber (x_positive, ложь), xpriv) ??(Забудьте об этом, я уже понял, это один на мой собственный)
Делек сейчас офлайн Пожаловаться на Дельки   Ответить с цитированием Мультицитирование сообщения от Делек Быстрый ответ на сообщение Делек

26 июня 2015, 12:47:46 PM   # 11
 
 
Сообщения: 157
Цитировать по имени
цитировать ответ
по умолчанию Re: [HOWTO] Иерархическая детерминированным кошелек

Никто? 
Делек сейчас офлайн Пожаловаться на Дельки   Ответить с цитированием Мультицитирование сообщения от Делек Быстрый ответ на сообщение Делек

26 июня 2015, 1:42:31 PM   # 12
 
 
Сообщения: 2002
Цитировать по имени
цитировать ответ
по умолчанию Re: [HOWTO] Иерархическая детерминированным кошелек

1) Это нормально только, чтобы просто запустить MasterPrivateKey из 32 байтов в SecureRandom?

До тех пор, как вы уверены, что ваша SecureRandom не нарушена или сломана, конечно. Почему это не будет?

4) В то время как список открытых ключей, полученных из открытого ключа мастера растет шансы обнаружить секретный ключ также растет ?,

Нет, ни в коем реалистично.

Я имею в виду, я могу генерировать бесконечные публичные адреса

Я сомневаюсь, что у вас есть время или достаточно энергии, чтобы генерировать бесконечный публичные адреса. Количество адресов, которые у вас есть время и энергия не является значительным по сравнению с общим пространством ключей.

с xpub без EVER скомпрометировать закрытый ключ?

До тех пор, как мастер-ключ был сгенерирован случайным образом, вы не будете иметь достаточно времени, чтобы реально столкнуться столкновение.
DannyHamilton сейчас офлайн Пожаловаться на DannyHamilton   Ответить с цитированием Мультицитирование сообщения от DannyHamilton Быстрый ответ на сообщение DannyHamilton

26 июня 2015, 7:54:54 PM   # 13
 
 
Сообщения: 157
Цитировать по имени
цитировать ответ
по умолчанию Re: [HOWTO] Иерархическая детерминированным кошелек

Спасибо за ваше время, Дэнни.  


У меня есть эти два нерешенных вопросов:

Цитата: Делек
2) После создания MasterPrivateKey Звоню .derive (1). Что причина не используя .derive (0)?
Для завершения информации: Если удалить .derive (1) и добавить xpub здесь: http://webhdwallet.github.io/
Она показывает следующую легенду:
"Нестандартная глубина ключа: должна быть 1, и это 0, вы уверены, что вы хотите использовать это?"

Там причина безопасности за не использовать глубину! = 1? Может быть, это только "стандарт"?

Цитата: Делек
3) После получения xpub, проверьте, как мне удалось закодировать "самолет" адресов (функция getAddressFromCoords). Это он прекрасно, чтобы сделать еще одного ребенка из ребенка, если координата отрицательна?
Для игры, что я делаю, мне нужен самолет свежих новых адресов для каждого х, значения г; отрицательные координаты являются приемлемыми тоже.

И потому, что я не могу иметь негативные ChildNumber, я в конечном итоге этот трюк, чтобы вновь сделать ребенок с положительным значением снова, если число отрицательное.

котировка
статические getAddressFromCoords Строки (String serialized_x, Int х, Int Z, булевы собства) {
      NetworkParameters PARAMS = MainNetParams.get ();
      DeterministicKey root_xpub = DeterministicKey.deserializeB58 (нуль, serialized_x);
      ИНТ x_positive = х>0 х: х * -1, z_positive = г>? 0 г: г * -1;
      
      ключ DeterministicKey = HDKeyDerivation.deriveChildKey (root_xpub, новый ChildNumber (x_positive, ложный));
      ключ = HDKeyDerivation.deriveChildKey (ключ, новый ChildNumber (z_positive, ложный));


      если (х<0)
         ключ = HDKeyDerivation.deriveChildKey (ключ, новый ChildNumber (x_positive, ложный));

      
      если (г<0)
         ключ = HDKeyDerivation.deriveChildKey (ключ, новый ChildNumber (z_positive, ложный));

      
      если (собств) возвращают key.getPrivateKeyEncoded (Params) .ToString ();
      иначе вернуть key.toAddress (Params) .ToString ();
}

Я в конечном итоге с дерева, как это:

                                             / -------------
                                            / -Z
                                 / ------- / -------
                                /-ИКС /
                    / -------- / ------- / ----
                   / Z
         / ------ / -----------
xpub / X
------/


РЕДАКТИРОВАТЬ:
Таким образом, я нашел ошибку в моей функции getAddressFromCoords ():
------- получен общедоступный адрес из точек -1,1 общественности: 1LUCtto3T8e4jdUHmZK7ThU6X6pGQ4czKE / частные: KxugeoYxhzBnbAbxdL7unXv1LskqbAccwHhEjh1KMykrT19RcTEj
------- полученный публичный адрес из пунктов 1, -1 общественности: 1LUCtto3T8e4jdUHmZK7ThU6X6pGQ4czKE / частный: KxugeoYxhzBnbAbxdL7unXv1LskqbAccwHhEjh1KMykrT19RcTEj

-1,1 и 1, -1 возвращает тот же адрес. Блядь.
Делек сейчас офлайн Пожаловаться на Дельки   Ответить с цитированием Мультицитирование сообщения от Делек Быстрый ответ на сообщение Делек

30 июня 2015, 7:21:24 PM   # 14
 
 
Сообщения: 157
Цитировать по имени
цитировать ответ
по умолчанию Re: [HOWTO] Иерархическая детерминированным кошелек

Хорошо это окончательный один я думаю:
котировка
Статическая строка getAddressFromXCoord (String xpub, INT х, INT г, булевы собства) {
      NetworkParameters PARAMS = MainNetParams.get ();
      DeterministicKey root_xpub = DeterministicKey.deserializeB58 (нуль,xpub);
      ИНТ x_positive = х>0 х: х * -1, z_positive = г>? 0 г: г * -1;

      ключ DeterministicKey = HDKeyDerivation.deriveChildKey (root_xpub, новый ChildNumber (x_positive, ложь));
      ключ = HDKeyDerivation.deriveChildKey (ключ, новый ChildNumber (z_positive, ложь));

      если (х<Ключ 0) = HDKeyDerivation.deriveChildKey (ключ, новый ChildNumber (x_positive, ложь));

      если (г<0) {
         ключ = HDKeyDerivation.deriveChildKey (ключ, новый ChildNumber (z_positive, ложь));
         ключ = HDKeyDerivation.deriveChildKey (ключ, новый ChildNumber (z_positive, ложь));
      }

      вернуть key.toAddress (Params) .ToString ();
}

Мне нужно знать, если это техник (для каждого х и г) является надежным, безопасным и повторным использованием с тем же xpub на сервере.
Делек сейчас офлайн Пожаловаться на Дельки   Ответить с цитированием Мультицитирование сообщения от Делек Быстрый ответ на сообщение Делек



Как заработать Биткоины?

Bitcoin Wallet * Portefeuille Bitcoin * Monedero Bitcoin * Carteira Bitcoin * Portafoglio Bitcoin * Bitcoin Cüzdan * 比特币钱包

bitcoin-zarabotat.ru
Почта для связи: bitcoin-zarabotat.ru@yandex.ru

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW