From 80b6b56c270cc77c890cba8a0db66cdd89ed4f60 Mon Sep 17 00:00:00 2001 From: Zhiting Lin Date: Fri, 22 Feb 2019 15:04:44 +0800 Subject: [PATCH 1/1] add bigNumbers, and restrict the Max under maxInt64. --- src/components/layout/profit/action.js | 14 ++++++++++---- src/components/layout/save/action.js | 3 ++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/components/layout/profit/action.js b/src/components/layout/profit/action.js index dabae4a..60ca3f0 100644 --- a/src/components/layout/profit/action.js +++ b/src/components/layout/profit/action.js @@ -4,6 +4,7 @@ import { } from '../../bytom' import GetContractArgs from '../../constants' import { matchesUTXO } from '../../filter' +import BigNumber from 'bignumber.js' export function FixedLimitProfit(account, amountBill, saver) { return new Promise((resolve, reject) => { @@ -30,9 +31,14 @@ export function FixedLimitProfit(account, amountBill, saver) { const input = [] const output = [] - const sAmountBill = amountBill/100000000 - const sTotalAmountBill = GetContractArgs().totalAmountBill/100000000 - const gain = GetContractArgs().totalAmountCapital*sAmountBill/sTotalAmountBill + const sAmountBill = BigNumber(amountBill).div( 100000000 ) + const sTotalAmountBill = BigNumber(GetContractArgs().totalAmountBill).div( 100000000 ) + const multiplyResult = BigNumber( GetContractArgs().totalAmountCapital).multipliedBy( sAmountBill ) + const gain = multiplyResult.div( sTotalAmountBill ) + + if( multiplyResult.isGreaterThan( 9223372036854775807 ) ){ + throw 'The entered amount is too big, please reduce the amount.' + } const args = contractArguments(amountBill, saver) @@ -42,7 +48,7 @@ export function FixedLimitProfit(account, amountBill, saver) { if(amountBill < capitalAmount){ output.push(controlProgramAction(amountBill, GetContractArgs().assetBill, GetContractArgs().banker )) output.push(controlAddressAction(gain, capitalAsset, saver)) - output.push(controlProgramAction((capitalAmount - gain), capitalAsset, GetContractArgs().profitProgram)) + output.push(controlProgramAction((BigNumber(capitalAmount).minus(gain)), capitalAsset, GetContractArgs().profitProgram)) }else{ output.push(controlProgramAction(amountBill, GetContractArgs().assetBill, GetContractArgs().banker )) output.push(controlAddressAction(capitalAmount, capitalAsset, saver)) diff --git a/src/components/layout/save/action.js b/src/components/layout/save/action.js index daf0731..60af675 100644 --- a/src/components/layout/save/action.js +++ b/src/components/layout/save/action.js @@ -4,6 +4,7 @@ import { contractArguments } from '../../bytom' import GetContractArgs from '../../constants' +import BigNumber from 'bignumber.js' export function FixedLimitDeposit(account, amount, address) { return new Promise((resolve, reject) => { @@ -38,7 +39,7 @@ export function FixedLimitDeposit(account, amount, address) { if(amount < billAmount){ output.push(controlProgramAction(amount, GetContractArgs().assetDeposited, GetContractArgs().profitProgram)) output.push(controlAddressAction(amount, billAsset, address)) - output.push(controlProgramAction((billAmount-amount), billAsset, GetContractArgs().depositProgram)) + output.push(controlProgramAction((BigNumber(billAmount).minus(BigNumber(amount))), billAsset, GetContractArgs().depositProgram)) }else{ output.push(controlProgramAction(amount, GetContractArgs().assetDeposited, GetContractArgs().profitProgram)) output.push(controlAddressAction(billAmount, billAsset, address)) -- 2.11.0