Я сделал форк openwallet-android, чтобы добавить свою монету - (заполнители) placeh.io.
Openwallet-android подключается к серверу electromx. Я могу заставить свою цепочку правильно загружаться на сервере electromx. Openwallet корректно считывает баланс с адреса/входов и через кошелек можно посмотреть свой баланс.
Однако, когда я пытаюсь транслировать транзакцию, я получаю сообщение:
"mandatory-script-verify-flag-failed (signature must be zero for failed check(multi)sig operation)"
Из сети placehd/placeh.
Вот некоторая дополнительная информация, это необработанная транзакция, которая публикуется. Если я попытаюсь отправить необработанную транзакцию в клиенте placeh-cli, это не удастся и выдаст ту же ошибку, если сделать это вручную.
Необработанная транзакция:
placeh-cli decoderawtransaction
01000000017477f59250a8d8a7d94ba5dcc196222c0b6c92849cad210735b4380b24c03b13010000006a473044022053b17723e8a90846fc341006f5f63d5776df619f33cec82d8065e836508672c6022036298087c2f37c3002c4897b74e7de6af8c608c89cbcef07ada9c5551c85f2810121031dc78b8c254649e204b81641f70497980ca6b5574f837001c962930580d1372dffffffff02c00e1602000000001976a914a117ed0f4e2afe1e1b8d2b0253408a7830f2b55688ac0093e651020000001976a914c472af380586ed1638686731cc1eda3c60363ec788ac00000000
{
"txid": "de045f2220d0b9f34060336c9ed3badc7c22741fec3aa1d87ff24264c3c1fb5e",
"hash": "de045f2220d0b9f34060336c9ed3badc7c22741fec3aa1d87ff24264c3c1fb5e",
"version": 1,
"size": 225,
"vsize": 225,
"locktime": 0,
"vin": [
{
"txid": "133bc0240b38b4350721ad9c84926c0b2c2296c1dca54bd9a7d8a85092f57774",
"vout": 1,
"scriptSig": {
"asm": "3044022053b17723e8a90846fc341006f5f63d5776df619f33cec82d8065e836508672c6022036298087c2f37c3002c4897b74e7de6af8c608c89cbcef07ada9c5551c85f281[ALL] 031dc78b8c254649e204b81641f70497980ca6b5574f837001c962930580d1372d",
"hex": "473044022053b17723e8a90846fc341006f5f63d5776df619f33cec82d8065e836508672c6022036298087c2f37c3002c4897b74e7de6af8c608c89cbcef07ada9c5551c85f2810121031dc78b8c254649e204b81641f70497980ca6b5574f837001c962930580d1372d"
},
"sequence": 4294967295
}
],
"vout": [
{
"value": 0.35000000,
"n": 0,
"scriptPubKey": {
"asm": "OP_DUP OP_HASH160 a117ed0f4e2afe1e1b8d2b0253408a7830f2b556 OP_EQUALVERIFY OP_CHECKSIG",
"hex": "76a914a117ed0f4e2afe1e1b8d2b0253408a7830f2b55688ac",
"reqSigs": 1,
"type": "pubkeyhash",
"addresses": [
"FLWtv6SuocTFMozTZvdZAhroJLehVjLKhs"
]
}
},
{
"value": 99.64000000,
"n": 1,
"scriptPubKey": {
"asm": "OP_DUP OP_HASH160 c472af380586ed1638686731cc1eda3c60363ec7 OP_EQUALVERIFY OP_CHECKSIG",
"hex": "76a914c472af380586ed1638686731cc1eda3c60363ec788ac",
"reqSigs": 1,
"type": "pubkeyhash",
"addresses": [
"FPjqHpEzdYAbxVG2acxz8GWGAPmJsWj6oP"
]
}
}
]
}
Я считаю, что это может иметь какое-то отношение к тому, как openwallet создает необработанную транзакцию. Я хотел бы обновить библиотеки, чтобы он мог правильно транслировать транзакцию.
После некоторых дополнительных исследований и полезной информации, найденной здесь, я смог сделать следующий вывод:
Транзакции, закодированные в биткойне 0.12.X, а затем переданные в биткойн 0.15, могут столкнуться с ошибкой обязательного-скрипта-проверки-флага (подпись должна быть нулевой для неудачной проверки (мульти)подписи)
Эту проблему можно решить, выполнив следующие действия: Подпишите необработанную транзакцию версии 0.12.X подписью версии 0.15. Я не могу точно определить проблему, однако мне удалось закодировать необработанную транзакцию в 0.12.X, подписать ее в 0.15 и успешно транслировать. Эта информация может быть полезна, если кто-то пытается выяснить, какие части их процесса подписания нуждаются в рефакторинге/обновлении.
Дж.Бачук
ксагау
Питер Уилле
ксагау
Рагхав Суд
Дж.Бачук
ксагау
Рагхав Суд
40840b34365502f6fa5f066b137cf5081b7be8f8
), а затем просто добавил обратно коды операций, чтобы получить76a91440840b34365502f6fa5f066b137cf5081b7be8f888ac
, что является стандартным скриптом p2pkhРагхав Суд
ксагау
ксагау