如何在Plutus智能合约中平分金额



我需要使用Plutus制作一个智能合约,将金额不平均地分成两个钱包,这样我就可以为每笔交易定义自定义费用。我正在使用这个文档。我需要的是,我想把金额分成两个不相等的金额,并分别发送到一个单独的钱包。假设一个用户想从他的钱包a中向钱包B发送7美元,我之前定义的每笔交易的额外费用是2美元。使用下面的代码块,我如何将9美元分成7美元和2美元,然后将它们发送到钱包B和C (C是我的钱包)。

validateSplit :: SplitData -> () -> ScriptContext -> Bool
validateSplit SplitData{recipient1, recipient2, amount} _ ScriptContext{scriptContextTxInfo} =
let half = Ada.divide amount 2 in
Ada.fromValue (valuePaidTo scriptContextTxInfo recipient1) >= half &&
Ada.fromValue (valuePaidTo scriptContextTxInfo recipient2) >= (amount - half)

如果您事先知道您的费用,为什么不将其包含在参数列表recipient1, recipient2, amount, fee中呢?然后你可以减去它。或者,如果它始终是2 Ada,并且将始终是2 Ada,那么只需在合同中硬编码它。否则,合约怎么知道你的钱包(C)得到了多少钱,你的钱包(B)得到了多少钱?