<ul>
<li>Add a filter to pubkeys used in AccountAgeWitness signing</li>
<li>Fix inverted arbitrator signing of initial account age witnesses from<br>
disputes</li>
<li>Add test to verify that signed witness filter works</li>
<li>Add test to verify that the arbitrator signing was fixed</li>
</ul>
<p>This PR adds a filter to signed witness pubkeys, which are used as the identifier in the signing tree. If  a pubkey is filtered the witnesses dependent on that key will also be invalidated.</p>
<p>Example:</p>
<pre><code>  Arbitrator
  |        |
  w1'      w2
 /  \     /  \
w3' w4'  w5  w6'
|   |    |   |  \
w7' w8'  w9  wA' wB'
</code></pre>
<p>w1 and w6 are filtered, causing all dependent witnesses to be filtered as well (all the prime <code>'</code> witnesses in the graph). In this example only w2, w5 and w9 are still considered signed.</p>
<h4>Bad data fix</h4>
<p>A fix to how already signed witnesses are retrieved (<code>SignedWitnessService.getVerifiedWitnessDateList</code>) also affects cases where some data in the signed tree is missing, as seen in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="558705007" data-permission-text="Title is private" data-url="https://github.com/bisq-network/bisq/issues/3931" data-hovercard-type="issue" data-hovercard-url="/bisq-network/bisq/issues/3931/hovercard" href="https://github.com/bisq-network/bisq/issues/3931">#3931</a>.</p>
<p>The extra check</p>
<pre><code>        if (!isSignedAccountAgeWitness(accountAgeWitness)) {
            return new ArrayList<>();
        }
</code></pre>
<p>will cause a verification each time rather than allowing to start a trade without checking and later being surprised that the counterparty isn't signed.</p>
<p>For now this will likely cause some issues for the CAD market for people that have already signed  accounts but that are missing an ancestor signed witness data item. It will avoid any surprises with users not getting signed where they expect it though.</p>

<hr>

<h4>You can view, comment on, or merge this pull request online at:</h4>
<p>  <a href='https://github.com/bisq-network/bisq/pull/4124'>https://github.com/bisq-network/bisq/pull/4124</a></p>

<h4>Commit Summary</h4>
<ul>
  <li>Add signed witness filter</li>
</ul>

<h4>File Changes</h4>
<ul>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4124/files#diff-d9deee426c480d8631711c8b147bbfa4">core/src/main/java/bisq/core/account/sign/SignedWitnessService.java</a>
    (40)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4124/files#diff-a52b4824e9a7e21f9c9bf6de3dbe1e3a">core/src/main/java/bisq/core/account/witness/AccountAgeWitnessService.java</a>
    (68)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4124/files#diff-f987aab91f941ae4f362841066637ade">core/src/main/java/bisq/core/filter/Filter.java</a>
    (20)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4124/files#diff-50f4ec462f015eeca1788f59e768e6b2">core/src/main/java/bisq/core/filter/FilterManager.java</a>
    (10)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4124/files#diff-2b16c2ca0e92ce28cd7268b07a143647">core/src/main/resources/i18n/displayStrings.properties</a>
    (3)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4124/files#diff-eea4ad19714deccf9b904466935b3731">core/src/test/java/bisq/core/account/sign/SignedWitnessServiceTest.java</a>
    (147)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4124/files#diff-2c4ac1de579d9cf2721f70b0da448dd4">core/src/test/java/bisq/core/account/witness/AccountAgeWitnessServiceTest.java</a>
    (175)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4124/files#diff-1325c0c0de31b80598af0d29ea467d62">core/src/test/java/bisq/core/user/UserPayloadModelVOTest.java</a>
    (1)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4124/files#diff-4c0d6cc3fa01c9bff1ca74e51ce323cb">desktop/src/main/java/bisq/desktop/main/overlays/windows/FilterWindow.java</a>
    (7)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4124/files#diff-a00b243cf0357fb252defc8e652e01ec">desktop/src/main/java/bisq/desktop/main/overlays/windows/TradeDetailsWindow.java</a>
    (7)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4124/files#diff-41caf249b58a6c497f396da0a67168e4">proto/src/main/proto/pb.proto</a>
    (1)
  </li>
</ul>

<h4>Patch Links:</h4>
<ul>
  <li><a href='https://github.com/bisq-network/bisq/pull/4124.patch'>https://github.com/bisq-network/bisq/pull/4124.patch</a></li>
  <li><a href='https://github.com/bisq-network/bisq/pull/4124.diff'>https://github.com/bisq-network/bisq/pull/4124.diff</a></li>
</ul>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/bisq-network/bisq/pull/4124">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AJFFTNXTCZBNOZN7P4YJ5U3RLHUX3ANCNFSM4MCLBQOA">unsubscribe</a>.<img src="https://github.com/notifications/beacon/AJFFTNUZ6KM2KB2K56GHRSLRLHUX3A5CNFSM4MCLBQOKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4I3Z24EQ.gif" height="1" width="1" alt="" /></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/bisq-network/bisq/pull/4124",
"url": "https://github.com/bisq-network/bisq/pull/4124",
"name": "View Pull Request"
},
"description": "View this Pull Request on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>