Page MenuHomePhabricator

[electrum] support newer protobuf library versions
ClosedPublic

Authored by PiRK on Mon, Feb 17, 15:13.

Details

Reviewers
Fabien
Group Reviewers
Restricted Project
Commits
rABC36570956a320: [electrum] support newer protobuf library versions
Summary

The protobuf API changed in recent version of the library. This causes fusion failures when the fusion round is about to start.
Support both the old and new API.

At the moment the protobuf version in the releases (3.20.3) works. To notice the issue you need to run from sources on a recent linux version with a newer protobuf (e.g. Ubuntu 24.04 has 5.28.2 which fails).

This fix is loosely based on https://github.com/Electron-Cash/Electron-Cash/commit/4e59c7e18dbd21aa210473ac48c7aba5e0fe1162

Test Plan

Active Cash Fusion and wait for a succesfull fusion on Ubuntu 24.04

Diff Detail

Repository
rABC Bitcoin ABC
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

PiRK requested review of this revision.Mon, Feb 17, 15:13

This was the error, fyi

Traceback (most recent call last):
  File "/home/pierre/dev/bitcoin-abc/electrum/electrumabc_plugins/fusion/fusion.py", line 518, in run
    if self.run_round(covert):
       ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/pierre/dev/bitcoin-abc/electrum/electrumabc_plugins/fusion/fusion.py", line 518, in run
    if self.run_round(covert):
       ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/pierre/dev/bitcoin-abc/electrum/electrumabc_plugins/fusion/fusion.py", line 1341, in run_round
    inpcomp = validate_proof_internal(
              ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/pierre/dev/bitcoin-abc/electrum/electrumabc_plugins/fusion/validation.py", line 179, in validate_proof_internal
    msg = proto_strict_parse(pb.Proof(), proofblob)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/pierre/dev/bitcoin-abc/electrum/electrumabc_plugins/fusion/validation.py", line 84, in proto_strict_parse
    check(not msg.UnknownFields(), "has extra fields")
              ^^^^^^^^^^^^^^^^^^^
  File "/home/pierre/dev/bitcoin-abc/electrum/electrumabc_plugins/fusion/fusion.py", line 1341, in run_round
    inpcomp = validate_proof_internal(
              ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/pierre/dev/bitcoin-abc/electrum/electrumabc_plugins/fusion/validation.py", line 179, in validate_proof_internal
    msg = proto_strict_parse(pb.Proof(), proofblob)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
NotImplementedError: unknown field accessor
  File "/home/pierre/dev/bitcoin-abc/electrum/electrumabc_plugins/fusion/validation.py", line 84, in proto_strict_parse
    check(not msg.UnknownFields(), "has extra fields")
              ^^^^^^^^^^^^^^^^^^^
NotImplementedError: unknown field accessor
This revision is now accepted and ready to land.Tue, Feb 18, 08:23