Set max amount for Withdraw
and Deposit
methods
These methods initiate `transfer` call on internal balance method that have Fixed12 precision. With this limit it will not overflow JSON integer bound 2**53-1 Actual limit is 9007, but it was floored. Signed-off-by: Alex Vanin <alexey@nspcc.ru>
This commit is contained in:
parent
332e1ceca9
commit
6a881a2baa
1 changed files with 10 additions and 0 deletions
|
@ -81,6 +81,8 @@ const (
|
||||||
blockDiff = 20 // change base on performance evaluation
|
blockDiff = 20 // change base on performance evaluation
|
||||||
publicKeySize = 33
|
publicKeySize = 33
|
||||||
minInnerRingSize = 3
|
minInnerRingSize = 3
|
||||||
|
|
||||||
|
maxBalanceAmount = 9000 // Max integer of Fixed12 in JSON bound (2**53-1)
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -199,6 +201,10 @@ func Deposit(from []byte, amount int, rcv []byte) bool {
|
||||||
panic("deposit: you should be the owner of the wallet")
|
panic("deposit: you should be the owner of the wallet")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if amount > maxBalanceAmount {
|
||||||
|
panic("deposit: out of max amount limit")
|
||||||
|
}
|
||||||
|
|
||||||
if amount <= 0 {
|
if amount <= 0 {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
@ -233,6 +239,10 @@ func Withdraw(user []byte, amount int) bool {
|
||||||
panic("withdraw: non positive amount number")
|
panic("withdraw: non positive amount number")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if amount > maxBalanceAmount {
|
||||||
|
panic("withdraw: out of max amount limit")
|
||||||
|
}
|
||||||
|
|
||||||
amount = amount * 100000000
|
amount = amount * 100000000
|
||||||
|
|
||||||
tx := runtime.GetScriptContainer()
|
tx := runtime.GetScriptContainer()
|
||||||
|
|
Loading…
Reference in a new issue