SignRawTransaction — что такое scriptPubKey и redeemScript? [РЕШЕНО] [закрыто]

Позвольте мне рассказать о том, как я попал в ситуацию, в которой сейчас нахожусь. Я использую PHP и библиотеку JSON для управления биткойнами. И делать так.....

Я создал адрес с мультиподписью, требующий 2 из 3 подписей с помощью createmultisig.

Затем я отправил средства на адрес с мультиподписью и смог подтвердить транзакции, отправленные на этот адрес, с помощью getrawtransaction и decoderawtransaction.

Далее я хотел вывести эти средства на конкретный адрес (т.к. я контролирую все ключи, это просто пробный запуск)

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

Мой следующий шаг — подписать необработанную транзакцию. Вот где я застрял.

Параметры signrawtransaction меня сбивают с толку, и мне нужно, чтобы мне объяснили, как будто мне 5 лет.

hexstring - assuming this is the hex string that createrawtransaction spit out

transaction id - is this the transaction id from when I transferred in the amount to the multisig wallet?

scriptPubKey - no idea what this is

redeemScript - no idea what this is

Я взял scriptPubKey и redeemScript из транзакции, которую я использовал для перевода средств в кошелек с мультиподписью, но полученный результат был точным вводом шестнадцатеричной строки, поэтому, очевидно, он неправильно подписывает ее. Я не уверен, что это за 2 параметра.

Может кто-нибудь, пожалуйста, помогите мне с этим. Мне нужно, чтобы это объяснили мне, как будто я умственно отсталый, потому что ни одно из объяснений, которые я прочитал в Интернете, не помогло.

Спасибо.

РЕДАКТИРОВАТЬ на RE: Джонатан

Вот что я сделал до сих пор.

1) Создал мультиподписной адрес, используя 3 открытых ключа, которые я сгенерировал. Я также принял к сведению закрытые ключи, а также выведенный мультиподписной адрес (ABC) и redeemScript (redeem1).

2) Отправил монеты на мультиподписной адрес и путем поиска в блокчейне обнаружил, что транзакции существуют. У меня было несколько идентификаторов транзакций для отправки на этот адрес, но я сосредоточился на том, который пытаюсь использовать в качестве вывода. Мы назовем его (txid1). В txid1, когда я вызывал getrawtransaction, у него также был 46-байтовый шестнадцатеричный открытый ключ, прикрепленный к выходу, я буду называть его (pubkey1)

3) Затем я создал необработанную транзакцию, которая включала параметры;

txid1, vout=0, address (адрес для расходования) и сумма (соответствует той же сумме, переданной на адрес multsig с помощью txid1), и он выдает шестнадцатеричную строку, которую я назову (hex1)

4) SignRawTransaction - здесь я застрял. Параметры, которые он запрашивает:

[{"txid":txid,"vout":n,"scriptPubKey":hex, "redeemScript":hex},...] [,...]

Итак, я ввожу signrawtransaction(hex1, ["txid"=>txid1, "vout"=>0, "scriptPubKey"=>pubkey1, "redeemScript"=>redeem1, array(oneofmyprivatekeys))

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

Можете ли вы дать мне представление о том, что я делаю неправильно? Большое спасибо!

Проблема в том, что я использовал неправильный сценарий выкупа. Я создал два мультиподписных адреса с похожими именами и перепутал их.
StackExchange не является форумом, пожалуйста, не добавляйте теги «[РЕШЕНО]» к заголовкам вопросов. См. записи справочного центра , когда кто-то отвечает и/или отвечает сам .

Ответы (1)

Прежде всего, взгляните на https://gist.github.com/gavinandresen/3966071 . Это скрипт, который создает две необработанные транзакции: одну для пополнения мультиподписного адреса, а другую для расходования средств. Он показывает каждый из шагов, необходимых для создания и траты с адреса с мультиподписью. К сожалению, сценарий плохо объясняет, откуда берутся параметры. Я постараюсь объяснить параметры, которые вам нужны.

Как вы уже догадались, шестнадцатеричная строка — это вывод createrawtransaction, а идентификатор транзакции — это идентификатор транзакции, отправившей монеты на мультиподписной адрес. RedeemScript — это просто. Когда вы впервые сгенерировали мультиподписной адрес, команда вернула и адрес, и redeemScript. Если у вас нет этого значения, вы можете воссоздать мультиподписной адрес с теми же открытыми ключами, и вы увидите его в выводе. scriptPubKey - это тот, в котором я не уверен. Я думаю, что знаю, что это такое, но у меня нет биткойнов передо мной, поэтому я не могу быть уверен. Если вы расшифруете необработанную транзакцию, отправляющую монеты на мультиподписной адрес, вы увидите один или два выхода, один из которых отправляет монеты на мультиподписной адрес. (Другой вывод отправляет остальные монеты на адрес сдачи.) В этом выводе будет раздел scriptPubKey.

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

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