tx · DySdbdf8wTxKfh6G6sqmAEKyqqbYverrtg5VnzG7jsnp 3Mu3rHXsZEzEFRmstTmo2ibxjvaHNd4hU6t: -0.01400000 Waves 2022.05.31 12:53 [2075682] smart account 3Mu3rHXsZEzEFRmstTmo2ibxjvaHNd4hU6t > SELF 0.00000000 Waves
{ "type": 13, "id": "DySdbdf8wTxKfh6G6sqmAEKyqqbYverrtg5VnzG7jsnp", "fee": 1400000, "feeAssetId": null, "timestamp": 1653990856738, "version": 2, "chainId": 84, "sender": "3Mu3rHXsZEzEFRmstTmo2ibxjvaHNd4hU6t", "senderPublicKey": "Cn7Ky2YAx4p6dx8e7Mcb9rTQ2Z5TD9MrRbLA8AXDsumJ", "proofs": [ "3Hu1a3qsdTpvkybppcZHouV67eM3i3oLBSYApVvJuN6hpDT49QTfooziahwMx7rhB9mGiZhDMCdsEH1Yn1Qb1nPw" ], "script": "base64:AAIFAAAAAAAAAAQIAhIAAAAAAwAAAAACQkEBAAAAIA/yHBKs5MQ8muxGGqslqLDsugcrRsxtiHLwteKSSQG0AAAAAANUQ0kBAAAAIBrCggSy4VsJx+p89lkVxbB4UD+xy3ysy22f6+YftAucAAAAAAlpc1N0b3BwZWQHAAAAAQAAAAFpAQAAAAVzdGFrZQAAAAAEAAAAA3BtdAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAJcG10QW1vdW50CAUAAAADcG10AAAABmFtb3VudAMJAQAAAAIhPQAAAAIIBQAAAANwbXQAAAAHYXNzZXRJZAUAAAACQkEJAAACAAAAAQIAAAAXWW91IGNhbiBzdGFrZSBVU0ROIG9ubHkDBQAAAAlpc1N0b3BwZWQJAAACAAAAAQIAAAAZc21hcnQgY29udHJhY3QgaXMgb24gbG9jawQAAAAKaW5UcmVhc3VyeQkAA/AAAAACBQAAAAR0aGlzBQAAAAJCQQQAAAALdG90YWxJc3N1ZWQEAAAAByRtYXRjaDAJAAPsAAAAAQUAAAADVENJAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAVBc3NldAQAAAAFYXNzZXQFAAAAByRtYXRjaDAIBQAAAAVhc3NldAAAAAhxdWFudGl0eQkAAAIAAAABAgAAABBDYW4ndCBmaW5kIGFzc2V0BAAAAAh0cmVhc3VyeQkAAGUAAAACBQAAAAppblRyZWFzdXJ5BQAAAAlwbXRBbW91bnQEAAAAEHNpbmdsZVRDSWluVmFsdWUJAABrAAAAAwUAAAALdG90YWxJc3N1ZWQAAAAAAAX14QAFAAAACHRyZWFzdXJ5BAAAAA1hbW91bnRUb0lzc3VlCQAAawAAAAMFAAAACXBtdEFtb3VudAUAAAAQc2luZ2xlVENJaW5WYWx1ZQAAAAAABfXhAAQAAAAIVENJSXNzdWUJAQAAAAdSZWlzc3VlAAAAAwUAAAADVENJBQAAAA1hbW91bnRUb0lzc3VlBgQAAAAIdHJhbnNmZXIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAANYW1vdW50VG9Jc3N1ZQUAAAADVENJCQAETAAAAAIFAAAACFRDSUlzc3VlCQAETAAAAAIFAAAACHRyYW5zZmVyBQAAAANuaWwAAAAABwZobg==", "height": 2075682, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Dp2CpBN8HNfczfKoqiQ4jyh9rLJtwa5jnqTKhJpoZovF Next: 8z5o6pn2ijuZnqq5Y5NJMbqFu8ZjJC2EnpA64qaASbtn Full:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let | |
4 | + | let BA = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT' | |
5 | 5 | ||
6 | - | let | |
6 | + | let TCI = base58'2oTdBoVmVmzU1PT9yRuyfbVfmkvTFQoy7C8du6Lg9X3Z' | |
7 | 7 | ||
8 | 8 | let isStopped = false | |
9 | - | ||
10 | - | let keyStaked = "STAKED_LP" | |
11 | - | ||
12 | - | let keyCompound = "From_Compound" | |
13 | 9 | ||
14 | 10 | @Callable(i) | |
15 | 11 | func stake () = { | |
16 | 12 | let pmt = value(i.payments[0]) | |
17 | 13 | let pmtAmount = pmt.amount | |
18 | - | if ((pmt.assetId != | |
19 | - | then throw(" | |
14 | + | if ((pmt.assetId != BA)) | |
15 | + | then throw("You can stake USDN only") | |
20 | 16 | else if (isStopped) | |
21 | 17 | then throw("smart contract is on lock") | |
22 | 18 | else { | |
23 | - | let | |
24 | - | let totalIssued = match assetInfo( | |
19 | + | let inTreasury = assetBalance(this, BA) | |
20 | + | let totalIssued = match assetInfo(TCI) { | |
25 | 21 | case asset: Asset => | |
26 | 22 | asset.quantity | |
27 | 23 | case _ => | |
28 | 24 | throw("Can't find asset") | |
29 | 25 | } | |
30 | - | let fromCompound = valueOrElse(getInteger(this, keyCompound), 0) | |
31 | - | let forOne = fraction(totalIssued, 100000000, tkStaked) | |
32 | - | let toIssue = fraction(pmtAmount, forOne, 100000000) | |
33 | - | let updateState = IntegerEntry(keyStaked, (tkStaked + pmtAmount)) | |
34 | - | if ((updateState == updateState)) | |
35 | - | then { | |
36 | - | let LPstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [pmt]) | |
37 | - | if ((LPstake == LPstake)) | |
38 | - | then { | |
39 | - | let LPIssue = Reissue(lpTCI, toIssue, true) | |
40 | - | let transfer = ScriptTransfer(i.caller, toIssue, lpTCI) | |
41 | - | [LPIssue, transfer, updateState] | |
42 | - | } | |
43 | - | else throw("Strict value is not equal to itself.") | |
44 | - | } | |
45 | - | else throw("Strict value is not equal to itself.") | |
26 | + | let treasury = (inTreasury - pmtAmount) | |
27 | + | let singleTCIinValue = fraction(totalIssued, 100000000, treasury) | |
28 | + | let amountToIssue = fraction(pmtAmount, singleTCIinValue, 100000000) | |
29 | + | let TCIIssue = Reissue(TCI, amountToIssue, true) | |
30 | + | let transfer = ScriptTransfer(i.caller, amountToIssue, TCI) | |
31 | + | [TCIIssue, transfer] | |
46 | 32 | } | |
47 | 33 | } | |
48 | 34 | ||
49 | - | ||
50 | - | ||
51 | - | @Callable(i) | |
52 | - | func compound () = { | |
53 | - | let compound = value(i.payments[0]) | |
54 | - | let ca = compound.amount | |
55 | - | if ((compound.assetId != token)) | |
56 | - | then throw("attach USDTUSDNLP tokens only") | |
57 | - | else { | |
58 | - | let fromCompound = valueOrElse(getInteger(this, keyCompound), 0) | |
59 | - | let totalStaked = valueOrElse(getInteger(this, keyStaked), 0) | |
60 | - | let stakeC = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [compound]) | |
61 | - | if ((stakeC == stakeC)) | |
62 | - | then { | |
63 | - | let updateState = IntegerEntry(keyStaked, (totalStaked + ca)) | |
64 | - | let tc = IntegerEntry(keyCompound, (fromCompound + ca)) | |
65 | - | [updateState, tc] | |
66 | - | } | |
67 | - | else throw("Strict value is not equal to itself.") | |
68 | - | } | |
69 | - | } | |
70 | - | ||
71 | - | ||
72 | - | ||
73 | - | @Callable(i) | |
74 | - | func init () = { | |
75 | - | let pm = i.payments[0] | |
76 | - | let am = pm.amount | |
77 | - | if ((pm.assetId != token)) | |
78 | - | then throw("Unexpected token") | |
79 | - | else { | |
80 | - | let s = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [pm]) | |
81 | - | if ((s == s)) | |
82 | - | then { | |
83 | - | let upd = IntegerEntry(keyStaked, am) | |
84 | - | let updK = IntegerEntry(keyCompound, 0) | |
85 | - | [upd] | |
86 | - | } | |
87 | - | else throw("Strict value is not equal to itself.") | |
88 | - | } | |
89 | - | } | |
90 | - | ||
91 | - | ||
92 | - | @Verifier(tx) | |
93 | - | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
94 | 35 |
github/deemru/w8io/169f3d6 36.01 ms ◑