Я пытаюсь использовать libbitcoin для создания транзакции CASH для биткойнов
Я использовал этот пример - https://github.com/libbitcoin/libbitcoin/wiki/Building-Transactions с моим BITCOIN prv / pub / inputs / output / etc. Он работает правильно.
Для биткойнов CASH я использую мой prv / pub / input / output / etc и устанавливаю sighash_algorithm "all | 0x40". Как описано в руководствах по биткойнам, нам нужно использовать SIGHASH_FORKID = 0x40 (бит 6 установлен) для подписания транзакции.
«Электронные деньги» также используют этот алгоритм sighash_algorithm. Я смотрю на разницу с https://github.com/Electron-Cash/Electron-Cash/blob/master/lib/transaction.py https://github.com/spesmilo/electrum/blob/master/electrum/transaction.py и вижу это
электронные деньги:
def nHashType (cls):
'' 'Тип хеша в шестнадцатеричном виде.' ''
вернуть 0x01 | (cls.SIGHASH_FORKID + (cls.FORKID << 8)) </p>
электронные деньги:
def serialize_preimage (self, i):
nVersion = int_to_hex (self.version, 4)
nHashType = int_to_hex ( self.nHashType () , 4)
Электрум-BTC:
def serialize_preimage (self, i):
nVersion = int_to_hex (self.version, 4)
nHashType = int_to_hex ( 1 , 4)
.....
Итак, если использовать sighash_algorithm "0x01" с транзакцией CASH для биткойнов, я получил ответ от узла Electrum:
the transaction was rejected by network rules.\n\n16: mandatory-script-verify-flag-failed (Signature must use SIGHASH_FORKID)
ОК, после этого ответа я использую 0x40 | 0x01 и получил этот ответ
the transaction was rejected by network rules.\n\n16: mandatory-script-verify-flag-failed (Signature must be zero for failed CHECK(MULTI)SIG operation)
Я делаю аналогичные rawtx в электронных деньгах. Мои rawtx и rawtx из электронных денег отличаются. электронная наличность rawtx - правильно.
Как исправить входные данные в биткойнах CASH с помощью libbitcoin?
извините за мой английский, но я надеюсь, что вы понимаете это