Реальная история.
Для моего проекта это * необходимо использовать специальные выходы при отправке монет.
* Вы можете ныть, сук, жалуется, утверждает, топает, печать и даже истерика, что это какой-то, как неправильно / плохо / нежелательно / ЭСТ ... Хотя это не изменит цель разработки проекта и проблема все равно останется.
Я полагаю, вы говорите о бумажнике Bitcoin ядра?
Все операции имеют "конкретные выходы" при отправке сделки. Сделка не будет иметь смысла, если это не так. Большинство людей просто позволить кошелек обрабатывать плата за транзакцию и изменить выход для них, но если вы предпочитаете иметь индивидуальный контроль над этим, вы можете сделать это либо с функциями управления монет (которые могут быть включены в "Бумажник" раздел из "предпочтения" меню), или с вызовом createrawtransaction API. Я не ожидал бы никого "ныть, сука, жалуются, утверждают, топают, печать и даже истерику, что это какой-то, как неправильно / плохо / нежелательна / и т.д.",
Я работаю с сырыми транзакциями интерфейсом JSON, мой вопрос о применении (вычтите) взнос в адрес изменения. В то время имея список выходов, выбор новых выходов из которых является гибким (изменение адреса) в стоимости, общей стоимости всех входов, а значение выходов не-изменения. Как размер сделки рассчитывается?
Размер сделки не может быть вычислено до тех пор, после того, как вы уже отправили его, если вы с помощью "sendtoaddress", "Отправлено из", или "sendmany" API вызовов.
Если вы используете "createrawtransaction" то вам нужно будет знать больше, чем "общая стоимость всех входов", Вам нужно будет точно знать, какие неизрасходованные выходы вы собираетесь использовать в качестве входных данных. После того, как вы знаете, что вам нужно знать, если были получены входы в сжатых ключевых адресах, или в несжатых ключевых адресах. Используя все выше информации, можно рассчитать максимальный вероятный размер сделки следующим образом:
- 10 байт данных, необходимых для каждой транзакции
- 34 байта для каждого выхода (включая все выходы изменить)
- Между 179 и 181 байт включительно для каждого входа, который был получен в несжатом ключе адреса (точный размер не может быть вычислен только после подписания сделки)
- Между 147 и 149 байт включительно для каждого входа, который был получен в несжатом ключе адреса (точный размер не может быть вычислен только после подписания сделки)
Одна мысли у меня был в том, чтобы выпустить это createrawtransaction с поддельным значением (1Satoshi?) Для изменения и вычислить размер от возвращаемого гекса, устройство на 2.
Это не достаточно, чтобы этого нужно просто "createrawtransaction", Вы не будете знать точный размер пока "signrawtransaction", Если вы измените выходные изменения, размер (в байтах) сделки может стать другим путем до 2X числа входов, когда вы повторно подписать сделку. Таким образом, в зависимости от конкретного случая использования, это может быть проще просто всегда предполагать, что вклад будет способствовать их большой размер (149 байт для сжатого ключа и 181 байт для несжатого ключа).
Хотя я надеялся на более простой метод, скажем, каждый вход X байт и каждый выход Y добавить их вместе с постоянным размером заголовка Q.
К сожалению, каждый вход должен быть подписан, и размер подписи не известен до тех пор, после того, как вы на самом деле рассчитали подпись. Подписи состоят из двух 32 байтовых значений, но если первые байты-либо из этих значений больше или равно 0x80, то дополнительный байт 0x00 предваряются значение.