tx · BhsNpxEpRcYA6TpY81povAJRHNzTHzpkvN3irF7JY6DY 3P3jbpfBQ95gwKga8Nk4GbCB21R3Z66gHJc: -0.01000000 Waves 2022.04.20 11:09 [3081938] smart account 3P3jbpfBQ95gwKga8Nk4GbCB21R3Z66gHJc > SELF 0.00000000 Waves
{ "type": 13, "id": "BhsNpxEpRcYA6TpY81povAJRHNzTHzpkvN3irF7JY6DY", "fee": 1000000, "feeAssetId": null, "timestamp": 1650442144193, "version": 2, "chainId": 87, "sender": "3P3jbpfBQ95gwKga8Nk4GbCB21R3Z66gHJc", "senderPublicKey": "BtEpTJKCNdpyvw4hDiXTx6VFSKKkFp5phwbfxtek1KRm", "proofs": [ "8b134LF6DbVqgivQSPZ6Bg2QYoBq6m2ij7R9u2JqnNXC1Dg66bziMTtJfBDAumQMoCUwfxrkybC4xcvAHwav9ZK" ], "script": "base64:AAIFAAAAAAAAAAQIAhIAAAAAAgEAAAAFYXNJbnQAAAABAAAABXZhbHVlBAAAAAckbWF0Y2gwBQAAAAV2YWx1ZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAANpbnQFAAAAByRtYXRjaDAFAAAAA2ludAkAAAIAAAABAgAAAA1leHBlY3RlZDogSW50AAAAAARtYWluCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABAgAAACMzUEFadjl0Z0sxUFg3ZEtSN2I0a2NocTVxZHBVUzNHNXNZVAAAAAEAAAABaQEAAAAId2l0aGRyYXcAAAAABAAAAAZhbW91bnQJAQAAAAVhc0ludAAAAAEJAAP8AAAABAUAAAAEbWFpbgIAAAAId2l0aGRyYXcJAARMAAAAAgIAAAAsREcyeEZrUGREd0tVb0JrekdBaFF0THBTR3pmWExpQ1lQRXplS0gyQWQyNHAJAARMAAAAAgAAAAAAAA9CQAUAAAADbmlsBQAAAANuaWwJAAACAAAAAQkAASwAAAACAgAAAAhhbW91bnQ6IAkAAaQAAAABBQAAAAZhbW91bnQAAAAAkw/GVQ==", "height": 3081938, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DhjGtULRzeKaMHgfZN3hHVs65gCkLTkFzyRPovNzvmBc Next: 7pGNCbEwc5rsRmeMyqdbLm9CfJUHaP5aWb1zVLsyHtSE Diff:
Old | New | Differences | |
---|---|---|---|
9 | 9 | } | |
10 | 10 | ||
11 | 11 | ||
12 | - | func asUserBalanceData (value) = match value { | |
13 | - | case x: (Int, Int, Int, Int, Int, Boolean) => | |
14 | - | x | |
15 | - | case t => | |
16 | - | throw("wrong type, expected: Int5&Boolean") | |
17 | - | } | |
18 | - | ||
19 | - | ||
20 | 12 | let main = addressFromStringValue("3PAZv9tgK1PX7dKR7b4kchq5qdpUS3G5sYT") | |
21 | 13 | ||
22 | - | let assetStringUsdc = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p" | |
23 | - | ||
24 | - | let reserveUsdc = addressFromStringValue("3P23drfMhqqouvzpt3xUyGwjVX8P8qAzrmi") | |
25 | - | ||
26 | - | let assetStringUsdt = "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ" | |
27 | - | ||
28 | - | let reserveUsdt = addressFromStringValue("3PEiD1zJWTMZNWSCyzhvBw9pxxAWeEwaghR") | |
29 | - | ||
30 | - | let assetStrings = ["DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p", "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"] | |
31 | - | ||
32 | - | let reserves = [addressFromStringValue("3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ"), addressFromStringValue("3PEiD1zJWTMZNWSCyzhvBw9pxxAWeEwaghR")] | |
33 | - | ||
34 | 14 | @Callable(i) | |
35 | - | func withdraw (coinid,min_amount) = { | |
36 | - | let assetIdString = assetStrings[coinid] | |
37 | - | let reserve = addressFromStringValue("3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ") | |
38 | - | let available = assetBalance(reserve, toBytes(assetIdString)) | |
39 | - | let userbalancedata = asUserBalanceData(invoke(reserve, "getUserBalance", [toString(this)], nil)) | |
40 | - | let depositUsd = userbalancedata._3 | |
41 | - | if ((min_amount > available)) | |
42 | - | then throw(((((((((((((("this:" + toString(this)) + "assetId:") + assetIdString) + "reserve: ") + toString(reserve)) + ",userAddress:") + toString(this)) + ", depositUsd:") + toString(depositUsd)) + "currentAvailable: ") + toString(available)) + ", min_amount: ") + toString(min_amount))) | |
43 | - | else { | |
44 | - | let v = if ((available > depositUsd)) | |
45 | - | then depositUsd | |
46 | - | else available | |
47 | - | if ((min_amount > v)) | |
48 | - | then throw(((("min amount: " + toString(min_amount)) + ", v:") + toString(v))) | |
49 | - | else { | |
50 | - | let amount = asInt(invoke(main, "withdraw", [assetIdString, v], nil)) | |
51 | - | $Tuple2(nil, amount) | |
52 | - | } | |
53 | - | } | |
15 | + | func withdraw () = { | |
16 | + | let amount = asInt(invoke(main, "withdraw", ["DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p", 1000000], nil)) | |
17 | + | throw(("amount: " + toString(amount))) | |
54 | 18 | } | |
55 | 19 | ||
56 | 20 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func asInt (value) = match value { | |
5 | 5 | case int: Int => | |
6 | 6 | int | |
7 | 7 | case _ => | |
8 | 8 | throw("expected: Int") | |
9 | 9 | } | |
10 | 10 | ||
11 | 11 | ||
12 | - | func asUserBalanceData (value) = match value { | |
13 | - | case x: (Int, Int, Int, Int, Int, Boolean) => | |
14 | - | x | |
15 | - | case t => | |
16 | - | throw("wrong type, expected: Int5&Boolean") | |
17 | - | } | |
18 | - | ||
19 | - | ||
20 | 12 | let main = addressFromStringValue("3PAZv9tgK1PX7dKR7b4kchq5qdpUS3G5sYT") | |
21 | 13 | ||
22 | - | let assetStringUsdc = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p" | |
23 | - | ||
24 | - | let reserveUsdc = addressFromStringValue("3P23drfMhqqouvzpt3xUyGwjVX8P8qAzrmi") | |
25 | - | ||
26 | - | let assetStringUsdt = "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ" | |
27 | - | ||
28 | - | let reserveUsdt = addressFromStringValue("3PEiD1zJWTMZNWSCyzhvBw9pxxAWeEwaghR") | |
29 | - | ||
30 | - | let assetStrings = ["DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p", "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"] | |
31 | - | ||
32 | - | let reserves = [addressFromStringValue("3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ"), addressFromStringValue("3PEiD1zJWTMZNWSCyzhvBw9pxxAWeEwaghR")] | |
33 | - | ||
34 | 14 | @Callable(i) | |
35 | - | func withdraw (coinid,min_amount) = { | |
36 | - | let assetIdString = assetStrings[coinid] | |
37 | - | let reserve = addressFromStringValue("3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ") | |
38 | - | let available = assetBalance(reserve, toBytes(assetIdString)) | |
39 | - | let userbalancedata = asUserBalanceData(invoke(reserve, "getUserBalance", [toString(this)], nil)) | |
40 | - | let depositUsd = userbalancedata._3 | |
41 | - | if ((min_amount > available)) | |
42 | - | then throw(((((((((((((("this:" + toString(this)) + "assetId:") + assetIdString) + "reserve: ") + toString(reserve)) + ",userAddress:") + toString(this)) + ", depositUsd:") + toString(depositUsd)) + "currentAvailable: ") + toString(available)) + ", min_amount: ") + toString(min_amount))) | |
43 | - | else { | |
44 | - | let v = if ((available > depositUsd)) | |
45 | - | then depositUsd | |
46 | - | else available | |
47 | - | if ((min_amount > v)) | |
48 | - | then throw(((("min amount: " + toString(min_amount)) + ", v:") + toString(v))) | |
49 | - | else { | |
50 | - | let amount = asInt(invoke(main, "withdraw", [assetIdString, v], nil)) | |
51 | - | $Tuple2(nil, amount) | |
52 | - | } | |
53 | - | } | |
15 | + | func withdraw () = { | |
16 | + | let amount = asInt(invoke(main, "withdraw", ["DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p", 1000000], nil)) | |
17 | + | throw(("amount: " + toString(amount))) | |
54 | 18 | } | |
55 | 19 | ||
56 | 20 |
github/deemru/w8io/3ef1775 26.78 ms ◑