diff --git a/bip-0078.mediawiki b/bip-0078.mediawiki index 25d36bfd..3bb8fc32 100644 --- a/bip-0078.mediawiki +++ b/bip-0078.mediawiki @@ -271,10 +271,10 @@ The sender should check the payjoin proposal before signing it to prevent a mali *** The amount that was substracted from the output's value is less or equal to maxadditionalfeecontribution. Let's call this amount actual contribution. *** Make sure the actual contribution is only paying fee: The actual contribution is less or equals to the difference of absolute fee between the payjoin proposal and the original PSBT. *** Make sure the actual contribution is only paying for fee incurred by additional inputs: actual contribution is less or equals to originalPSBTFeeRate * vsize(sender_input_type) * (count(original_psbt_inputs) - count(payjoin_proposal_inputs)). (see [[#fee-output|Fee output]] section) -** If the output is the payment output and payment output substitution is disabled. +** If the output is the payment output and payment output substitution is allowed. *** Do not make any check ** Else -*** Make sure the output's value did not changed. +*** Make sure the output's value did not decreased. ** Verify that all sender's outputs (ie, all outputs except the output actually paid to the receiver) from the original PSBT are in the proposal. * Once the proposal is signed, if minfeerate was specified, check that the fee rate of the payjoin transaction is not less than this value. @@ -561,8 +561,8 @@ public async Task RequestPayjoin( } else { - if (originalOutput.OriginalTxOut.Value != proposedPSBTOutput.Value) - throw new PayjoinSenderException("The receiver changed one of our outputs"); + if (originalOutput.OriginalTxOut.Value > proposedPSBTOutput.Value) + throw new PayjoinSenderException("The receiver decreased the value of one of the outputs"); } // We fill up information we had on the signed PSBT, so we can sign it. foreach (var hdKey in output.SignedPSBTOutput.HDKeyPaths)