Как исправить входные биткойны наличными с помощью libbitcoin? - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь использовать 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? извините за мой английский, но я надеюсь, что вы понимаете это

...