我尝试使用libbitcoin创建比特币现金交易 我使用了本示例-https://github.com/libbitcoin/libbitcoin/wiki/Building-Transactions与我的BITCOIN prv / pub / inputs / outputs / etc一起正常工作。 对于比特币现金,我使用我的prv / pub / inputs / outputs / 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))
电子现金:
def serialize_preimage(self,i): nVersion = int_to_hex(self.version,4) nHashType = int_to_hex( self.nHashType(),4)
electrum-btc:
def serialize_preimage(self,i): nVersion = int_to_hex(self.version,4) nHashType = int_to_hex( 1 ,4)
... 因此,如果使用sighash_algorithm“ 0x01”进行比特币现金交易,我会从电子节点得到答案:
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-正确。
如何使用libbitcoin纠正符号比特币CASH输入? 对不起我的英语,但我希望你能理解