<p></p>
<p>This is a great idea <a class="user-mention" data-hovercard-type="user" data-hovercard-url="/users/sqrrm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sqrrm">@sqrrm</a>.</p>
<p>I'm not a cryptography expert, but I think the protocol would benefit from a combination of Taproot and MuSig2 to greatly reduce the cost of either party spending their Deposit Tx output in the happy path.</p>
<p>Extending the example <a class="user-mention" data-hovercard-type="user" data-hovercard-url="/users/chimp1984/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chimp1984">@chimp1984</a>  provided above where Alice is selling 1 BTC to Bob and we use a 0.1 BTC security deposit.</p>
<p>Deposit tx:</p>
<p>Input 1: Alice 1.1 BTC<br>
Input 2: Bob 0.1 BTC</p>
<p>Output 1: 0.1 BTC</p>
<ul>
<li>Taproot key path: a public key <MuSigPubKey1a> derived from <AlicePubKey1a> and <BobPubKey1a> using MuSig2</li>
<li>Taproot script:
<ul>
<li>Path 1 (spendable by Alice if she learns <code>N_b</code>): <code>OP_HASH160 H_a OP_EQUALVERIFY OP_HASH160 H_b OP_EQUAL OP_DUP OP_HASH160 <AlicePubKey2Hash> OP_EQUALVERIFY OP_CHECKSIG</code></li>
<li>Path 2: 2of2 multisig with <AlicePubKey3a> <BobPubKey3a> used for staged refund Tx</li>
</ul>
</li>
</ul>
<p>Output 2: 1.1 BTC</p>
<ul>
<li>Taproot key path: a public key <MuSigPubKey1b> derived from <AlicePubKey1b> and <BobPubKey1b> using MuSig2</li>
<li>Taproot script:
<ul>
<li>Path 1 (spendable by Bob if he learns <code>N_a</code>): <code>OP_HASH160 H_a OP_EQUALVERIFY OP_HASH160 H_b OP_EQUAL OP_DUP OP_HASH160 <BobPubKey2Hash> OP_EQUALVERIFY OP_CHECKSIG</code></li>
<li>Path 2: 2of2 multisig with <AlicePubKey3b> <BobPubKey3b> used for staged refund Tx</li>
</ul>
</li>
</ul>
<p>With this scheme, once Alice and Bob have exchanged nonces, Alice can spend Output 1 and Bob can spend Output 2 via the first Taproot script path. At this point, Alice can give Bob <AlicePrivKey1b>  while Bob can give Alice <BobPrivKey1a> so each of them can use the cheaper key path to spend the output they effectively already control.</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/279#issuecomment-826161769">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AJFFTNSTQ6G777LDYEMYUILTKNBBDANCNFSM4TNYCIWA">unsubscribe</a>.<img src="https://github.com/notifications/beacon/AJFFTNXFVYL6C5J64QREAG3TKNBBDA5CNFSM4TNYCIWKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOGE7DU2I.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/279#issuecomment-826161769",
"url": "https://github.com/bisq-network/proposals/issues/279#issuecomment-826161769",
"name": "View Issue"
},
"description": "View this Issue on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>