Как неравномерно разделить сумму в смарт-контрактах Plutus

Мне нужно создать смарт-контракт с использованием Plutus, чтобы неравномерно разделить сумму на 2 кошелька, чтобы я мог определять индивидуальные комиссии для каждой транзакции. Я использую эту документацию. Что мне нужно, так это то, что я хотел бы разделить сумму на две неравные суммы и отправить каждую в отдельный кошелек. Предположим, что пользователь хочет отправить 7 долларов в кошелек B из своего кошелька A. Дополнительная комиссия, которую я определил ранее для каждой транзакции, составляет 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)

1 ответ

Что ж, если вы заранее знаете размер комиссии, почему бы не включить ее в список параметров? recipient1, recipient2, amount, fee. Итак, вы можете соответственно вычесть это. Или, если это всегда 2 Ада и всегда будет 2 Ада, просто жестко закодируйте это в контракте. Как еще в контракте должно быть указано, какая комиссия поступает на ваш кошелек (C), а какая - на другой кошелек (B).

Другие вопросы по тегам