2 spendUTXOAction, spendWalletAction, controlProgramAction,
3 controlAddressAction, listDappUTXO, updateUtxo, updateBalances,
6 import GetContractArgs from '../../constants'
7 import { matchesUTXO } from '../../filter'
8 import BigNumber from 'bignumber.js'
10 export function FixedLimitDeposit(amount, address) {
11 return new Promise((resolve, reject) => {
13 "program": GetContractArgs().depositProgram,
14 "asset": GetContractArgs().assetBill,
20 const limit = GetContractArgs().radio * 100000000
21 if(resp.length === 0) {
22 throw 'Empty UTXO info, it might be that the utxo is locked. Please retry after 60s.'
23 }else if(amount < limit){
24 throw `Please enter an amount bigger or equal than ${limit}.`
27 const result = matchesUTXO(resp, amount)
28 const billAmount = result.amount
29 const billAsset = result.asset
30 const utxo = result.hash
32 if(amount > billAmount){
33 throw 'input amount must be smaller or equal to ' + billAmount +'.'
38 const args = contractArguments(amount, address)
40 input.push(spendUTXOAction(utxo))
41 input.push(spendWalletAction(amount, GetContractArgs().assetDeposited))
43 if(amount < billAmount){
44 output.push(controlProgramAction(amount, GetContractArgs().assetDeposited, GetContractArgs().profitProgram))
45 output.push(controlAddressAction(amount, billAsset, address))
46 output.push(controlProgramAction((BigNumber(billAmount).minus(BigNumber(amount))).toNumber(), billAsset, GetContractArgs().depositProgram))
48 output.push(controlProgramAction(amount, GetContractArgs().assetDeposited, GetContractArgs().profitProgram))
49 output.push(controlAddressAction(billAmount, billAsset, address))
52 updateUtxo({"hash": utxo})
54 window.bytom.advancedTransfer(input, output, GetContractArgs().gas*10000000, args, 1)
56 if(resp.action === 'reject'){
57 reject('user reject the request')
58 }else if(resp.action === 'success'){
60 "tx_id": resp.message.result.data.transaction_hash,
62 "asset": GetContractArgs().assetDeposited,
66 "tx_id": resp.message.result.data.transaction_hash,
68 "asset": GetContractArgs().assetBill,