Bitcoin Forum
May 07, 2024, 03:56:24 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 2 3 [4]  All
  Print  
Author Topic: [Методичка] Программирование скриптов Bitcoin.  (Read 16330 times)
amaclin1
Sr. Member
****
Offline Offline

Activity: 770
Merit: 305


View Profile
February 28, 2019, 05:58:53 PM
 #61

Короче, я поискал в интернете.
Нашел https://bitcoin.stackexchange.com/questions/72706/bitcoin-tx-sign-redeem-p2sh-transaction-unable-to-sign-input-invalid-stack-siz
Читаю... прям душа радуется - тот же самый вопрос, только скрипт другой.
У чувака скрипт OP_ADD 7 OP_EQUAL - ну то есть подобрать два числа, сумма которых будет семь
Листаю, значит, листаю... Щас типа ответы пойдут дельные...
А там такой облом! Мой собственный ответ годовалой давности - типа не подписывается это штатным клиентом.
И комментарий уважаемого  Pieter Wuille (это один из главных разработчиков биткойна) - типа не предназначено это.
Хотите нестандартные скрипты использовать - пишите сами себе тулзы.

Не, может как-то и можно. Я не знаю как.

Я вот что сделал.
Те же самые условия.
Запускаем
Code:
"C:\Program Files\Bitcoin\daemon\bitcoin-cli.exe" -testnet -datadir=e:\bitcoin-segwit-testnet createrawtransaction [{\"txid\":\"c75d15c40a6498319b4fa7d828f3234f100d53aa6a0caad3c7c5043c810dacd0\",\"vout\":1}] {\"mg6Xg6sRvJzcQzMTuGPVYAV1XxQbhHnvJR\":\"0.9999991\"}

Получаем "заготовку" транзакции
Code:
0100000001d0ac0d813c04c5c7d3aa0c6aaa530d104f23f328d8a74f9b3198640ac4155dc70100000000ffffffff01a6e0f505000000001976a91406599750ae954e00bc73d19a1f4d898659d6c01388ac00000000

На всякий случай сперва проверяем в консоли

Code:
decoderawtransaction 0100000001d0ac0d813c04c5c7d3aa0c6aaa530d104f23f328d8a74f9b3198640ac4155dc70100000000ffffffff01a6e0f505000000001976a91406599750ae954e00bc73d19a1f4d898659d6c01388ac00000000

Получаем вот такую расшифровку:
Code:
{
  "txid": "e9c8602e616ee54690b32f9eb571bce85867250ead27a662028938be5eff25c8",
  "hash": "e9c8602e616ee54690b32f9eb571bce85867250ead27a662028938be5eff25c8",
  "size": 85,
  "vsize": 85,
  "version": 1,
  "locktime": 0,
  "vin": [
    {
      "txid": "c75d15c40a6498319b4fa7d828f3234f100d53aa6a0caad3c7c5043c810dacd0",
      "vout": 1,
      "scriptSig": {
        "asm": "",
        "hex": ""
      },
      "sequence": 4294967295
    }
  ],
  "vout": [
    {
      "value": 0.99999910,
      "n": 0,
      "scriptPubKey": {
        "asm": "OP_DUP OP_HASH160 06599750ae954e00bc73d19a1f4d898659d6c013 OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "76a91406599750ae954e00bc73d19a1f4d898659d6c01388ac",
        "reqSigs": 1,
        "type": "pubkeyhash",
        "addresses": [
          "mg6Xg6sRvJzcQzMTuGPVYAV1XxQbhHnvJR"
        ]
      }
    }
  ]
}

Эта транзакция невалидная, потому что createrawtransaction ничего не знает как нам выводить с адреса 2N6ijRkcgBwzjvwwop9QRuEdBTeggPcSCpA и оставила поле "scriptSig" пустым. А нам туда надо вписать 0000026d51
Утверждается, что signrawtransaction это делать тоже не умеет
Ну, я просто открываю текстовый редактор и вписываю туда нужные байтики:

0100000001d0ac0d813c04c5c7d3aa0c6aaa530d104f23f328d8a74f9b3198640ac4155dc701000 000050000026d51ffffffff01a6e0f505000000001976a91406599750ae954e00bc73d19a1f4d898659d6c01388ac0 0000000


Вот и всё. Как эту же операцию повторить и возможно ли это с помощью bitcoin-cli - я не знаю и особо не стремлюсь

Вы скажите, что вы хотите, может я вам и так помогу. Недорого или даже забесплатно.

Bitcoin SV GUI client for Windows and Linux
https://github.com/AlisterMaclin/bitcoin-sv/releases
1715054184
Hero Member
*
Offline Offline

Posts: 1715054184

View Profile Personal Message (Offline)

Ignore
1715054184
Reply with quote  #2

1715054184
Report to moderator
1715054184
Hero Member
*
Offline Offline

Posts: 1715054184

View Profile Personal Message (Offline)

Ignore
1715054184
Reply with quote  #2

1715054184
Report to moderator
1715054184
Hero Member
*
Offline Offline

Posts: 1715054184

View Profile Personal Message (Offline)

Ignore
1715054184
Reply with quote  #2

1715054184
Report to moderator
You can see the statistics of your reports to moderators on the "Report to moderator" pages.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1715054184
Hero Member
*
Offline Offline

Posts: 1715054184

View Profile Personal Message (Offline)

Ignore
1715054184
Reply with quote  #2

1715054184
Report to moderator
1715054184
Hero Member
*
Offline Offline

Posts: 1715054184

View Profile Personal Message (Offline)

Ignore
1715054184
Reply with quote  #2

1715054184
Report to moderator
1715054184
Hero Member
*
Offline Offline

Posts: 1715054184

View Profile Personal Message (Offline)

Ignore
1715054184
Reply with quote  #2

1715054184
Report to moderator
kzv (OP)
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
February 28, 2019, 07:24:21 PM
Merited by chimk (4), klarki (1)
 #62

Если позволите, внесу свою лепту.
Заготовка транзакции 0100000001d0ac0d813c04c5c7d3aa0c6aaa530d104f23f328d8a74f9b3198640ac4155dc701000 00000ffffffff01a6e0f505000000001976a91406599750ae954e00bc73d19a1f4d898659d6c013 88ac00000000

Расшифровывается так:
Версия: 01000000
Флаг: 0001 (Если есть, то это сегвит транзакция, в примере его нет)
Число входов: 01
Вход 1 Хэш предыдущей транзакции (задом наперед): d0ac0d813c04c5c7d3aa0c6aaa530d104f23f328d8a74f9b3198640ac4155dc7
Номер выхода из предыдущей транзакции: 01000000 (да 4 байта Карл!!!)
Длинна скрипта для траты входа: 00 (это число надо поменять на 05 в примере выше)
Сам скрипт: Если длина ноль, то тут ничего нет. Если длина 5, как в примере, то здесь 0000026d51
Input 1 sequence: ffffffff (может быть любое, используется для локтайм скриптов)
Чмсло выходов: 01
Количество отправляемых сатошей в первом выходе: a6e0f50500000000
Длина скрипта в первом выходе: 0x19 (25 байт)
Запирающий скрипт: 76a91406599750ae954e00bc73d19a1f4d898659d6c01388ac
Количество Witness данных: в примере нет
Длина первого Witness: в примере нет
Witness 1: нету
Locktime: 00000000

OpenTrade - Open Source Cryptocurrency Exchange
amaclin1
Sr. Member
****
Offline Offline

Activity: 770
Merit: 305


View Profile
February 28, 2019, 08:56:55 PM
 #63

Все правильно расшифровал.
Версия транзакции у меня 1, а не 2, потому что я до сих пор пользуюсь версией клиента v0.13.1
У вас скорее всего та же последовательность действий будет с чуть другим результатом - может быть еще locktime у транзакции будет другой. Не проверял. Меня и этот клиент устраивает.

Bitcoin SV GUI client for Windows and Linux
https://github.com/AlisterMaclin/bitcoin-sv/releases
Pages: « 1 2 3 [4]  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!