<p></p>
<blockquote>
<p>There is still the open question how to do the first contact to find out the peers network load indicator.</p>
</blockquote>
<p>It could be similar to how TCP/IP recalibrates the timeout window for retransmission (<a href="https://en.wikipedia.org/wiki/Transmission_Control_Protocol#Timeout-based_retransmission" rel="nofollow">link</a>).</p>
<p>Basically:</p>
<ul>
<li>sender attempts to send a message (with an assumed default or mininmal PoW P1 in header or payload)</li>
<li>recipient decides
<ul>
<li>is there too much load / more PoW required? then NACK with a nonce in the reply (next connect attempt would need to use this nonce, to prevent PoW reuse)</li>
<li>is provided PoW enough? then open connection, accept incoming msg</li>
</ul>
</li>
<li>if sender was rejected, he can retry with PoW P2 = 2 x P1
<ul>
<li>for a honest Bisq node that is already connected: no degradation, their connections were open based on a low initial PoW</li>
<li>for a honest Bisq node that is just now connecting (during attack) : this means having to wait 1s, 2s, 4s, etc until connection established (alternatively: after a threshold, Bisq could show a popup "network is currently under load, please try again later")</li>
<li>for an attacker: regardless of number of nodes, any potential "flood" of new connections is reduced to a "trickle"</li>
</ul>
</li>
</ul>
<hr>
<p><a class="user-mention" data-hovercard-type="user" data-hovercard-url="/users/MwithM/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MwithM">@MwithM</a> wrote</p>
<blockquote>
<p>I point this proposal to <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="725049120" data-permission-text="Title is private" data-url="https://github.com/bisq-network/proposals/issues/265" data-hovercard-type="issue" data-hovercard-url="/bisq-network/proposals/issues/265/hovercard" href="https://github.com/bisq-network/proposals/issues/265">#265</a> as they're so related: Maker and taker fee tx works as spam protection.</p>
</blockquote>
<p>Based on that idea: "proof of payment" could be used to get priority in the event of network load. In other words, "prove that you have paid trade fees" (by signing a nonce with the priv key) = "ok you are likely an honest Bisq node, will accept your connection / evtl require less PoW".</p>
<p>Recipients could keep a temporary list of "which incoming connections proved which fee payment", to prevent that an attacker re-uses the key for one fee payment on multiple clients (bots) to create a flood of connections. Once the load reduces, the recipient could "forget" this list, or even not bother maintaining it, until load spikes again.</p>

<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/proposals/issues/268#issuecomment-712701116">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AJFFTNVYAC6TQJIIFIS7FPLSLVGEBANCNFSM4SXNQ2TQ">unsubscribe</a>.<img src="https://github.com/notifications/beacon/AJFFTNSXOOOMSTWX2NM4KO3SLVGEBA5CNFSM4SXNQ2T2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOFJ5PJPA.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/proposals/issues/268#issuecomment-712701116",
"url": "https://github.com/bisq-network/proposals/issues/268#issuecomment-712701116",
"name": "View Issue"
},
"description": "View this Issue on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>