tx · ALAiX1Ruwm5FmToaF3fbj1rqhCcdycBYn2YLfBaqKtqB 3PCs3SYkQwSqXwv5FN42b8DXM6WEA8JNDkx: -0.01000000 Waves 2022.05.22 10:10 [3128038] smart account 3PCs3SYkQwSqXwv5FN42b8DXM6WEA8JNDkx > SELF 0.00000000 Waves
{ "type": 13, "id": "ALAiX1Ruwm5FmToaF3fbj1rqhCcdycBYn2YLfBaqKtqB", "fee": 1000000, "feeAssetId": null, "timestamp": 1653203471639, "version": 2, "chainId": 87, "sender": "3PCs3SYkQwSqXwv5FN42b8DXM6WEA8JNDkx", "senderPublicKey": "4613XFozFm1Nc8jhYYFisKKAzjau7tRhD4TyVKaE6srm", "proofs": [ "3vmqqC4Mnk3LVrFR4gwU6MziRM2nW7bVaG9cjFQrBRCkmG84YuB6PZgXHZFwGwKwYXcHdkEBy9K2hR8sU4NNDnCm" ], "script": "base64:AAIFAAAAAAAAAQAIAhIECgIBARIECgIBARoJCgFhEgRtYWluGhQKAWISD2Fzc2V0U3RyaW5nVVNEVBoQCgFjEgtyZXNlcnZlVVNEVBoUCgFkEg9hc3NldFN0cmluZ1VTREMaEAoBZRILcmVzZXJ2ZVVTREMaBgoBZhIBYxoHCgFnEgJhSRoGCgFoEgFhGgwKAWkSByRtYXRjaDAaBgoBahIBaRoOCgFrEgltaW5BbW91bnQaDgoBbBIJbWF4QW1vdW50GhMKAW0SDnJlc2VydmVCYWxhbmNlGhMKAW4SDndpdGhkcmF3QW1vdW50GhQKAW8SD3dpdGhkcmF3bkFtb3VudBoGCgFwEgFyAAAABwAAAAABYQkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQIAAAAjM1BBWnY5dGdLMVBYN2RLUjdiNGtjaHE1cWRwVVMzRzVzWVQAAAAAAWICAAAALDM0TjlZY0VFVExXbjkzcVlRNjRFc1AxeDg5dFNydUpVNDRSckVNU1hYRVBKAAAAAAFjCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABAgAAACMzUEVpRDF6SldUTVpOV1NDeXpodkJ3OXB4eEFXZUV3YWdoUgAAAAABZAIAAAAsNlh0SGpwWGJzOVJSSlAyU3I5R1V5VnF6QUNjYnk5VGtUaEhYbmpWQzVDREoAAAAAAWUJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAECAAAAIzNQR0NrckhCeEZNaTd0ejF4cW54Z0JwZU52bjVFNE00ZzhTAAAAAAFmCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABAgAAACMzUDNFTDJ2dlA2SnRYeWNqdm9LQjI5YVJOYVFXd3hOampQUQEAAAABZwAAAAEAAAABaAQAAAABaQUAAAABaAMJAAABAAAAAgUAAAABaQIAAAADSW50BAAAAAFoBQAAAAFpBQAAAAFoCQAAAgAAAAECAAAAAk5PAAAAAgAAAAFqAQAAAAx3aXRoZHJhd1VTREMAAAACAAAAAWsAAAABbAQAAAABbQkAA/AAAAACBQAAAAFlCQACWQAAAAEFAAAAAWQDCQAAZwAAAAIFAAAAAW0FAAAAAWsEAAAAAW4DCQAAZgAAAAIFAAAAAW0FAAAAAWwFAAAAAWwFAAAAAW0EAAAAAW8JAQAAAAFnAAAAAQkAA/wAAAAEBQAAAAFhAgAAAAh3aXRoZHJhdwkABEwAAAACBQAAAAFkCQAETAAAAAIFAAAAAW4FAAAAA25pbAUAAAADbmlsBAAAAAFwCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAFmCQAAaQAAAAIFAAAAAW8AAAAAAAAAABkJAAJZAAAAAQUAAAABZAUAAAADbmlsBQAAAANuaWwAAAABagEAAAAMd2l0aGRyYXdVU0RUAAAAAgAAAAFrAAAAAWwEAAAAAW0JAAPwAAAAAgUAAAABYwkAAlkAAAABBQAAAAFiAwkAAGcAAAACBQAAAAFtBQAAAAFrBAAAAAFuAwkAAGYAAAACBQAAAAFtBQAAAAFsBQAAAAFsBQAAAAFtBAAAAAFvCQEAAAABZwAAAAEJAAP8AAAABAUAAAABYQIAAAAId2l0aGRyYXcJAARMAAAAAgUAAAABYgkABEwAAAACBQAAAAFuBQAAAANuaWwFAAAAA25pbAQAAAABcAkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAABZgkAAGkAAAACBQAAAAFvAAAAAAAAAAAZCQACWQAAAAEFAAAAAWIFAAAAA25pbAUAAAADbmlsAAAAALg/85M=", "height": 3128038, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3nZkP1tv4SHv5DkdtSTeR8C6VTsmhy9W471qUTXu7e8w Next: DSHQYuwBsCt3dcrtnENhKDJTv9m7zVQjg7kykFAZZVgp Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | func asUserBalanceData (a) = match a { | |
5 | - | case a: (Int, Int, Int, Int, Int, Boolean) => | |
6 | - | a | |
7 | - | case _ => | |
8 | - | throw("wrong type, expected: Int5&Boolean") | |
9 | - | } | |
10 | - | ||
11 | - | ||
12 | 4 | let main = addressFromStringValue("3PAZv9tgK1PX7dKR7b4kchq5qdpUS3G5sYT") | |
13 | - | ||
14 | - | let assetStringBTC = "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS" | |
15 | - | ||
16 | - | let reserveBTC = addressFromStringValue("3PA7QMFyHMtHeP66SUQnwCgwKQHKpCyXWwd") | |
17 | 5 | ||
18 | 6 | let assetStringUSDT = "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ" | |
19 | 7 | ||
23 | 11 | ||
24 | 12 | let reserveUSDC = addressFromStringValue("3PGCkrHBxFMi7tz1xqnxgBpeNvn5E4M4g8S") | |
25 | 13 | ||
26 | - | func withdraw (assetString,reserve,min) = { | |
27 | - | let assetId = fromBase58String(assetString) | |
28 | - | let available = assetBalance(reserve, assetId) | |
29 | - | if ((available >= min)) | |
14 | + | let c = addressFromStringValue("3P3EL2vvP6JtXycjvoKB29aRNaQWwxNjjPQ") | |
15 | + | ||
16 | + | func aI (a) = match a { | |
17 | + | case a: Int => | |
18 | + | a | |
19 | + | case _ => | |
20 | + | throw("NO") | |
21 | + | } | |
22 | + | ||
23 | + | ||
24 | + | @Callable(i) | |
25 | + | func withdrawUSDC (minAmount,maxAmount) = { | |
26 | + | let reserveBalance = assetBalance(reserveUSDC, fromBase58String(assetStringUSDC)) | |
27 | + | if ((reserveBalance >= minAmount)) | |
30 | 28 | then { | |
31 | - | let userbalancedata = asUserBalanceData(invoke(reserve, "userBalance", [toString(this)], nil)) | |
32 | - | let maxAmount = userbalancedata._2 | |
33 | - | let v = if ((available > maxAmount)) | |
34 | - | then -1 | |
35 | - | else available | |
36 | - | let r = { | |
37 | - | let @ = invoke(main, "withdraw", [assetString, v], nil) | |
38 | - | if ($isInstanceOf(@, "Int")) | |
39 | - | then @ | |
40 | - | else throw("Couldn't cast Any to Int") | |
41 | - | } | |
42 | - | if ((r == r)) | |
43 | - | then nil | |
44 | - | else throw("Strict value is not equal to itself.") | |
29 | + | let withdrawAmount = if ((reserveBalance > maxAmount)) | |
30 | + | then maxAmount | |
31 | + | else reserveBalance | |
32 | + | let withdrawnAmount = aI(invoke(main, "withdraw", [assetStringUSDC, withdrawAmount], nil)) | |
33 | + | let r = ScriptTransfer(c, (withdrawnAmount / 25), fromBase58String(assetStringUSDC)) | |
34 | + | nil | |
45 | 35 | } | |
46 | 36 | else nil | |
47 | 37 | } | |
48 | 38 | ||
49 | 39 | ||
50 | - | @Callable(i) | |
51 | - | func withdrawBTC (min) = if ((i.caller != this)) | |
52 | - | then throw("admin") | |
53 | - | else withdraw(assetStringBTC, reserveBTC, min) | |
54 | - | ||
55 | - | ||
56 | 40 | ||
57 | 41 | @Callable(i) | |
58 | - | func withdrawUSDT (min) = if ((i.caller != this)) | |
59 | - | then throw("admin") | |
60 | - | else withdraw(assetStringUSDT, reserveUSDT, min) | |
61 | - | ||
62 | - | ||
63 | - | ||
64 | - | @Callable(i) | |
65 | - | func withdrawUSDC (min) = if ((i.caller != this)) | |
66 | - | then throw("admin") | |
67 | - | else withdraw(assetStringUSDC, reserveUSDC, min) | |
42 | + | func withdrawUSDT (minAmount,maxAmount) = { | |
43 | + | let reserveBalance = assetBalance(reserveUSDT, fromBase58String(assetStringUSDT)) | |
44 | + | if ((reserveBalance >= minAmount)) | |
45 | + | then { | |
46 | + | let withdrawAmount = if ((reserveBalance > maxAmount)) | |
47 | + | then maxAmount | |
48 | + | else reserveBalance | |
49 | + | let withdrawnAmount = aI(invoke(main, "withdraw", [assetStringUSDT, withdrawAmount], nil)) | |
50 | + | let r = ScriptTransfer(c, (withdrawnAmount / 25), fromBase58String(assetStringUSDT)) | |
51 | + | nil | |
52 | + | } | |
53 | + | else nil | |
54 | + | } | |
68 | 55 | ||
69 | 56 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | func asUserBalanceData (a) = match a { | |
5 | - | case a: (Int, Int, Int, Int, Int, Boolean) => | |
6 | - | a | |
7 | - | case _ => | |
8 | - | throw("wrong type, expected: Int5&Boolean") | |
9 | - | } | |
10 | - | ||
11 | - | ||
12 | 4 | let main = addressFromStringValue("3PAZv9tgK1PX7dKR7b4kchq5qdpUS3G5sYT") | |
13 | - | ||
14 | - | let assetStringBTC = "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS" | |
15 | - | ||
16 | - | let reserveBTC = addressFromStringValue("3PA7QMFyHMtHeP66SUQnwCgwKQHKpCyXWwd") | |
17 | 5 | ||
18 | 6 | let assetStringUSDT = "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ" | |
19 | 7 | ||
20 | 8 | let reserveUSDT = addressFromStringValue("3PEiD1zJWTMZNWSCyzhvBw9pxxAWeEwaghR") | |
21 | 9 | ||
22 | 10 | let assetStringUSDC = "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ" | |
23 | 11 | ||
24 | 12 | let reserveUSDC = addressFromStringValue("3PGCkrHBxFMi7tz1xqnxgBpeNvn5E4M4g8S") | |
25 | 13 | ||
26 | - | func withdraw (assetString,reserve,min) = { | |
27 | - | let assetId = fromBase58String(assetString) | |
28 | - | let available = assetBalance(reserve, assetId) | |
29 | - | if ((available >= min)) | |
14 | + | let c = addressFromStringValue("3P3EL2vvP6JtXycjvoKB29aRNaQWwxNjjPQ") | |
15 | + | ||
16 | + | func aI (a) = match a { | |
17 | + | case a: Int => | |
18 | + | a | |
19 | + | case _ => | |
20 | + | throw("NO") | |
21 | + | } | |
22 | + | ||
23 | + | ||
24 | + | @Callable(i) | |
25 | + | func withdrawUSDC (minAmount,maxAmount) = { | |
26 | + | let reserveBalance = assetBalance(reserveUSDC, fromBase58String(assetStringUSDC)) | |
27 | + | if ((reserveBalance >= minAmount)) | |
30 | 28 | then { | |
31 | - | let userbalancedata = asUserBalanceData(invoke(reserve, "userBalance", [toString(this)], nil)) | |
32 | - | let maxAmount = userbalancedata._2 | |
33 | - | let v = if ((available > maxAmount)) | |
34 | - | then -1 | |
35 | - | else available | |
36 | - | let r = { | |
37 | - | let @ = invoke(main, "withdraw", [assetString, v], nil) | |
38 | - | if ($isInstanceOf(@, "Int")) | |
39 | - | then @ | |
40 | - | else throw("Couldn't cast Any to Int") | |
41 | - | } | |
42 | - | if ((r == r)) | |
43 | - | then nil | |
44 | - | else throw("Strict value is not equal to itself.") | |
29 | + | let withdrawAmount = if ((reserveBalance > maxAmount)) | |
30 | + | then maxAmount | |
31 | + | else reserveBalance | |
32 | + | let withdrawnAmount = aI(invoke(main, "withdraw", [assetStringUSDC, withdrawAmount], nil)) | |
33 | + | let r = ScriptTransfer(c, (withdrawnAmount / 25), fromBase58String(assetStringUSDC)) | |
34 | + | nil | |
45 | 35 | } | |
46 | 36 | else nil | |
47 | 37 | } | |
48 | 38 | ||
49 | 39 | ||
50 | - | @Callable(i) | |
51 | - | func withdrawBTC (min) = if ((i.caller != this)) | |
52 | - | then throw("admin") | |
53 | - | else withdraw(assetStringBTC, reserveBTC, min) | |
54 | - | ||
55 | - | ||
56 | 40 | ||
57 | 41 | @Callable(i) | |
58 | - | func withdrawUSDT (min) = if ((i.caller != this)) | |
59 | - | then throw("admin") | |
60 | - | else withdraw(assetStringUSDT, reserveUSDT, min) | |
61 | - | ||
62 | - | ||
63 | - | ||
64 | - | @Callable(i) | |
65 | - | func withdrawUSDC (min) = if ((i.caller != this)) | |
66 | - | then throw("admin") | |
67 | - | else withdraw(assetStringUSDC, reserveUSDC, min) | |
42 | + | func withdrawUSDT (minAmount,maxAmount) = { | |
43 | + | let reserveBalance = assetBalance(reserveUSDT, fromBase58String(assetStringUSDT)) | |
44 | + | if ((reserveBalance >= minAmount)) | |
45 | + | then { | |
46 | + | let withdrawAmount = if ((reserveBalance > maxAmount)) | |
47 | + | then maxAmount | |
48 | + | else reserveBalance | |
49 | + | let withdrawnAmount = aI(invoke(main, "withdraw", [assetStringUSDT, withdrawAmount], nil)) | |
50 | + | let r = ScriptTransfer(c, (withdrawnAmount / 25), fromBase58String(assetStringUSDT)) | |
51 | + | nil | |
52 | + | } | |
53 | + | else nil | |
54 | + | } | |
68 | 55 | ||
69 | 56 |
github/deemru/w8io/6500d08 35.38 ms ◑