tx · 8dZ8ZGzh1U9jBvPQ9KycYu64wx5jvBTiQnD26cvDo1zJ 3Mu3rHXsZEzEFRmstTmo2ibxjvaHNd4hU6t: -0.01400000 Waves 2022.05.31 14:45 [2075800] smart account 3Mu3rHXsZEzEFRmstTmo2ibxjvaHNd4hU6t > SELF 0.00000000 Waves
{ "type": 13, "id": "8dZ8ZGzh1U9jBvPQ9KycYu64wx5jvBTiQnD26cvDo1zJ", "fee": 1400000, "feeAssetId": null, "timestamp": 1653997501859, "version": 2, "chainId": 84, "sender": "3Mu3rHXsZEzEFRmstTmo2ibxjvaHNd4hU6t", "senderPublicKey": "Cn7Ky2YAx4p6dx8e7Mcb9rTQ2Z5TD9MrRbLA8AXDsumJ", "proofs": [ "5uqKR3WJDQsZSZsFYVoQq7s9mNh6hy8pEhYky7TER8h1uyd8GYzZggxQvye7STSx3t4enC286TuJYAC5Juj55WHs" ], "script": "base64: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", "height": 2075800, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DrUkGvv6fMpLo3YWuF98DUi5VzzVQJcFS5xjkazRDuVm Next: AtcFASh441SPN9BLsG58Kmin7Lcz9huBgvjZYJHkgdG1 Diff:
Old | New | Differences | |
---|---|---|---|
4 | 4 | let BA = base58'HJuQkYNhyjPcYGHxMLsmRq7bToqTc7uExWtJnVH5xSBm' | |
5 | 5 | ||
6 | 6 | let TCI = base58'2oTdBoVmVmzU1PT9yRuyfbVfmkvTFQoy7C8du6Lg9X3Z' | |
7 | + | ||
8 | + | let tw = base58'3Mv7nXq2V2Dnn9oSkB5feRt6RxtqnPiAXNH' | |
7 | 9 | ||
8 | 10 | let isStopped = false | |
9 | 11 | ||
39 | 41 | let w = value(i.payments[0]) | |
40 | 42 | let a = w.amount | |
41 | 43 | let b = assetBalance(i.caller, TCI) | |
44 | + | let p = 10000000000 | |
42 | 45 | if ((w.assetId != TCI)) | |
43 | 46 | then throw("sdasda") | |
44 | 47 | else if ((0 >= a)) | |
54 | 57 | } | |
55 | 58 | let vp = fraction(assetBalance(this, BA), 100000000, baAmount) | |
56 | 59 | let toRep = fraction(vp, a, 100000000) | |
60 | + | let tc = (toRep / p) | |
57 | 61 | let brn = Burn(TCI, toRep) | |
58 | - | let trsf = ScriptTransfer(i.caller, toRep, BA) | |
59 | - | [brn, trsf] | |
62 | + | let trsf = ScriptTransfer(i.caller, (toRep - tc), BA) | |
63 | + | let ttr = ScriptTransfer(Address(tw), tc, BA) | |
64 | + | [brn, trsf, ttr] | |
60 | 65 | } | |
61 | 66 | } | |
62 | 67 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let BA = base58'HJuQkYNhyjPcYGHxMLsmRq7bToqTc7uExWtJnVH5xSBm' | |
5 | 5 | ||
6 | 6 | let TCI = base58'2oTdBoVmVmzU1PT9yRuyfbVfmkvTFQoy7C8du6Lg9X3Z' | |
7 | + | ||
8 | + | let tw = base58'3Mv7nXq2V2Dnn9oSkB5feRt6RxtqnPiAXNH' | |
7 | 9 | ||
8 | 10 | let isStopped = false | |
9 | 11 | ||
10 | 12 | @Callable(i) | |
11 | 13 | func stake () = { | |
12 | 14 | let pmt = value(i.payments[0]) | |
13 | 15 | let pmtAmount = pmt.amount | |
14 | 16 | if ((pmt.assetId != BA)) | |
15 | 17 | then throw("You can stake USDN only") | |
16 | 18 | else if (isStopped) | |
17 | 19 | then throw("smart contract is on lock") | |
18 | 20 | else { | |
19 | 21 | let inTreasury = assetBalance(this, BA) | |
20 | 22 | let totalIssued = match assetInfo(TCI) { | |
21 | 23 | case asset: Asset => | |
22 | 24 | asset.quantity | |
23 | 25 | case _ => | |
24 | 26 | throw("Can't find asset") | |
25 | 27 | } | |
26 | 28 | let treasury = (inTreasury - pmtAmount) | |
27 | 29 | let singleTCIinValue = fraction(totalIssued, 100000000, treasury) | |
28 | 30 | let amountToIssue = fraction(pmtAmount, singleTCIinValue, 100000000) | |
29 | 31 | let TCIIssue = Reissue(TCI, amountToIssue, true) | |
30 | 32 | let transfer = ScriptTransfer(i.caller, amountToIssue, TCI) | |
31 | 33 | [TCIIssue, transfer] | |
32 | 34 | } | |
33 | 35 | } | |
34 | 36 | ||
35 | 37 | ||
36 | 38 | ||
37 | 39 | @Callable(i) | |
38 | 40 | func withdraw () = { | |
39 | 41 | let w = value(i.payments[0]) | |
40 | 42 | let a = w.amount | |
41 | 43 | let b = assetBalance(i.caller, TCI) | |
44 | + | let p = 10000000000 | |
42 | 45 | if ((w.assetId != TCI)) | |
43 | 46 | then throw("sdasda") | |
44 | 47 | else if ((0 >= a)) | |
45 | 48 | then throw("Can't withdraw 0 or negative ammount") | |
46 | 49 | else if ((0 >= b)) | |
47 | 50 | then throw("Unsuficient account balance") | |
48 | 51 | else { | |
49 | 52 | let baAmount = match assetInfo(BA) { | |
50 | 53 | case q: Asset => | |
51 | 54 | q.quantity | |
52 | 55 | case _ => | |
53 | 56 | 0 | |
54 | 57 | } | |
55 | 58 | let vp = fraction(assetBalance(this, BA), 100000000, baAmount) | |
56 | 59 | let toRep = fraction(vp, a, 100000000) | |
60 | + | let tc = (toRep / p) | |
57 | 61 | let brn = Burn(TCI, toRep) | |
58 | - | let trsf = ScriptTransfer(i.caller, toRep, BA) | |
59 | - | [brn, trsf] | |
62 | + | let trsf = ScriptTransfer(i.caller, (toRep - tc), BA) | |
63 | + | let ttr = ScriptTransfer(Address(tw), tc, BA) | |
64 | + | [brn, trsf, ttr] | |
60 | 65 | } | |
61 | 66 | } | |
62 | 67 | ||
63 | 68 | ||
64 | 69 | @Verifier(tx) | |
65 | 70 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
66 | 71 |
github/deemru/w8io/169f3d6 35.55 ms ◑![]()