Author

Topic: Как корректно подписать untxo bitcoin cash с libbitcoin (Read 155 times)

newbie
Activity: 5
Merit: 0
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
sr. member
Activity: 1316
Merit: 420
KTO EC/\U HUKTO?
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.
newbie
Activity: 5
Merit: 0
Есть ли какие другие отличия кроме выставки 6 бита в sighash_type? Опишите пожалуйста, кто работал.
Вот с этого вопроса и надо начинать. Чем отличается?
А то завели моду - bug-driven-development - сделаем что-то, а потом будем смотреть,
почему оно не работает и как это дело исправить.

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

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

Нужные вам BIP найдете самостоятельно?
Спасибо за ответ и наводку. Нужные BIP поищу самостоятельно.
sr. member
Activity: 770
Merit: 305
Есть ли какие другие отличия кроме выставки 6 бита в sighash_type? Опишите пожалуйста, кто работал.
Вот с этого вопроса и надо начинать. Чем отличается?
А то завели моду - bug-driven-development - сделаем что-то, а потом будем смотреть,
почему оно не работает и как это дело исправить.

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

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

Нужные вам BIP найдете самостоятельно?
newbie
Activity: 5
Merit: 0
Всем привет
Пытаюсь использовать 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? Опишите пожалуйста, кто работал.
Jump to: