|
![]() |
# 1 |
Сообщения: 352
цитировать ответ |
![]()
Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome" Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e подробнее... Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru может кто-то указать мне сайт, который объясняет, шаг за шагом, как подписать сделку
|
![]() ![]() |
![]() ![]() ![]() |
![]() |
# 2 |
Сообщения: 1260
цитировать ответ |
![]()
Получил 1806 Биткоинов
Реальная история. может кто-то указать мне сайт, который объясняет, шаг за шагом, как подписать сделку Нужна ли вы подписание с RPC вызовов? Или подписать сам ECDSA?http://bitcoin.stackexchange.com/questions/3374 http://bitcoin.stackexchange.com/questions/32628 |
![]() ![]() |
![]() ![]() ![]() |
![]() |
# 3 |
Сообщения: 756
цитировать ответ |
![]() может кто-то указать мне сайт, который объясняет, шаг за шагом, как подписать сделку Это очень просто на blockchain.info бумажнике. |
![]() ![]() |
![]() ![]() ![]() |
![]() |
# 4 |
Сообщения: 352
цитировать ответ |
![]() Нужна ли вы подписание с RPC вызовов? Или подписать сам ECDSA? Благодарю.http://bitcoin.stackexchange.com/questions/3374 http://bitcoin.stackexchange.com/questions/32628 Im разработчик ... |
![]() ![]() |
![]() ![]() ![]() |
![]() |
# 5 |
Сообщения: 478
цитировать ответ |
![]() Нужна ли вы подписание с RPC вызовов? Или подписать сам ECDSA? Благодарю.http://bitcoin.stackexchange.com/questions/3374 http://bitcoin.stackexchange.com/questions/32628 Im разработчик ... Я настоятельно рекомендую против написания собственных крипто ... Какой язык вы пытаетесь закодировать в? |
![]() ![]() |
![]() ![]() ![]() |
![]() |
# 6 |
Сообщения: 412
цитировать ответ |
![]() Ваш код должен будет касаться многих вещей .. Deserialize сделки, правильно подготовить хэш ввода должны быть подписан, реализуя эллиптическую кривую криптографию для создания ключей, подписать их, и т.д. (это на самом деле легко, если вы найти твердый & тестирование реализации ECC). Если это возможно, вы могли бы предпочесть реализовать HMAC_DBRG поэтому у вас есть детерминированные подписи, чтобы не потерять свой ум! (Как подпись ECDSA включает в себя временное значение, они могут быть трудно проверить)
Большая часть подготовительной работы для подписания описано здесь: https://en.bitcoin.it/wiki/OP_CHECKSIG |
![]() ![]() |
![]() ![]() ![]() |
![]() |
# 7 |
Сообщения: 1260
цитировать ответ |
![]() котировка Ваш код должен будет касаться многих вещей .. Deserialize сделки, правильно подготовить хэш ввода должны быть подписано ... На самом деле, это не "много вещей" если вы знаете, что вы хотите для того чтобы достигнуть. Например, это часть моей программы "... правильно подготовить хэш ввода должен быть подписан ..." Я не хочу, чтобы все объяснить, но просто показать вам, что это короткий и легкий Код: Const MyKey32 Transaction :: getRawHash (сопзЬ Int N, Const QByteArray& ЮКЖД) сопзЬ { MyByteArray в отставке; // создать пустой массив Поток потока (ов); ret.putInt32 (stream.readU32 ()); // версия ret.putVarInt (stream.readVar ()); // Количество входных для (INT I (0); я < входы; я ++) // скопировать все входы { ret.append (stream.readHash ()); // скопировать 32 байт хэш как ret.putInt32 (stream.readU32 ()); // скопировать индекс 4 байта stream.skipVarData (); // пропустить оригинальный сценарий ret.putPrefixed (я == п И: QByteArray ()); // замена сценария ret.putInt32 (stream.readU32 ()); } ret.putVarInt (stream.readVar ()); // Количество выходной для (INT I (0); я < выходы; я ++) // скопировать все выходы байт за байтом { ret.putInt64 (stream.readU64 ()); ret.putPrefixed (stream.readVarData ()); } ret.putInt32 (stream.readU32 ()); // замок ret.putInt32 (SIGHASH_ALL); // добавить хэш-код вернуть MyKey32 (ret.constData (), ret.size ()); // создать hash256 массива } |
![]() ![]() |
![]() ![]() ![]() |
![]() |
# 8 |
Сообщения: 210
цитировать ответ |
![]() в противном случае juxt идти в БЛ и пользовательские отправки и подписать сообщение
|
![]() ![]() |
![]() ![]() ![]() |
![]() |
# 9 |
Сообщения: 1862
цитировать ответ |
![]() Для более конкретизирован версии, которая все еще довольно легко следовать:
https://github.com/ciyam/ciyam/blob/master/src/crypto_keys.cpp#L761 (Она включает в себя поддержку для дополнительного OP_RETURN * Сообщение *) |
![]() ![]() |
![]() ![]() ![]() |
![]() |
# 10 |
Сообщения: 352
цитировать ответ |
![]() Спасибо вам всем
им развиваться в PHP .. моя цель его только понять код (https://github.com/FabioCarpi/MyCoin) я понимаю, лучше написать мой ONW код (я хотел изобрести колесо) и PHP его единственный язык, я до сих пор знаю (жаль его позор для меня ....) |
![]() ![]() |
![]() ![]() ![]() |
![]() |
# 11 |
Сообщения: 1652
цитировать ответ |
![]() Спасибо вам всем им развиваться в PHP .. моя цель его только понять код (https://github.com/FabioCarpi/MyCoin) я понимаю, лучше написать мой ONW код (я хотел изобрести колесо) и PHP его единственный язык, я до сих пор знаю (жаль его позор для меня ....) В ваших таблицах базы данных я заметил, что вы используете VARCHAR (65) для хэш. Вы можете также использовать BINARY (32). |
![]() ![]() |
![]() ![]() ![]() |
![]() |
# 12 |
Сообщения: 352
цитировать ответ |
![]() В ваших таблицах базы данных я заметил, что вы используете VARCHAR (65) для хэш. Вы можете также использовать BINARY (32). Спасибо за совет |
![]() ![]() |
![]() ![]() ![]() |
![]() |
# 13 |
Сообщения: 412
цитировать ответ |
![]() Это является частью работы в прогрессе, но PHP, так что должно помочь! Я до сих пор, чтобы освободить остальную часть библиотеки. Остальные sighashtypes не были проверены еще.
Код: PHP Пространство имен Bitcoin\Подпись; использование Bitcoin\крипто-\гашиш; использование Bitcoin\Util\буфер; использование Bitcoin\Util\синтаксический анализатор; использование Bitcoin\скрипт\скрипт; использование Bitcoin\Сделка\TransactionInterface; использование Bitcoin\Сделка\TransactionOutputInterface; / ** * Класс SigHashBuilder * @package Bitcoin * / класс SignatureHash инвентарь SignatureHashInterface { / ** * @var TransactionInterface * / защищенный $ сделка; / ** * @var TransactionInterface * / защищенный $ копия; / ** * @param TransactionInterface $ сделка * / публичная функция __construct(TransactionInterface $ сделка) { $ this-->сделка знак равно $ сделка; } / ** * @return TransactionInterface * / публичная функция getTransaction() { вернуть $ this-->сделка; } / ** * Вычислить хэш текущей транзакции, когда вы хотите * Потратить $ txOut и подписывают $ inputToSign. В SigHashType по умолчанию * SIGHASH_ALL, хотя SIGHASH_SINGLE, SIGHASH_NONE, SIGHASH_ANYONECANPAY * может быть использован. * * @param TransactionOutputInterface $ txOut * @param $ inputToSign * @param INT $ sighashType * @return буфера * @throws \ Exception * / публичная функция calculateHash(TransactionOutputInterface $ txOut, $ inputToSign, $ sighashType знак равно SignatureHashInterface::SIGHASH_ALL) { $ this-->копия знак равно $ this-->getTransaction(); $ входы знак равно &$ this-->копия->getInputsReference(); $ выходы знак равно &$ this-->копия->getOutputsReference(); если ($ inputToSign > подсчитывать($ входы)) { бросить новый \исключение(«Input не существует»); } // процедура SIGHASH_ALL По умолчанию: нулевые все входные скрипты для ($ я знак равно 0; $ я < подсчитывать($ входы); $ я++) { $ входы[$ я] ->setScriptBuf(новый буфер()); } $ входы[$ inputToSign] ->setScript($ txOut->getScript()); если ($ sighashType & 31 == SignatureHashInterface::SIGHASH_NONE) { // Установка выводит в пустой вектор, и установить порядковый номер входов 0. $ выходы = Массив (); для ($ я знак равно 0; $ я < подсчитывать($ входы); $ я++) { если ($ я !знак равно $ inputToSign) { $ входы[$ я] ->setSequence(0); } } } Иначе, если ($ sighashType & 31 == SignatureHashInterface::SIGHASH_SINGLE) { // Изменение размера выходного массива $ inputToSign + 1, установите остальные сценарии в нуль, // и установить последовательность до нуля. $ nOutput знак равно $ inputToSign; если ($ nOutput >знак равно подсчитывать($ выходы)) { бросить новый \исключение(«SignatureHash->calculateHash (): nOutput $ nOutput вне диапазона»); } // Изменение размера .. $ выходы знак равно array_slice($ выходы, 0, ($ nOutput+1)); // Задаем обнулить для ($ я знак равно 0; $ я < $ nOutput; $ я++) { $ выходы[$ я] ->setScript(новый скрипт()); } // Пусть другие обновления по желанию для ($ я знак равно 0; $ я < подсчитывать($ выходы); $ я++) { если ($ я !знак равно $ inputToSign) { $ входы[$ я] ->setSequence(0); } } } // Это может произойти независимо от того, является ли это все, NONE или SINGLE если ($ sighashType & 31 == SignatureHashInterface::SIGHASH_ANYONECANPAY) { $ вход знак равно $ входы[$ inputToSign]; $ входы = Массив ($ вход); } // сериализовать TxCopy и добавьте 4 байта HashType (Little Endian); $ txParser = новый синтаксический анализатор($ this-->копия->сериализации(«Шестигранной»)); $ txParser->WriteInt(4, $ sighashType, правда); $ хэш знак равно гашиш::sha256d($ txParser->GetBuffer() ->сериализации()); $ буфер знак равно буфер::наговор($ хэш); вернуть $ буфер; } } |
![]() ![]() |
![]() ![]() ![]() |