2 spendUTXOAction, spendWalletAction, controlProgramAction, controlAddressAction,
3 updateBalances, updateUtxo, listDappUTXO, contractArguments
5 import {profitProgram, assetDeposited, assetBill, gas, banker, totalAmountBill, totalAmountCapital} from "../../constants";
7 export function FixedLimitProfit(account, amountBill, saver) {
8 return new Promise((resolve, reject) => {
10 "program": profitProgram,
11 "asset": assetDeposited
14 const capitalAmount = resp.amount
15 const capitalAsset = resp.asset
16 const utxo = resp.hash
18 if(amountBill > capitalAmount) {
19 throw 'input amount must be smaller or equal to ' + capitalAmount + '.'
24 const sAmountBill = amountBill/100000000
25 const sTotalAmountBill = totalAmountBill/100000000
26 const gain = totalAmountCapital*sAmountBill/sTotalAmountBill
28 const args = contractArguments(amountBill, saver)
30 input.push(spendUTXOAction(utxo))
31 input.push(spendWalletAction(amountBill, assetBill))
33 if(amountBill < capitalAmount){
34 output.push(controlProgramAction(amountBill, assetBill, banker ))
35 output.push(controlAddressAction(gain, capitalAsset, saver))
36 output.push(controlProgramAction((capitalAmount - gain), capitalAsset, profitProgram))
38 output.push(controlProgramAction(amountBill, assetBill, banker ))
39 output.push(controlAddressAction(capitalAmount, capitalAsset, saver))
42 window.bytom.advancedTransfer(account, input, output, gas*10000000, args)
44 if(resp.action === 'reject'){
45 reject('user reject the request')
46 }else if(resp.action === 'success'){
47 updateUtxo({"hash": utxo})
51 "asset": assetDeposited,
52 "amount": amountBill*totalAmountCapital/totalAmountBill
55 "address": account.address,