Вернуться   Биткоин Форум > - Помощь начинающим
11 мая 2013, 5:03:36 PM   # 1
 
 
Сообщений: 11
Цитировать по имени
цитировать ответ
по умолчанию Re: Трудности, заключив сделку с JSON-RPC и Руби

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


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

У меня есть следующая беззнаковая сырая сделка взята из этот пример:

Код:
01000000
01
eccf7e3034189b851985d871f91384b8ee357cd47c3024736e5676eb2debb3f2
01000000
19
76a914010966776006953d5567439e5e39f86a0d273bee88ac
FFFFFFFF
01
605af40500000000
19
76a914097072524438d003d23a2f23edb65aae1bb3e46988ac
00000000
01000000

Я могу разобрать его в читаемую форму с JSON-RPC API:

Код:
локон --user USERNAME --data-бинарная «{"Я бы":"t0", "метод": "decoderawtransaction", "Титулы": [
"0100000001eccf7e3034189b851985d871f91384b8ee357cd47c3024736e5676eb2debb3f2010000001976a914010966776006953d5567439e5e39f86a0d273bee88acffffffff01605af405000000001976a914097072524438d003d23a2f23edb65aae1bb3e46988ac0000000001000000"]

Код:
{"результат": {"TXID":"7584a4e1f3b46ea7af8230b761711dd4f03494f26d5da86995aa80c5b54e6a59","версия": 1,"Locktime": 0,"Vin": [{"TXID":"f2b3eb2deb76566e7324307cd47c35eeb88413f971d88519859b1834307ecfec","Vout": 1,"scriptSig": {"как м":"OP_DUP OP_HASH160 010966776006953d5567439e5e39f86a0d273bee OP_EQUALVERIFY OP_CHECKSIG","наговор":"76a914010966776006953d5567439e5e39f86a0d273bee88ac"},"последовательность": 4294967295}],"Vout": [{"стоимость": 0.99900000,"N": 0,"scriptPubKey": {"как м":"OP_DUP OP_HASH160 097072524438d003d23a2f23edb65aae1bb3e469 OP_EQUALVERIFY OP_CHECKSIG","наговор":"76a914097072524438d003d23a2f23edb65aae1bb3e46988ac","reqSigs": 1,"тип":"pubkeyhash","адреса": ["1runeksijzfVxyrpiyCY2LCBvYsSiFsCm"]}}]},"ошибка":ноль,"Я бы":"t0"}

Но я не могу подписать его, даже когда я добавляю соответствующую предыдущую операцию и закрытый ключ (это не реальная сделка, хотя).

Код:
локон --user USERNAME --data-бинарная «{"Я бы":"t0", "метод": "signrawtransaction", "Титулы": [
"0100000001eccf7e3034189b851985d871f91384b8ee357cd47c3024736e5676eb2debb3f2010000001976a914010966776006953d5567439e5e39f86a0d273bee88acffffffff01605af405000000001976a914097072524438d003d23a2f23edb65aae1bb3e46988ac0000000001000000",
["f2b3eb2deb76566e7324307cd47c35eeb88413f971d88519859b1834307ecfec"],
["2g82vgrZTviKG5sN1g2VM7FHgHTm16ej4gmr8ECMzab6"]
]}»Http://127.0.0.1:8332/

Код:
{"результат":ноль,"ошибка": {"код": -22,"сообщение":"TX расшифровывает не удалось"},"Я бы":"t0"}

Я также думаю, что это странно, что я получаю ошибку декодирования TX здесь, и я подозреваю, acutally не правильное сообщение, см мой Github билет.

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

Код:
@keypair = OpenSSL :: PKey :: EC.new ("secp256k1")
@ Keypair.private_key = @ YourPrivateKey.hex
@ Keypair.public_key = :: OpenSSL :: PKey :: EC :: Point.from_hex (@ keypair.group, @YourPublicKey)


transaction_hash_bytes = [sha_second] .pack ("ЧАС*")
signature_bytes = @ keypair.dsa_sign_asn1 (transaction_hash_bytes)
подпись = signature_bytes.unpack ("ЧАС*").первый

Пачка("ЧАС*") И распаковать только предположение, но наиболее близок к тому, что я сделал с ССЗОМ. В результате шестигранной различной длины (70-72 байт).

Каждый раз, когда вы делаете подпись с secp256k1 это разные, так что я не могу использовать подпись, которая обеспечивается в данном примере в качестве опорной точки. Единственный способ я знаю, как проверить это, чтобы подписать реальные сделки и попытаться отправить его через страница сделки толчка Blockchain.info в.

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

Если я пытаюсь sendrawtransaction через JSON-RPC Я просто {"результат":ноль,"ошибка": {"код": -22,"сообщение":"TX отвергнута"},"Я бы":"t0"}. Я в состоянии выполнить decoderawtransaction как на моей неподписанную и подписанную реальной сделку. Но когда я пытаюсь подписать его с помощью JSON-RPC, я получаю ту же ошибку, как я показал выше.

Подписи применяется к SHA-256 ^ 2 хэш без знака транзакции. Я в состоянии воспроизвести этот хэш в рубине с использованием входных параметров в качестве примера, в поэтому я предполагаю, что мой сценарий правильно до этого момента.

Я подозреваю, что я делаю что-то неправильно, связанное с кодированием, когда я подписываю хэш. Ша-256 методы в рубин ожидать в Bignum ("10".hex => 16) в качестве входных данных и производить строку в качестве вывода с считываемых значений шестнадцатеричных человека, которые можно затем преобразовать в Bignum снова. Однако это менее ясно, что методы подписания с помощью secp256k1 ожидают ввода и обеспечить как выход. Он просто принимает строку и возвращает строку, независимо от того, что в нем. Он содержит метод, который позволяет проверить подпись, которая работает, когда я кормлю выход обратно в нее, но ничего не говорит.

Насколько я знаю, никто не имеет (публично) подписал сделку Bitcoin перед использованием Ruby, так что я не могу исключить возможность ошибки.

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


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


11 мая 2013, 7:59:02 PM   # 2
 
 
Сообщений: 11
Цитировать по имени
цитировать ответ
по умолчанию Re: Трудности, заключив сделку с JSON-RPC и Руби

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





Оказывается, что мне нужно, чтобы удалить окончательный 01 00 00 00 от знака операции при использовании signrawtransaction для того, чтобы успешно
подписать свою собственную реальную сделку. Один в примере выдает неверную ключевую ошибку, но я могу жить с этим.

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

13 мая 2013, 5:31:23 PM   # 3
 
 
Сообщений: 11
Цитировать по имени
цитировать ответ
по умолчанию Re: Трудности, заключив сделку с JSON-RPC и Руби

Я сделал некоторые успехи, но я все еще получаю "Подпись Invalid" ошибка. Я обновил мой вопрос на Stack бирже, чтобы отразить мой прогресс.

То, что я узнал, изучая исходный код C клиента Bitcoin, является то, что он хранит дайджеста как uint256, вылитые на голец перед подписанием. Я думаю, что это означает, что мне нужно, чтобы преобразовать свой хэш в рубине из большого Endian в небольшую Endian. Сама подпись представляет собой символ и не получает бросок к чему-либо еще, насколько я могу видеть.
Sjors сейчас офлайн Пожаловаться на Sjors   Ответить с цитированием Мультицитирование сообщения от Sjors Быстрый ответ на сообщение Sjors

13 мая 2013, 9:00:25 PM   # 4
 
 
Сообщений: 11
Цитировать по имени
цитировать ответ
по умолчанию Re: Трудности, заключив сделку с JSON-RPC и Руби

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



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW