Bitcoin Forum
November 10, 2024, 08:52:30 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Как корректно подписать untxo bitcoin cash с libbitcoin  (Read 155 times)
alab (OP)
Newbie
*
Offline Offline

Activity: 5
Merit: 0


View Profile
November 08, 2018, 07:12:22 AM
Last edit: November 08, 2018, 07:26:01 AM by alab
 #1

Всем привет
Пытаюсь использовать libbitcoin для создания bitcoin cash транзакции, юзаю пример  - https://github.com/libbitcoin/libbitcoin/wiki/Building-Transactions с моими БИТКОИНовскими prv/pub/inputs/outputs/etc все работает замечательно. Для биткоин КЕША использую свои же prv/pub/inputs/outputs/etc и выставляю sighash_algorithm "all | 0x40". Как описано в биткоин кэше, использую(и его используют в других программах) SIGHASH_FORKID = 0x40(bit 6 set) для подписания транзакции. "Electron cash" тоже использует этот sighash_algorithm.К примеру, я посмотрел различия между электрумом и электроном(для кеша) https://github.com/Electron-Cash/Electron-Cash/blob/master/lib/transaction.py https://github.com/spesmilo/electrum/blob/master/electrum/transaction.py и увидел различия лишь в этом

electron cash:

Code:
def nHashType(cls): '''Hash type in hex.''' return 0x01 | (cls.SIGHASH_FORKID + (cls.FORKID << 8))

electron cash:
Code:
def serialize_preimage(self, i): nVersion = int_to_hex(self.version, 4) nHashType = int_to_hex(self.nHashType(), 4)
electrum-btc:

Code:
def serialize_preimage(self, i): nVersion = int_to_hex(self.version, 4) nHashType = int_to_hex(1, 4)
Правда они не используют libbitcoin c++

Ок, составляю транзакцию , и если я использую только sighash_algorithm "0x01" с bitcoin CASH транзакцией, получаю такой ответ от ноды

Quote
the transaction was rejected by network rules.\n\n16: mandatory-script-verify-flag-failed (Signature must use SIGHASH_FORKID)

OK говорю я, нужно выставить 0x40 как указано и другие используют, выставляю 0x40 | 0x01 и получаю такой ответ от ноды электрума

Quote
the transaction was rejected by network rules.\n\n16: mandatory-script-verify-flag-failed (Signature must be zero for failed CHECK(MULTI)SIG operation)

Составляю транзакцию с такими же input и output в electron cash.Моя rawtx и rawtx из electron cash отличаются.  у electron cash rawtx - корректная

И так, как же корректно подписать транзакцию bitcoin cash используя libbitcoin c++? Есть ли какие другие отличия кроме выставки 6 бита в sighash_type? Опишите пожалуйста, кто работал.
amaclin1
Sr. Member
****
Offline Offline

Activity: 924
Merit: 353


View Profile
November 11, 2018, 07:54:12 AM
 #2

Есть ли какие другие отличия кроме выставки 6 бита в sighash_type? Опишите пожалуйста, кто работал.
Вот с этого вопроса и надо начинать. Чем отличается?
А то завели моду - bug-driven-development - сделаем что-то, а потом будем смотреть,
почему оно не работает и как это дело исправить.

Если по теме - смотрите сами - если ваша библиотека libbitcoin (я с ней не работал и не собираюсь
разбираться) поддерживает bitcoincash - значит что-то вы неправильно делаете. Если не поддерживает -
то однозначно легким движением руки вы не сможете её настроить - потому что процедура подписи
транзакции в bitcoincash и в segwit-транзакциях обычного биткойна претерпела кардинальные
изменения и старый код для обычного биткойна не будет работать.

Что почитать? Почитайте на эту тему как изменилась процедура подписывания транзакций в биткойне
для сегвит-транзакций. Почему я рекомендую это и почему это связано? Потому что этот кусок кода
разработчики биткойн-кэша позаимствовали из обычного биткойна да еще плюс к этому добавили
fork-id бит

Нужные вам BIP найдете самостоятельно?
alab (OP)
Newbie
*
Offline Offline

Activity: 5
Merit: 0


View Profile
November 12, 2018, 07:20:53 AM
 #3

Есть ли какие другие отличия кроме выставки 6 бита в sighash_type? Опишите пожалуйста, кто работал.
Вот с этого вопроса и надо начинать. Чем отличается?
А то завели моду - bug-driven-development - сделаем что-то, а потом будем смотреть,
почему оно не работает и как это дело исправить.

Если по теме - смотрите сами - если ваша библиотека libbitcoin (я с ней не работал и не собираюсь
разбираться) поддерживает bitcoincash - значит что-то вы неправильно делаете. Если не поддерживает -
то однозначно легким движением руки вы не сможете её настроить - потому что процедура подписи
транзакции в bitcoincash и в segwit-транзакциях обычного биткойна претерпела кардинальные
изменения и старый код для обычного биткойна не будет работать.

Что почитать? Почитайте на эту тему как изменилась процедура подписывания транзакций в биткойне
для сегвит-транзакций. Почему я рекомендую это и почему это связано? Потому что этот кусок кода
разработчики биткойн-кэша позаимствовали из обычного биткойна да еще плюс к этому добавили
fork-id бит

Нужные вам BIP найдете самостоятельно?
Спасибо за ответ и наводку. Нужные BIP поищу самостоятельно.
fxpc
Sr. Member
****
Offline Offline

Activity: 1316
Merit: 420


KTO EC/\U HUKTO?


View Profile
November 13, 2018, 05:05:46 PM
 #4

libbitcoin из коробки не поддерживает форки, а в факе на гитхабе, правда к серверу (но библиотека та же) написано сие:
Quote
Q: Will Bitcoin Cash, Bitcoin Classic or Bitcoin Unlimited be supported?
A : There is no current plan to support split coins, however insofar as one can be reasonably accommodated by adding configurable fork rules (such as with existing soft forks and testnet/regtest), one or more may be added.
https://github.com/libbitcoin/libbitcoin-server/wiki/Frequently-Asked-Questions

Найди другую либу, если не собираешься эту переписывать под bitcoincash.

alab (OP)
Newbie
*
Offline Offline

Activity: 5
Merit: 0


View Profile
November 19, 2018, 07:25:33 AM
 #5

libbitcoin из коробки не поддерживает форки, а в факе на гитхабе, правда к серверу (но библиотека та же) написано сие:
Quote
Q: Will Bitcoin Cash, Bitcoin Classic or Bitcoin Unlimited be supported?
A : There is no current plan to support split coins, however insofar as one can be reasonably accommodated by adding configurable fork rules (such as with existing soft forks and testnet/regtest), one or more may be added.
https://github.com/libbitcoin/libbitcoin-server/wiki/Frequently-Asked-Questions

Найди другую либу, если не собираешься эту переписывать под bitcoincash.

Спасибо за ответ
Однако у меня  получилось с libbitcoin создавать p2kh транзакции под кэш
Кому интересно, как корректно составлять sigscript bitcoin cash под libbitcoin - ответил сам себе в issues на гитхабе https://github.com/libbitcoin/libbitcoin/issues/1062
Pages: [1]
  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!